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 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.