X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=ipc%2Fshm.c;h=a86a3a5c8a19589698dc8b9ec555e1d98891466d;hb=2774c7aba6c97a2535be3309a2209770953780b3;hp=d0259e3ad1c00ae0f879e18c91a6945e41c25cdb;hpb=d638d4990bfb99998420e78e8fd4607bca5cf8d0;p=linux-2.6-omap-h63xx.git diff --git a/ipc/shm.c b/ipc/shm.c index d0259e3ad1c..a86a3a5c8a1 100644 --- a/ipc/shm.c +++ b/ipc/shm.c @@ -268,7 +268,9 @@ static int shm_mmap(struct file * file, struct vm_area_struct * vma) if (ret != 0) return ret; sfd->vm_ops = vma->vm_ops; +#ifdef CONFIG_MMU BUG_ON(!sfd->vm_ops->fault); +#endif vma->vm_ops = &shm_vm_ops; shm_open(vma); @@ -714,7 +716,7 @@ asmlinkage long sys_shmctl (int shmid, int cmd, struct shmid_ds __user *buf) struct user_struct * user = current->user; if (!is_file_hugepages(shp->shm_file)) { err = shmem_lock(shp->shm_file, 1, user); - if (!err) { + if (!err && !(shp->shm_perm.mode & SHM_LOCKED)){ shp->shm_perm.mode |= SHM_LOCKED; shp->mlock_user = user; }