|
@@ -870,7 +870,7 @@ out_unlock:
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
-SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags)
|
|
|
+static int ksys_dup3(unsigned int oldfd, unsigned int newfd, int flags)
|
|
|
{
|
|
|
int err = -EBADF;
|
|
|
struct file *file;
|
|
@@ -904,6 +904,11 @@ out_unlock:
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
+SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags)
|
|
|
+{
|
|
|
+ return ksys_dup3(oldfd, newfd, flags);
|
|
|
+}
|
|
|
+
|
|
|
SYSCALL_DEFINE2(dup2, unsigned int, oldfd, unsigned int, newfd)
|
|
|
{
|
|
|
if (unlikely(newfd == oldfd)) { /* corner case */
|
|
@@ -916,10 +921,10 @@ SYSCALL_DEFINE2(dup2, unsigned int, oldfd, unsigned int, newfd)
|
|
|
rcu_read_unlock();
|
|
|
return retval;
|
|
|
}
|
|
|
- return sys_dup3(oldfd, newfd, 0);
|
|
|
+ return ksys_dup3(oldfd, newfd, 0);
|
|
|
}
|
|
|
|
|
|
-SYSCALL_DEFINE1(dup, unsigned int, fildes)
|
|
|
+int ksys_dup(unsigned int fildes)
|
|
|
{
|
|
|
int ret = -EBADF;
|
|
|
struct file *file = fget_raw(fildes);
|
|
@@ -934,6 +939,11 @@ SYSCALL_DEFINE1(dup, unsigned int, fildes)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
+SYSCALL_DEFINE1(dup, unsigned int, fildes)
|
|
|
+{
|
|
|
+ return ksys_dup(fildes);
|
|
|
+}
|
|
|
+
|
|
|
int f_dupfd(unsigned int from, struct file *file, unsigned flags)
|
|
|
{
|
|
|
int err;
|