lkml.org 
[lkml]   [2007]   [Aug]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[2.6.22.2 review 14/84] Netpoll leak
    From: Satyam Sharma <ssatyam@cse.iitk.ac.in>

    [NETPOLL]: Fix a leak-n-bug in netpoll_cleanup()

    93ec2c723e3f8a216dde2899aeb85c648672bc6b applied excessive duct tape to
    the netpoll beast's netpoll_cleanup(), thus substituting one leak with
    another, and opening up a little buglet :-)

    net_device->npinfo (netpoll_info) is a shared and refcounted object and
    cannot simply be set NULL the first time netpoll_cleanup() is called.
    Otherwise, further netpoll_cleanup()'s see np->dev->npinfo == NULL and
    become no-ops, thus leaking. And it's a bug too: the first call to
    netpoll_cleanup() would thus (annoyingly) "disable" other (still alive)
    netpolls too. Maybe nobody noticed this because netconsole (only user
    of netpoll) never supported multiple netpoll objects earlier.

    This is a trivial and obvious one-line fixlet.

    Signed-off-by: Satyam Sharma <ssatyam@cse.iitk.ac.in>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    net/core/netpoll.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/net/core/netpoll.c
    +++ b/net/core/netpoll.c
    @@ -781,7 +781,6 @@ void netpoll_cleanup(struct netpoll *np)
    spin_unlock_irqrestore(&npinfo->rx_lock, flags);
    }

    - np->dev->npinfo = NULL;
    if (atomic_dec_and_test(&npinfo->refcnt)) {
    skb_queue_purge(&npinfo->arp_tx);
    skb_queue_purge(&npinfo->txq);
    @@ -794,6 +793,7 @@ void netpoll_cleanup(struct netpoll *np)
    kfree_skb(skb);
    }
    kfree(npinfo);
    + np->dev->npinfo = NULL;
    }
    }

    --
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-08-07 22:55    [W:0.022 / U:61.384 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site