|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 48/52] xen: add hypercall for setting parameters at runtime
On 22/08/17 13:31, Jan Beulich wrote:
>>>> On 16.08.17 at 14:52, <jgross@xxxxxxxx> wrote:
>> --- a/xen/common/sysctl.c
>> +++ b/xen/common/sysctl.c
>> @@ -467,6 +467,42 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t)
>> u_sysctl)
>> copyback = 1;
>> break;
>>
>> + case XEN_SYSCTL_set_parameter:
>> + {
>> +#define XEN_SET_PARAMETER_MAX_SIZE 1023
>> + char *params;
>> +
>> + if ( op->u.set_parameter.pad[0] || op->u.set_parameter.pad[1] ||
>> + op->u.set_parameter.pad[2] )
>> + {
>> + ret = -EINVAL;
>> + break;
>> + }
>> + if ( op->u.set_parameter.size > XEN_SET_PARAMETER_MAX_SIZE )
>> + {
>> + ret = -E2BIG;
>> + break;
>> + }
>> + params = xmalloc_bytes(op->u.set_parameter.size + 1);
>> + if ( !params )
>> + {
>> + ret = -ENOMEM;
>> + break;
>> + }
>> + if ( __copy_from_guest(params, op->u.set_parameter.params,
>> + op->u.set_parameter.size) )
>
> You didn't verify the handle earlier, so I think this needs to be
> copy_from_guest().
Aah, yes, of course.
>
>> --- a/xen/include/public/sysctl.h
>> +++ b/xen/include/public/sysctl.h
>> @@ -1096,6 +1096,21 @@ struct xen_sysctl_livepatch_op {
>> typedef struct xen_sysctl_livepatch_op xen_sysctl_livepatch_op_t;
>> DEFINE_XEN_GUEST_HANDLE(xen_sysctl_livepatch_op_t);
>>
>> +/*
>> + * XEN_SYSCTL_set_parameter
>> + *
>> + * Change hypervisor parameters at runtime.
>> + * The input string is parsed similar to the boot parameters.
>> + */
>> +
>> +struct xen_sysctl_set_parameter {
>> + XEN_GUEST_HANDLE_64(char) params; /* IN: pointer to parameters. */
>> + uint16_t size; /* IN: size of parameters. */
>
> The combination of length and zero terminator is always a little
> ambiguous: I think it should be clarified in the comment what
> behavior to expect, unless you want to either disallow
> embedded NULs or drop the size field.
Okay.
Are you fine with e.g.:
/* Parameters are a single string terminated by a NUL byte of max. size
characters. Multiple settings can be specified by separating them
with blanks. */
Juergen
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |