]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - fs/fcntl.c
dup2: Fix return value with oldfd == newfd and invalid fd
[net-next-2.6.git] / fs / fcntl.c
index cc8e4de2fee5f0caefa6c5e00ea4e1abf33359b8..1ad703150dee08d9bec6c481f480b99ae7b149d5 100644 (file)
@@ -117,11 +117,13 @@ SYSCALL_DEFINE2(dup2, unsigned int, oldfd, unsigned int, newfd)
 {
        if (unlikely(newfd == oldfd)) { /* corner case */
                struct files_struct *files = current->files;
+               int retval = oldfd;
+
                rcu_read_lock();
                if (!fcheck_files(files, oldfd))
-                       oldfd = -EBADF;
+                       retval = -EBADF;
                rcu_read_unlock();
-               return oldfd;
+               return retval;
        }
        return sys_dup3(oldfd, newfd, 0);
 }