aboutsummaryrefslogtreecommitdiffstats
path: root/main/xen/xsa316-xen.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/xen/xsa316-xen.patch')
-rw-r--r--main/xen/xsa316-xen.patch30
1 files changed, 30 insertions, 0 deletions
diff --git a/main/xen/xsa316-xen.patch b/main/xen/xsa316-xen.patch
new file mode 100644
index 0000000000..4962b4e716
--- /dev/null
+++ b/main/xen/xsa316-xen.patch
@@ -0,0 +1,30 @@
+From: Ross Lagerwall <ross.lagerwall@citrix.com>
+Subject: xen/gnttab: Fix error path in map_grant_ref()
+
+Part of XSA-295 (c/s 863e74eb2cffb) inadvertently re-positioned the brackets,
+changing the logic. If the _set_status() call fails, the grant_map hypercall
+would fail with a status of 1 (rc != GNTST_okay) instead of the expected
+negative GNTST_* error.
+
+This error path can be taken due to bad guest state, and causes net/blk-back
+in Linux to crash.
+
+This is XSA-316.
+
+Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
+Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
+Reviewed-by: Julien Grall <jgrall@amazon.com>
+
+diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
+index 9fd6e60416..4b5344dc21 100644
+--- a/xen/common/grant_table.c
++++ b/xen/common/grant_table.c
+@@ -1031,7 +1031,7 @@ map_grant_ref(
+ {
+ if ( (rc = _set_status(shah, status, rd, rgt->gt_version, act,
+ op->flags & GNTMAP_readonly, 1,
+- ld->domain_id) != GNTST_okay) )
++ ld->domain_id)) != GNTST_okay )
+ goto act_release_out;
+
+ if ( !act->pin )