Received: by 10.213.65.68 with SMTP id h4csp433511imn; Tue, 13 Mar 2018 08:55:49 -0700 (PDT) X-Google-Smtp-Source: AG47ELurKjALe0kKtm0KFS7j4l6s/wdF/h0k0/0jtMp72KB88A9dhB6eMQB57v5sWKEqxBnV8WcP X-Received: by 10.99.127.91 with SMTP id p27mr898119pgn.28.1520956549901; Tue, 13 Mar 2018 08:55:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1520956549; cv=none; d=google.com; s=arc-20160816; b=G1FVevMdcjsvxDQid3x6c5IF3l8IN4ncJMzIJtFFMlY4UBnfwzNewXROMNf8jyaKPD SQ4FjB9BZnAk//T8OpH40GqmGW5PexeSNtJQjZo8JsN468RyOGGil72E6ZLIiuAWfuDk RR3pmNT3nJ8BADWiEyxD/GykQ/p9ihR7omA6zZTTXc3QhL2zuzq46R+/aXj1dh/+mAvW hU/GwYlGo7x7AYg3Q9yALzUlEeWDr5MhJkuHRqJLREQwDHKd/NIasBOwpoSnDjw3E51I bI7/CqIff5iFBGUgPIGFu5o4csfVn6wwkNN87hJNtbQtxzWYe1L9NXkVjGCreRfa5h32 UfTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=TZJHd7F0gLPUW4cFMfloCLe795Vo+Jm30PxtNzOTiIc=; b=Uno1BcJbnbcIDV6XEoUwU+7F216q61MxwLf/Ag/My8zGffhJqIV8aVVkK7HTlgCI7x 0JFEYc0NgNRIMIMzP1jzy2dv5tVdRI+EP58n8X03ibyrp1H0CaCCN2TqakLvV4lL13PS LTdXD0YuDGA0VAbnc1YphOz45KKsXzRT9XJkzSKHqYuLMlGTJ5aZCK0hUWbwjpVbHr4l q+z0nL2qL/zAlJIBjlCQKQXhieE7rcxaVhcUEqPmap0OVCMUgVQxhluKZuX7lJIcK6AT 3ft45Veu2GIteIa7FtAF93qov+CjfDlsQbHXAmCPXpv/OkglQiysDJcB0IcHOy4OCo07 fSGw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m16si278468pgn.416.2018.03.13.08.55.35; Tue, 13 Mar 2018 08:55:49 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934677AbeCMPjJ (ORCPT + 99 others); Tue, 13 Mar 2018 11:39:09 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:35198 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933977AbeCMPjH (ORCPT ); Tue, 13 Mar 2018 11:39:07 -0400 Received: from localhost (LFbn-1-12258-90.w90-92.abo.wanadoo.fr [90.92.71.90]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 85F79F2D; Tue, 13 Mar 2018 15:39:06 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Al Viro , Christoph Hellwig , Ming Lei , Ross Zwisler , Jens Axboe Subject: [PATCH 4.14 087/140] loop: Fix lost writes caused by missing flag Date: Tue, 13 Mar 2018 16:24:50 +0100 Message-Id: <20180313152503.996231960@linuxfoundation.org> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180313152458.201155692@linuxfoundation.org> References: <20180313152458.201155692@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Ross Zwisler commit 1d037577c323e5090ce281e96bc313ab2eee5be2 upstream. The following commit: commit aa4d86163e4e ("block: loop: switch to VFS ITER_BVEC") replaced __do_lo_send_write(), which used ITER_KVEC iterators, with lo_write_bvec() which uses ITER_BVEC iterators. In this change, though, the WRITE flag was lost: - iov_iter_kvec(&from, ITER_KVEC | WRITE, &kvec, 1, len); + iov_iter_bvec(&i, ITER_BVEC, bvec, 1, bvec->bv_len); This flag is necessary for the DAX case because we make decisions based on whether or not the iterator is a READ or a WRITE in dax_iomap_actor() and in dax_iomap_rw(). We end up going through this path in configurations where we combine a PMEM device with 4k sectors, a loopback device and DAX. The consequence of this missed flag is that what we intend as a write actually turns into a read in the DAX code, so no data is ever written. The very simplest test case is to create a loopback device and try and write a small string to it, then hexdump a few bytes of the device to see if the write took. Without this patch you read back all zeros, with this you read back the string you wrote. For XFS this causes us to fail or panic during the following xfstests: xfs/074 xfs/078 xfs/216 xfs/217 xfs/250 For ext4 we have a similar issue where writes never happen, but we don't currently have any xfstests that use loopback and show this issue. Fix this by restoring the WRITE flag argument to iov_iter_bvec(). This causes the xfstests to all pass. Cc: Al Viro Cc: stable@vger.kernel.org Fixes: commit aa4d86163e4e ("block: loop: switch to VFS ITER_BVEC") Reviewed-by: Christoph Hellwig Reviewed-by: Ming Lei Signed-off-by: Ross Zwisler Signed-off-by: Jens Axboe Signed-off-by: Greg Kroah-Hartman --- drivers/block/loop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -266,7 +266,7 @@ static int lo_write_bvec(struct file *fi struct iov_iter i; ssize_t bw; - iov_iter_bvec(&i, ITER_BVEC, bvec, 1, bvec->bv_len); + iov_iter_bvec(&i, ITER_BVEC | WRITE, bvec, 1, bvec->bv_len); file_start_write(file); bw = vfs_iter_write(file, &i, ppos, 0);