Message ID | 20170421181827.7612-1-ard.biesheuvel@linaro.org |
---|---|
State | Superseded |
Headers | show |
On 21 April 2017 at 19:18, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: > Commit fa01e2ca9f53 ("serial: 8250: Integrate Fintek into 8250_base") > modified the probing logic for PNP0501 devices, to remove a collision > between the generic 16550A driver and the Fintek driver, which reused > the same ACPI _HID. > > The Fintek device probe is now incorporated into the common 8250 probe > path, and gets called for all discovered 16550A compatible devices, > including ones that are MMIO mapped rather than IO mapped. However, > the Fintek driver assumes the port base is a I/O address, and proceeds > to probe some arbitrary offsets above it. > > This is generally a wrong thing to do, but on ARM systems (having no > native port I/O), this may result in faulting accesses of completely > unrelated MMIO regions in the PCI I/O space. Given that this is at > serial probe time, this results in hard to diagnose crashes at boot. > > So let's restrict the Fintek probe to devices that we know are using > port I/O in the first place. > > Fixes: fa01e2ca9f53 ("serial: 8250: Integrate Fintek into 8250_base") > Suggested-by: Arnd Bergmann <arnd@arndb.de> > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > --- > > May we have a cc stable for this one please? Thanks. > > drivers/tty/serial/8250/8250_port.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c > index 6119516ef5fc..4c26d15ad7d9 100644 > --- a/drivers/tty/serial/8250/8250_port.c > +++ b/drivers/tty/serial/8250/8250_port.c > @@ -1337,7 +1337,7 @@ static void autoconfig(struct uart_8250_port *up) > /* > * Check if the device is a Fintek F81216A > */ > - if (port->type == PORT_16550A) > + if (port->type == PORT_16550A && port->iotype == UPIO_PORT) > fintek_8250_probe(up); > > if (up->capabilities != old_capabilities) { > -- > 2.9.3 > Ping? -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi
Looks good to me
Reviewed-by: Ricardo Ribalda <ricardo.ribalda@gmail.com>
Thanks!
--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c index 6119516ef5fc..4c26d15ad7d9 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -1337,7 +1337,7 @@ static void autoconfig(struct uart_8250_port *up) /* * Check if the device is a Fintek F81216A */ - if (port->type == PORT_16550A) + if (port->type == PORT_16550A && port->iotype == UPIO_PORT) fintek_8250_probe(up); if (up->capabilities != old_capabilities) {
Commit fa01e2ca9f53 ("serial: 8250: Integrate Fintek into 8250_base") modified the probing logic for PNP0501 devices, to remove a collision between the generic 16550A driver and the Fintek driver, which reused the same ACPI _HID. The Fintek device probe is now incorporated into the common 8250 probe path, and gets called for all discovered 16550A compatible devices, including ones that are MMIO mapped rather than IO mapped. However, the Fintek driver assumes the port base is a I/O address, and proceeds to probe some arbitrary offsets above it. This is generally a wrong thing to do, but on ARM systems (having no native port I/O), this may result in faulting accesses of completely unrelated MMIO regions in the PCI I/O space. Given that this is at serial probe time, this results in hard to diagnose crashes at boot. So let's restrict the Fintek probe to devices that we know are using port I/O in the first place. Fixes: fa01e2ca9f53 ("serial: 8250: Integrate Fintek into 8250_base") Suggested-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> --- May we have a cc stable for this one please? Thanks. drivers/tty/serial/8250/8250_port.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.9.3 -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html