• Nikunj A. Dadhania's avatar
    thunderbolt: Disable ports that are not implemented · 8824d19b
    Nikunj A. Dadhania authored
    Commit 4caf2511 ("thunderbolt: Add trivial .shutdown") exposes a bug
    in the Thunderbolt driver, that frees an unallocated id, resulting in the
    following spinlock bad magic bug.
    
    [ 20.633803] BUG: spinlock bad magic on CPU#4, halt/3313
    [ 20.640030] lock: 0xffff92e6ad5c97e0, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0
    [ 20.672139] Call Trace:
    [ 20.675032] dump_stack+0x97/0xdb
    [ 20.678950] ? spin_bug+0xa5/0xb0
    [ 20.682865] do_raw_spin_lock+0x68/0x98
    [ 20.687397] _raw_spin_lock_irqsave+0x3f/0x5d
    [ 20.692535] ida_destroy+0x4f/0x124
    [ 20.696657] tb_switch_release+0x6d/0xfd
    [ 20.701295] device_release+0x2c/0x7d
    [ 20.705622] kobject_put+0x8e/0xac
    [ 20.709637] tb_stop+0x55/0x66
    [ 20.713243] tb_domain_remove+0x36/0x62
    [ 20.717774] nhi_remove+0x4d/0x58
    
    Fix the issue by disabling ports that are enabled as per the EEPROM, but
    not implemented. While at it, update the kernel doc for the disabled
    field, to reflect this.
    
    Cc: stable@vger.kernel.org
    Fixes: 4caf2511 ("thunderbolt: Add trivial .shutdown")
    Reported-by: default avatarSrikanth Nandamuri <srikanth.nandamuri@intel.com>
    Signed-off-by: default avatarNikunj A. Dadhania <nikunj.dadhania@linux.intel.com>
    Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    8824d19b
switch.c 64.3 KB