Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1138410ybt; Tue, 7 Jul 2020 08:35:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyAT50nrcPhBvlyEOYZwbVC/gQVZSKIe8ha4WCU8Cto962lpq7tQ3nrB2lkrazowu5fMx5w X-Received: by 2002:aa7:da56:: with SMTP id w22mr64038571eds.124.1594136129309; Tue, 07 Jul 2020 08:35:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594136129; cv=none; d=google.com; s=arc-20160816; b=JVLRTuWP0v8dMp1OLyokwBm9qA+rwLsAcHFdmZy01oEHIxfMhEsyV0QzwBOcHmoSbJ SSHXelOgEpm/qMODZoIve4fi85hJq0f68HfDDPHcafN/EIvQxi64YXEpLim4WjCpWQd5 1WEn7Qp4MKKay14m2OGksXueoadrzKQFd1gfW7NSfRoQJTlkAy0SXOa2S7rsHM7XKuyP jAYwK+aEWWiDpA9VQlKve4hF/tYTNeKKLjU5mV/xE1ttvrBeFi0YMQPiTY1Ux5mLTaZg 98h0SWrZYo7YelFvPOaaB3aCxoOZOvZzvRVodaY4qj3ppPmwV1vmkhCOQ9Dxsdxizw2p /acw== 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=bg9XvLE6X2PWkgLVjfg/Nt3POVJQZYLifW7jSO21qEQ=; b=J/fqNRMLGGss1fc4vMj0Uu7USzP2s+5Ec3C6DQDJBMVJAvPC9cdb0zgz7wkv7iVY5I 8jEl5RPr4gAMcWCHlhzLtPJ1StuNSbeYLAaSOWCQ+cC6iAeBrwbq+ZL17WJbgg1GogE5 dgtn1bY/hyKHTM5EWipqECWF7FTt/0gSwFPQYuNclN+uttnIlHFZWozwootm23W1kdSS EeK+ePwcQh4CAJWGV//LA2X9vc+GlSnyl/5s0Q3l6tu3ZgYkgvX3ZtSxLQm1oe3Ov49r KxWoI0XNZk5vZ9jmzSoB1/goc+f6Bj6j5bn/jQTQv0BkNdId+bUoaNwNX1Pey9C/6ARC wk/w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=pEjjMq2I; 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 u12si11601796eja.373.2020.07.07.08.35.05; Tue, 07 Jul 2020 08:35:29 -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=pEjjMq2I; 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 S1729110AbgGGPTr (ORCPT + 99 others); Tue, 7 Jul 2020 11:19:47 -0400 Received: from mail.kernel.org ([198.145.29.99]:59518 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729398AbgGGPTo (ORCPT ); Tue, 7 Jul 2020 11:19: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 492212065D; Tue, 7 Jul 2020 15:19:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1594135183; bh=zf+acchBvmWz+dfLqoQTn9oqkEE+4yFBrlZPW0GgMsc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pEjjMq2IkTFi8kHXvyM/EBQic395iRVqt+BHS26AEvaIKDpEQC2O6XIkoylr4P567 bf9vXhAv+PVwLqyxJF5RHZogMqAEBmetd5sEuaQXDFom4+CGsapXqxoRyx+WUrgeU1 L9LtqngT5j8OWKDiVKOsFY6w+IXjaufaONn69Uow= 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.19 32/36] cifs: Fix the target file was deleted when rename failed. Date: Tue, 7 Jul 2020 17:17:24 +0200 Message-Id: <20200707145750.699595706@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200707145749.130272978@linuxfoundation.org> References: <20200707145749.130272978@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 @@ -1783,6 +1783,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; @@ -1859,8 +1860,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