{
struct iio_map_internal *c_i = NULL, *c = NULL;
struct iio_channel *channel;
+ int err;
if (name == NULL && channel_name == NULL)
return ERR_PTR(-ENODEV);
return ERR_PTR(-ENODEV);
channel = kzalloc(sizeof(*channel), GFP_KERNEL);
- if (channel == NULL)
+ if (channel == NULL) {
+ err = -ENOMEM;
goto error_no_mem;
+ }
channel->indio_dev = c->indio_dev;
iio_chan_spec_from_name(channel->indio_dev,
c->map->adc_channel_label);
- if (channel->channel == NULL)
+ if (channel->channel == NULL) {
+ err = -EINVAL;
goto error_no_chan;
+ }
}
return channel;
error_no_chan:
- iio_device_put(c->indio_dev);
kfree(channel);
- return ERR_PTR(-EINVAL);
error_no_mem:
iio_device_put(c->indio_dev);
- return ERR_PTR(-ENOMEM);
+ return ERR_PTR(err);
}
EXPORT_SYMBOL_GPL(iio_channel_get);