From: Jeff Layton Date: Mon, 3 Nov 2008 19:05:08 +0000 (-0500) Subject: cifs: fix renaming one hardlink on top of another X-Git-Tag: v2.6.28-rc4~89^2 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=ae6884a9da56f8921e432e663b4ccb4a1851b2ea;p=~shefty%2Frdma-dev.git cifs: fix renaming one hardlink on top of another cifs: fix renaming one hardlink on top of another POSIX says that renaming one hardlink on top of another to the same inode is a no-op. We had the logic mostly right, but forgot to clear the return code. Signed-off-by: Jeff Layton Signed-off-by: Steve French --- diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c index d54fa8aeaea..ff8c68de4a9 100644 --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c @@ -1361,9 +1361,11 @@ int cifs_rename(struct inode *source_dir, struct dentry *source_dentry, CIFS_MOUNT_MAP_SPECIAL_CHR); if (tmprc == 0 && (info_buf_source->UniqueId == - info_buf_target->UniqueId)) + info_buf_target->UniqueId)) { /* same file, POSIX says that this is a noop */ + rc = 0; goto cifs_rename_exit; + } } /* else ... BB we could add the same check for Windows by checking the UniqueId via FILE_INTERNAL_INFO */