On 01/15/2015 03:55 PM, Michal Simek wrote: > This patch should be the part of: > "tty: serial: 8250_core: use the ->line argument as a hint in > serial8250_find_match_or_unused()" > (sha1: 59b3e898ddfc81a65975043b5eb44103cc29ff6e) > > port->line can be setup by DT driver to -1 which needs to > be also checked. This is what I have in 8250_omap to make sure it does not get < 0: if (pdev->dev.of_node) { ret = of_alias_get_id(pdev->dev.of_node, "serial"); of_property_read_u32(pdev->dev.of_node, "clock-frequency", &up.port.uartclk); priv->wakeirq = irq_of_parse_and_map(pdev->dev.of_node, 1); } else { ret = pdev->id; } if (ret < 0) { dev_err(&pdev->dev, "failed to get alias/pdev id\n"); return ret; } up.port.line = ret; but I didn't think of that others might pass < 0 since it wasn't used before. Does the original patch (you noted) break anything as of now? Because then this patch should go stable. > Signed-off-by: Michal Simek <michal.simek@xxxxxxxxxx> Acked-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> > --- > > I have similar patch to 59b3e898ddfc81a65975043b5eb44103cc29ff6e > in xilinx tree for a while and port->line can be -1. > > The second part of this also should be (what other drivers do) > reading aliases via of_alias_get_id() in of_serial.c:of_platform_serial_probe() > which setup port.line. Which second part? Hmmm. You could use of_alias_get_id(port.dev->of_node, "serial") here, correct. But I think additionally, since it won't work for the non-DT devices like pure platform devices. > --- > drivers/tty/serial/8250/8250_core.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c > index 65e52c9109e2..aab765177763 100644 > --- a/drivers/tty/serial/8250/8250_core.c > +++ b/drivers/tty/serial/8250/8250_core.c > @@ -3512,7 +3512,8 @@ static struct uart_8250_port *serial8250_find_match_or_unused(struct uart_port * > > /* try line number first if still available */ > i = port->line; > - if (i < nr_uarts && serial8250_ports[i].port.type == PORT_UNKNOWN && > + if (i >= 0 && i < nr_uarts && > + serial8250_ports[i].port.type == PORT_UNKNOWN && > serial8250_ports[i].port.iobase == 0) > return &serial8250_ports[i]; > /* > -- > 1.8.2.3 Sebastian -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html