public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Ross Lagerwall <ross.lagerwall@citrix.com>,
	Juergen Gross <jgross@suse.com>, Sasha Levin <sashal@kernel.org>,
	roger.pau@citrix.com, sstabellini@kernel.org, axboe@kernel.dk,
	xen-devel@lists.xenproject.org, linux-block@vger.kernel.org
Subject: [PATCH AUTOSEL 4.19 13/13] xen/blkfront: Only check REQ_FUA for writes
Date: Wed, 31 May 2023 09:45:41 -0400	[thread overview]
Message-ID: <20230531134541.3385043-13-sashal@kernel.org> (raw)
In-Reply-To: <20230531134541.3385043-1-sashal@kernel.org>

From: Ross Lagerwall <ross.lagerwall@citrix.com>

[ Upstream commit b6ebaa8100090092aa602530d7e8316816d0c98d ]

The existing code silently converts read operations with the
REQ_FUA bit set into write-barrier operations. This results in data
loss as the backend scribbles zeroes over the data instead of returning
it.

While the REQ_FUA bit doesn't make sense on a read operation, at least
one well-known out-of-tree kernel module does set it and since it
results in data loss, let's be safe here and only look at REQ_FUA for
writes.

Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
Acked-by: Juergen Gross <jgross@suse.com>
Link: https://lore.kernel.org/r/20230426164005.2213139-1-ross.lagerwall@citrix.com
Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/block/xen-blkfront.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
index 7ee618ab1567b..b4807d12ef29c 100644
--- a/drivers/block/xen-blkfront.c
+++ b/drivers/block/xen-blkfront.c
@@ -779,7 +779,8 @@ static int blkif_queue_rw_req(struct request *req, struct blkfront_ring_info *ri
 		ring_req->u.rw.handle = info->handle;
 		ring_req->operation = rq_data_dir(req) ?
 			BLKIF_OP_WRITE : BLKIF_OP_READ;
-		if (req_op(req) == REQ_OP_FLUSH || req->cmd_flags & REQ_FUA) {
+		if (req_op(req) == REQ_OP_FLUSH ||
+		    (req_op(req) == REQ_OP_WRITE && (req->cmd_flags & REQ_FUA))) {
 			/*
 			 * Ideally we can do an unordered flush-to-disk.
 			 * In case the backend onlysupports barriers, use that.
-- 
2.39.2


      parent reply	other threads:[~2023-05-31 13:53 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-31 13:45 [PATCH AUTOSEL 4.19 01/13] power: supply: ab8500: Fix external_power_changed race Sasha Levin
2023-05-31 13:45 ` [PATCH AUTOSEL 4.19 02/13] power: supply: bq27xxx: Use mod_delayed_work() instead of cancel() + schedule() Sasha Levin
2023-05-31 13:45 ` [PATCH AUTOSEL 4.19 03/13] ARM: dts: vexpress: add missing cache properties Sasha Levin
2023-05-31 13:45 ` [PATCH AUTOSEL 4.19 04/13] power: supply: Ratelimit no data debug output Sasha Levin
2023-05-31 13:45 ` [PATCH AUTOSEL 4.19 05/13] regulator: Fix error checking for debugfs_create_dir Sasha Levin
2023-05-31 13:45 ` [PATCH AUTOSEL 4.19 06/13] irqchip/meson-gpio: Mark OF related data as maybe unused Sasha Levin
2023-05-31 13:45 ` [PATCH AUTOSEL 4.19 07/13] power: supply: Fix logic checking if system is running from battery Sasha Levin
2023-05-31 13:45 ` [PATCH AUTOSEL 4.19 08/13] parisc: Improve cache flushing for PCXL in arch_sync_dma_for_cpu() Sasha Levin
2023-05-31 13:45 ` [PATCH AUTOSEL 4.19 09/13] parisc: Flush gatt writes and adjust gatt mask in parisc_agp_mask_memory() Sasha Levin
2023-05-31 13:45 ` [PATCH AUTOSEL 4.19 10/13] MIPS: Restore Au1300 support Sasha Levin
2023-05-31 13:45 ` [PATCH AUTOSEL 4.19 11/13] MIPS: Alchemy: fix dbdma2 Sasha Levin
2023-05-31 13:45 ` [PATCH AUTOSEL 4.19 12/13] mips: Move initrd_start check after initrd address sanitisation Sasha Levin
2023-05-31 13:45 ` Sasha Levin [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230531134541.3385043-13-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=axboe@kernel.dk \
    --cc=jgross@suse.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=roger.pau@citrix.com \
    --cc=ross.lagerwall@citrix.com \
    --cc=sstabellini@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox