diff options
Diffstat (limited to 'drivers/staging/iio')
-rw-r--r-- | drivers/staging/iio/industrialio-core.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/drivers/staging/iio/industrialio-core.c b/drivers/staging/iio/industrialio-core.c index 26564094e33..aec9311b108 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 = { | |||
242 | 242 | ||
243 | static int iio_event_getfd(struct iio_dev *indio_dev) | 243 | static int iio_event_getfd(struct iio_dev *indio_dev) |
244 | { | 244 | { |
245 | struct iio_event_interface *ev_int = indio_dev->event_interface; | ||
245 | int fd; | 246 | int fd; |
246 | 247 | ||
247 | if (indio_dev->event_interface == NULL) | 248 | if (ev_int == NULL) |
248 | return -ENODEV; | 249 | return -ENODEV; |
249 | 250 | ||
250 | mutex_lock(&indio_dev->event_interface->event_list_lock); | 251 | mutex_lock(&ev_int->event_list_lock); |
251 | if (test_and_set_bit(IIO_BUSY_BIT_POS, | 252 | if (test_and_set_bit(IIO_BUSY_BIT_POS, &ev_int->flags)) { |
252 | &indio_dev->event_interface->flags)) { | 253 | mutex_unlock(&ev_int->event_list_lock); |
253 | mutex_unlock(&indio_dev->event_interface->event_list_lock); | ||
254 | return -EBUSY; | 254 | return -EBUSY; |
255 | } | 255 | } |
256 | mutex_unlock(&indio_dev->event_interface->event_list_lock); | 256 | mutex_unlock(&ev_int->event_list_lock); |
257 | fd = anon_inode_getfd("iio:event", | 257 | fd = anon_inode_getfd("iio:event", |
258 | &iio_event_chrdev_fileops, | 258 | &iio_event_chrdev_fileops, ev_int, O_RDONLY); |
259 | indio_dev->event_interface, O_RDONLY); | ||
260 | if (fd < 0) { | 259 | if (fd < 0) { |
261 | mutex_lock(&indio_dev->event_interface->event_list_lock); | 260 | mutex_lock(&ev_int->event_list_lock); |
262 | clear_bit(IIO_BUSY_BIT_POS, &ev_int->flags); | 261 | clear_bit(IIO_BUSY_BIT_POS, &ev_int->flags); |
263 | mutex_unlock(&indio_dev->event_interface->event_list_lock); | 262 | mutex_unlock(&ev_int->event_list_lock); |
264 | } | 263 | } |
265 | return fd; | 264 | return fd; |
266 | } | 265 | } |