Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1125894ybt; Tue, 7 Jul 2020 08:20:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz2AlutjJJH4AnknKk/GNtXU1cYqXqkzwRX1KEMo7WUpnwuxeBFaLa4om4PZYxlKuxiodkA X-Received: by 2002:a05:6402:1a3c:: with SMTP id be28mr52485874edb.140.1594135216104; Tue, 07 Jul 2020 08:20:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594135216; cv=none; d=google.com; s=arc-20160816; b=B14RwigFJzDCRftAPeLvNUPPrVbpIYZPJLqpu39GFpIoKkmNqpdjiR4MHrDvONIo6I Iafsm6T245oKvbYVDPs6eu72p1PasB/mSM1CVyFJw481DJVZGcPzhCE+nkseyFQL9Q1E lOY5qWAre+aBZEO6/mnCnj0avbC7lKR4ydgRaL/sSuKmx11N2XmjE0QjHHt3rDPU7ZR+ D8nutKWT3+7m7Ic9kGTBTWR1gbeiG28y/kNMb8cBynVOoOA5LtrV8tER2+eFVMCO6sca IYqZz3NQ7YQvQLMAG2eqH5fm3BRDOL/w1m7Y8CCPJ/w8l+R8/1MZZVa32QDWWRwTQumU zyFw== 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=+zpMHhLDjPXiDTLP3vpjlF+p9H+ciIftkO9x4yzyu48=; b=YwgEdZ6zzi1ufyatjh84qTq0gACrFSuAJ4+U9XT/gKuci3j2BCSAcDN8Tvk7T2nAjS AtpNozzrQsvh5T2PmzVisZoj42rs5czxYpgw5YgNrH81vpBIxKBixYUdkWYLrTDu0zQY 0x3f9L/85cfgL3H9Umq7n4ZMYP8zAe1J7zBY3hXH5PNZSLlVgi8sYc0lwWhR+0wcOHpZ qihNa838ZBQYcPgW9aafoA6vi2aCf4jMwK8QelYn9ryON/1Zq6q2b0Z2K+DoCQa8IHuW P7dGzq99RUl85+r0QZcSVbZheBvFanna4XurJ6HBbxLCr4vIvZnszDAFwpXskW3u0P3Z acog== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=o2Jgs+wg; 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 c14si10526212edr.41.2020.07.07.08.19.52; Tue, 07 Jul 2020 08:20:16 -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=o2Jgs+wg; 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 S1729156AbgGGPRB (ORCPT + 99 others); Tue, 7 Jul 2020 11:17:01 -0400 Received: from mail.kernel.org ([198.145.29.99]:56606 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728500AbgGGPRA (ORCPT ); Tue, 7 Jul 2020 11:17:00 -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 630622065D; Tue, 7 Jul 2020 15:16:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1594135019; bh=2ERbcQ7cGP/23y0D4cEPHXs1LKTxeDYDYXSpj3NCvDw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=o2Jgs+wgvUQ7bVcRAL85T10Al4NPySXP4YQxaFoT4DYK/0m3iD4GM6+AZTzi2DRHq Ve31rxz24d6i1K1OhwiHZwHgWBwEX5E5eUa91Pt8e32E8ZQ5/uO4JWpTgfwYCRDvJK 1C5PxKr8xuxLE8cIytwkV1ahAWBfs7qHMPSkZpRU= 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.14 23/27] cifs: Fix the target file was deleted when rename failed. Date: Tue, 7 Jul 2020 17:15:50 +0200 Message-Id: <20200707145750.052596097@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200707145748.944863698@linuxfoundation.org> References: <20200707145748.944863698@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 @@ -1778,6 +1778,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; @@ -1854,8 +1855,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