Thanks, Siyuan, will update commit message for this change. Best Regards Fan
-----Original Message----- From: Fu, Siyuan Sent: Thursday, February 28, 2019 6:35 PM To: Wang, Fan <fan.w...@intel.com>; edk2-devel@lists.01.org Cc: Ye, Ting <ting...@intel.com>; Wu, Jiaxin <jiaxin...@intel.com> Subject: RE: [Patch] NetworkPkg: Fix Duplicate FreePool Error in WCM Hi, Fan The patch also cancel a timer in driver binding stop, please describe this change in commit message, or separate it to another patch. Reviewed-by: Siyuan Fu <siyuan...@intel.com> > -----Original Message----- > From: Wang, Fan > Sent: Thursday, February 28, 2019 5:10 PM > To: edk2-devel@lists.01.org > Cc: Ye, Ting <ting...@intel.com>; Fu, Siyuan <siyuan...@intel.com>; > Wu, Jiaxin <jiaxin...@intel.com> > Subject: [Patch] NetworkPkg: Fix Duplicate FreePool Error in WCM > > * REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1577 > > In WiFi Connection Manager scan process, the result received from WiFi > device driver will be freed twice, and will cause unexpected errors, > and even system crash. > > This issue also exists in some other places potentially, this patch is > to fix these issues. > > Cc: Ye Ting <ting...@intel.com> > Cc: Fu Siyuan <siyuan...@intel.com> > Cc: Wu Jiaxin <jiaxin...@intel.com> > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Wang Fan <fan.w...@intel.com> > --- > NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDriver.c | 1 + > NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrFileUtil.c | 1 > + .../WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.c | > 9 > +++++++++ > NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.c | 1 - > 4 files changed, 11 insertions(+), 1 deletion(-) > > diff --git > a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDriver.c > b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDriver.c > index 1431cdc7ea..63b0670c63 100644 > --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDriver.c > +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDriver.c > @@ -409,10 +409,11 @@ WifiMgrDxeDriverBindingStop ( > } > > // > // Close Event > // > + gBS->SetTimer (Nic->TickTimer, TimerCancel, 0); > gBS->CloseEvent (Nic->TickTimer); > > // > // Clean Supported Suites > // > diff --git > a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrFileUtil.c > b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrFileUtil.c > index 6db1626f2d..0224823431 100644 > --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrFileUtil.c > +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrFileUtil.c > @@ -251,10 +251,11 @@ UpdatePage( > } > } else { > > if (Private->FileContext->FileName != NULL) { > FreePool (Private->FileContext->FileName); > + Private->FileContext->FileName = NULL; > } > Private->FileContext->FileName = FileName; > > if (FormId == FORMID_ENROLL_CERT) { > HiiSetString (Private->RegisteredHandle, diff --git > a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess > .c > b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess > .c > index bfb6b6e5ca..d0d55f46da 100644 > --- > a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess > .c > +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAc > +++ cess.c > @@ -445,10 +445,12 @@ WifiMgrRefreshNetworkList ( > UnicodeSPrint (PortString, PortStringSize, L"AKMSuite: %s > CipherSuite: %s", AKMListDisplay, CipherListDisplay); > PortHelpToken = HiiSetString (Private->RegisteredHandle, 0, > PortString, NULL); > } > FreePool (AKMListDisplay); > FreePool (CipherListDisplay); > + AKMListDisplay = NULL; > + CipherListDisplay = NULL; > > HiiCreateGotoOpCode ( > StartOpCodeHandle, > FORMID_CONNECT_NETWORK, > PortPromptToken, > @@ -530,10 +532,12 @@ WifiMgrRefreshNetworkList ( > goto Exit; > } > } > FreePool (AKMListDisplay); > FreePool (CipherListDisplay); > + AKMListDisplay = NULL; > + CipherListDisplay = NULL; > > HiiCreateGotoOpCode ( > StartOpCodeHandle, > FORMID_CONNECT_NETWORK, > PortPromptToken, > @@ -610,10 +614,12 @@ WifiMgrRefreshNetworkList ( > AKMListDisplay, CipherListDisplay > ); > } > FreePool (AKMListDisplay); > FreePool (CipherListDisplay); > + AKMListDisplay = NULL; > + CipherListDisplay = NULL; > > PortHelpToken = HiiSetString (Private->RegisteredHandle, 0, > PortString, NULL); > > HiiCreateGotoOpCode ( > StartOpCodeHandle, > @@ -1655,10 +1661,11 @@ WifiMgrDxeHiiConfigAccessCallback ( > Profile = Private->CurrentNic->UserSelectedProfile; > if (Profile->PrivateKeyData != NULL) { > > ZeroMem (Profile->PrivateKeyData, Profile->PrivateKeyDataSize); > FreePool (Profile->PrivateKeyData); > + Profile->PrivateKeyData = NULL; > } > > Status = WifiMgrReadFileToBuffer ( > Private->FileContext, > &TempData, > @@ -1698,16 +1705,18 @@ WifiMgrDxeHiiConfigAccessCallback ( > if (Private->FileType == FileTypeCACert) { > if (Profile->CACertData != NULL) { > > ZeroMem (Profile->CACertData, Profile->CACertSize); > FreePool (Profile->CACertData); > + Profile->CACertData = NULL; > } > } else if (Private->FileType == FileTypeClientCert) { > if (Profile->ClientCertData != NULL) { > > ZeroMem (Profile->ClientCertData, Profile->ClientCertSize); > FreePool (Profile->ClientCertData); > + Profile->ClientCertData = NULL; > } > } else { > break; > } > > diff --git > a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.c > b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.c > index 52ce18dfd8..9417440ac5 100644 > --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.c > +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.c > @@ -210,11 +210,10 @@ WifiMgrOnScanFinished ( > } > continue; > } > } > > - FreePool (Result); > gBS->SignalEvent (Nic->Private->NetworkListRefreshEvent); > > // > // The current connected network should always be available until > disconnection > // happens in Wifi FW layer, even when it is not in this time's scan > result. > -- > 2.16.2.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel