Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp3024834ybt; Mon, 29 Jun 2020 13:13:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy0gSJ46IUYqYn8z+6DSE0eElGajSrcqBqzl7NvzzhlR83xQ3QntHUNhph7irsmZgPOaLE+ X-Received: by 2002:a05:6402:1bdd:: with SMTP id ch29mr8374385edb.134.1593461586827; Mon, 29 Jun 2020 13:13:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593461586; cv=none; d=google.com; s=arc-20160816; b=lhAIL0fPi8KJWJxATjgUaWjVtgIIKQPyv96XMua/c8SwbYYCrGYya5If//hVsRsScw i0aIK+jzyq4ZYfdDh3pxXK3sBgNuiffl8nv2AdpfAouCqP9J3FcGezm9kixH1IkIcTAU N9SqSFg6fbUtCPBt4KBAsp93qc/smpcWTGGy/nLsAKHThdIhO7p7xaE7ouhzWf2CYop1 rcuRADqARmKX15liyxFR2EE6ieZm1sJ4URRDD8vcDIZ1UPjpWemoMfwZ3lc4VCKMxph0 HzoZw5OkMHYgtSc/JXu51Osarp4A1HmMoSdWtsSNfa3GIAahkUpszGypg6HpyUJQFM7q Kh3Q== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=yyc8FYpO/K5+Dc9gnDRROoeutApJ10TldvDiWze2GpY=; b=VdYk43oJdUq5W76wZ2Srm19vuo79C1lV1Ach9CiiH0AVH/LcaqHTSw4Dp601xqJS+i K3muBstAld3/Xt5xCRSUsUqMH1/xBUgQo/jqJukzqiMi4/53ipEmKXdMuvwlwAgoBOH7 yrsaGlEiuIhsV+HBP0UaqWs5NGKYJG5euw5MqKoDmXi2g3eBaVhxqLaHucP8o7QzwSdP MPsDjQyP+mQSALvgMd0lO1uW4aVBpeVXg25/WDvMkal+/BFs0jGti5+vE90TLS0285+l sO1xg/UZLy0mjdAjfNokDg0nxe4vMmKcPASV6sUo+LO4cLsFfBS4dYesxni4qFN1B55A 7rrQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=R7W26FQH; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w16si355328ejq.299.2020.06.29.13.12.43; Mon, 29 Jun 2020 13:13:06 -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=R7W26FQH; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729923AbgF2ULV (ORCPT + 99 others); Mon, 29 Jun 2020 16:11:21 -0400 Received: from mail.kernel.org ([198.145.29.99]:40598 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732898AbgF2TaV (ORCPT ); Mon, 29 Jun 2020 15:30:21 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 76C7425302; Mon, 29 Jun 2020 15:38:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593445132; bh=xBydR85Xw3oZdwyEPqIAGB3pDSaorho/nfwB9NnPA6M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=R7W26FQHNGVT5UU3ruRT0w16OgMGQPj/3LiXjuLQX52bp0l4GeEjbIxKSGK5Bh9mz Pmpn9ha7eYgXpfzv7xK7D8utIZxV+05jEDmRGgr6rVxQ5qXrrTUVRWNKjgJM12iDeD ihqf40mlqhjYmRBEbLVAAtSv7E2ydOpt1hRRnHtA= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Zhang Xiaoxu , Pavel Shilovsky , Steve French , Sasha Levin Subject: [PATCH 4.14 38/78] cifs/smb3: Fix data inconsistent when punch hole Date: Mon, 29 Jun 2020 11:37:26 -0400 Message-Id: <20200629153806.2494953-39-sashal@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200629153806.2494953-1-sashal@kernel.org> References: <20200629153806.2494953-1-sashal@kernel.org> MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.186-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.14.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.14.186-rc1 X-KernelTest-Deadline: 2020-07-01T15:38+00:00 X-stable: review X-Patchwork-Hint: Ignore 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 [ Upstream commit acc91c2d8de4ef46ed751c5f9df99ed9a109b100 ] When punch hole success, we also can read old data from file: # strace -e trace=pread64,fallocate xfs_io -f -c "pread 20 40" \ -c "fpunch 20 40" -c"pread 20 40" file pread64(3, " version 5.8.0-rc1+"..., 40, 20) = 40 fallocate(3, FALLOC_FL_KEEP_SIZE|FALLOC_FL_PUNCH_HOLE, 20, 40) = 0 pread64(3, " version 5.8.0-rc1+"..., 40, 20) = 40 CIFS implements the fallocate(FALLOCATE_FL_PUNCH_HOLE) with send SMB ioctl(FSCTL_SET_ZERO_DATA) to server. It just set the range of the remote file to zero, but local page caches not updated, then the local page caches inconsistent with server. Also can be found by xfstests generic/316. So, we need to remove the page caches before send the SMB ioctl(FSCTL_SET_ZERO_DATA) to server. Fixes: 31742c5a33176 ("enable fallocate punch hole ("fallocate -p") for SMB3") Suggested-by: Pavel Shilovsky Reviewed-by: Pavel Shilovsky Signed-off-by: Zhang Xiaoxu Cc: stable@vger.kernel.org # v3.17 Signed-off-by: Steve French Signed-off-by: Sasha Levin --- fs/cifs/smb2ops.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c index 951c444d83e7b..61ea429e1210b 100644 --- a/fs/cifs/smb2ops.c +++ b/fs/cifs/smb2ops.c @@ -1824,6 +1824,12 @@ static long smb3_punch_hole(struct file *file, struct cifs_tcon *tcon, return rc; } + /* + * We implement the punch hole through ioctl, so we need remove the page + * caches first, otherwise the data may be inconsistent with the server. + */ + truncate_pagecache_range(inode, offset, offset + len - 1); + cifs_dbg(FYI, "offset %lld len %lld", offset, len); fsctl_buf.FileOffset = cpu_to_le64(offset); -- 2.25.1