From: Richard Weinberger <richard@nod.at>
To: Ben Hutchings <bhutchings@solarflare.com>
Cc: rl@hellgate.ch, netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] via-rhine: Fix tx_timeout handling
Date: Sun, 21 Jul 2013 18:32:03 +0200 [thread overview]
Message-ID: <51EC0D03.4070508@nod.at> (raw)
In-Reply-To: <1374423530.2804.13.camel@deadeye.wl.decadent.org.uk>
Am 21.07.2013 18:18, schrieb Ben Hutchings:
> On Fri, 2013-07-19 at 23:30 +0200, Richard Weinberger wrote:
>> rhine_reset_task() misses to call netif_stop_queue(),
>> this can lead to a crash if work is still scheduled while
>> we're resetting the tx queue.
>>
>> Fixes:
>> [ 93.591707] BUG: unable to handle kernel NULL pointer dereference at 0000004c
>> [ 93.595514] IP: [<c119d10d>] rhine_napipoll+0x491/0x6e
>>
>> Signed-off-by: Richard Weinberger <richard@nod.at>
>> ---
>> drivers/net/ethernet/via/via-rhine.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/net/ethernet/via/via-rhine.c b/drivers/net/ethernet/via/via-rhine.c
>> index b75eb9e..57e1b40 100644
>> --- a/drivers/net/ethernet/via/via-rhine.c
>> +++ b/drivers/net/ethernet/via/via-rhine.c
>> @@ -1615,6 +1615,7 @@ static void rhine_reset_task(struct work_struct *work)
>> goto out_unlock;
>>
>> napi_disable(&rp->napi);
>> + netif_stop_queue(dev);
>
> This is not really fixing the bug because there is no synchronisation
> with the TX scheduler. You can call netif_tx_disable() instead to do
> that.
I guess other drivers suffer from that too.
A quick grep showed that not many drivers are using netif_tx_disable().
> (I also think that it is preferable to use
> netif_device_{detach,attach}() to stop the queue during reconfiguration,
> as this is independent of TX completions and the watchdog.)
So the correct down sequence is napi_disable() -> netif_tx_disable() -> netif_device_detach()?
Thanks,
//richard
next prev parent reply other threads:[~2013-07-21 16:32 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-19 21:30 [PATCH] via-rhine: Fix tx_timeout handling Richard Weinberger
2013-07-21 16:18 ` Ben Hutchings
2013-07-21 16:32 ` Richard Weinberger [this message]
2013-07-21 20:24 ` Ben Hutchings
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51EC0D03.4070508@nod.at \
--to=richard@nod.at \
--cc=bhutchings@solarflare.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=rl@hellgate.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.