From: Michal Orzel Date: Tue, 21 Jan 2025 08:20:51 +0000 (+0100) Subject: xen/flask: Wire up XEN_DOMCTL_dt_overlay X-Git-Tag: RELEASE-4.19.2~66 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=e7f96aa3f3d8b1ad2f0475a627f62763261df743;p=xen.git xen/flask: Wire up XEN_DOMCTL_dt_overlay Addition of FLASK permission for this hypercall was overlooked in the original patch. Fix it. The only dt overlay operation is attaching that can happen only after the domain is created. Dom0 can attach overlay to itself as well. Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device attachment to domains") Signed-off-by: Michal Orzel Acked-by: Daniel P. Smith master commit: 7fa1411676150634b1d6ca030e53b94c26a949dd master date: 2025-01-08 13:05:50 +0100 --- diff --git a/tools/flask/policy/modules/dom0.te b/tools/flask/policy/modules/dom0.te index 16b8c9646d..f148bfbf27 100644 --- a/tools/flask/policy/modules/dom0.te +++ b/tools/flask/policy/modules/dom0.te @@ -40,7 +40,7 @@ allow dom0_t dom0_t:domain { }; allow dom0_t dom0_t:domain2 { set_cpu_policy gettsc settsc setscheduler set_vnumainfo - get_vnumainfo psr_cmt_op psr_alloc get_cpu_policy + get_vnumainfo psr_cmt_op psr_alloc get_cpu_policy dt_overlay }; allow dom0_t dom0_t:resource { add remove }; diff --git a/tools/flask/policy/modules/xen.if b/tools/flask/policy/modules/xen.if index ba9e91d302..def60da883 100644 --- a/tools/flask/policy/modules/xen.if +++ b/tools/flask/policy/modules/xen.if @@ -94,7 +94,7 @@ define(`manage_domain', ` getaddrsize pause unpause trigger shutdown destroy setaffinity setdomainmaxmem getscheduler resume setpodtarget getpodtarget getpagingmempool setpagingmempool }; - allow $1 $2:domain2 set_vnumainfo; + allow $1 $2:domain2 { set_vnumainfo dt_overlay }; ') # migrate_domain_out(priv, target) diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c index 35237a00c4..415edee251 100644 --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -841,6 +841,9 @@ static int cf_check flask_domctl(struct domain *d, unsigned int cmd, case XEN_DOMCTL_set_paging_mempool_size: return current_has_perm(d, SECCLASS_DOMAIN, DOMAIN__SETPAGINGMEMPOOL); + case XEN_DOMCTL_dt_overlay: + return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__DT_OVERLAY); + default: return avc_unknown_permission("domctl", cmd); } diff --git a/xen/xsm/flask/policy/access_vectors b/xen/xsm/flask/policy/access_vectors index 7cbdb7ea64..78fe37583b 100644 --- a/xen/xsm/flask/policy/access_vectors +++ b/xen/xsm/flask/policy/access_vectors @@ -253,6 +253,8 @@ class domain2 get_cpu_policy # XEN_DOMCTL_vuart_op vuart_op +# XEN_DOMCTL_dt_overlay + dt_overlay } # Similar to class domain, but primarily contains domctls related to HVM domains