Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1133737ybt; Tue, 7 Jul 2020 08:30:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzPcR8Nwq1AkX4XuB3Ks5mLNjyqYKsSVJoyxZ93ZbBliCrz7WiS/I9C9agm4JiVSJP4lmAJ X-Received: by 2002:aa7:c504:: with SMTP id o4mr60990557edq.311.1594135818002; Tue, 07 Jul 2020 08:30:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594135817; cv=none; d=google.com; s=arc-20160816; b=UkaASz2T0XwJSAeeeMspanL63R24kSLLiUyShT/S3O7y+pyo1egYAu4klG3LEXvhR7 2GaETxgQAwkMiw7z8ITSZ2xh2lerF75+bil6a9R4TmANAkcMuRc+S4huu9XhFoAloD5m 6R9G2whlXG51c+4TCcZGKdknrFAqnI+FM1TJ8erI71U4S+FnlJVRgxsQ5BF27qTWTrC1 kb45X8hgXqb4gKRgdd9qaJb0IdCPjrZFhErogHeogLFNsZv+XHC/5S+4IfnAoEQNKc+s pkpj+e79fuSY3zKUWD36knViknifbPfV3ZgFuQJP1jD5JV1gIn3vEbvqqsFCFzAnTe10 Wcgg== 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=RdvHuvMSFOr6ZnbYm0aiOG8WEQNXPMKqPAhJVCQ4kyo=; b=ODRmV/gGG7zQEZwKaUpVaUQntP+CxRqQhMq136Ufnt1vj8W8KoWh+b6Ao/1Ml6o2SK VXfbf3eiAhGZrdqsGpeO9yZPENHtFtQgp4bC+XTZS023HCmepUsCJ5gmr3e1q1Ywc4eB zEkKE8PEx9toZAZWGjAW84XorPRnDAfbKFBFMlO5LOXT6O7FRisNgMILTwMibXYDoh8T l/90dncCoS7h4BryArSOuobhu47n0q/l2Pldt5OtsCqnaS6UkftpuFrRwT2D67LMQVyd EKBZK6OUIcva5Pz5aj9GQrjgBwJYg05kWROZoaWVs8K4+dV2RSw2OxIHDju9FSPPjN9I 08qQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=q1A3kA3z; 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 ds17si19079418ejc.619.2020.07.07.08.29.54; Tue, 07 Jul 2020 08:30:17 -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=q1A3kA3z; 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 S1729598AbgGGP1P (ORCPT + 99 others); Tue, 7 Jul 2020 11:27:15 -0400 Received: from mail.kernel.org ([198.145.29.99]:41540 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730344AbgGGP1I (ORCPT ); Tue, 7 Jul 2020 11:27:08 -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 4B581206F6; Tue, 7 Jul 2020 15:27:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1594135627; bh=7J7s3JxUCA9ycuh/TID/A9mEMpPr8x26xb6gQZz8V0I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=q1A3kA3zv0HXIKrbrmVEOIhTgd9fivdHqcjFjkWRVSE8oJOtvkMHxfTLknPUfkJdU 5sHv+l0cLc005yN5iA2ByamcFPHOcRx5syjmjMUbWnazUOBALn+H4Do6XmMkwCx3Ul 0J37cyciH1H7WRX16nsmj0M3jX/C20u7ioD+1RvI= 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 5.7 093/112] cifs: Fix the target file was deleted when rename failed. Date: Tue, 7 Jul 2020 17:17:38 +0200 Message-Id: <20200707145805.402316653@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200707145800.925304888@linuxfoundation.org> References: <20200707145800.925304888@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 @@ -1855,6 +1855,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; @@ -1931,8 +1932,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