usb: usbtmc: Add ioctl USBTMC488_IOCTL_WAIT_SRQ
PATCH 7/12 usb: usbtmc: Add ioctl USBTMC488_IOCTL_WAIT_SRQ
Am Donnerstag, den 24.05.2018, 12:59 +0000 schrieb guido@kiener- muenchen.de:
Quoted 28 lines
Zitat von Oliver Neukum <[email protected]>:
Quoted 26 lines
Am Donnerstag, den 17.05.2018, 19:03 +0200 schrieb Guido Kiener:
Quoted 10 lines
(quoted diff) +10
-0+static int usbtmc488_ioctl_wait_srq(struct usbtmc_file_data *file_data, + unsigned int __user *arg) +{ + struct usbtmc_device_data *data = file_data->data; + struct device *dev = &data->intf->dev; + int rv; + unsigned int timeout; + unsigned long expire; + + if (!data->iin_ep_present) {Review
Quoted 10 lines
(quoted diff) +10
-0+ dev_dbg(dev, "no interrupt endpoint present\n"); + return -EFAULT; + } + + if (get_user(timeout, arg)) + return -EFAULT; + + expire = msecs_to_jiffies(timeout); + + mutex_unlock(&data->io_mutex);There is such a thing as threads sharing file descriptors. That leads to the question what happens to the mutex if this
ioctl()is called multiple times.
Quoted 7 lines
Quoted 2 lines
Regards
OliverMultiple threads can wait with the same or different file descriptors. When an SRQ interrupt occurs, all threads and file descriptors are informed concurrently with
wake_up_interruptible_all(&data->waitq); The "_all" is already fixed in 02/12.
No, the problem is that you will underflow io->mutex
Regards
Oliver
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html