From: Stephen Hemminger Date: Wed, 30 Aug 2006 04:18:45 +0000 (-0700) Subject: [STRIP]: Fix neighbour table refcount leak. X-Git-Tag: v6.6-pxa1908~58851^2 X-Git-Url: https://git.dujemihanovic.xyz/?a=commitdiff_plain;h=ee1377c3eef4238d89b2f99fa4d0bbbad3078b64;p=linux.git [STRIP]: Fix neighbour table refcount leak. Found by inspection. The STRIP driver does neigh_lookup() but never releases. This driver shouldn't being doing gratuitous arp anyway. Untested, obviously, because of lack of hardware. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller --- diff --git a/drivers/net/wireless/strip.c b/drivers/net/wireless/strip.c index fd31885c6844..ccaf28e8db0a 100644 --- a/drivers/net/wireless/strip.c +++ b/drivers/net/wireless/strip.c @@ -467,6 +467,7 @@ static int arp_query(unsigned char *haddr, u32 paddr, struct net_device *dev) { struct neighbour *neighbor_entry; + int ret = 0; neighbor_entry = neigh_lookup(&arp_tbl, &paddr, dev); @@ -474,10 +475,11 @@ static int arp_query(unsigned char *haddr, u32 paddr, neighbor_entry->used = jiffies; if (neighbor_entry->nud_state & NUD_VALID) { memcpy(haddr, neighbor_entry->ha, dev->addr_len); - return 1; + ret = 1; } + neigh_release(neighbor_entry); } - return 0; + return ret; } static void DumpData(char *msg, struct strip *strip_info, __u8 * ptr,