svn commit: r347194 - head/stand/efi/boot1
Warner Losh
imp at FreeBSD.org
Mon May 6 18:39:23 UTC 2019
Author: imp
Date: Mon May 6 18:39:22 2019
New Revision: 347194
URL: https://svnweb.freebsd.org/changeset/base/347194
Log:
We only ever need one devinfo per handle. So allocate it outside of
looping over the filesystem modules rather than doing a malloc + free
each time through the loop. In addition, nothing changes from loop to
loop, so setup the new devinfo outside the loop as well.
Modified:
head/stand/efi/boot1/boot1.c
Modified: head/stand/efi/boot1/boot1.c
==============================================================================
--- head/stand/efi/boot1/boot1.c Mon May 6 18:38:46 2019 (r347193)
+++ head/stand/efi/boot1/boot1.c Mon May 6 18:39:22 2019 (r347194)
@@ -264,24 +264,24 @@ probe_handle(EFI_HANDLE h, EFI_DEVICE_PATH *imgpath, B
*preferred = efi_devpath_match(imgpath, devpath);
/* Run through each module, see if it can load this partition */
+ devinfo = malloc(sizeof(*devinfo));
+ if (devinfo == NULL) {
+ DPRINTF("\nFailed to allocate devinfo\n");
+ return (EFI_UNSUPPORTED);
+ }
+ devinfo->dev = blkio;
+ devinfo->devpath = devpath;
+ devinfo->devhandle = h;
+ devinfo->preferred = *preferred;
+ devinfo->next = NULL;
+
for (i = 0; i < NUM_BOOT_MODULES; i++) {
- devinfo = malloc(sizeof(*devinfo));
- if (devinfo == NULL) {
- DPRINTF("\nFailed to allocate devinfo\n");
- break;
- }
- devinfo->dev = blkio;
- devinfo->devpath = devpath;
- devinfo->devhandle = h;
devinfo->devdata = NULL;
- devinfo->preferred = *preferred;
- devinfo->next = NULL;
-
status = boot_modules[i]->probe(devinfo);
if (status == EFI_SUCCESS)
return (EFI_SUCCESS);
- free(devinfo);
}
+ free(devinfo);
return (EFI_UNSUPPORTED);
}
More information about the svn-src-head
mailing list