Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1123280ybt; Tue, 7 Jul 2020 08:17:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw9gJYA3fz77z+pf6WMolwGH/MFY0SYt+2BMcyJo//qkvP192p+iQWPs/N5PDtvimxSSvid X-Received: by 2002:a17:906:6004:: with SMTP id o4mr49194255ejj.411.1594135026334; Tue, 07 Jul 2020 08:17:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594135026; cv=none; d=google.com; s=arc-20160816; b=LVhy3Qva+vscBMdRCMhJXWjgnogJzD+nFjaueIqBBkzaEsqFyr8NszVL+sAC5rpQwZ RXTtw2yz0HVCmwQf7pG4z9Ls9CK2y5R4sfQ3UfufyXSkNJ7SUPHiJ0uBYFwp+9aCiuC+ wkvg7p5uJKXiewuXNmziYx9kEQdYXp2Aj2uy3olEw75q8PNt6FAgOU2usrDgf83fZDU1 Hl9f0QG3Frv5Z5BLR0WADctmXP/b14Zxi2C7U8m8PJhl+iRvg0aT/T3fFLyvC5KU/u4h IcdazfAZwrMeCfSQGGyg7J7S2LPqxXQBqbm3t2PdypamzOQW+qgNudlW8YJbpnNRlak0 EUjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=sDXGhmslAWdSyKmqL4/GITdFsrNht1HKQ766PoS29XU=; b=Pe4csUzar6+A7iGbUg2ABmSCu6SZ7S2h8es8S+soPrD8J1MO4c4WCLQivgSHFgFVYo QmK18GvHnSKNotmg5pkiDQ9OrQDapQ8qLKMTna9b3WHk6BiwKF+MCH9HsDZRuYxMJLww bIhOtvax8rQc3+zOY98KVkdBoWlrFN9k+B0DGJ4ZrGweUHHBL9sS+bDk9Iz4PZdYapc8 99fZQA5shbRYxVgwINu9pS+mlDGoKEqA48ohmUrY1fazWIhmUVcQ5jpqImaudFeVkJPj kRoJAjsOmg/Da9cVRevkv5KFD00XpS9fWLq+ioLtHNiiv/MUOllyOYzQ4DZTZX1ITpcq nxpQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=MyEylXaj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l5si15223591edq.166.2020.07.07.08.16.42; Tue, 07 Jul 2020 08:17:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=MyEylXaj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728692AbgGGPOi (ORCPT + 99 others); Tue, 7 Jul 2020 11:14:38 -0400 Received: from mail.kernel.org ([198.145.29.99]:53958 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728676AbgGGPOg (ORCPT ); Tue, 7 Jul 2020 11:14:36 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 4E34A20674; Tue, 7 Jul 2020 15:14:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1594134875; bh=ivVpjAAfUDjrMBSdx4Rk0/bc9fLwNzK7U0CdFpgI/Rw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MyEylXaj0qZXA3CylHzM3690BRM8DhJ7IHp7Y9ym2a8Q8tIuiyoyNtfDwfLpaL5js Np8FC7dd+6xcUVn5R6uywF53f6aLG9Fh/kAk/hqNmwu9LIUhHq2pnixOM19mkfCW3f 1vsZHR1IFtFX5PXAckYf63v1A71LluDESHnWWQFU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hulk Robot , Zhang Xiaoxu , Steve French , Aurelien Aptel Subject: [PATCH 4.9 21/24] cifs: Fix the target file was deleted when rename failed. Date: Tue, 7 Jul 2020 17:13:53 +0200 Message-Id: <20200707145750.006919411@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200707145748.952502272@linuxfoundation.org> References: <20200707145748.952502272@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Zhang Xiaoxu commit 9ffad9263b467efd8f8dc7ae1941a0a655a2bab2 upstream. When xfstest generic/035, we found the target file was deleted if the rename return -EACESS. In cifs_rename2, we unlink the positive target dentry if rename failed with EACESS or EEXIST, even if the target dentry is positived before rename. Then the existing file was deleted. We should just delete the target file which created during the rename. Reported-by: Hulk Robot Signed-off-by: Zhang Xiaoxu Cc: stable@vger.kernel.org Signed-off-by: Steve French Reviewed-by: Aurelien Aptel Signed-off-by: Greg Kroah-Hartman --- fs/cifs/inode.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c @@ -1770,6 +1770,7 @@ cifs_rename2(struct inode *source_dir, s FILE_UNIX_BASIC_INFO *info_buf_target; unsigned int xid; int rc, tmprc; + bool new_target = d_really_is_negative(target_dentry); if (flags & ~RENAME_NOREPLACE) return -EINVAL; @@ -1846,8 +1847,13 @@ cifs_rename2(struct inode *source_dir, s */ unlink_target: - /* Try unlinking the target dentry if it's not negative */ - if (d_really_is_positive(target_dentry) && (rc == -EACCES || rc == -EEXIST)) { + /* + * If the target dentry was created during the rename, try + * unlinking it if it's not negative + */ + if (new_target && + d_really_is_positive(target_dentry) && + (rc == -EACCES || rc == -EEXIST)) { if (d_is_dir(target_dentry)) tmprc = cifs_rmdir(target_dir, target_dentry); else