]> git.hungrycats.org Git - linux/commitdiff
[PATCH] wrong return codes in ipc shm
authorDave Jones <davej@suse.de>
Wed, 3 Apr 2002 03:58:35 +0000 (19:58 -0800)
committerDave Jones <davej@suse.de>
Wed, 3 Apr 2002 03:58:35 +0000 (19:58 -0800)
We always returned success even when we had no ->vm_ops

ipc/shm.c

index 6d7f6b3642945c36b5ed6ea3396eb6eb1126b3f3..650c93e471339e3694b39bc7ac2b514feb8a2587 100644 (file)
--- 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