staging: iio: core: Avoid NULL pointer de-ref in case indio_dev->setup_ops are not...
authorMichael Hennerich <michael.hennerich@analog.com>
Thu, 1 Mar 2012 09:51:04 +0000 (10:51 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 3 Mar 2012 00:35:39 +0000 (16:35 -0800)
Drivers may not need setup_ops at all, so let the core supply
some empty ops.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Acked-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/iio/industrialio-core.c

index 868e36672001c7b7a437a846835a056b8f1b3f23..27695dffb17786fe0730e882b8f3ad714014b36e 100644 (file)
@@ -854,6 +854,8 @@ static const struct file_operations iio_buffer_fileops = {
        .compat_ioctl = iio_ioctl,
 };
 
+static const struct iio_buffer_setup_ops noop_ring_setup_ops;
+
 int iio_device_register(struct iio_dev *indio_dev)
 {
        int ret;
@@ -882,6 +884,10 @@ int iio_device_register(struct iio_dev *indio_dev)
        if (indio_dev->modes & INDIO_BUFFER_TRIGGERED)
                iio_device_register_trigger_consumer(indio_dev);
 
+       if ((indio_dev->modes & INDIO_ALL_BUFFER_MODES) &&
+               indio_dev->setup_ops == NULL)
+               indio_dev->setup_ops = &noop_ring_setup_ops;
+
        ret = device_add(&indio_dev->dev);
        if (ret < 0)
                goto error_unreg_eventset;