From nobody Sun May 12 07:58:52 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+107391+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+107391+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=163.com ARC-Seal: i=1; a=rsa-sha256; t=1690773913; cv=none; d=zohomail.com; s=zohoarc; b=DcqwfXGD5UaOx63ntb7f/8nYuNQ+Vd0FVIlZYBK6QqBnsJtZ1SV15MunRkYBvrGwZC1fMPh+pJh3QdZomDuJs79HO7S5dKNqdyM6takaSZJjoVWRl5pDex4kwHwp2ps2lQ7bknjsgxitTAgNlqvO6B8UVKP/k2UXkYOG5ussBQA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690773913; h=Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=BuSuTvui8mgYNEkhlyinQNzljxZfHxUS0O4OGHVAbNM=; b=Gc5Iw59rQl5Do9zKBmJy2V3mHGWZBCdRVOSqWqorKfKVXgp2WW+6U3Op8wuhhCXnhQo2dXooV2DZCDQTnFeXH3H7EJcN3Aikm7oI+ivogjYg/1cz//GGYP2MbN1e9B0g32jH4cPS4LrP0L1ZmRccC2CDN2knswaM+OmxZo4M2Gk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+107391+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1690773913133851.8758208152293; Sun, 30 Jul 2023 20:25:13 -0700 (PDT) Return-Path: DKIM-Signature: a=rsa-sha256; bh=b+JYYFGR+1esZ2iuYBDd1KlPsSJl3bG3ngLFMG5HFQ4=; c=relaxed/simple; d=groups.io; h=X-Received:X-Received:X-Received:From:To:Cc:Subject:Date:Message-Id:MIME-Version:X-CM-TRANSID:X-Coremail-Antispam:X-Originating-IP:X-CM-SenderInfo:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:X-Gm-Message-State:Content-Transfer-Encoding; s=20140610; t=1690773912; v=1; b=ZPv5ltr/hEpZdGJZg5QTJOG1yNYi0Hqf8y9qdcc6yU3UaSKkoWJV8DAJrG1Nq5PbN6YQHuxQ oQPK+5lXzXE5etAm8fSNu46PXBiFd3kMoHPEKfa/2Nc8DqPyC+aKakD9poavYAjotz5RTZu0eXj /AiKqqiScgtOBak7FG0ehvdw= X-Received: by 127.0.0.2 with SMTP id kYIfYY1788612xY1mUexrbXZ; Sun, 30 Jul 2023 20:25:12 -0700 X-Received: from m12.mail.163.com (m12.mail.163.com [220.181.12.215]) by mx.groups.io with SMTP id smtpd.web11.166.1690773911642551098 for ; Sun, 30 Jul 2023 20:25:12 -0700 X-Received: from localhost.localdomain (unknown [219.141.235.82]) by zwqz-smtp-mta-g1-2 (Coremail) with SMTP id _____wBnfTx2KcdkAHDqBg--.47213S2; Mon, 31 Jul 2023 11:24:39 +0800 (CST) From: "wangy" To: devel@edk2.groups.io Cc: pedro.falcato@gmail.com, Yang Wang , Leif Lindholm , Ard Biesheuvel , Ran Wang Subject: [edk2-devel] [edk2-platforms][PATCH V3] Silicon/Synopsys/DesignWare: DwEmacSnpDxe: Fix bug in EmacGetDmaStatus Date: Mon, 31 Jul 2023 11:24:36 +0800 Message-Id: <3f5a13860d7c3a15d88cbf13c9e31301ec884f9c.1690772738.git.wangyzhaoz@163.com> MIME-Version: 1.0 X-CM-TRANSID: _____wBnfTx2KcdkAHDqBg--.47213S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxXr17Xr13tw1fWryrKryfJFb_yoW5GF4kpa 9IkrZrCrsxJFyrAF1YyF4qqF45GFZ3KrWqk347J39YqFnxJrn3uF1aqFW7J3WDGFy0yry3 WayYq34xGr95tw7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pEasUJUUUUU= X-Originating-IP: [219.141.235.82] X-CM-SenderInfo: 5zdqw5p2kd06i6rwjhhfrp/1tbiJRi9JWNfs8SWjAAAs0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,wangyzhaoz@163.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 1gssQKY7lhFcwE7JCnMtwntsx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1690773915016100003 Content-Type: text/plain; charset="utf-8" From: Yang Wang The EFI spec (see UEFI 2.10, 24.1.12) requires EFI_SIMPLE_NETWORK.GetStatus() to handle NULL InterruptStatus pointers by not reading nor clearing the interrupt status from the device. However, EmacGetDmaStatus (part of the DwEmacSnpDxe GetStatus() implementation) did not correctly handle NULL IrqStat, despite already being tagged as an OPTIONAL argument. This made calling GetStatus() with a NULL pointer (for example, the call in MnpRecycleTxBuf) either corrupt memory or straight-up crash. Make it EFI spec compliant, by adding proper NULL pointer checks around RI_SET_MSK and TI_SET_MSK retrieval/clearing. Cc: Leif Lindholm Cc: Ard Biesheuvel Signed-off-by: Yang Wang Acked-by: Pedro Falcato Reviewed-by: Ran Wang --- .../Drivers/DwEmacSnpDxe/EmacDxeUtil.c | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/EmacDxeUtil.c= b/Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/EmacDxeUtil.c index 3b982ce984..26d3ff6138 100755 --- a/Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/EmacDxeUtil.c +++ b/Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/EmacDxeUtil.c @@ -500,24 +500,30 @@ EmacGetDmaStatus ( UINT32 ErrorBit; UINT32 Mask =3D 0; =20 + if (IrqStat !=3D NULL) { + *IrqStat =3D 0; + } + DmaStatus =3D MmioRead32 (MacBaseAddress + DW_EMAC_DMAGRP_STATUS_OFST); if (DmaStatus & DW_EMAC_DMAGRP_STATUS_NIS_SET_MSK) { Mask |=3D DW_EMAC_DMAGRP_STATUS_NIS_SET_MSK; // Rx interrupt if (DmaStatus & DW_EMAC_DMAGRP_STATUS_RI_SET_MSK) { - *IrqStat |=3D EFI_SIMPLE_NETWORK_RECEIVE_INTERRUPT; - Mask |=3D DW_EMAC_DMAGRP_STATUS_RI_SET_MSK; - } else { - *IrqStat &=3D ~EFI_SIMPLE_NETWORK_RECEIVE_INTERRUPT; + if (IrqStat !=3D NULL) { + *IrqStat |=3D EFI_SIMPLE_NETWORK_RECEIVE_INTERRUPT; + Mask |=3D DW_EMAC_DMAGRP_STATUS_RI_SET_MSK; + } } + // Tx interrupt if (DmaStatus & DW_EMAC_DMAGRP_STATUS_TI_SET_MSK) { - *IrqStat |=3D EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT; - Mask |=3D DW_EMAC_DMAGRP_STATUS_TI_SET_MSK; - } else { - *IrqStat &=3D ~EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT; + if (IrqStat !=3D NULL) { + *IrqStat |=3D EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT; + Mask |=3D DW_EMAC_DMAGRP_STATUS_TI_SET_MSK; + } } + // Tx Buffer if (DmaStatus & DW_EMAC_DMAGRP_STATUS_TU_SET_MSK){ Mask |=3D DW_EMAC_DMAGRP_STATUS_TU_SET_MSK; --=20 2.25.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#107391): https://edk2.groups.io/g/devel/message/107391 Mute This Topic: https://groups.io/mt/100455239/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-