From: Yang Wang <wangyzhaoz@163.com>
Check EmacGetDmaStatus input parameters
IrqStat may be a null pointer.
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Loh Tien Hock <tien.hock.loh@intel.com>
Cc: Ooi Tzy Way <tzy.way.ooi@intel.com>
Cc: Ran Wang <wangran@bosc.ac.cn>
Signed-off-by: Yang Wang <wangyzhaoz@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/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-