• R
    Bluetooth: hci_bcm: Validate IRQ before using it · 4a59f1fa
    Ronald Tschalär 提交于
    The ->close, ->suspend and ->resume hooks assume presence of a valid IRQ
    if the device is wakeup capable.  However it's entirely possible that
    wakeup was enabled by some other entity besides this driver and in this
    case the user will get a WARN splat if no valid IRQ was found.  Avoid by
    checking if the IRQ is valid, i.e. > 0.
    
    Case in point:  On recent MacBook Pros, the Bluetooth device lacks an
    IRQ (because host wakeup is handled by the SMC, independently of the
    operating system), but it does possess a _PRW method (which specifies
    the SMC's GPE as wake event).  The ACPI core therefore automatically
    marks the physical Bluetooth device wakeup capable upon binding it to
    its ACPI companion:
    
    device_set_wakeup_capable+0x96/0xb0
    acpi_bind_one+0x28a/0x310
    acpi_platform_notify+0x20/0xa0
    device_add+0x215/0x690
    serdev_device_add+0x57/0xf0
    acpi_serdev_add_device+0xc9/0x110
    acpi_ns_walk_namespace+0x131/0x280
    acpi_walk_namespace+0xf5/0x13d
    serdev_controller_add+0x6f/0x110
    serdev_tty_port_register+0x98/0xf0
    tty_port_register_device_attr_serdev+0x3a/0x70
    uart_add_one_port+0x268/0x500
    serial8250_register_8250_port+0x32e/0x490
    dw8250_probe+0x46c/0x720
    platform_drv_probe+0x35/0x90
    driver_probe_device+0x300/0x450
    bus_for_each_drv+0x67/0xb0
    __device_attach+0xde/0x160
    bus_probe_device+0x9c/0xb0
    device_add+0x448/0x690
    platform_device_add+0x10e/0x260
    mfd_add_device+0x392/0x4c0
    mfd_add_devices+0xb1/0x110
    intel_lpss_probe+0x2a9/0x610 [intel_lpss]
    intel_lpss_pci_probe+0x7a/0xa8 [intel_lpss_pci]
    Reviewed-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: NRonald Tschalär <ronald@innovation.ch>
    [lukas: fix up ->suspend and ->resume as well, add commit message]
    Signed-off-by: NLukas Wunner <lukas@wunner.de>
    Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
    4a59f1fa
hci_bcm.c 24.0 KB