aboutsummaryrefslogtreecommitdiffstats
path: root/ipc/mqueue.c
diff options
context:
space:
mode:
Diffstat (limited to 'ipc/mqueue.c')
-rw-r--r--ipc/mqueue.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
index c8943b53d8e6..4e776f9c80e7 100644
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -11,6 +11,7 @@
11 * This file is released under the GPL. 11 * This file is released under the GPL.
12 */ 12 */
13 13
14#include <linux/capability.h>
14#include <linux/init.h> 15#include <linux/init.h>
15#include <linux/pagemap.h> 16#include <linux/pagemap.h>
16#include <linux/file.h> 17#include <linux/file.h>
@@ -660,7 +661,7 @@ asmlinkage long sys_mq_open(const char __user *u_name, int oflag, mode_t mode,
660 if (fd < 0) 661 if (fd < 0)
661 goto out_putname; 662 goto out_putname;
662 663
663 down(&mqueue_mnt->mnt_root->d_inode->i_sem); 664 mutex_lock(&mqueue_mnt->mnt_root->d_inode->i_mutex);
664 dentry = lookup_one_len(name, mqueue_mnt->mnt_root, strlen(name)); 665 dentry = lookup_one_len(name, mqueue_mnt->mnt_root, strlen(name));
665 if (IS_ERR(dentry)) { 666 if (IS_ERR(dentry)) {
666 error = PTR_ERR(dentry); 667 error = PTR_ERR(dentry);
@@ -697,7 +698,7 @@ out_putfd:
697out_err: 698out_err:
698 fd = error; 699 fd = error;
699out_upsem: 700out_upsem:
700 up(&mqueue_mnt->mnt_root->d_inode->i_sem); 701 mutex_unlock(&mqueue_mnt->mnt_root->d_inode->i_mutex);
701out_putname: 702out_putname:
702 putname(name); 703 putname(name);
703 return fd; 704 return fd;
@@ -714,7 +715,7 @@ asmlinkage long sys_mq_unlink(const char __user *u_name)
714 if (IS_ERR(name)) 715 if (IS_ERR(name))
715 return PTR_ERR(name); 716 return PTR_ERR(name);
716 717
717 down(&mqueue_mnt->mnt_root->d_inode->i_sem); 718 mutex_lock(&mqueue_mnt->mnt_root->d_inode->i_mutex);
718 dentry = lookup_one_len(name, mqueue_mnt->mnt_root, strlen(name)); 719 dentry = lookup_one_len(name, mqueue_mnt->mnt_root, strlen(name));
719 if (IS_ERR(dentry)) { 720 if (IS_ERR(dentry)) {
720 err = PTR_ERR(dentry); 721 err = PTR_ERR(dentry);
@@ -735,7 +736,7 @@ out_err:
735 dput(dentry); 736 dput(dentry);
736 737
737out_unlock: 738out_unlock:
738 up(&mqueue_mnt->mnt_root->d_inode->i_sem); 739 mutex_unlock(&mqueue_mnt->mnt_root->d_inode->i_mutex);
739 putname(name); 740 putname(name);
740 if (inode) 741 if (inode)
741 iput(inode); 742 iput(inode);