Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1120835ybt; Tue, 7 Jul 2020 08:14:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzW1xAONw2R6IAP1EzAYMBNR3e40AQcR9uQzfqPrH14GGK9ItDUIx7A/obC0VmzPvdpyWkq X-Received: by 2002:a17:906:fa9b:: with SMTP id lt27mr45531866ejb.365.1594134850209; Tue, 07 Jul 2020 08:14:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594134850; cv=none; d=google.com; s=arc-20160816; b=oE3dHKOSXlE9AjAN90Xgwvz0giwLAp+qFRDrF8YjHRCGGhQZyKxURextZmxumJoTPb n8JR3gN1X32q6FHEr767Qz9xBJ+xOjsJG8in86dUYAHDORejpJ1Mixx2bq99bJwfqczS j+/1l9gvsyUpH4X1rF+g/WY86OXWbcxkrWco81yA981KWYLlrwW+jnvq5Eh5GBmqI6tE +V0d/2bKIWnOMG6JZXi1iKexeIS2Y6k4l++LhRDfeb8dqOujtglJZXR1wlv8bbOzfruo UBVDf3QZvVNSvkhRoQVG+k7FY3gWYUkHREq6qovCiTixyGVOxnxXvjaAzVeufnTyF0gB n/9g== 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=Sq55eitgX9mEaCHA3Ibfk8YJtkeVJKrV3Eb3TNSuoLw=; b=IITfnrJKPs79yIVUpkEwR08+RLpy4dYsvEcznKfVw5uyJvnrtxsuh5C608LSE0ZAJa e4gSmorZTxJECKjnWm7iRQumdokX0eIpbTqfmqb7LaM+mnHvh5AVpufSo59VUH2iWhT7 EDff7PRtDF6SKPhdtIFDK+VYruMjp3q1YrQZ27OmP9aFxqXtpqdaKiYzuY1lR1NtUM6/ QleLigoszcexfgoXC/24cg8+9ODbFSSQajYC9UuXd63MO0yaO6iB9adyXb2m6of6MB49 AVRGFMWCKBVV2KVpDdqsiXdCvFiblXHOz4cyTz/7Idgf6iACmLzPlkeicXT43o6Xx+Hu 28Qw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=jXKywTUM; 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 m23si14901413edq.346.2020.07.07.08.13.44; Tue, 07 Jul 2020 08:14:10 -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=jXKywTUM; 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 S1728591AbgGGPLF (ORCPT + 99 others); Tue, 7 Jul 2020 11:11:05 -0400 Received: from mail.kernel.org ([198.145.29.99]:51614 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728321AbgGGPKs (ORCPT ); Tue, 7 Jul 2020 11:10:48 -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 EB2A320663; Tue, 7 Jul 2020 15:10:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1594134647; bh=hl41CVJG9hoeCRvAAKp5hJ/Z4kaKOFNtDHOfAp+HlH0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jXKywTUMDJFAyO83Fevqp5RTHYE3scCO5R6lYC/28Cob2LgMt6TleGHQHHjCJ8Bvi dUy01Wj3DR63H3MK4ygxD6RddvT5VJWZFCwspzqaL5c2VBE+O1HfLj5YvdcAGpMjLJ goSOO6YrJvvkXQ5Z6yI6hh2rYm99ReyeT0IEr5JA= 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.4 17/19] cifs: Fix the target file was deleted when rename failed. Date: Tue, 7 Jul 2020 17:10:20 +0200 Message-Id: <20200707145748.356954737@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200707145747.493710555@linuxfoundation.org> References: <20200707145747.493710555@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 @@ -1737,6 +1737,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; @@ -1813,8 +1814,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