Skip to contentSkip to conversation

usb: usbtmc: Add ioctl USBTMC488_IOCTL_WAIT_SRQ

PATCH New Oliver Neukum 1 participant 1 message May 25, 2018 USB

lore
Share & tools
lore
#0 lore raw

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
Oliver

Multiple 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