Am Mittwoch 18 Juli 2007 schrieb eczema: > + if ((set == 0) && priv->TIOSTATUS == TIOCM_RTS) { > + dbg("%s TIOCMSET RESET called !!!", __FUNCTION__); > + priv->TIOSTATUS = 0; > + if (iuu_reset(port, 0x0C)) > + return -EIO; > + current->state = TASK_INTERRUPTIBLE; > + schedule_timeout(1 + 500 * HZ / 1000);
If you are really interrupted, you'll break the time requirements. +static int iuu_tiocmget(struct usb_serial_port *port, struct file *file) +{ + u8 *st; + st = kmalloc(sizeof(u8), GFP_KERNEL); + iuu_status(port, st); kmalloc() can fail. + if (st[0] & IUU_FULLCARD_IN) { + dbg("%s card present ! value returned %i ", __FUNCTION__, + TIOCM_CD); + kfree(st); + return 0; + } else { + kfree(st); + return TIOCM_CD; + } You might unify the cleanup +iuu_ioctl(struct usb_serial_port *port, struct file *file, unsigned int cmd, + unsigned long arg) +{ + + int mask; + + dbg("%s (%d) cmd = 0x%04x", __FUNCTION__, port->number, cmd); + + get_user(mask, (unsigned long *)arg); This can fail + case TCFLSH: + return (-1); Meaning what? + if (priv->write_busy) + return -1; What for if you don't ever read write_busy? + tty->low_latency = 1; Should be done in probe() + dbg("%s - port %d", __FUNCTION__, port->number); + usb_clear_halt(serial->dev, port->write_urb->pipe); + usb_clear_halt(serial->dev, port->read_urb->pipe); Is this really needed? ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel