Jochen Hoenicke (Jochen.Hoenicke@Informatik.Uni-Oldenburg.DE)
Mon, 13 Jul 98 17:29 MET DST
Hello
I looked at the code and found this: port->waittail isn't updated when
the second device is added to the waitlist. This would also explain,
why it only happens with three devices.
Jochen
spin_lock_irqsave (&port->lock, flags);
if (port->cad == NULL) {
/* The port got released in the meantime. */
spin_unlock_irqrestore (&port->lock, flags);
goto try_again;
}
if (test_and_set_bit(0, &dev->waiting) == 0) {
/* First add ourselves to the end of the wait list. */
dev->waitnext = NULL;
dev->waitprev = port->waittail;
if (port->waittail)
port->waittail->waitnext = dev;
else {
port->waithead = dev->port->waittail = dev;
^^^^^^^^^^^^^^^^^^^^^^^^^
only executed when waittail was NULL.
}
}
spin_unlock_irqrestore (&port->lock, flags);
-- To unsubscribe, send mail to: linux-parport-request@torque.net --
-- with the single word "unsubscribe" in the body of the message. --
This archive was generated by hypermail 2.0b3 on Wed 30 Dec 1998 - 10:17:57 EST