From nobody Tue Dec 24 14:07:30 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1511765077064489.5377839725319; Sun, 26 Nov 2017 22:44:37 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 13A6021A1099A; Sun, 26 Nov 2017 22:40:14 -0800 (PST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 3E3B821A1097D for ; Sun, 26 Nov 2017 22:40:13 -0800 (PST) Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 26 Nov 2017 22:44:34 -0800 Received: from fanwang2-hp.ccr.corp.intel.com ([10.239.9.117]) by orsmga005.jf.intel.com with ESMTP; 26 Nov 2017 22:44:32 -0800 X-Original-To: edk2-devel@lists.01.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.24; helo=mga09.intel.com; envelope-from=fan.wang@intel.com; receiver=edk2-devel@lists.01.org X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,463,1505804400"; d="scan'208";a="178122795" From: fanwang2 To: edk2-devel@lists.01.org Date: Mon, 27 Nov 2017 14:43:50 +0800 Message-Id: <1511765030-9008-1-git-send-email-fan.wang@intel.com> X-Mailer: git-send-email 1.9.5.msysgit.1 Subject: [edk2] [Patch v2] MdeModulePkg: Free NET_BUF data after it is sent out to avoid memory leak X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Ye Ting , Wang Fan , Fu Siyuan , Jiaxin Wu MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" V2: * Since packet has already been referred by DhcpSb->LastPacket, and will be freed when sending another packet or clean up, there is no need to add an extra free function in NetbufFromExt. Cc: Jiaxin Wu Cc: Ye Ting Cc: Fu Siyuan Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Wang Fan Reviewed-by: Fu Siyuan --- MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Impl.h | 12 ++++++++++++ MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Io.c | 13 +++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Impl.h b/MdeModul= ePkg/Universal/Network/Dhcp4Dxe/Dhcp4Impl.h index e546a08..57f6d5e 100644 --- a/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Impl.h +++ b/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Impl.h @@ -182,10 +182,22 @@ VOID DhcpCleanConfigure ( IN OUT EFI_DHCP4_CONFIG_DATA *Config ); =20 /** + Callback of Dhcp packet. Does nothing. + + @param Arg The context. + +**/ +VOID +EFIAPI +DhcpDummyExtFree ( + IN VOID *Arg + ); + +/** Set the elapsed time based on the given instance and the pointer to the elapsed time option. =20 @param[in] Elapsed The pointer to the position to append. @param[in] Instance The pointer to the Dhcp4 instance. diff --git a/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Io.c b/MdeModuleP= kg/Universal/Network/Dhcp4Dxe/Dhcp4Io.c index 3898223..54a610a 100644 --- a/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Io.c +++ b/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Io.c @@ -1357,17 +1357,16 @@ DhcpSendMessage ( &DhcpSb->ClientAddressSendOut[0], &Packet->Dhcp4.Header.ClientHwAddr[0], Packet->Dhcp4.Header.HwAddrLen ); =20 - // // Wrap it into a netbuf then send it. // Frag.Bulk =3D (UINT8 *) &Packet->Dhcp4.Header; Frag.Len =3D Packet->Length; - Wrap =3D NetbufFromExt (&Frag, 1, 0, 0, DhcpReleasePacket, Packet); + Wrap =3D NetbufFromExt (&Frag, 1, 0, 0, DhcpDummyExtFree, NULL); =20 if (Wrap =3D=3D NULL) { FreePool (Packet); return EFI_OUT_OF_RESOURCES; } @@ -1397,11 +1396,10 @@ DhcpSendMessage ( EndPoint.LocalAddr.Addr[0] =3D DhcpSb->ClientAddr; UdpIo =3D DhcpSb->LeaseIoPort; } =20 ASSERT (UdpIo !=3D NULL); - NET_GET_REF (Wrap); =20 Status =3D UdpIoSendDatagram ( UdpIo,=20 Wrap,=20 &EndPoint,=20 @@ -1409,11 +1407,11 @@ DhcpSendMessage ( DhcpOnPacketSent,=20 DhcpSb ); =20 if (EFI_ERROR (Status)) { - NET_PUT_REF (Wrap); + NetbufFree (Wrap); return EFI_ACCESS_DENIED; } =20 return EFI_SUCCESS; } @@ -1452,16 +1450,16 @@ DhcpRetransmit ( // // Wrap it into a netbuf then send it. // Frag.Bulk =3D (UINT8 *) &DhcpSb->LastPacket->Dhcp4.Header; Frag.Len =3D DhcpSb->LastPacket->Length; - Wrap =3D NetbufFromExt (&Frag, 1, 0, 0, DhcpReleasePacket, DhcpSb->= LastPacket); + Wrap =3D NetbufFromExt (&Frag, 1, 0, 0, DhcpDummyExtFree, NULL); =20 if (Wrap =3D=3D NULL) { return EFI_OUT_OF_RESOURCES; } - =20 + // // Broadcast the message, unless we know the server address. // EndPoint.RemotePort =3D DHCP_SERVER_PORT; EndPoint.LocalPort =3D DHCP_CLIENT_PORT; @@ -1475,22 +1473,21 @@ DhcpRetransmit ( UdpIo =3D DhcpSb->LeaseIoPort; } =20 ASSERT (UdpIo !=3D NULL); =20 - NET_GET_REF (Wrap); Status =3D UdpIoSendDatagram ( UdpIo, Wrap, &EndPoint, NULL, DhcpOnPacketSent, DhcpSb ); =20 if (EFI_ERROR (Status)) { - NET_PUT_REF (Wrap); + NetbufFree (Wrap); return EFI_ACCESS_DENIED; } =20 return EFI_SUCCESS; } --=20 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel