From 136b0b223c65e1b8453301fb54bba6cf021f3d48 Mon Sep 17 00:00:00 2001 From: Jonathan Cameron Date: Wed, 21 Sep 2011 11:16:02 +0100 Subject: [PATCH] --- yaml --- r: 268533 b: refs/heads/master c: 30eb82f05dd1f12b18a0ad054401a0b5690fb3c3 h: refs/heads/master i: 268531: 14ff231feea529c71388f21ce887b419b7c64c4a v: v3 --- [refs] | 2 +- trunk/drivers/staging/iio/iio_core.h | 9 ++++++--- trunk/drivers/staging/iio/industrialio-buffer.c | 8 +++++--- trunk/drivers/staging/iio/industrialio-core.c | 4 ++-- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 2eac3bb46cd1..2d49838e90de 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ad31d250bf60c8e4c990e8b0daeedbaa2d6884a9 +refs/heads/master: 30eb82f05dd1f12b18a0ad054401a0b5690fb3c3 diff --git a/trunk/drivers/staging/iio/iio_core.h b/trunk/drivers/staging/iio/iio_core.h index dde9e3e4278e..36159e0dbfc3 100644 --- a/trunk/drivers/staging/iio/iio_core.h +++ b/trunk/drivers/staging/iio/iio_core.h @@ -33,7 +33,7 @@ int __iio_add_chan_devattr(const char *postfix, #ifdef CONFIG_IIO_BUFFER struct poll_table_struct; -void iio_chrdev_buffer_open(struct iio_dev *indio_dev); +int iio_chrdev_buffer_open(struct iio_dev *indio_dev); void iio_chrdev_buffer_release(struct iio_dev *indio_dev); unsigned int iio_buffer_poll(struct file *filp, @@ -47,8 +47,11 @@ ssize_t iio_buffer_read_first_n_outer(struct file *filp, char __user *buf, #else -static inline void iio_chrdev_buffer_open(struct iio_dev *indio_dev) -{} +static inline int iio_chrdev_buffer_open(struct iio_dev *indio_dev) +{ + return -EINVAL; +} + static inline void iio_chrdev_buffer_release(struct iio_dev *indio_dev) {} diff --git a/trunk/drivers/staging/iio/industrialio-buffer.c b/trunk/drivers/staging/iio/industrialio-buffer.c index c3f57e7e8081..4ce101af9a95 100644 --- a/trunk/drivers/staging/iio/industrialio-buffer.c +++ b/trunk/drivers/staging/iio/industrialio-buffer.c @@ -63,11 +63,14 @@ unsigned int iio_buffer_poll(struct file *filp, return 0; } -void iio_chrdev_buffer_open(struct iio_dev *indio_dev) +int iio_chrdev_buffer_open(struct iio_dev *indio_dev) { struct iio_buffer *rb = indio_dev->buffer; - if (rb && rb->access->mark_in_use) + if (!rb) + return -EINVAL; + if (rb->access->mark_in_use) rb->access->mark_in_use(rb); + return 0; } void iio_chrdev_buffer_release(struct iio_dev *indio_dev) @@ -77,7 +80,6 @@ void iio_chrdev_buffer_release(struct iio_dev *indio_dev) clear_bit(IIO_BUSY_BIT_POS, &rb->flags); if (rb->access->unmark_in_use) rb->access->unmark_in_use(rb); - } void iio_buffer_init(struct iio_buffer *buffer, struct iio_dev *dev_info) diff --git a/trunk/drivers/staging/iio/industrialio-core.c b/trunk/drivers/staging/iio/industrialio-core.c index b11c7f303acd..647a4052a8cb 100644 --- a/trunk/drivers/staging/iio/industrialio-core.c +++ b/trunk/drivers/staging/iio/industrialio-core.c @@ -1065,8 +1065,8 @@ static int iio_chrdev_open(struct inode *inode, struct file *filp) struct iio_dev *dev_info = container_of(inode->i_cdev, struct iio_dev, chrdev); filp->private_data = dev_info; - iio_chrdev_buffer_open(dev_info); - return 0; + + return iio_chrdev_buffer_open(dev_info); } /**