Commit ef2d71d6 authored by Jonathan Cameron's avatar Jonathan Cameron

iio: triggers: Make trigger ops structure explicitly non optional.

This structure has not been optional for a long time (if ever) but the
code implies that it is.  As we then use it later in a fashion that would
crash if it was in fact NULL, it's inconsistent so fix it up by removing
unnecessary checks.
Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent 8ac8aa61
...@@ -68,6 +68,10 @@ int iio_trigger_register(struct iio_trigger *trig_info) ...@@ -68,6 +68,10 @@ int iio_trigger_register(struct iio_trigger *trig_info)
{ {
int ret; int ret;
/* trig_info->ops is required for the module member */
if (!trig_info->ops)
return -EINVAL;
trig_info->id = ida_simple_get(&iio_trigger_ida, 0, 0, GFP_KERNEL); trig_info->id = ida_simple_get(&iio_trigger_ida, 0, 0, GFP_KERNEL);
if (trig_info->id < 0) if (trig_info->id < 0)
return trig_info->id; return trig_info->id;
...@@ -164,8 +168,7 @@ EXPORT_SYMBOL(iio_trigger_poll_chained); ...@@ -164,8 +168,7 @@ EXPORT_SYMBOL(iio_trigger_poll_chained);
void iio_trigger_notify_done(struct iio_trigger *trig) void iio_trigger_notify_done(struct iio_trigger *trig)
{ {
if (atomic_dec_and_test(&trig->use_count) && trig->ops && if (atomic_dec_and_test(&trig->use_count) && trig->ops->try_reenable)
trig->ops->try_reenable)
if (trig->ops->try_reenable(trig)) if (trig->ops->try_reenable(trig))
/* Missed an interrupt so launch new poll now */ /* Missed an interrupt so launch new poll now */
iio_trigger_poll(trig); iio_trigger_poll(trig);
...@@ -219,7 +222,7 @@ static int iio_trigger_attach_poll_func(struct iio_trigger *trig, ...@@ -219,7 +222,7 @@ static int iio_trigger_attach_poll_func(struct iio_trigger *trig,
return ret; return ret;
} }
if (trig->ops && trig->ops->set_trigger_state && notinuse) { if (trig->ops->set_trigger_state && notinuse) {
ret = trig->ops->set_trigger_state(trig, true); ret = trig->ops->set_trigger_state(trig, true);
if (ret < 0) if (ret < 0)
module_put(pf->indio_dev->info->driver_module); module_put(pf->indio_dev->info->driver_module);
...@@ -236,7 +239,7 @@ static int iio_trigger_detach_poll_func(struct iio_trigger *trig, ...@@ -236,7 +239,7 @@ static int iio_trigger_detach_poll_func(struct iio_trigger *trig,
= (bitmap_weight(trig->pool, = (bitmap_weight(trig->pool,
CONFIG_IIO_CONSUMERS_PER_TRIGGER) CONFIG_IIO_CONSUMERS_PER_TRIGGER)
== 1); == 1);
if (trig->ops && trig->ops->set_trigger_state && no_other_users) { if (trig->ops->set_trigger_state && no_other_users) {
ret = trig->ops->set_trigger_state(trig, false); ret = trig->ops->set_trigger_state(trig, false);
if (ret) if (ret)
return ret; return ret;
...@@ -358,7 +361,7 @@ static ssize_t iio_trigger_write_current(struct device *dev, ...@@ -358,7 +361,7 @@ static ssize_t iio_trigger_write_current(struct device *dev,
return ret; return ret;
} }
if (trig && trig->ops && trig->ops->validate_device) { if (trig && trig->ops->validate_device) {
ret = trig->ops->validate_device(trig, indio_dev); ret = trig->ops->validate_device(trig, indio_dev);
if (ret) if (ret)
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment