On 21 April 2017 at 19:18, Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> 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@xxxxxxxx> > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> > --- > > 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@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html