From: Ingo Molnar <mingo@elte.hu>
To: Eric Dumazet <dada1@cosmosbay.com>
Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
netfilter@vger.kernel.org,
"David S. Miller" <davem@davemloft.net>,
Patrick McHardy <kaber@trash.net>,
Rusty Russell <rusty@rustcorp.com.au>,
coreteam@netfilter.org
Subject: Re: [netfilter bug] BUG: using smp_processor_id() in preemptible [00000000] code: ssh/9115, caller is ipt_do_table+0xc8/0x559
Date: Thu, 2 Apr 2009 23:16:06 +0200 [thread overview]
Message-ID: <20090402211606.GC4076@elte.hu> (raw)
In-Reply-To: <20090402203220.GA30375@elte.hu>
* Ingo Molnar <mingo@elte.hu> wrote:
> * Eric Dumazet <dada1@cosmosbay.com> wrote:
>
> > David put into its tree fix for that a few hours ago
> >
> > commit fa9a86ddc8ecd2830a5e773facc250f110300ae7
> >
> > (netfilter: iptables: lock free counters) forgot to disable BH
> > in arpt_do_table(), ipt_do_table() and ip6t_do_table()
> >
> > Use rcu_read_lock_bh() instead of rcu_read_lock() cures the problem.
>
> ok, got your fix (attached below), thanks Eric for the pointer.
>
> But i think my fix might be slightly better, because it does not
> manipulate the preempt counter and leaves preemption enabled.
>
> There's no BH context worries since this code did not seem to have
> BH protection before either. (it used a plain read_lock(), not
> read_lock_bh(), AFAICS)
>
> I dont see any preemption worries either. I must be missing
> something :)
as per the other mail - what i missed was that the old code _did_
use read_lock_bh(), which did not get carried over into the
rcu_read_lock().
So this fix affects basically all things netfilter, not just
rcu-preempt - a plain rcu_read_lock() doesnt protect against BH
context interaction.
Ingo
next prev parent reply other threads:[~2009-04-02 21:16 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-02 20:01 [netfilter bug] BUG: using smp_processor_id() in preemptible [00000000] code: ssh/9115, caller is ipt_do_table+0xc8/0x559 Ingo Molnar
2009-04-02 20:12 ` [PATCH] netfilter: iptables: lock free counters, PREEMPT_RCU=y fix Ingo Molnar
2009-04-02 20:38 ` Stephen Hemminger
2009-04-02 20:52 ` Ingo Molnar
2009-04-02 20:18 ` [netfilter bug] BUG: using smp_processor_id() in preemptible [00000000] code: ssh/9115, caller is ipt_do_table+0xc8/0x559 Eric Dumazet
2009-04-02 20:22 ` Ingo Molnar
2009-04-02 20:32 ` Ingo Molnar
2009-04-02 20:32 ` Ingo Molnar
2009-04-02 21:16 ` Ingo Molnar [this message]
2009-04-04 17:23 ` Paul E. McKenney
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=20090402211606.GC4076@elte.hu \
--to=mingo@elte.hu \
--cc=coreteam@netfilter.org \
--cc=dada1@cosmosbay.com \
--cc=davem@davemloft.net \
--cc=kaber@trash.net \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=netfilter@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
/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.