> On Jun 3, 2015, at 11:39 AM, Zachary Bobroff <zacha...@ami.com> wrote: > > Yao, > > Find attached patch file. Also, note that I had my thought process wrong for > C99 vs C89 and moved the variable declarations for SmmTypeIndex and > AprioriIndex to the top of the function to make the compiler more happy. Let > me know if you have any comments/questions. >
Zach, You need to add: Contributed-under: TianoCore Contribution Agreement 1.0 Thanks, Andrew Fish > Best Regards, > Zach > > From: Zachary Bobroff > Sent: Tuesday, June 02, 2015 6:32 PM > To: edk2-devel@lists.sourceforge.net <mailto:edk2-devel@lists.sourceforge.net> > Subject: RE: Problem with PiSmmCore Dispatcher.c > > Yao, > > Thanks. Sure, I will create a patch file tomorrow and attach it here. > > Best Regards, > Zach > > From: Yao, Jiewen [mailto:jiewen....@intel.com <mailto:jiewen....@intel.com>] > Sent: Tuesday, June 02, 2015 6:22 PM > To: edk2-devel@lists.sourceforge.net <mailto:edk2-devel@lists.sourceforge.net> > Subject: Re: [edk2] Problem with PiSmmCore Dispatcher.c > > Thanks. > Yes, this is an issue, and should be fixed. > Using SmmTypeIndex and AprioriIndex seems good way for 2nd and 3rd loop. > How about use “HandleIndex” for the 1st loop? > > Will you generate a patch? Or we can help generate patch. > > Thank you > Yao Jiewen > > From: Zachary Bobroff [mailto:zacha...@ami.com <mailto:zacha...@ami.com>] > Sent: Wednesday, June 03, 2015 3:34 AM > To: edk2-devel@lists.sourceforge.net <mailto:edk2-devel@lists.sourceforge.net> > Subject: [edk2] Problem with PiSmmCore Dispatcher.c > > All, > > I hope I am proving this issue the right way, please correct me if I am not. > I also am not sure if this has been already reported. I have come across a > problem in Dispatcher.c within PiSmmCore of MdeModulePkg linked here: > https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/PiSmmCore/Dispatcher.c > > <https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/PiSmmCore/Dispatcher.c> > > The issue is in function “SmmDriverDispatchHandler” on line 1196. Within > this function is a for loop fairly early on line 1235 defined like so: > for (Index = 0; Index < HandleCount; Index++) { > > Then on line 1271 there is a another for loop inside the first for loop > defined like so: > for (Index = 0; Index < sizeof (mSmmFileTypes)/sizeof (EFI_FV_FILETYPE); > Index++) { > > Then on line 1318 you will find another for loop inside the first for loop > (but outside the second for loop) defined like so: > for (Index = 0; Index < AprioriEntryCount; Index++) { > > You will note that all three for loops use the same Index variable defined on > line 1218 like so: > UINTN Index; > > The only way I can guess that this has ever worked is that because of the > last for loop Index is set back to 0. Also, most people are not using > Apriori for SMM drivers at this time. Since this is the case, when it loops > back around, it hits the if statement checking if this FV was already > processed, if so, it continues to the next one. The same process would > complete for any subsequent FVs as well. > > A proposed fix would be to use an alternate Index variable for each of the > other two for loops. Since these are both only used locally they could be > defined locally like: > for (UINTN SmmTypeIndex = 0; SmmTypeIndex < sizeof (mSmmFileTypes)/sizeof > (EFI_FV_FILETYPE); SmmTypeIndex ++) { > and > for (UINTN AprioriIndex = 0; AprioriIndex < AprioriEntryCount; AprioriIndex > ++) { > > Another minor improvement would be to give the overall Index some better name > than just Index for the main loop too. > > Best Regards, > Zach > The information contained in this message may be confidential and proprietary > to American Megatrends, Inc. This communication is intended to be read only > by the individual or entity to whom it is addressed or by their designee. If > the reader of this message is not the intended recipient, you are on notice > that any distribution of this message, in any form, is strictly prohibited. > Please promptly notify the sender by reply e-mail or by telephone at > 770-246-8600, and then delete or destroy all copies of the transmission. > > The information contained in this message may be confidential and proprietary > to American Megatrends, Inc. This communication is intended to be read only > by the individual or entity to whom it is addressed or by their designee. If > the reader of this message is not the intended recipient, you are on notice > that any distribution of this message, in any form, is strictly prohibited. > Please promptly notify the sender by reply e-mail or by telephone at > 770-246-8600, and then delete or destroy all copies of the transmission. > > <patch.txt>------------------------------------------------------------------------------ > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net <mailto:edk2-devel@lists.sourceforge.net> > https://lists.sourceforge.net/lists/listinfo/edk2-devel > <https://lists.sourceforge.net/lists/listinfo/edk2-devel>
------------------------------------------------------------------------------
_______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel