diff --git a/elf_ops.h b/elf_ops.h
index 4da755e1b3..122bf10c1f 100644
--- a/elf_ops.h
+++ b/elf_ops.h
@@ -195,6 +195,7 @@ int glue(load_elf, SZ)(int fd, int64_t virt_to_phys_addend,
             data = NULL;
         }
     }
+    qemu_free(phdr);
     return total_size;
  fail:
     qemu_free(data);