Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1136419ybt; Tue, 7 Jul 2020 08:33:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyp8+/16eEU2vBtdWCnSFlskXYDqPYO0PqCo0XX16AQYEioPI/mPhFx7Fx9s2TlM1WMRT62 X-Received: by 2002:aa7:c583:: with SMTP id g3mr63058340edq.228.1594135995133; Tue, 07 Jul 2020 08:33:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594135995; cv=none; d=google.com; s=arc-20160816; b=WqWJ1aXkbxecfwf4HHXt/V3468AIE63cAYFlkRZLm6n381i0ZKGRs1ZMCbTGYAsvy3 73k8QDeMUr9W0htBwDOA8ipiUkGXjHpycj/SPwcd0pNh/Jt5TlZTuYUBTSn/Mt5gnxAU 6WjQ9z54l/ky5ycirVnAMKTV5QxvMLc/sn/G0RM9CHUqbgWuUU8TwBtwP8p+MtBosZ09 /nWbFVquy6TSwDbxp9sEDgb5ExpbdAwof+OQHavE/4cXYYlQk7pjDlP/65Hn36R4YcUm C0ZZovJRmuMb7vCRCPROR4cCrWVOPQ+0fYrJXTnvwWLFfHCU0ZwM3TIcUqQb6rIAW/zF U8dA== 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=MTbzpcWPJtlCzNG/RXZz98QNqiLUhEK60/S89YlS0PY=; b=oq/6IsPDNgkUUheQW7jkXw6xSQ7RgKS/1rnmrZrBGtaNc04JCPUE+csfBNBLr2NnUe 9hkeUNUeJPK/PHcQvdID35ZJa+XnwoRhd1nyowRqoXI0yohgQVjbo257GmjuEOtHesKC OdzUVkmY6KKU2HCtJLhcJvhPKD5sS9wcemQUIZ4tEdxkn8t4HlN56bcCM61arnN25Wc3 skpfp/T7kSuz67/TVgxwOb+ExVx/aArQN2EktGoCccHOE8jYd8TLdYAT4rNxdg4f5vtV YVif1UBVibk4J8FxU9nEHZNqtCUGECBhb+T2e2jQKsWe0OXXhI6vkZTFdWxpr6d7UuwY Nt+w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wbzf1eMN; 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 g8si8838565ejs.512.2020.07.07.08.32.50; Tue, 07 Jul 2020 08:33:15 -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=wbzf1eMN; 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 S1729955AbgGGPcq (ORCPT + 99 others); Tue, 7 Jul 2020 11:32:46 -0400 Received: from mail.kernel.org ([198.145.29.99]:33996 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728655AbgGGPVo (ORCPT ); Tue, 7 Jul 2020 11:21:44 -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 7D6CB20663; Tue, 7 Jul 2020 15:21:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1594135304; bh=0qalr7sIiMTBZq9KLn36jOZE90c4K1KFip6Z3LVqhJ0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wbzf1eMNwIMdzKJtgh6Zq5U0hUifGAWsWT9OWtgYGWW6j/Gk69N8rbfof3T+7cX1O E1KE29hyHAEeljdOXXnye3KuwIeMawbJqnncsZjYQ5CezlbOsYkYt7a+DnRE2EUxHT 92wy0MO1uGNuTZADgc1ynLz1oRYo5LbiXwPFs10Y= 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.4 53/65] cifs: Fix the target file was deleted when rename failed. Date: Tue, 7 Jul 2020 17:17:32 +0200 Message-Id: <20200707145755.031759759@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200707145752.417212219@linuxfoundation.org> References: <20200707145752.417212219@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 @@ -1791,6 +1791,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; @@ -1867,8 +1868,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