* [PATCH v3 25/25] selinux: Change how dentry's d_lock field is accessed
@ 2013-07-03 20:22 Waiman Long
2013-07-04 4:43 ` Al Viro
0 siblings, 1 reply; 2+ messages in thread
From: Waiman Long @ 2013-07-03 20:22 UTC (permalink / raw)
To: Alexander Viro, Jeff Layton, Miklos Szeredi, Ingo Molnar,
Thomas Gleixner
Cc: Stephen Smalley, James Morris, Eric Paris, linux-security-module,
Waiman Long, linux-fsdevel, linux-kernel, Peter Zijlstra,
Steven Rostedt, Linus Torvalds, Benjamin Herrenschmidt,
Andi Kleen, Chandramouleeswaran, Aswin, Norton, Scott J
Because of the changes made in dcache.h header file, files that
use the d_lock field of the dentry structure need to be changed
accordingly. All the d_lock's spin_lock() and spin_unlock() calls
are replaced by the corresponding d_lock() and d_unlock() calls.
There is no change in logic and everything should just work.
Signed-off-by: Waiman Long <Waiman.Long@hp.com>
---
security/selinux/selinuxfs.c | 14 +++++++-------
1 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
index ff42773..c83a201 100644
--- a/security/selinux/selinuxfs.c
+++ b/security/selinux/selinuxfs.c
@@ -1187,28 +1187,28 @@ static void sel_remove_entries(struct dentry *de)
{
struct list_head *node;
- spin_lock(&de->d_lock);
+ d_lock(de);
node = de->d_subdirs.next;
while (node != &de->d_subdirs) {
struct dentry *d = list_entry(node, struct dentry, d_u.d_child);
- spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED);
+ d_lock_nested(d, DENTRY_D_LOCK_NESTED);
list_del_init(node);
if (d->d_inode) {
dget_dlock(d);
- spin_unlock(&de->d_lock);
- spin_unlock(&d->d_lock);
+ d_unlock(de);
+ d_unlock(d);
d_delete(d);
simple_unlink(de->d_inode, d);
dput(d);
- spin_lock(&de->d_lock);
+ d_lock(de);
} else
- spin_unlock(&d->d_lock);
+ d_unlock(d);
node = de->d_subdirs.next;
}
- spin_unlock(&de->d_lock);
+ d_unlock(de);
}
#define BOOL_DIR_NAME "booleans"
--
1.7.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v3 25/25] selinux: Change how dentry's d_lock field is accessed
2013-07-03 20:22 [PATCH v3 25/25] selinux: Change how dentry's d_lock field is accessed Waiman Long
@ 2013-07-04 4:43 ` Al Viro
0 siblings, 0 replies; 2+ messages in thread
From: Al Viro @ 2013-07-04 4:43 UTC (permalink / raw)
To: Waiman Long
Cc: Jeff Layton, Miklos Szeredi, Ingo Molnar, Thomas Gleixner,
Stephen Smalley, James Morris, Eric Paris, linux-security-module,
linux-fsdevel, linux-kernel, Peter Zijlstra, Steven Rostedt,
Linus Torvalds, Benjamin Herrenschmidt, Andi Kleen,
Chandramouleeswaran, Aswin, Norton, Scott J
On Wed, Jul 03, 2013 at 04:22:17PM -0400, Waiman Long wrote:
> diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
> index ff42773..c83a201 100644
> --- a/security/selinux/selinuxfs.c
> +++ b/security/selinux/selinuxfs.c
> @@ -1187,28 +1187,28 @@ static void sel_remove_entries(struct dentry *de)
> {
> struct list_head *node;
>
> - spin_lock(&de->d_lock);
> + d_lock(de);
> node = de->d_subdirs.next;
> while (node != &de->d_subdirs) {
> struct dentry *d = list_entry(node, struct dentry, d_u.d_child);
>
> - spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED);
> + d_lock_nested(d, DENTRY_D_LOCK_NESTED);
> list_del_init(node);
>
> if (d->d_inode) {
> dget_dlock(d);
> - spin_unlock(&de->d_lock);
> - spin_unlock(&d->d_lock);
> + d_unlock(de);
> + d_unlock(d);
> d_delete(d);
> simple_unlink(de->d_inode, d);
> dput(d);
> - spin_lock(&de->d_lock);
> + d_lock(de);
> } else
> - spin_unlock(&d->d_lock);
> + d_unlock(d);
> node = de->d_subdirs.next;
> }
>
> - spin_unlock(&de->d_lock);
> + d_unlock(de);
BTW, all that bunch (this and similar simple_unlink() callers) is seriously
asking for a common helper somewhere in libfs.c; I'd started experimenting
in that direction several times, but got sidetracked. The real question
here is what do we do with the stuff mounted on those.
Linus, do you have any suggestions re semantics of mounts on such mountpoints?
I see two variants - disslove all mounts on those when the kernel decides to
kill such a volatile mountpoint (the same goes for e.g. /proc/42/fd getting
invalidated, etc.) or ban mounting on them in the first place (i.e. set
DCACHE_CANT_MOUNT when these dentries are created)... Preferences, alternative
suggestions?
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-07-04 4:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-03 20:22 [PATCH v3 25/25] selinux: Change how dentry's d_lock field is accessed Waiman Long
2013-07-04 4:43 ` Al Viro
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).