From: Dave Jones Date: Wed, 3 Apr 2002 03:58:35 +0000 (-0800) Subject: [PATCH] wrong return codes in ipc shm X-Git-Tag: v2.5.8-pre1^2~48 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=531b536d6cef18e165a3dfb6fc8e6977090d9168;p=history.git [PATCH] wrong return codes in ipc shm We always returned success even when we had no ->vm_ops --- diff --git a/ipc/shm.c b/ipc/shm.c index 6d7f6b364294..650c93e47133 100644 --- a/ipc/shm.c +++ b/ipc/shm.c @@ -674,16 +674,19 @@ asmlinkage long sys_shmdt (char *shmaddr) { struct mm_struct *mm = current->mm; struct vm_area_struct *shmd, *shmdnext; + int retval = -EINVAL; down_write(&mm->mmap_sem); for (shmd = mm->mmap; shmd; shmd = shmdnext) { shmdnext = shmd->vm_next; if (shmd->vm_ops == &shm_vm_ops - && shmd->vm_start - (shmd->vm_pgoff << PAGE_SHIFT) == (ulong) shmaddr) + && shmd->vm_start - (shmd->vm_pgoff << PAGE_SHIFT) == (ulong) shmaddr) { do_munmap(mm, shmd->vm_start, shmd->vm_end - shmd->vm_start); + retval = 0; + } } up_write(&mm->mmap_sem); - return 0; + return retval; } #ifdef CONFIG_PROC_FS