| To: | Ben Greear <greearb@xxxxxxxxxxxxxxx> |
|---|---|
| Subject: | Re: Leaked net-device reference in eql.c |
| From: | Arnaldo Carvalho de Melo <arnaldo.melo@xxxxxxxxx> |
| Date: | Sat, 27 Aug 2005 06:37:17 -0300 |
| Cc: | Patrick McHardy <kaber@xxxxxxxxx>, "netdev@xxxxxxxxxxx" <netdev@xxxxxxxxxxx> |
| Domainkey-signature: | a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=lP9V7IeAmE3MgqNimUGZSQ/q3AWBVwJ922TelQZeX5kbfy//wnfJwzAirSV263rOQYz94z3a8yRl6+sdQjPrXFlQ6EsZ+DU4l5QCo46cZcXR33+E2jVo+YMO2YIg5K31RJm8BtCkMdEj10JnwgBjPK1Hbk4z/3FP7p76pPVsW9c= |
| In-reply-to: | <43100709.1090800@xxxxxxxxxxxxxxx> |
| References: | <430FAF0D.5050000@xxxxxxxxxxxxxxx> <430FE01E.9020600@xxxxxxxxx> <43100709.1090800@xxxxxxxxxxxxxxx> |
| Sender: | netdev-bounce@xxxxxxxxxxx |
On 8/27/05, Ben Greear <greearb@xxxxxxxxxxxxxxx> wrote:
> Patrick McHardy wrote:
> > Ben Greear wrote:
> >
> >> I think the eql_s_slave_cfg method in eql.c leaks
> >> the reference to slave_dev. Am I missing something?
> >
> >
> > No, it should also put the device, as in eql_g_slave_cfg.
>
> Ok, I'm making a patch...will add this to it.
>
> How about this one. It seems like it does a dev_put when it shouldn't
> (if some of the if's fail, the dev_get never happened):
>
> net/sched/sch_generic.c
>
> static void dev_watchdog(unsigned long arg)
> {
> struct net_device *dev = (struct net_device *)arg;
>
> spin_lock(&dev->xmit_lock);
> if (dev->qdisc != &noop_qdisc) {
> if (netif_device_present(dev) &&
> netif_running(dev) &&
> netif_carrier_ok(dev)) {
> if (netif_queue_stopped(dev) &&
> (jiffies - dev->trans_start) >
> dev->watchdog_timeo) {
> printk(KERN_INFO "NETDEV WATCHDOG: %s:
> transmit timed out\n", dev->name);
> dev->tx_timeout(dev);
> }
> if (!mod_timer(&dev->watchdog_timer, jiffies +
> dev->watchdog_timeo))
> dev_hold(dev);
> }
> }
> spin_unlock(&dev->xmit_lock);
>
> dev_put(dev);
> }
Doesn't look like its a problem, its the classical case where when you
associate some data structure to a timer you grab a refcount, when the
timer expires you drop the refcount, and as the code above shows when
mod_timer is succesfully called it grabs a reference, so the reference
being dropped above is from the previous timer firing, now its just a matter
if looking for the first mod_timer, that must be at some other place in
sched_generic.c, lemme see...
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: Leaked net-device reference in eql.c, Ben Greear |
|---|---|
| Next by Date: | Re: Leaked net-device reference in eql.c, Arnaldo Carvalho de Melo |
| Previous by Thread: | Re: Leaked net-device reference in eql.c, Ben Greear |
| Next by Thread: | Re: Leaked net-device reference in eql.c, Arnaldo Carvalho de Melo |
| Indexes: | [Date] [Thread] [Top] [All Lists] |