Sasha Levin <[email protected]> wrote:

>The error was introduced in commit b4641336 ("iio: fix a leak due to
>improper use of anon_inode_getfd()").
>
>Looks like the code wasn't even compile tested. Instead of just fixing
>the
>error I changed the function a bit to make it nicer.
Minimal change would have been slightly nicer but clean up is obvious so fine. 
Thanks for doing this.  Andrew m has a dirty build fix in NM but he will drop 
that when this hits.
>Cc: Jonathan Cameron <[email protected]>
>Cc: Greg Kroah-Hartman <[email protected]>
>Cc: [email protected]
>Cc: [email protected]
>Signed-off-by: Sasha Levin <[email protected]>
Acked-by: Jonathan Cameron <[email protected]>
>---
> drivers/staging/iio/industrialio-core.c |   21 ++++++++++-----------
> 1 files changed, 10 insertions(+), 11 deletions(-)
>
>diff --git a/drivers/staging/iio/industrialio-core.c
>b/drivers/staging/iio/industrialio-core.c
>index 2656409..5367914 100644
>--- a/drivers/staging/iio/industrialio-core.c
>+++ b/drivers/staging/iio/industrialio-core.c
>@@ -242,25 +242,24 @@ static const struct file_operations
>iio_event_chrdev_fileops = {
> 
> static int iio_event_getfd(struct iio_dev *indio_dev)
> {
>+      struct iio_event_interface *ev_int = indio_dev->event_interface;
>       int fd;
> 
>-      if (indio_dev->event_interface == NULL)
>+      if (ev_int == NULL)
>               return -ENODEV;
> 
>-      mutex_lock(&indio_dev->event_interface->event_list_lock);
>-      if (test_and_set_bit(IIO_BUSY_BIT_POS,
>-                           &indio_dev->event_interface->flags)) {
>-              mutex_unlock(&indio_dev->event_interface->event_list_lock);
>+      mutex_lock(&ev_int->event_list_lock);
>+      if (test_and_set_bit(IIO_BUSY_BIT_POS, &ev_int->flags)) {
>+              mutex_unlock(&ev_int->event_list_lock);
>               return -EBUSY;
>       }
>-      mutex_unlock(&indio_dev->event_interface->event_list_lock);
>-      fd = anon_inode_getfd("iio:event",
>-                              &iio_event_chrdev_fileops,
>-                              indio_dev->event_interface, O_RDONLY);
>+      mutex_unlock(&ev_int->event_list_lock);
>+      fd = anon_inode_getfd("iio:event", &iio_event_chrdev_fileops,
>+                              ev_int, O_RDONLY);
>       if (fd < 0) {
>-              mutex_lock(&indio_dev->event_interface->event_list_lock);
>+              mutex_lock(&ev_int->event_list_lock);
>               clear_bit(IIO_BUSY_BIT_POS, &ev_int->flags);
>-              mutex_unlock(&indio_dev->event_interface->event_list_lock);
>+              mutex_unlock(&ev_int->event_list_lock);
>       }
>       return fd;
> }
>-- 
>1.7.8.rc3

-- 
Sent from my Android phone 
with K-9 Mail. Please excuse my brevity.
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel

Reply via email to