Netdev List
 help / color / mirror / Atom feed
From: Eric Dumazet <eric.dumazet@gmail.com>
To: paulmck@linux.vnet.ibm.com
Cc: Miles Lane <miles.lane@gmail.com>,
	Vivek Goyal <vgoyal@redhat.com>, Eric Paris <eparis@redhat.com>,
	Lai Jiangshan <laijs@cn.fujitsu.com>, Ingo Molnar <mingo@elte.hu>,
	Peter Zijlstra <peterz@infradead.org>,
	LKML <linux-kernel@vger.kernel.org>,
	nauman@google.com, netdev@vger.kernel.org,
	Jens Axboe <jens.axboe@oracle.com>,
	Gui Jianfeng <guijianfeng@cn.fujitsu.com>,
	Li Zefan <lizf@cn.fujitsu.com>,
	Johannes Berg <johannes@sipsolutions.net>,
	shemminger@vyatta.com
Subject: Re: 2.6.34-rc5-git7 (plus all patches) -- another suspicious rcu_dereference_check() usage.
Date: Wed, 28 Apr 2010 21:38:11 +0200	[thread overview]
Message-ID: <1272483491.2201.9.camel@edumazet-laptop> (raw)
In-Reply-To: <20100428175426.GK2540@linux.vnet.ibm.com>

Le mercredi 28 avril 2010 à 10:54 -0700, Paul E. McKenney a écrit :
> On Mon, Apr 26, 2010 at 08:51:06PM -0400, Miles Lane wrote:
> > This one occurred during the wakeup from suspend to RAM.
> > 
> > [  984.724697] [ INFO: suspicious rcu_dereference_check() usage. ]
> > [  984.724700] ---------------------------------------------------
> > [  984.724703] include/linux/fdtable.h:88 invoked
> > rcu_dereference_check() without protection!
> > [  984.724706]
> > [  984.724707] other info that might help us debug this:
> > [  984.724708]
> > [  984.724711]
> > [  984.724711] rcu_scheduler_active = 1, debug_locks = 1
> > [  984.724714] no locks held by dbus-daemon/4680.
> > [  984.724717]
> > [  984.724717] stack backtrace:
> > [  984.724721] Pid: 4680, comm: dbus-daemon Not tainted 2.6.34-rc5-git7 #33
> > [  984.724724] Call Trace:
> > [  984.724734]  [<ffffffff81074556>] lockdep_rcu_dereference+0x9d/0xa6
> > [  984.724740]  [<ffffffff810fc785>] fcheck_files+0xb1/0xc9
> > [  984.724745]  [<ffffffff810fc7f5>] fget_light+0x35/0xab
> > [  984.724751]  [<ffffffff81433e1b>] ? sock_poll_wait+0x13/0x18
> > [  984.724755]  [<ffffffff81433e39>] ? unix_poll+0x19/0x95
> > [  984.724762]  [<ffffffff8110aa95>] do_sys_poll+0x1ff/0x3e5
> > [  984.724766]  [<ffffffff8110a19e>] ? __pollwait+0x0/0xc7
> > [  984.724771]  [<ffffffff8110a265>] ? pollwake+0x0/0x4f
> > [  984.724776]  [<ffffffff8110a265>] ? pollwake+0x0/0x4f
> > [  984.724780]  [<ffffffff8110a265>] ? pollwake+0x0/0x4f
> > [  984.724784]  [<ffffffff8110a265>] ? pollwake+0x0/0x4f
> > [  984.724788]  [<ffffffff8110a265>] ? pollwake+0x0/0x4f
> > [  984.724793]  [<ffffffff8110a265>] ? pollwake+0x0/0x4f
> > [  984.724797]  [<ffffffff8110a265>] ? pollwake+0x0/0x4f
> > [  984.724802]  [<ffffffff8110a265>] ? pollwake+0x0/0x4f
> > [  984.724806]  [<ffffffff8110a265>] ? pollwake+0x0/0x4f
> > [  984.724812]  [<ffffffff8110ae0f>] sys_poll+0x50/0xbb
> > [  984.724818]  [<ffffffff81009d82>] system_call_fastpath+0x16/0x1b
> 
> Hmmm...  I am not convinced that this is a false positive.  Couldn't
> there be a multi-threaded process where one thread is invoking poll()
> on a UNIX socket just as another thread is calling close() on it?
> 
> The current fcheck_files() logic requires that the caller either (1) be in
> an RCU read-side critical section, (2) hold ->files_lock, or (3) passing
> in a files_struct with ->count equal to 1 (initialization or cleanup).
> 
> So I don't feel comfortable just slapping an RCU read-side critical
> section around this one, at least not unless someone who understands
> the locking says that doing so is OK.
> 
> 		

Its a single threaded program.

So fget_light() calls fcheck_files(files, fd); without rcu lock,
but some /proc/pid/fd/... user temporarly raised files->count just
before we perform the condition check.

  reply	other threads:[~2010-04-28 19:38 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-27  0:51 2.6.34-rc5-git7 (plus all patches) -- another suspicious rcu_dereference_check() usage Miles Lane
2010-04-28 17:54 ` Paul E. McKenney
2010-04-28 19:38   ` Eric Dumazet [this message]
2010-04-28 20:09     ` Paul E. McKenney
2010-04-28 20:18       ` Eric Dumazet
2010-04-28 20:44         ` Paul E. McKenney
2010-04-30  0:48           ` Paul E. McKenney
2010-04-30 22:48 ` Paul E. McKenney
2010-05-03 21:26   ` 2.6.34-rc6-next-20100503+ suspicious rcu_dereference_check() Eric Paris
2010-05-03 23:14     ` 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=1272483491.2201.9.camel@edumazet-laptop \
    --to=eric.dumazet@gmail.com \
    --cc=eparis@redhat.com \
    --cc=guijianfeng@cn.fujitsu.com \
    --cc=jens.axboe@oracle.com \
    --cc=johannes@sipsolutions.net \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizf@cn.fujitsu.com \
    --cc=miles.lane@gmail.com \
    --cc=mingo@elte.hu \
    --cc=nauman@google.com \
    --cc=netdev@vger.kernel.org \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=shemminger@vyatta.com \
    --cc=vgoyal@redhat.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox