RE: [PATCH net 4/5] fsl/fman: check dereferencing null pointer
From: Madalin Bucur <madalin.bucur@nxp.com>
Date: 2020-07-31 07:48:40
Also in:
lkml
quoted hunk ↗ jump to hunk
-----Original Message----- From: Florinel Iordache <redacted> Sent: 31 July 2020 09:46 To: Madalin Bucur <madalin.bucur@nxp.com>; davem@davemloft.net; kuba@kernel.org; netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org; Florinel Iordache [off-list ref] Subject: [PATCH net 4/5] fsl/fman: check dereferencing null pointer Add a safe check to avoid dereferencing null pointer Fixes: 57ba4c9b ("fsl/fman: Add FMan MAC support") Signed-off-by: Florinel Iordache <redacted> --- drivers/net/ethernet/freescale/fman/fman_dtsec.c | 4 ++-- drivers/net/ethernet/freescale/fman/fman_memac.c | 3 ++- drivers/net/ethernet/freescale/fman/fman_tgec.c | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-)diff --git a/drivers/net/ethernet/freescale/fman/fman_dtsec.cb/drivers/net/ethernet/freescale/fman/fman_dtsec.c index 004c266..bce3c93 100644--- a/drivers/net/ethernet/freescale/fman/fman_dtsec.c +++ b/drivers/net/ethernet/freescale/fman/fman_dtsec.c@@ -1200,7 +1200,7 @@ int dtsec_del_hash_mac_address(struct fman_mac*dtsec, enet_addr_t *eth_addr) list_for_each(pos, &dtsec->multicast_addr_hash->lsts[bucket]) { hash_entry = ETH_HASH_ENTRY_OBJ(pos); - if (hash_entry->addr == addr) { + if (hash_entry && hash_entry->addr == addr) { list_del_init(&hash_entry->node); kfree(hash_entry); break;@@ -1213,7 +1213,7 @@ int dtsec_del_hash_mac_address(struct fman_mac*dtsec, enet_addr_t *eth_addr) list_for_each(pos, &dtsec->unicast_addr_hash->lsts[bucket]) { hash_entry = ETH_HASH_ENTRY_OBJ(pos); - if (hash_entry->addr == addr) { + if (hash_entry && hash_entry->addr == addr) { list_del_init(&hash_entry->node); kfree(hash_entry); break;diff --git a/drivers/net/ethernet/freescale/fman/fman_memac.cb/drivers/net/ethernet/freescale/fman/fman_memac.c index bb02b37..52ee982 100644--- a/drivers/net/ethernet/freescale/fman/fman_memac.c +++ b/drivers/net/ethernet/freescale/fman/fman_memac.c@@ -852,6 +852,7 @@ int memac_set_tx_pause_frames(struct fman_mac *memac,u8 priority, tmp = ioread32be(®s->command_config); tmp &= ~CMD_CFG_PFC_MODE; + priority = 0;
This line seems to be added by mistake.
quoted hunk ↗ jump to hunk
iowrite32be(tmp, ®s->command_config);@@ -981,7 +982,7 @@ int memac_del_hash_mac_address(struct fman_mac *memac,enet_addr_t *eth_addr) list_for_each(pos, &memac->multicast_addr_hash->lsts[hash]) { hash_entry = ETH_HASH_ENTRY_OBJ(pos); - if (hash_entry->addr == addr) { + if (hash_entry && hash_entry->addr == addr) { list_del_init(&hash_entry->node); kfree(hash_entry); break;diff --git a/drivers/net/ethernet/freescale/fman/fman_tgec.cb/drivers/net/ethernet/freescale/fman/fman_tgec.c index 8c7eb87..41946b1 100644--- a/drivers/net/ethernet/freescale/fman/fman_tgec.c +++ b/drivers/net/ethernet/freescale/fman/fman_tgec.c@@ -626,7 +626,7 @@ int tgec_del_hash_mac_address(struct fman_mac *tgec,enet_addr_t *eth_addr) list_for_each(pos, &tgec->multicast_addr_hash->lsts[hash]) { hash_entry = ETH_HASH_ENTRY_OBJ(pos); - if (hash_entry->addr == addr) { + if (hash_entry && hash_entry->addr == addr) { list_del_init(&hash_entry->node); kfree(hash_entry); break; -- 1.9.1