All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Valdis.Kletnieks@vt.edu
Cc: Oleg Nesterov <oleg@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Ingo Molnar <mingo@elte.hu>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	linux-kernel@vger.kernel.org
Subject: Re: mmotm 2010-04-05 - another RCU whinge (not network this time)
Date: Fri, 9 Apr 2010 22:15:04 -0700	[thread overview]
Message-ID: <20100410051504.GA2414@linux.vnet.ibm.com> (raw)
In-Reply-To: <10875.1270869752@localhost>

On Fri, Apr 09, 2010 at 11:22:32PM -0400, Valdis.Kletnieks@vt.edu wrote:
> On Fri, 09 Apr 2010 16:16:14 PDT, "Paul E. McKenney" said:
> > On Thu, Apr 08, 2010 at 07:57:28PM -0400, Valdis.Kletnieks@vt.edu wrote:
> > > On Mon, 05 Apr 2010 16:09:45 PDT, akpm@linux-foundation.org said:
> > > > The mm-of-the-moment snapshot 2010-04-05-16-09 has been uploaded to
> > > > 
> > > >    http://userweb.kernel.org/~akpm/mmotm/
> > > 
> > > Hit another one.  I seem to be on a roll...
> > > 
> > > Seen in dmesg, happened near end of the initrd..
> > > 
> > > [   26.756864] 
> > > [   26.756866] ===================================================
> > > [   26.756869] [ INFO: suspicious rcu_dereference_check() usage. ]
> > > [   26.756871] ---------------------------------------------------
> > > [   26.756874] fs/proc/array.c:241 invoked rcu_dereference_check() without protection!
> > 
> > Color me confused.  I cloned James Toy's git repository at
> > git://zen-kernel.org/kernel/mmotm.git, and gitk claims that I am on tag
> > 2010-04-05-16-09, which matches the string above.  But when I look at
> > fs/proc/array.c near line 241, I see:
> 
> Andrew's -mm tree has 3 patches from Oleg Nesterov that hit that file, so the
> code is different from what you show. Color *me* confused why your clone of
> mmotm.git doesn't seem to contain them - I'm not sure how James Toy builds
> that git tree.  Perhaps the tag is applied before those patches are - the
> 'mm.patch' that updates the Makefile with the version is usually in the
> *middle* of the 'series' file.  What does HEAD of that tree look like?

Good point...  The last commit is branch "master" and tagged
2010-04-05-16-09, but the commit line is "Linux 2.6.34-rc3", which seems
unlikely to me.

> My tree has:
> 
> /* needs ->siglock or rcu_read_lock() */
> static void collect_sigign_sigcatch(struct task_struct *p, sigset_t *ign,
>                                     sigset_t *catch)
> {
>         struct sighand_struct *sighand = rcu_dereference(p->sighand);
> 
> And that rcu_dereference() does it.

Thank you!!!

> Oleg, looks like proc-make-collect_sigign_sigcatch-rcu-safe.patch is the
> offender here, it added the line that causes the whinge.

If collect_sigign_sigcatch() is OK to call by updaters as well as
readers, we need something like:

	struct sighand_struct *sighand;
	
	sighand = rcu_dereference_check(p->sighand,
					rcu_read_lock_held() ||
					lockdep_is_held(&???));

Where the "???" is replaced with whichever of the two locks is protecting
updates.  My guess would be the sighand lock, but I would not rely on
my guesses in this case.  ;-)

							Thanx, Paul

  reply	other threads:[~2010-04-10  5:15 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-05 23:09 mmotm 2010-04-05-16-09 uploaded akpm
2010-04-06  5:04 ` [PATCH mmotm] hid-picolcd: depends on LCD_CLASS_DEVICE Randy Dunlap
2010-04-06  8:40   ` Jiri Kosina
2010-04-06  8:56     ` Bruno Prémont
2010-04-06 15:26       ` Randy Dunlap
2010-04-06 16:35         ` Bruno Prémont
2010-04-06 16:35           ` Bruno Prémont
2010-04-06 16:56           ` Randy Dunlap
2010-04-06 16:56             ` Randy Dunlap
2010-04-06 21:04             ` Bruno Prémont
2010-04-06 21:04               ` Bruno Prémont
2010-04-07 16:20               ` Randy Dunlap
2010-04-07 18:31                 ` Bruno Prémont
2010-04-07 18:31                   ` Bruno Prémont
2010-04-08 12:42                   ` Jiri Kosina
2010-04-08 12:42                     ` Jiri Kosina
2010-04-11 10:17                     ` Bruno Prémont
2010-04-11 10:17                       ` Bruno Prémont
2010-04-11 18:28                       ` Jiri Kosina
2010-04-11 18:28                         ` Jiri Kosina
2010-04-07 18:44             ` Bruno Prémont
2010-04-07 20:12               ` Randy Dunlap
2010-04-07 20:12                 ` Randy Dunlap
2010-04-07 20:29                 ` Bruno Prémont
2010-04-07 20:29                   ` Bruno Prémont
2010-04-07 18:01 ` mmotm 2010-04-05-16-09 uploaded Valdis.Kletnieks
2010-04-08 11:41   ` Patrick McHardy
2010-04-08 15:23     ` Valdis.Kletnieks
2010-04-08 15:36       ` Patrick McHardy
2010-04-09  0:50         ` Valdis.Kletnieks
2010-04-09 14:49           ` Patrick McHardy
2010-04-08 23:57 ` mmotm 2010-04-05 - another RCU whinge (not network this time) Valdis.Kletnieks
2010-04-09 23:16   ` Paul E. McKenney
2010-04-10  3:22     ` Valdis.Kletnieks
2010-04-10  5:15       ` Paul E. McKenney [this message]
2010-04-12 18:32         ` Oleg Nesterov

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=20100410051504.GA2414@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=Valdis.Kletnieks@vt.edu \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=oleg@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 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.