usb: core: usbport: Use proper LED API to fix potential crash
commit
89778ba335e302a450932ce5b703c1ee6216e949 upstream.
Calling brightness_set manually isn't safe as some LED drivers don't
implement this callback. The best idea is to just use a proper helper
which will fallback to the brightness_set_blocking callback if needed.
This fixes:
[ 1461.761528] Unable to handle kernel NULL pointer dereference at virtual address
00000000
(...)
[ 1462.117049] Backtrace:
[ 1462.119521] [<
bf228164>] (usbport_trig_port_store [ledtrig_usbport]) from [<
c023f758>] (dev_attr_store+0x20/0x2c)
[ 1462.129826] r7:
dcabc7c0 r6:
dee0ff80 r5:
00000002 r4:
bf228164
[ 1462.135511] [<
c023f738>] (dev_attr_store) from [<
c0169310>] (sysfs_kf_write+0x48/0x4c)
[ 1462.143459] r5:
00000002 r4:
c023f738
[ 1462.147049] [<
c01692c8>] (sysfs_kf_write) from [<
c0168ab8>] (kernfs_fop_write+0xf8/0x1f8)
[ 1462.155258] r5:
00000002 r4:
df4a1000
[ 1462.158850] [<
c01689c0>] (kernfs_fop_write) from [<
c0100c78>] (__vfs_write+0x34/0x120)
[ 1462.166800] r10:
00000000 r9:
dee0e000 r8:
c000fc24 r7:
00000002 r6:
dee0ff80 r5:
c01689c0
[ 1462.174660] r4:
df727a80
[ 1462.177204] [<
c0100c44>] (__vfs_write) from [<
c0101ae4>] (vfs_write+0xac/0x170)
[ 1462.184543] r9:
dee0e000 r8:
c000fc24 r7:
dee0ff80 r6:
b6f092d0 r5:
df727a80 r4:
00000002
[ 1462.192319] [<
c0101a38>] (vfs_write) from [<
c01028dc>] (SyS_write+0x4c/0xa8)
[ 1462.199396] r9:
dee0e000 r8:
c000fc24 r7:
00000002 r6:
b6f092d0 r5:
df727a80 r4:
df727a80
[ 1462.207174] [<
c0102890>] (SyS_write) from [<
c000fa60>] (ret_fast_syscall+0x0/0x3c)
[ 1462.214774] r7:
00000004 r6:
ffffffff r5:
00000000 r4:
00000000
[ 1462.220456] Code: bad PC value
[ 1462.223560] ---[ end trace
676638a3a12c7a56 ]---
Reported-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Fixes: 0f247626cbb ("usb: core: Introduce a USB port LED trigger")
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>