diff --git a/[refs] b/[refs] index 407199ca6de8..f63389630484 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fd18de50b9e7965f93d231e7390436fb8900c0e6 +refs/heads/master: 2b79bc4f7ebbd5af3c8b867968f9f15602d5f802 diff --git a/trunk/fs/fcntl.c b/trunk/fs/fcntl.c index cc8e4de2fee5..1ad703150dee 100644 --- a/trunk/fs/fcntl.c +++ b/trunk/fs/fcntl.c @@ -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); }