From: Yang Wang <wangyzh...@163.com> Check EmacGetDmaStatus input parameters IrqStat may be a null pointer.
Cc: Michael D Kinney <michael.d.kin...@intel.com> Cc: Loh Tien Hock <tien.hock....@intel.com> Cc: Ooi Tzy Way <tzy.way....@intel.com> Cc: Ran Wang <wang...@bosc.ac.cn> Signed-off-by: Yang Wang <wangyzh...@163.com> --- .../Drivers/DwEmacSnpDxe/DwEmacSnpDxe.c | 7 +++++-- .../Drivers/DwEmacSnpDxe/EmacDxeUtil.c | 16 ++++++++++++---- .../Drivers/DwEmacSnpDxe/EmacDxeUtil.h | 2 +- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/DwEmacSnpDxe.c b/Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/DwEmacSnpDxe.c index 4cb3371d79..6805511a1d 100755 --- a/Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/DwEmacSnpDxe.c +++ b/Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/DwEmacSnpDxe.c @@ -847,9 +847,12 @@ SnpGetStatus ( } // Check DMA Irq status - EmacGetDmaStatus (IrqStat, Snp->MacBase); + Status = EmacGetDmaStatus (IrqStat, Snp->MacBase); + if (EFI_ERROR(Status)) { + DEBUG ((DEBUG_ERROR, "%a: error Status: %r\n", __func__, Status)); + } - return EFI_SUCCESS; + return Status; } diff --git a/Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/EmacDxeUtil.c b/Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/EmacDxeUtil.c index 3b982ce984..45b5a05f51 100755 --- a/Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/EmacDxeUtil.c +++ b/Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/EmacDxeUtil.c @@ -489,16 +489,22 @@ EmacDmaStart ( } -VOID +EFI_STATUS EFIAPI EmacGetDmaStatus ( OUT UINT32 *IrqStat OPTIONAL, IN UINTN MacBaseAddress ) { - UINT32 DmaStatus; - UINT32 ErrorBit; - UINT32 Mask = 0; + UINT32 DmaStatus; + UINT32 ErrorBit; + UINT32 Mask = 0; + EFI_STATUS Status = EFI_SUCCESS; + + if (IrqStat == NULL) { + Status = EFI_INVALID_PARAMETER; + goto EXIT; + } DmaStatus = MmioRead32 (MacBaseAddress + DW_EMAC_DMAGRP_STATUS_OFST); @@ -602,6 +608,8 @@ EmacGetDmaStatus ( MmioOr32 (MacBaseAddress + DW_EMAC_DMAGRP_STATUS_OFST, Mask); +EXIT: + return Status; } diff --git a/Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/EmacDxeUtil.h b/Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/EmacDxeUtil.h index c4c3653dc7..60f30ecd16 100755 --- a/Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/EmacDxeUtil.h +++ b/Silicon/Synopsys/DesignWare/Drivers/DwEmacSnpDxe/EmacDxeUtil.h @@ -339,7 +339,7 @@ EmacDmaStart ( ); -VOID +EFI_STATUS EFIAPI EmacGetDmaStatus ( OUT UINT32 *IrqStat OPTIONAL, -- 2.25.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#106986): https://edk2.groups.io/g/devel/message/106986 Mute This Topic: https://groups.io/mt/100212047/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-