|
@@ -4478,8 +4478,8 @@ out:
|
|
|
}
|
|
|
EXPORT_SYMBOL(vfs_rename);
|
|
|
|
|
|
-SYSCALL_DEFINE5(renameat2, int, olddfd, const char __user *, oldname,
|
|
|
- int, newdfd, const char __user *, newname, unsigned int, flags)
|
|
|
+static int do_renameat2(int olddfd, const char __user *oldname, int newdfd,
|
|
|
+ const char __user *newname, unsigned int flags)
|
|
|
{
|
|
|
struct dentry *old_dentry, *new_dentry;
|
|
|
struct dentry *trap;
|
|
@@ -4621,15 +4621,21 @@ exit:
|
|
|
return error;
|
|
|
}
|
|
|
|
|
|
+SYSCALL_DEFINE5(renameat2, int, olddfd, const char __user *, oldname,
|
|
|
+ int, newdfd, const char __user *, newname, unsigned int, flags)
|
|
|
+{
|
|
|
+ return do_renameat2(olddfd, oldname, newdfd, newname, flags);
|
|
|
+}
|
|
|
+
|
|
|
SYSCALL_DEFINE4(renameat, int, olddfd, const char __user *, oldname,
|
|
|
int, newdfd, const char __user *, newname)
|
|
|
{
|
|
|
- return sys_renameat2(olddfd, oldname, newdfd, newname, 0);
|
|
|
+ return do_renameat2(olddfd, oldname, newdfd, newname, 0);
|
|
|
}
|
|
|
|
|
|
SYSCALL_DEFINE2(rename, const char __user *, oldname, const char __user *, newname)
|
|
|
{
|
|
|
- return sys_renameat2(AT_FDCWD, oldname, AT_FDCWD, newname, 0);
|
|
|
+ return do_renameat2(AT_FDCWD, oldname, AT_FDCWD, newname, 0);
|
|
|
}
|
|
|
|
|
|
int vfs_whiteout(struct inode *dir, struct dentry *dentry)
|