Re: [PATCH] USB: add USB serial ssu100 driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Oliver Neukum writes:
> 
> Am Donnerstag, 29. Juli 2010, 17:05:41 schrieb Bill Pemberton:
> > +static int ssu100_ioctl(struct tty_struct *tty, struct file *file,
> > +                   unsigned int cmd, unsigned long arg)
> > +{
> > +       struct usb_serial_port *port = tty->driver_data;
> > +       struct ssu100_port_private *priv = usb_get_serial_port_data(port);
> > +
> > +       dbg("%s cmd 0x%04x", __func__, cmd);
> > +
> > +       switch (cmd) {
> > +       case TIOCGSERIAL:
> > +               return get_serial_info(port,
> > +                                      (struct serial_struct __user *) arg);
> > +
> > +       case TIOCMIWAIT:
> > +               while (priv != NULL) {
> > +                       u8 prevMSR = priv->shadowMSR & SERIAL_MSR_MASK;
> > +                       interruptible_sleep_on(&priv->delta_msr_wait);
> 
> This won't fly
> 
> 1. you have no guarantee that the packet that would wake you up hasn't arrived
> by the time you go to sleep. Use a proper wait_event_ macro
> 2. you need to handle disconnection
> 

Ok, I'll work on it.

The TIOCMIWAIT logic is pretty much the same as most of the other
usb-serial devices and do not use wait_event_.  Is there something in
my implementation that I've missed or do all of these drivers need to
be fixed in the same way?

-- 
Bill

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux