• Ard Biesheuvel's avatar
    drivers/tty: 8250: only call fintek_8250_probe when doing port I/O · e4bab31c
    Ard Biesheuvel authored
    commit 4c4fc909 upstream.
    
    Commit fa01e2ca ("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: fa01e2ca ("serial: 8250: Integrate Fintek into 8250_base")
    Suggested-by: default avatarArnd Bergmann <arnd@arndb.de>
    Reviewed-by: default avatarRicardo Ribalda <ricardo.ribalda@gmail.com>
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    e4bab31c
8250_port.c 81.4 KB