iio: Fix unitialized use of list
authorSascha Hauer <s.hauer@pengutronix.de>
Tue, 3 Jul 2012 08:55:40 +0000 (10:55 +0200)
committerJonathan Cameron <jic23@kernel.org>
Sun, 8 Jul 2012 19:02:24 +0000 (20:02 +0100)
The dev_attr list is initialized in __iio_add_event_config_attrs which
is called only when indio_dev->channels is true. Nevertheless the list
is used unconditionally later in iio_device_register_eventset which
results in a NULL pointer exception. To fix this unconditionally
initialize the list in iio_device_register_eventset.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/industrialio-event.c

index b49059d..fa6543b 100644 (file)
@@ -345,7 +345,6 @@ static inline int __iio_add_event_config_attrs(struct iio_dev *indio_dev)
 {
        int j, ret, attrcount = 0;
 
-       INIT_LIST_HEAD(&indio_dev->event_interface->dev_attr_list);
        /* Dynically created from the channels array */
        for (j = 0; j < indio_dev->num_channels; j++) {
                ret = iio_device_add_event_sysfs(indio_dev,
@@ -396,6 +395,8 @@ int iio_device_register_eventset(struct iio_dev *indio_dev)
                goto error_ret;
        }
 
+       INIT_LIST_HEAD(&indio_dev->event_interface->dev_attr_list);
+
        iio_setup_ev_int(indio_dev->event_interface);
        if (indio_dev->info->event_attrs != NULL) {
                attr = indio_dev->info->event_attrs->attrs;