From: Kentaro Takeda <takedakn@nttdata.co.jp>
To: paulmck@linux.vnet.ibm.com
Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>,
serue@us.ibm.com, sds@tycho.nsa.gov, jmorris@namei.org,
chrisw@sous-sol.org, dhowells@redhat.com,
linux-security-module@vger.kernel.org,
linux-kernel@vger.kernel.org, haradats@nttdata.co.jp,
akpm@linux-foundation.org
Subject: Re: [TOMOYO #10 (linux-next) 7/8] File operation restriction part.
Date: Fri, 17 Oct 2008 17:32:43 +0900 [thread overview]
Message-ID: <48F84DAB.4060002@nttdata.co.jp> (raw)
In-Reply-To: <20081016151003.GA6772@linux.vnet.ibm.com>
Quoting from http://lkml.org/lkml/2008/2/2/255
> Similarly, the smp_read_barrier_depends() is only for initialization
> of something that is about to enter the list. As with the smp_wmb()
> primitive, smp_read_barrier_depends() also is not to protect against
> freeing. Instead, it is rcu_read_lock() and rcu_read_unlock() that
> protect against freeing.
We don't need to use rcu_read_lock() and rcu_read_unlock() because
we don't free elements in a list. I see.
However, to ensure the reader gets up-to-date value, we need to use
smp_read_barrier_depends() (which is expanded to "mb()" for SMP on
Alpha, "read_barrier_depends()" for SMP on H8300, "((void)0)" for SMP
on M68K-nommu, "((void)0)" for M68K, "do { } while (0)" otherwise)
whenever the reader fetches an element in a list.
Paul E. McKenney wrote:
> But fair enough. How about the following?
>
> #define worm_dereference() rcu_dereference()
> #define worm_assign_pointer() rcu_assign_pointer()
>
So, I understood that the rcu_dereference() and rcu_assign_pointer()
are not only for RCU. They are needed to ensure the reader gets
up-to-date value. Then, their names should be var_dereference() and
var_assign_pointer() or something, shouldn't they? The "rcu_" prefix
and comments on rcu_dereference in include/linux/rcupdate.h sound for
me that they are used for variables protected by RCU locking
mechanism only...
You are suggesting to explicitly call rcu_assign_pointer() (which
will call smp_wmb()) and rcu_dereference() (which will call
smp_read_barrier_depends()). But I think that the various cache
invalidations driven by the workload will call rcu_assign_pointer()
and rcu_dereference() sooner or later. So, if the reader can tolerate
reading non-up-to-date value (in fact, TOMOYO can), isn't there a
choice to omit rcu_assign_pointer() and rcu_dereference() (which will
cost "mb()" for SMP on Alpha)?
Regards,
next prev parent reply other threads:[~2008-10-17 8:33 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-09 4:28 [TOMOYO #10 (linux-next) 0/8] TOMOYO Linux Kentaro Takeda
2008-10-09 4:28 ` [TOMOYO #10 (linux-next) 1/8] Introduce new LSM hooks where vfsmount is available Kentaro Takeda
2008-10-09 4:28 ` [TOMOYO #10 (linux-next) 2/8] Add in_execve flag into task_struct Kentaro Takeda
2008-10-09 4:28 ` [TOMOYO #10 (linux-next) 3/8] LSM adapter functions Kentaro Takeda
2008-10-09 6:10 ` KAMEZAWA Hiroyuki
2008-10-09 6:57 ` Kentaro Takeda
2008-10-09 4:28 ` [TOMOYO #10 (linux-next) 4/8] Memory and pathname management functions Kentaro Takeda
2008-10-09 6:18 ` KAMEZAWA Hiroyuki
2008-10-09 7:17 ` Kentaro Takeda
2008-10-09 4:28 ` [TOMOYO #10 (linux-next) 5/8] Common functions for TOMOYO Linux Kentaro Takeda
2008-10-09 4:28 ` [TOMOYO #10 (linux-next) 6/8] Domain transition handler Kentaro Takeda
2008-10-09 4:28 ` [TOMOYO #10 (linux-next) 7/8] File operation restriction part Kentaro Takeda
2008-10-09 16:48 ` Serge E. Hallyn
2008-10-12 0:09 ` Tetsuo Handa
2008-10-15 1:29 ` Paul E. McKenney
2008-10-16 4:05 ` Kentaro Takeda
2008-10-16 15:10 ` Paul E. McKenney
2008-10-17 8:32 ` Kentaro Takeda [this message]
2008-10-17 14:56 ` Paul E. McKenney
2008-10-18 14:04 ` Tetsuo Handa
2008-10-18 15:18 ` Paul E. McKenney
2008-10-19 13:10 ` Tetsuo Handa
2008-10-20 4:17 ` Paul E. McKenney
2008-10-15 15:24 ` Serge E. Hallyn
2008-10-09 4:28 ` [TOMOYO #10 (linux-next) 8/8] Kconfig and Makefile Kentaro Takeda
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=48F84DAB.4060002@nttdata.co.jp \
--to=takedakn@nttdata.co.jp \
--cc=akpm@linux-foundation.org \
--cc=chrisw@sous-sol.org \
--cc=dhowells@redhat.com \
--cc=haradats@nttdata.co.jp \
--cc=jmorris@namei.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=paulmck@linux.vnet.ibm.com \
--cc=penguin-kernel@I-love.SAKURA.ne.jp \
--cc=sds@tycho.nsa.gov \
--cc=serue@us.ibm.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