From fa1bde94493ee9fc66ce6f33ed434a9d7133c896 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Fri, 24 Jan 2014 13:48:07 +0100 Subject: [PATCH] x86: PHYSDEVOP_{prepare,release}_msix are privileged Yet this wasn't being enforced. This is XSA-87. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper master commit: 9c7e789a1b60b6114e0b1ef16dff95f03f532fb5 master date: 2014-01-24 13:41:36 +0100 --- xen/arch/x86/physdev.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c index 92d3a80343..679e27050e 100644 --- a/xen/arch/x86/physdev.c +++ b/xen/arch/x86/physdev.c @@ -554,7 +554,9 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE(void) arg) case PHYSDEVOP_release_msix: { struct physdev_pci_device dev; - if ( copy_from_guest(&dev, arg, 1) ) + if ( !IS_PRIV(v->domain) ) + ret = -EPERM; + else if ( copy_from_guest(&dev, arg, 1) ) ret = -EFAULT; else if ( dev.seg ) ret = -EOPNOTSUPP; -- 2.39.5