[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v8 02/25] xen/xsplice: Hypervisor implementation of XEN_XSPLICE_op
On 04/13/2016 10:09 PM, Konrad Rzeszutek Wilk wrote: snip +static int xsplice_action(xen_sysctl_xsplice_action_t *action) +{ + struct payload *data; + char n[XEN_XSPLICE_NAME_SIZE]; + int rc; + + rc = verify_name(&action->name, n); + if ( rc ) + return rc; + + spin_lock(&payload_lock); + + data = find_payload(n); + if ( IS_ERR_OR_NULL(data) ) + { + spin_unlock(&payload_lock); + + if ( !data ) + return -ENOENT; + + return PTR_ERR(data); + } I think you need something like: rc = -EINVAL;here. Otherwise running "xen-xsplice unload <patch>" on an applied patch succeeds but fails to do anything. + + switch ( action->cmd ) + { + case XSPLICE_ACTION_CHECK: + if ( data->state == XSPLICE_STATE_CHECKED ) + { + /* No implementation yet. */ + data->state = XSPLICE_STATE_CHECKED; + data->rc = 0; + } + break; + + case XSPLICE_ACTION_UNLOAD: + if ( data->state == XSPLICE_STATE_CHECKED ) + { + free_payload(data); + /* No touching 'data' from here on! */ + data = NULL; + } + break; + + case XSPLICE_ACTION_REVERT: + if ( data->state == XSPLICE_STATE_APPLIED ) + { + /* No implementation yet. */ + data->state = XSPLICE_STATE_CHECKED; + data->rc = 0; + } + break; + + case XSPLICE_ACTION_APPLY: + if ( data->state == XSPLICE_STATE_CHECKED ) + { + /* No implementation yet. */ + data->state = XSPLICE_STATE_APPLIED; + data->rc = 0; + } + break; + + case XSPLICE_ACTION_REPLACE: + if ( data->state == XSPLICE_STATE_CHECKED ) + { + /* No implementation yet. */ + data->state = XSPLICE_STATE_CHECKED; + data->rc = 0; + } + break; + + default: + rc = -EOPNOTSUPP; + break; + } + + spin_unlock(&payload_lock); + + return rc; +} + +int xsplice_op(xen_sysctl_xsplice_op_t *xsplice) -- Ross Lagerwall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |