Subject: [PATCH] iio: industrialio-buffer: Fix iio_buffer_poll return value

Change return value to 0 if no device is bound since
unsigned int cannot support negative error codes.

Signed-off-by: Cristina Opriceana <[email protected]>
---
drivers/iio/industrialio-buffer.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/iio/industrialio-buffer.c b/drivers/iio/industrialio-buffer.c
index faed6ef..e8e87cf 100644
--- a/drivers/iio/industrialio-buffer.c
+++ b/drivers/iio/industrialio-buffer.c
@@ -155,7 +155,9 @@ ssize_t iio_buffer_read_first_n_outer(struct file *filp, char __user *buf,
* a wait queue
*
* Return: (POLLIN | POLLRDNORM) if data is available for reading
- * or 0 for other cases
+ * and 0 for other cases, e.g. no device is bound or no
+ * hardware fifo flush could be triggered.
+ *
*/
unsigned int iio_buffer_poll(struct file *filp,
struct poll_table_struct *wait)
@@ -164,7 +166,7 @@ unsigned int iio_buffer_poll(struct file *filp,
struct iio_buffer *rb = indio_dev->buffer;

if (!indio_dev->info)
- return -ENODEV;
+ return 0;

poll_wait(filp, &rb->pollq, wait);
if (iio_buffer_ready(indio_dev, rb, rb->watermark, 0))
--
1.9.1


2015-08-03 10:44:05

by Daniel Baluta

[permalink] [raw]
Subject: Re: [PATCH] iio: industrialio-buffer: Fix iio_buffer_poll return value

On Mon, Aug 3, 2015 at 1:37 PM, Cristina Opriceana
<[email protected]> wrote:
> Change return value to 0 if no device is bound since
> unsigned int cannot support negative error codes.
>
> Signed-off-by: Cristina Opriceana <[email protected]>

Fixes: f18e7a068 ("iio: Return -ENODEV for file operations if the
device has been unregistered")

> ---
> drivers/iio/industrialio-buffer.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/industrialio-buffer.c b/drivers/iio/industrialio-buffer.c
> index faed6ef..e8e87cf 100644
> --- a/drivers/iio/industrialio-buffer.c
> +++ b/drivers/iio/industrialio-buffer.c
> @@ -155,7 +155,9 @@ ssize_t iio_buffer_read_first_n_outer(struct file *filp, char __user *buf,
> * a wait queue
> *
> * Return: (POLLIN | POLLRDNORM) if data is available for reading
> - * or 0 for other cases
> + * and 0 for other cases, e.g. no device is bound or no
> + * hardware fifo flush could be triggered.
> + *
> */
> unsigned int iio_buffer_poll(struct file *filp,
> struct poll_table_struct *wait)
> @@ -164,7 +166,7 @@ unsigned int iio_buffer_poll(struct file *filp,
> struct iio_buffer *rb = indio_dev->buffer;
>
> if (!indio_dev->info)
> - return -ENODEV;
> + return 0;
>
> poll_wait(filp, &rb->pollq, wait);
> if (iio_buffer_ready(indio_dev, rb, rb->watermark, 0))
> --
> 1.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html

2015-08-08 15:44:37

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH] iio: industrialio-buffer: Fix iio_buffer_poll return value

On 03/08/15 11:44, Daniel Baluta wrote:
> On Mon, Aug 3, 2015 at 1:37 PM, Cristina Opriceana
> <[email protected]> wrote:
>> Change return value to 0 if no device is bound since
>> unsigned int cannot support negative error codes.
>>
>> Signed-off-by: Cristina Opriceana <[email protected]>
>
> Fixes: f18e7a068 ("iio: Return -ENODEV for file operations if the
> device has been unregistered")
>
I've applied a variant of this to the the fixes-togreg branch.
The docs aren't there yet so this is going to make for some messy
merging. We can fix the docs once the fix has worked it's way through.

Jonathan
>> ---
>> drivers/iio/industrialio-buffer.c | 6 ++++--
>> 1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/iio/industrialio-buffer.c b/drivers/iio/industrialio-buffer.c
>> index faed6ef..e8e87cf 100644
>> --- a/drivers/iio/industrialio-buffer.c
>> +++ b/drivers/iio/industrialio-buffer.c
>> @@ -155,7 +155,9 @@ ssize_t iio_buffer_read_first_n_outer(struct file *filp, char __user *buf,
>> * a wait queue
>> *
>> * Return: (POLLIN | POLLRDNORM) if data is available for reading
>> - * or 0 for other cases
>> + * and 0 for other cases, e.g. no device is bound or no
>> + * hardware fifo flush could be triggered.
>> + *
>> */
>> unsigned int iio_buffer_poll(struct file *filp,
>> struct poll_table_struct *wait)
>> @@ -164,7 +166,7 @@ unsigned int iio_buffer_poll(struct file *filp,
>> struct iio_buffer *rb = indio_dev->buffer;
>>
>> if (!indio_dev->info)
>> - return -ENODEV;
>> + return 0;
>>
>> poll_wait(filp, &rb->pollq, wait);
>> if (iio_buffer_ready(indio_dev, rb, rb->watermark, 0))
>> --
>> 1.9.1
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
>> the body of a message to [email protected]
>> More majordomo info at http://vger.kernel.org/majordomo-info.html