diff options
Diffstat (limited to 'ipc/shm.c')
-rw-r--r-- | ipc/shm.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -268,7 +268,9 @@ static int shm_mmap(struct file * file, struct vm_area_struct * vma) | |||
268 | if (ret != 0) | 268 | if (ret != 0) |
269 | return ret; | 269 | return ret; |
270 | sfd->vm_ops = vma->vm_ops; | 270 | sfd->vm_ops = vma->vm_ops; |
271 | #ifdef CONFIG_MMU | ||
271 | BUG_ON(!sfd->vm_ops->fault); | 272 | BUG_ON(!sfd->vm_ops->fault); |
273 | #endif | ||
272 | vma->vm_ops = &shm_vm_ops; | 274 | vma->vm_ops = &shm_vm_ops; |
273 | shm_open(vma); | 275 | shm_open(vma); |
274 | 276 | ||
@@ -714,7 +716,7 @@ asmlinkage long sys_shmctl (int shmid, int cmd, struct shmid_ds __user *buf) | |||
714 | struct user_struct * user = current->user; | 716 | struct user_struct * user = current->user; |
715 | if (!is_file_hugepages(shp->shm_file)) { | 717 | if (!is_file_hugepages(shp->shm_file)) { |
716 | err = shmem_lock(shp->shm_file, 1, user); | 718 | err = shmem_lock(shp->shm_file, 1, user); |
717 | if (!err) { | 719 | if (!err && !(shp->shm_perm.mode & SHM_LOCKED)){ |
718 | shp->shm_perm.mode |= SHM_LOCKED; | 720 | shp->shm_perm.mode |= SHM_LOCKED; |
719 | shp->mlock_user = user; | 721 | shp->mlock_user = user; |
720 | } | 722 | } |