Hey Andrew, I have missed that it's not about the protocol directly, but about a returned data structure, so please excuse me!
Thanks, Marvin. > -----Original Message----- > From: [email protected] [mailto:[email protected]] > Sent: Thursday, July 7, 2016 10:33 PM > To: Marvin H?user <[email protected]> > Cc: [email protected]; Bruce Cran <[email protected]> > Subject: Re: [edk2] Firmware Management Protocol: CHAR16* fields in > EFI_FIRMWARE_IMAGE_DESCRIPTOR > > > > On Jul 7, 2016, at 1:27 PM, Marvin H?user <[email protected]> > wrote: > > > > Hey Bruce, > > > > Sorry if I am wasting your time, but where exactly is the problem? > > > > I don't think these strings can ever be statically allocated. If pointers to > stack variables were used, the strings would be theoretically invalid the > moment the exposing function returns. Furthermore they can't be part oft > he struct itself as that would change the offsets of all other members after > the string. Hence I think it can be concluded they are always dynamically > allocated. > > And as one can be sure they are dynamically allocated, I think it's the task > of the function that uninstalls the protocol to free the two buffers. Should > the protocol not be uninstalled till ExitBootServices(), it doesn't matter > either > because the OS loader may treat Boot Services code and data as free space. > > > > Did I miss something? > > > > Marvin, > > I think your logic is sound in general. A protocol's structure could be a > global > or malloc'ed and as long as the protocol is installed that data exists. You > only > need to clean up that data if the protocol is uninstalled from the handle. > Bruce is asking about a protocol member function that returns a data > structure into a caller allocated buffer (hopefully I got that right) that > contains > pointers to other items. So conceptually it could be a different malloc'ed > buffer leaked on every call? So I think it is a less clear cut case. > > Thanks, > > Andrew Fish > > > Regards, > > Marvin. > > > >> -----Original Message----- > >> From: edk2-devel [mailto:[email protected]] On Behalf > >> Of Bruce Cran > >> Sent: Thursday, July 7, 2016 9:36 PM > >> To: [email protected] > >> Subject: [edk2] Firmware Management Protocol: CHAR16* fields in > >> EFI_FIRMWARE_IMAGE_DESCRIPTOR > >> > >> Before I go hassling the USWG, I thought I'd check here in case > >> anyone knows. > >> > >> In the Firmware Management Protocol introduced in UEFI 2.3, there's a > >> EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that has two CHAR16* > fields, > >> 'ImageIdName' and 'VersionName'. The UEFI spec doesn't say anything > >> about memory allocation, but they're strings that at least in our > >> driver are dynamically allocated. > >> > >> Since there's no FMP 'cleanup' function, I'm wondering if there was > >> some sort of mistake specifying those, because I don't see a way to > >> avoid leaking memory. > >> > >> -- > >> Bruce Cran > >> _______________________________________________ > >> edk2-devel mailing list > >> [email protected] > >> https://lists.01.org/mailman/listinfo/edk2-devel > > _______________________________________________ > > edk2-devel mailing list > > [email protected] > > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

