diff options
Diffstat (limited to 'ipc/shm.c')
-rw-r--r-- | ipc/shm.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -366,7 +366,7 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params) | |||
366 | if (shmflg & SHM_HUGETLB) { | 366 | if (shmflg & SHM_HUGETLB) { |
367 | /* hugetlb_file_setup takes care of mlock user accounting */ | 367 | /* hugetlb_file_setup takes care of mlock user accounting */ |
368 | file = hugetlb_file_setup(name, size); | 368 | file = hugetlb_file_setup(name, size); |
369 | shp->mlock_user = current->user; | 369 | shp->mlock_user = current_user(); |
370 | } else { | 370 | } else { |
371 | int acctflag = VM_ACCOUNT; | 371 | int acctflag = VM_ACCOUNT; |
372 | /* | 372 | /* |
@@ -752,9 +752,10 @@ asmlinkage long sys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf) | |||
752 | goto out_unlock; | 752 | goto out_unlock; |
753 | 753 | ||
754 | if (!capable(CAP_IPC_LOCK)) { | 754 | if (!capable(CAP_IPC_LOCK)) { |
755 | uid_t euid = current_euid(); | ||
755 | err = -EPERM; | 756 | err = -EPERM; |
756 | if (current->euid != shp->shm_perm.uid && | 757 | if (euid != shp->shm_perm.uid && |
757 | current->euid != shp->shm_perm.cuid) | 758 | euid != shp->shm_perm.cuid) |
758 | goto out_unlock; | 759 | goto out_unlock; |
759 | if (cmd == SHM_LOCK && | 760 | if (cmd == SHM_LOCK && |
760 | !current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur) | 761 | !current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur) |
@@ -766,7 +767,7 @@ asmlinkage long sys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf) | |||
766 | goto out_unlock; | 767 | goto out_unlock; |
767 | 768 | ||
768 | if(cmd==SHM_LOCK) { | 769 | if(cmd==SHM_LOCK) { |
769 | struct user_struct * user = current->user; | 770 | struct user_struct *user = current_user(); |
770 | if (!is_file_hugepages(shp->shm_file)) { | 771 | if (!is_file_hugepages(shp->shm_file)) { |
771 | err = shmem_lock(shp->shm_file, 1, user); | 772 | err = shmem_lock(shp->shm_file, 1, user); |
772 | if (!err && !(shp->shm_perm.mode & SHM_LOCKED)){ | 773 | if (!err && !(shp->shm_perm.mode & SHM_LOCKED)){ |