Commit cc5d229a authored by Florinel Iordache's avatar Florinel Iordache Committed by David S. Miller

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: default avatarFlorinel Iordache <florinel.iordache@nxp.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent cc79fd8f
...@@ -1200,7 +1200,7 @@ int dtsec_del_hash_mac_address(struct fman_mac *dtsec, enet_addr_t *eth_addr) ...@@ -1200,7 +1200,7 @@ int dtsec_del_hash_mac_address(struct fman_mac *dtsec, enet_addr_t *eth_addr)
list_for_each(pos, list_for_each(pos,
&dtsec->multicast_addr_hash->lsts[bucket]) { &dtsec->multicast_addr_hash->lsts[bucket]) {
hash_entry = ETH_HASH_ENTRY_OBJ(pos); 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); list_del_init(&hash_entry->node);
kfree(hash_entry); kfree(hash_entry);
break; break;
...@@ -1213,7 +1213,7 @@ int dtsec_del_hash_mac_address(struct fman_mac *dtsec, enet_addr_t *eth_addr) ...@@ -1213,7 +1213,7 @@ int dtsec_del_hash_mac_address(struct fman_mac *dtsec, enet_addr_t *eth_addr)
list_for_each(pos, list_for_each(pos,
&dtsec->unicast_addr_hash->lsts[bucket]) { &dtsec->unicast_addr_hash->lsts[bucket]) {
hash_entry = ETH_HASH_ENTRY_OBJ(pos); 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); list_del_init(&hash_entry->node);
kfree(hash_entry); kfree(hash_entry);
break; break;
......
...@@ -981,7 +981,7 @@ int memac_del_hash_mac_address(struct fman_mac *memac, enet_addr_t *eth_addr) ...@@ -981,7 +981,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]) { list_for_each(pos, &memac->multicast_addr_hash->lsts[hash]) {
hash_entry = ETH_HASH_ENTRY_OBJ(pos); 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); list_del_init(&hash_entry->node);
kfree(hash_entry); kfree(hash_entry);
break; break;
......
...@@ -626,7 +626,7 @@ int tgec_del_hash_mac_address(struct fman_mac *tgec, enet_addr_t *eth_addr) ...@@ -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]) { list_for_each(pos, &tgec->multicast_addr_hash->lsts[hash]) {
hash_entry = ETH_HASH_ENTRY_OBJ(pos); 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); list_del_init(&hash_entry->node);
kfree(hash_entry); kfree(hash_entry);
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment