diff options
Diffstat (limited to 'ipc/mqueue.c')
| -rw-r--r-- | ipc/mqueue.c | 9 |
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: | |||
| 697 | out_err: | 698 | out_err: |
| 698 | fd = error; | 699 | fd = error; |
| 699 | out_upsem: | 700 | out_upsem: |
| 700 | up(&mqueue_mnt->mnt_root->d_inode->i_sem); | 701 | mutex_unlock(&mqueue_mnt->mnt_root->d_inode->i_mutex); |
| 701 | out_putname: | 702 | out_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 | ||
| 737 | out_unlock: | 738 | out_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); |
