From: Greg Kroah-Hartman Date: Tue, 15 Mar 2022 12:43:06 +0000 (+0100) Subject: 5.16-stable patches X-Git-Tag: v4.9.307~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2d7defde031aaabea74c9501c5b3af9a294bd00d;p=thirdparty%2Fkernel%2Fstable-queue.git 5.16-stable patches added patches: vhost-allow-batching-hint-without-size.patch --- diff --git a/queue-5.16/series b/queue-5.16/series index 31a94200ef3..5373631cf0d 100644 --- a/queue-5.16/series +++ b/queue-5.16/series @@ -119,3 +119,4 @@ drm-panel-select-drm_dp_helper-for-drm_panel_edp.patch perf-parse-fix-event-parser-error-for-hybrid-systems.patch btrfs-make-send-work-with-concurrent-block-group-relocation.patch riscv-dts-k210-fix-broken-irqs-on-hart1.patch +vhost-allow-batching-hint-without-size.patch diff --git a/queue-5.16/vhost-allow-batching-hint-without-size.patch b/queue-5.16/vhost-allow-batching-hint-without-size.patch new file mode 100644 index 00000000000..515959e3ee6 --- /dev/null +++ b/queue-5.16/vhost-allow-batching-hint-without-size.patch @@ -0,0 +1,42 @@ +From 95932ab2ea07b79cdb33121e2f40ccda9e6a73b5 Mon Sep 17 00:00:00 2001 +From: Jason Wang +Date: Thu, 10 Mar 2022 15:52:11 +0800 +Subject: vhost: allow batching hint without size + +From: Jason Wang + +commit 95932ab2ea07b79cdb33121e2f40ccda9e6a73b5 upstream. + +Commit e2ae38cf3d91 ("vhost: fix hung thread due to erroneous iotlb +entries") tries to reject the IOTLB message whose size is zero. But +the size is not necessarily meaningful, one example is the batching +hint, so the commit breaks that. + +Fixing this be reject zero size message only if the message is used to +update/invalidate the IOTLB. + +Fixes: e2ae38cf3d91 ("vhost: fix hung thread due to erroneous iotlb entries") +Reported-by: Eli Cohen +Cc: Anirudh Rayabharam +Signed-off-by: Jason Wang +Link: https://lore.kernel.org/r/20220310075211.4801-1-jasowang@redhat.com +Signed-off-by: Michael S. Tsirkin +Tested-by: Eli Cohen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/vhost/vhost.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/drivers/vhost/vhost.c ++++ b/drivers/vhost/vhost.c +@@ -1170,7 +1170,9 @@ ssize_t vhost_chr_write_iter(struct vhos + goto done; + } + +- if (msg.size == 0) { ++ if ((msg.type == VHOST_IOTLB_UPDATE || ++ msg.type == VHOST_IOTLB_INVALIDATE) && ++ msg.size == 0) { + ret = -EINVAL; + goto done; + }