Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fc6f3943 authored by Jeff Layton's avatar Jeff Layton Committed by Steve French
Browse files

cifs: when renaming don't try to unlink negative dentry



When attempting to rename a file on a read-only share, the kernel can
call cifs_unlink on a negative dentry, which causes an oops. Only try
to unlink the file if it's a positive dentry.

Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
Tested-by: default avatarShirish Pargaonkar <shirishp@us.ibm.com>
CC: Stable <stable@vger.kernel.org>
Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent 22c9d52b
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1453,7 +1453,8 @@ int cifs_rename(struct inode *source_dir, struct dentry *source_dentry,
		     checking the UniqueId via FILE_INTERNAL_INFO */

unlink_target:
	if ((rc == -EACCES) || (rc == -EEXIST)) {
	/* Try unlinking the target dentry if it's not negative */
	if (target_dentry->d_inode && (rc == -EACCES || rc == -EEXIST)) {
		tmprc = cifs_unlink(target_dir, target_dentry);
		if (tmprc)
			goto cifs_rename_exit;