From: Jarek Poplawski <jarkao2@o2.pl>
To: Nadia Derbey <Nadia.Derbey@bull.net>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Alexey Dobriyan <adobriyan@sw.ru>,
linux-kernel@vger.kernel.org
Subject: Re: 2.6.23-rc6-mm1: IPC: sleeping function called ...
Date: Wed, 26 Sep 2007 08:13:10 +0200 [thread overview]
Message-ID: <20070926061310.GA1865@ff.dom.local> (raw)
In-Reply-To: <20070925114705.GA3148@ff.dom.local>
On Tue, Sep 25, 2007 at 01:47:05PM +0200, Jarek Poplawski wrote:
> On Mon, Sep 24, 2007 at 11:50:23AM +0200, Nadia Derbey wrote:
> > Jarek Poplawski wrote:
> ...
> > >2. I'm not sure this refcounting with ipc_rcu_getref/putref is SMP
> > >safe (memory barriers): it's not atomic, so locking is needed, but
> > >e.g. in do_msgsnd() kern_ipc_perm lock is used for this, while
> > >freeque() calls ipc_rcu_putref() with ipc_ids mutex only.
> > >
> > >3. Probably similar problem is possible with msr_d.r_msg which is
> > >read in do_msgrcv() under rcu_read_lock() only.
> > >
> >
> > In think here they have avoided refcoutning by using r_msg:
> > r_msg is initialzed to -EAGAIN before releasing the msq lock. if
> > freequeue() is called it sets r_msg to EIDRM (see expunge_all(-EIDRM)).
> > Setting r_msg is always done under the msq lock (expunge_all() /
> > pipelined_Sned()).
> > Since rcu_read_lock is called right after schedule, they are sure the
> > msq pointer is still valid when they re-lock it once a msg is present in
> > the receive queue.
> >
> > Please tell me if I'm not clear ;-)
>
> All clear!
>
> Except... this r_msg is still unclear to me. Since it's read without
> msq lock I doubt this first check after schedule() is of any value. A
> comment: "Lockless receive, part 2" tells about some safety against a
> race with pipeline_send() and expunge_all() when in wake_up_process(),
> but how can we be sure this r_msg is not just to be changed and this
> wake_up_process() is running while "while" check still sees
> ERR_PTR(-EAGAIN) instead of NULL?
OOPS!
At last I've found enough time to look at this more exactly plus the
right comment in sem.c, and it looks like it's all right and really
thought up, with all variants foreseen. So, I withdraw this problem
nr 3 too.
Best regards,
Jarek P.
next prev parent reply other threads:[~2007-09-26 6:11 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-18 9:17 2.6.23-rc6-mm1: IPC: sleeping function called Alexey Dobriyan
2007-09-18 9:42 ` Andrew Morton
2007-09-18 10:17 ` Andrew Morton
2007-09-18 10:30 ` Nadia Derbey
2007-09-18 10:34 ` Andrew Morton
[not found] ` <20070918142451.418b3b51@twins>
2007-09-18 16:13 ` Paul E. McKenney
2007-09-18 16:57 ` Andrew Morton
2007-09-18 18:29 ` Paul E. McKenney
2007-09-18 19:41 ` Peter Zijlstra
2007-09-18 20:26 ` [PATCH 1/2] lockdep: annotate rcu_read_lock() Peter Zijlstra
2007-09-18 20:27 ` [RFC][PATCH 2/2] lockdep: rcu_dereference() vs rcu_read_lock() Peter Zijlstra
2007-09-18 21:21 ` Paul E. McKenney
2007-09-18 10:27 ` 2.6.23-rc6-mm1: IPC: sleeping function called Andrew Morton
2007-09-18 10:32 ` Alexey Dobriyan
2007-09-18 14:55 ` Nadia Derbey
2007-09-18 17:01 ` Andrew Morton
2007-09-21 9:18 ` Nadia Derbey
2007-09-19 14:07 ` Jarek Poplawski
2007-09-20 6:24 ` Nadia Derbey
2007-09-20 7:28 ` Jarek Poplawski
2007-09-20 8:21 ` Jarek Poplawski
2007-09-20 8:52 ` Nadia Derbey
2007-09-20 13:08 ` Nadia Derbey
2007-09-20 13:26 ` Jarek Poplawski
2007-09-21 8:44 ` Jarek Poplawski
2007-09-21 10:11 ` Nadia Derbey
2007-09-21 11:03 ` Jarek Poplawski
2007-09-21 11:15 ` Jarek Poplawski
2007-09-24 6:54 ` Jarek Poplawski
2007-09-24 7:43 ` Jarek Poplawski
2007-09-24 8:18 ` Nadia Derbey
2007-09-24 9:50 ` Nadia Derbey
2007-09-25 11:47 ` Jarek Poplawski
2007-09-26 6:13 ` Jarek Poplawski [this message]
2007-09-20 13:19 ` Jarek Poplawski
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=20070926061310.GA1865@ff.dom.local \
--to=jarkao2@o2.pl \
--cc=Nadia.Derbey@bull.net \
--cc=adobriyan@sw.ru \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
/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