[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 12/25] xsm, argo: XSM control for argo message send operation



> -----Original Message-----
> From: Christopher Clark [mailto:christopher.w.clark@xxxxxxxxx]
> Sent: 01 December 2018 01:33
> To: xen-devel@xxxxxxxxxxxxxxxxxxxx
> Cc: Daniel De Graaf <dgdegra@xxxxxxxxxxxxx>; Paul Durrant
> <Paul.Durrant@xxxxxxxxxx>; Stefano Stabellini <sstabellini@xxxxxxxxxx>;
> Rich Persaud <persaur@xxxxxxxxx>; Ross Philipson
> <ross.philipson@xxxxxxxxx>; Eric Chanudet <eric.chanudet@xxxxxxxxx>; James
> McKenzie <voreekf@xxxxxxxxxxxxx>; Jason Andryuk <jandryuk@xxxxxxxxx>;
> Daniel Smith <dpsmith@xxxxxxxxxxxxxxxxxxxx>
> Subject: [PATCH 12/25] xsm, argo: XSM control for argo message send
> operation
> 
> Default policy: allow.
> 
> Signed-off-by: Christopher Clark <christopher.clark6@xxxxxxxxxxxxxx>

Reviewed-by: Paul Durrant <paul.durrant@xxxxxxxxxx>

> ---
>  xen/include/xsm/dummy.h             | 5 +++++
>  xen/include/xsm/xsm.h               | 6 ++++++
>  xen/xsm/dummy.c                     | 1 +
>  xen/xsm/flask/hooks.c               | 7 +++++++
>  xen/xsm/flask/policy/access_vectors | 2 ++
>  5 files changed, 21 insertions(+)
> 
> diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h
> index 55113c3..85965fc 100644
> --- a/xen/include/xsm/dummy.h
> +++ b/xen/include/xsm/dummy.h
> @@ -733,6 +733,11 @@ static XSM_INLINE int
> xsm_argo_register_any_source(struct domain *d,
>      return strict ? -EPERM : 0;
>  }
> 
> +static XSM_INLINE int xsm_argo_send(struct domain *d, struct domain *t)
> +{
> +    return 0;
> +}
> +
>  #endif /* CONFIG_ARGO */
> 
>  #include <public/version.h>
> diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
> index 65577fd..470e7c3 100644
> --- a/xen/include/xsm/xsm.h
> +++ b/xen/include/xsm/xsm.h
> @@ -184,6 +184,7 @@ struct xsm_operations {
>  #ifdef CONFIG_ARGO
>      int (*argo_register_single_source) (struct domain *d, struct domain
> *t);
>      int (*argo_register_any_source) (struct domain *d);
> +    int (*argo_send) (struct domain *d, struct domain *t);
>  #endif
>  };
> 
> @@ -713,6 +714,11 @@ static inline xsm_argo_register_any_source(struct
> domain *d, bool strict)
>      return xsm_ops->argo_register_any_source(d);
>  }
> 
> +static inline int xsm_argo_send(struct domain *d, struct domain *t)
> +{
> +    return xsm_ops->argo_send(d, t);
> +}
> +
>  #endif /* CONFIG_ARGO */
> 
>  #endif /* XSM_NO_WRAPPERS */
> diff --git a/xen/xsm/dummy.c b/xen/xsm/dummy.c
> index ed236b0..ffac774 100644
> --- a/xen/xsm/dummy.c
> +++ b/xen/xsm/dummy.c
> @@ -155,5 +155,6 @@ void __init xsm_fixup_ops (struct xsm_operations *ops)
>  #ifdef CONFIG_ARGO
>      set_to_dummy_if_null(ops, argo_register_single_source);
>      set_to_dummy_if_null(ops, argo_register_any_source);
> +    set_to_dummy_if_null(ops, argo_send);
>  #endif
>  }
> diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c
> index 3166561..7b4e5ff 100644
> --- a/xen/xsm/flask/hooks.c
> +++ b/xen/xsm/flask/hooks.c
> @@ -1730,6 +1730,12 @@ static int flask_argo_register_any_source(struct
> domain *d)
>      return avc_has_perm(domain_sid(d), SECINITSID_XEN, SECCLASS_ARGO,
>                          ARGO__REGISTER_ANY_SOURCE, NULL);
>  }
> +
> +static int flask_argo_send(struct domain *d, struct domain *t)
> +{
> +    return domain_has_perm(d, t, SECCLASS_ARGO, ARGO__SEND);
> +}
> +
>  #endif
> 
>  long do_flask_op(XEN_GUEST_HANDLE_PARAM(xsm_op_t) u_flask_op);
> @@ -1869,6 +1875,7 @@ static struct xsm_operations flask_ops = {
>  #ifdef CONFIG_ARGO
>      .argo_register_single_source = flask_argo_register_single_source,
>      .argo_register_any_source = flask_argo_register_any_source,
> +    .argo_send = flask_argo_send,
>  #endif
>  };
> 
> diff --git a/xen/xsm/flask/policy/access_vectors
> b/xen/xsm/flask/policy/access_vectors
> index fb95c97..f6c5377 100644
> --- a/xen/xsm/flask/policy/access_vectors
> +++ b/xen/xsm/flask/policy/access_vectors
> @@ -541,4 +541,6 @@ class argo
>      # Domain requesting registration of a communication ring
>      # to receive messages from any other domain.
>      register_any_source
> +    # Domain sending a message to another domain.
> +    send
>  }
> --
> 2.1.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.