Messages in this thread Patch in this message | | | Subject | [PATCH] de-semaphorize smackfs | From | Jonathan Corbet <> | Date | Mon, 17 Mar 2008 17:14:40 -0600 |
| |
While looking at the generic semaphore patch, I came to wonder what the remaining semaphore users in the kernel were actually doing. After a quick grep for down_interruptible(), smackfs remained at the bottom of my screen. It seems like a straightforward mutex case - low-hanging fruit. So here's a conversion patch; compile-tested only, but what could go wrong?
jon
Convert smackfs from a semaphore to a mutex
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c index afe7c9b..6e09cec 100644 --- a/security/smack/smackfs.c +++ b/security/smack/smackfs.c @@ -76,7 +76,7 @@ struct smk_list_entry *smack_list; /* * Disable concurrent writing open() operations */ -static struct semaphore smack_write_sem; +static DEFINE_MUTEX(smack_write_mutex); /* * Values for parsing cipso rules @@ -171,7 +171,7 @@ static int smk_open_load(struct inode *inode, struct file *file) if ((file->f_flags & O_ACCMODE) == O_RDONLY) return seq_open(file, &load_seq_ops); - if (down_interruptible(&smack_write_sem)) + if (mutex_lock_interruptible(&smack_write_mutex)) return -ERESTARTSYS; return 0; @@ -192,7 +192,7 @@ static int smk_release_load(struct inode *inode, struct file *file) if ((file->f_flags & O_ACCMODE) == O_RDONLY) return seq_release(inode, file); - up(&smack_write_sem); + mutex_unlock(&smack_write_mutex); return 0; } @@ -1011,7 +1011,7 @@ static int __init init_smk_fs(void) } } - sema_init(&smack_write_sem, 1); + mutex_init(&smack_write_mutex); smk_cipso_doi(); smk_unlbl_ambient(NULL);
| |