Re: patch to drivers/char/serial.c to fix kernel lock-up

Theodore Y. Ts'o (
Fri, 4 Dec 1998 16:02:21 -0500

Date: Fri, 4 Dec 1998 01:25:09 -0800 (PST)
From: Truxton Fulton <>

Please take this patch to drivers/char/serial.c. It fixes a problem I was
having where the kernel would lock up solidly (infinite loop in serial.c).
The problem is that startup() was being called multiple times, creating
a cycle in the IRQ chain. This was happening under vanilla 2.1.130 after
booting directly to single user mode. The lock-up would occur when I ran
'kermit -l /dev/ttyS1 -b 38400 -c' as any other user than root. For root,
startup() would only be called once.

Umm... can you give me more information about exactly how to reproduce
this? I've tried, and I can't reproduce it. Note that startup() checks
the flag ASYNC_INITIALIZED, and will exit if the port is already
initialized. Therefore, running startup() multiple times doesn't cause
a problem. It's also the case that a single open will not call
startup() multiple times, so I'm very curious how you can to the
conclusion that was actually what was going on.

Given that no one else has reported anything vaguely like this, and the
serial driver hasn't change significantly recently, I must conclude that
you must be doing something different, or your system must be different
in some way from most other people's.

Are you using a SMP machine? Were any other serial ports open when you
ran kermit? How are your irq's and ports configured? Etc.

Before I apply your patch, I want to understand why it's necessary,
because as near as I can tell, it shouldn't be needed at all.

- Ted

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
Please read the FAQ at