Thread (20 messages) 20 messages, 3 authors, 2008-06-24

Re: [PATCH] Fix serial_match_port() for dynamic major tty-device numbers

From: Andrew Morton <akpm@linux-foundation.org>
Date: 2008-06-24 22:23:46
Also in: lkml

On Sun, 22 Jun 2008 00:45:25 +0200 (CEST)
Guennadi Liakhovetski [off-list ref] wrote:
quoted hunk ↗ jump to hunk
As reported by Vipul Gandhi, the current serial_match_port() doesn't work 
for tty-devices using dynamic major number allocation. Fix it.

Signed-off-by: Guennadi Liakhovetski <redacted>
Tested-by: Vipul Gandhi <redacted>

---
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c
index 0f5a179..593ae85 100644
--- a/drivers/serial/serial_core.c
+++ b/drivers/serial/serial_core.c
@@ -1949,7 +1949,9 @@ struct uart_match {
 static int serial_match_port(struct device *dev, void *data)
 {
 	struct uart_match *match = data;
-	dev_t devt = MKDEV(match->driver->major, match->driver->minor) + match->port->line;
+	struct tty_driver *tty_drv = match->driver->tty_driver;
+	dev_t devt = MKDEV(tty_drv->major, tty_drv->minor_start) +
+		match->port->line;
 
 	return dev->devt == devt; /* Actually, only one tty per port */
Well that sounds bad.  We need to work out whether this fix is needed
in 2.6.25 and possibly eariler.

What are the consequences of this error?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help