Hi Fabiano, On Thu, 2015-11-05 at 23:24 +0100, Fabiano Fidêncio wrote: > On Thu, Nov 5, 2015 at 4:58 PM, Pavel Grunt <pgrunt@xxxxxxxxxx> wrote: > > --- > > server/char_device.c | 47 ++++++++++++++++++++++++++++++++++++++++++++--- > > server/reds.c | 2 ++ > > server/spicevmc.c | 6 ++++++ > > 3 files changed, 52 insertions(+), 3 deletions(-) > > > > diff --git a/server/char_device.c b/server/char_device.c > > index 54357f0..00ed4d9 100644 > > --- a/server/char_device.c > > +++ b/server/char_device.c > > @@ -376,6 +376,9 @@ void > > spice_char_device_send_to_client_tokens_add(SpiceCharDeviceState *dev, > > { > > SpiceCharDeviceClientState *dev_client; > > > > + spice_return_if_fail(dev != NULL); > > + spice_return_if_fail(client != NULL); > > + > > dev_client = spice_char_device_client_find(dev, client); > > > > if (!dev_client) { > > @@ -391,6 +394,9 @@ void > > spice_char_device_send_to_client_tokens_set(SpiceCharDeviceState *dev, > > { > > SpiceCharDeviceClientState *dev_client; > > > > + spice_return_if_fail(dev != NULL); > > + spice_return_if_fail(client != NULL); > > + > > dev_client = spice_char_device_client_find(dev, client); > > > > if (!dev_client) { > > @@ -573,6 +579,8 @@ SpiceCharDeviceWriteBuffer > > *spice_char_device_write_buffer_get(SpiceCharDeviceSt > > RedClient > > *client, > > int size) > > { > > + spice_return_val_if_fail(dev != NULL, NULL); > > + > > return __spice_char_device_write_buffer_get(dev, client, size, > > client ? WRITE_BUFFER_ORIGIN_CLIENT : > > WRITE_BUFFER_ORIGIN_SERVER, > > 0); > > @@ -581,6 +589,8 @@ SpiceCharDeviceWriteBuffer > > *spice_char_device_write_buffer_get(SpiceCharDeviceSt > > SpiceCharDeviceWriteBuffer > > *spice_char_device_write_buffer_get_server_no_token( > > SpiceCharDeviceState *dev, int size) > > { > > + spice_return_val_if_fail(dev != NULL, NULL); > > + > > return __spice_char_device_write_buffer_get(dev, NULL, size, > > WRITE_BUFFER_ORIGIN_SERVER_NO_TOKEN, 0); > > } > > @@ -597,6 +607,7 @@ void > > spice_char_device_write_buffer_add(SpiceCharDeviceState *dev, > > SpiceCharDeviceWriteBuffer > > *write_buf) > > { > > spice_assert(dev); > > + spice_return_if_fail(write_buf != NULL); > > /* caller shouldn't add buffers for client that was removed */ > > if (write_buf->origin == WRITE_BUFFER_ORIGIN_CLIENT && > > !spice_char_device_client_find(dev, write_buf->client)) { > > @@ -612,9 +623,15 @@ void > > spice_char_device_write_buffer_add(SpiceCharDeviceState *dev, > > void spice_char_device_write_buffer_release(SpiceCharDeviceState *dev, > > SpiceCharDeviceWriteBuffer > > *write_buf) > > { > > - int buf_origin = write_buf->origin; > > - uint32_t buf_token_price = write_buf->token_price; > > - RedClient *client = write_buf->client; > > + int buf_origin; > > + uint32_t buf_token_price; > > + RedClient *client; > > + > > + spice_return_if_fail(write_buf != NULL); > > + > > + buf_origin = write_buf->origin; > > + buf_token_price = write_buf->token_price; > > + client = write_buf->client; > > > > spice_assert(!ring_item_is_linked(&write_buf->link)); > > if (!dev) { > > @@ -690,6 +707,8 @@ SpiceCharDeviceState > > *spice_char_device_state_create(SpiceCharDeviceInstance *si > > void spice_char_device_state_reset_dev_instance(SpiceCharDeviceState > > *state, > > SpiceCharDeviceInstance > > *sin) > > { > > + spice_return_if_fail(state != NULL); > > + spice_return_if_fail(sin != NULL); > > spice_debug("sin %p dev_state %p", sin, state); > > state->sin = sin; > > sin->st = state; > > @@ -697,6 +716,7 @@ void > > spice_char_device_state_reset_dev_instance(SpiceCharDeviceState *state, > > > > void *spice_char_device_state_opaque_get(SpiceCharDeviceState *dev) > > { > > + spice_return_val_if_fail(dev != NULL, NULL); > > return dev->opaque; > > } > > > > @@ -721,6 +741,8 @@ static void > > spice_char_device_state_unref(SpiceCharDeviceState *char_dev) > > > > void spice_char_device_state_destroy(SpiceCharDeviceState *char_dev) > > { > > + spice_return_if_fail(char_dev != NULL); > > + > > reds_on_char_device_state_destroy(char_dev); > > if (char_dev->write_to_dev_timer) { > > core->timer_remove(char_dev->write_to_dev_timer); > > @@ -796,6 +818,9 @@ void > > spice_char_device_client_remove(SpiceCharDeviceState *dev, > > { > > SpiceCharDeviceClientState *dev_client; > > > > + spice_return_if_fail(dev != NULL); > > + spice_return_if_fail(client != NULL); > > + > > spice_debug("dev_state %p client %p", dev, client); > > dev_client = spice_char_device_client_find(dev, client); > > > > @@ -814,11 +839,16 @@ void > > spice_char_device_client_remove(SpiceCharDeviceState *dev, > > int spice_char_device_client_exists(SpiceCharDeviceState *dev, > > RedClient *client) > > { > > + spice_return_val_if_fail(dev != NULL, FALSE); > > + spice_return_val_if_fail(client != NULL, FALSE); > > + > > return (spice_char_device_client_find(dev, client) != NULL); > > } > > > > void spice_char_device_start(SpiceCharDeviceState *dev) > > { > > + spice_return_if_fail(dev != NULL); > > + > > spice_debug("dev_state %p", dev); > > dev->running = TRUE; > > spice_char_device_state_ref(dev); > > @@ -829,6 +859,8 @@ void spice_char_device_start(SpiceCharDeviceState *dev) > > > > void spice_char_device_stop(SpiceCharDeviceState *dev) > > { > > + spice_return_if_fail(dev != NULL); > > + > > spice_debug("dev_state %p", dev); > > dev->running = FALSE; > > dev->active = FALSE; > > @@ -841,6 +873,8 @@ void spice_char_device_reset(SpiceCharDeviceState *dev) > > { > > RingItem *client_item; > > > > + spice_return_if_fail(dev != NULL); > > + > > spice_char_device_stop(dev); > > dev->wait_for_migrate_data = FALSE; > > spice_debug("dev_state %p", dev); > > @@ -871,6 +905,8 @@ void spice_char_device_reset(SpiceCharDeviceState *dev) > > > > void spice_char_device_wakeup(SpiceCharDeviceState *dev) > > { > > + spice_return_if_fail(dev != NULL); > > + > > spice_char_device_write_to_device(dev); > > spice_char_device_read_from_device(dev); > > } > > @@ -883,6 +919,7 @@ void > > spice_char_device_state_migrate_data_marshall_empty(SpiceMarshaller *m) > > { > > SpiceMigrateDataCharDevice *mig_data; > > > > + spice_return_if_fail(m != NULL); > > spice_debug(NULL); > > mig_data = (SpiceMigrateDataCharDevice > > *)spice_marshaller_reserve_space(m, > > > > sizeof(*mig_data)); > > @@ -907,6 +944,8 @@ void > > spice_char_device_state_migrate_data_marshall(SpiceCharDeviceState *dev, > > uint32_t *write_to_dev_tokens_ptr; > > SpiceMarshaller *m2; > > > > + spice_return_if_fail(dev != NULL); > > + spice_return_if_fail(m != NULL); > > /* multi-clients are not supported */ > > spice_assert(dev->num_clients == 1); > > client_state = SPICE_CONTAINEROF(ring_get_tail(&dev->clients), > > @@ -964,6 +1003,8 @@ int > > spice_char_device_state_restore(SpiceCharDeviceState *dev, > > SpiceCharDeviceClientState *client_state; > > uint32_t client_tokens_window; > > > > + spice_return_val_if_fail(dev != NULL, FALSE); > > + spice_return_val_if_fail(mig_data != NULL, FALSE); > > spice_assert(dev->num_clients == 1 && dev->wait_for_migrate_data); > > > > client_state = SPICE_CONTAINEROF(ring_get_tail(&dev->clients), > > diff --git a/server/reds.c b/server/reds.c > > index 1f6774e..4d18ca8 100644 > > --- a/server/reds.c > > +++ b/server/reds.c > > @@ -2983,6 +2983,8 @@ static SpiceCharDeviceState > > *attach_to_red_agent(SpiceCharDeviceInstance *sin) > > > > SPICE_GNUC_VISIBLE void > > spice_server_char_device_wakeup(SpiceCharDeviceInstance* sin) > > { > > + spice_return_if_fail(sin != NULL); > > + > > Hmm. Just a minor, but maybe would worth to use spice_return_if_fail() > for sin->st as well. > spice_return_*if_fail() aborts, and I wanted to avoid it, that is the reason why I used spice_warning() & return in the first patch. Pavel > > if (!sin->st) { > > spice_warning("no SpiceCharDeviceState attached to instance %p", > > sin); > > return; > > diff --git a/server/spicevmc.c b/server/spicevmc.c > > index 6ac1561..0780192 100644 > > --- a/server/spicevmc.c > > +++ b/server/spicevmc.c > > @@ -508,6 +508,8 @@ SpiceCharDeviceState > > *spicevmc_device_connect(SpiceCharDeviceInstance *sin, > > ClientCbs client_cbs = { NULL, }; > > SpiceCharDeviceCallbacks char_dev_cbs = {NULL, }; > > > > + spice_return_val_if_fail(sin != NULL, NULL); > > + > > channel_cbs.config_socket = spicevmc_red_channel_client_config_socket; > > channel_cbs.on_disconnect = spicevmc_red_channel_client_on_disconnect; > > channel_cbs.send_item = spicevmc_red_channel_send_item; > > @@ -552,6 +554,8 @@ void spicevmc_device_disconnect(SpiceCharDeviceInstance > > *sin) > > { > > SpiceVmcState *state; > > > > + spice_return_if_fail(sin != NULL); > > + > > state = (SpiceVmcState *)spice_char_device_state_opaque_get(sin->st); > > > > if (state->recv_from_client_buf) { > > @@ -569,6 +573,8 @@ SPICE_GNUC_VISIBLE void > > spice_server_port_event(SpiceCharDeviceInstance *sin, ui > > { > > SpiceVmcState *state; > > > > + spice_return_if_fail(sin != NULL); > > + > > Same here ... > > > if (sin->st == NULL) { > > spice_warning("no SpiceCharDeviceState attached to instance %p", > > sin); > > return; > > -- > > 2.5.0 > > > > _______________________________________________ > > Spice-devel mailing list > > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > > http://lists.freedesktop.org/mailman/listinfo/spice-devel _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel