Raphael S.Carvalho
2013-Sep-06 04:00 UTC
[syslinux] [PATCH 1/2] com32/lib/: Avoid unneeded allocation.
eparam will only be used if EBIOS is available on the underlying disk.
If not so, then there is no reason to allocate eparam.
---
com32/lib/syslinux/disk.c | 13 +++++++------
1 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/com32/lib/syslinux/disk.c b/com32/lib/syslinux/disk.c
index 093751a..554bed3 100644
--- a/com32/lib/syslinux/disk.c
+++ b/com32/lib/syslinux/disk.c
@@ -73,7 +73,7 @@ int disk_int13_retry(const com32sys_t * inreg, com32sys_t *
outreg)
int disk_get_params(int disk, struct disk_info *const diskinfo)
{
static com32sys_t inreg, outreg;
- struct disk_ebios_eparam *eparam;
+ struct disk_ebios_eparam *eparam = NULL;
int rv = 0;
memset(diskinfo, 0, sizeof *diskinfo);
@@ -94,12 +94,12 @@ int disk_get_params(int disk, struct disk_info *const
diskinfo)
diskinfo->ebios = 1;
}
- eparam = lmalloc(sizeof *eparam);
- if (!eparam)
- return -1;
-
/* Get extended disk parameters if ebios == 1 */
if (diskinfo->ebios) {
+ eparam = lmalloc(sizeof *eparam);
+ if (!eparam)
+ return -1;
+
memset(&inreg, 0, sizeof inreg);
inreg.eax.b[1] = 0x48;
inreg.edx.b[0] = disk;
@@ -153,7 +153,8 @@ int disk_get_params(int disk, struct disk_info *const
diskinfo)
diskinfo->lbacnt = diskinfo->cyl * diskinfo->head * diskinfo->spt;
out:
- lfree(eparam);
+ if (eparam)
+ lfree(eparam);
return rv;
}
--
1.7.2.5
Matt Fleming
2013-Sep-17 13:54 UTC
[syslinux] [PATCH 1/2] com32/lib/: Avoid unneeded allocation.
On Fri, 06 Sep, at 01:00:55AM, Raphael S.Carvalho wrote:> eparam will only be used if EBIOS is available on the underlying disk. > If not so, then there is no reason to allocate eparam. > --- > com32/lib/syslinux/disk.c | 13 +++++++------ > 1 files changed, 7 insertions(+), 6 deletions(-) > > diff --git a/com32/lib/syslinux/disk.c b/com32/lib/syslinux/disk.c > index 093751a..554bed3 100644 > --- a/com32/lib/syslinux/disk.c > +++ b/com32/lib/syslinux/disk.c > @@ -73,7 +73,7 @@ int disk_int13_retry(const com32sys_t * inreg, com32sys_t * outreg) > int disk_get_params(int disk, struct disk_info *const diskinfo) > { > static com32sys_t inreg, outreg; > - struct disk_ebios_eparam *eparam; > + struct disk_ebios_eparam *eparam = NULL; > int rv = 0; > > memset(diskinfo, 0, sizeof *diskinfo); > @@ -94,12 +94,12 @@ int disk_get_params(int disk, struct disk_info *const diskinfo) > diskinfo->ebios = 1; > } > > - eparam = lmalloc(sizeof *eparam); > - if (!eparam) > - return -1; > - > /* Get extended disk parameters if ebios == 1 */ > if (diskinfo->ebios) { > + eparam = lmalloc(sizeof *eparam); > + if (!eparam) > + return -1; > +There's trailing whitespace here.> memset(&inreg, 0, sizeof inreg); > inreg.eax.b[1] = 0x48; > inreg.edx.b[0] = disk; > @@ -153,7 +153,8 @@ int disk_get_params(int disk, struct disk_info *const diskinfo) > diskinfo->lbacnt = diskinfo->cyl * diskinfo->head * diskinfo->spt; > > out: > - lfree(eparam); > + if (eparam) > + lfree(eparam); > return rv; > }You actually don't need to check for 'eparam' being NULL, lfree() can handle being called with a NULL pointer. -- Matt Fleming, Intel Open Source Technology Center
Raphael S Carvalho
2013-Sep-17 14:18 UTC
[syslinux] [PATCH 1/2] com32/lib/: Avoid unneeded allocation.
> There's trailing whitespace here. > >> memset(&inreg, 0, sizeof inreg); >> inreg.eax.b[1] = 0x48; >> inreg.edx.b[0] = disk; >> @@ -153,7 +153,8 @@ int disk_get_params(int disk, struct disk_info *const diskinfo) >> diskinfo->lbacnt = diskinfo->cyl * diskinfo->head * diskinfo->spt; >> >> out: >> - lfree(eparam); >> + if (eparam) >> + lfree(eparam); >> return rv; >> } > > You actually don't need to check for 'eparam' being NULL, lfree() can > handle being called with a NULL pointer.I will work on these issues, and resend the patch. Also, I definitely have to fix my text editor to avoid trailing whitespace. Regards, Raphael S. Carvalho.