YueHaibing
3b3853bf81
spi: bitbang: Fix NULL pointer dereference in spi_unregister_master
[ Upstream commit 5caaf29af5 ]
If spi_register_master fails in spi_bitbang_start
because device_add failure, We should return the
error code other than 0, otherwise calling
spi_bitbang_stop may trigger NULL pointer dereference
like this:
BUG: KASAN: null-ptr-deref in __list_del_entry_valid+0x45/0xd0
Read of size 8 at addr 0000000000000000 by task syz-executor.0/3661
CPU: 0 PID: 3661 Comm: syz-executor.0 Not tainted 5.1.0+ #28
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
Call Trace:
dump_stack+0xa9/0x10e
? __list_del_entry_valid+0x45/0xd0
? __list_del_entry_valid+0x45/0xd0
__kasan_report+0x171/0x18d
? __list_del_entry_valid+0x45/0xd0
kasan_report+0xe/0x20
__list_del_entry_valid+0x45/0xd0
spi_unregister_controller+0x99/0x1b0
spi_lm70llp_attach+0x3ae/0x4b0 [spi_lm70llp]
? 0xffffffffc1128000
? klist_next+0x131/0x1e0
? driver_detach+0x40/0x40 [parport]
port_check+0x3b/0x50 [parport]
bus_for_each_dev+0x115/0x180
? subsys_dev_iter_exit+0x20/0x20
__parport_register_driver+0x1f0/0x210 [parport]
? 0xffffffffc1150000
do_one_initcall+0xb9/0x3b5
? perf_trace_initcall_level+0x270/0x270
? kasan_unpoison_shadow+0x30/0x40
? kasan_unpoison_shadow+0x30/0x40
do_init_module+0xe0/0x330
load_module+0x38eb/0x4270
? module_frob_arch_sections+0x20/0x20
? kernel_read_file+0x188/0x3f0
? find_held_lock+0x6d/0xd0
? fput_many+0x1a/0xe0
? __do_sys_finit_module+0x162/0x190
__do_sys_finit_module+0x162/0x190
? __ia32_sys_init_module+0x40/0x40
? __mutex_unlock_slowpath+0xb4/0x3f0
? wait_for_completion+0x240/0x240
? vfs_write+0x160/0x2a0
? lockdep_hardirqs_off+0xb5/0x100
? mark_held_locks+0x1a/0x90
? do_syscall_64+0x14/0x2a0
do_syscall_64+0x72/0x2a0
entry_SYSCALL_64_after_hwframe+0x49/0xbe
Reported-by: Hulk Robot <hulkci@huawei.com>
Fixes: 702a4879ec ("spi: bitbang: Let spi_bitbang_start() take a reference to master")
Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Axel Lin <axel.lin@ingics.com>
Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-07-10 09:55:43 +02:00
..
2018-04-08 12:13:00 +02:00
2016-09-30 09:14:14 -07:00
2014-10-20 16:21:36 +02:00
2014-10-20 16:21:36 +02:00
2015-09-30 20:33:29 +01:00
2018-03-03 10:23:22 +01:00
2015-09-16 20:54:54 +01:00
2017-12-09 22:01:48 +01:00
2016-04-18 13:53:46 +01:00
2014-08-19 11:30:55 -05:00
2015-08-25 17:33:49 +01:00
2016-01-11 16:48:30 +00:00
2019-01-09 16:16:45 +01:00
2016-03-11 14:28:25 +07:00
2018-05-30 07:50:45 +02:00
2016-09-24 20:03:25 +01:00
2016-07-03 14:14:31 +02:00
2016-07-03 14:24:31 +02:00
2015-07-29 15:01:07 +01:00
2019-07-10 09:55:43 +02:00
2016-09-14 18:03:32 +01:00
2015-12-02 19:38:16 +00:00
2016-04-18 10:58:49 +01:00
2016-07-24 21:54:29 +01:00
2016-08-24 12:37:43 +01:00
2016-07-24 21:54:29 +01:00
2016-08-19 16:24:39 +01:00
2016-07-07 11:44:43 +02:00
2015-10-12 17:02:08 +01:00
2018-09-09 20:01:19 +02:00
2016-04-26 11:56:09 +01:00
2016-02-05 17:41:49 +00:00
2018-03-24 11:00:10 +01:00
2016-05-11 18:26:19 +01:00
2017-08-06 18:59:45 -07:00
2016-09-06 11:53:50 +01:00
2014-10-20 16:21:36 +02:00
2016-05-24 16:54:50 +01:00
2015-02-08 11:16:46 +08:00
2015-12-22 17:12:56 -06:00
2013-04-07 10:07:54 +01:00
2018-09-09 20:01:19 +02:00
2016-10-26 11:14:52 +01:00
2015-08-28 18:15:18 +01:00
2016-09-14 18:24:47 +01:00
2015-08-30 12:14:36 +01:00
2013-04-07 10:07:56 +01:00
2015-02-08 11:16:46 +08:00
2016-07-27 19:00:16 +01:00
2018-02-03 17:05:43 +01:00
2016-09-24 20:03:25 +01:00
2016-08-09 10:40:05 +01:00
2015-12-07 20:09:09 +00:00
2016-09-01 20:54:54 +01:00
2016-02-26 11:06:38 +09:00
2016-09-12 20:11:39 +01:00
2016-07-03 14:23:25 +02:00
2014-10-20 16:21:36 +02:00
2015-09-17 12:33:31 +01:00
2016-07-27 19:00:16 +01:00
2015-02-05 18:04:57 +00:00
2014-10-20 16:21:36 +02:00
2015-09-16 19:16:01 +01:00
2018-03-22 09:17:42 +01:00
2015-09-17 12:34:20 +01:00
2015-09-17 12:33:58 +01:00
2017-01-15 13:42:57 +01:00
2016-08-08 11:56:40 +01:00
2016-07-24 21:49:16 +01:00
2016-02-17 12:08:55 +00:00
2015-09-17 12:13:40 +01:00
2016-09-12 20:01:27 +01:00
2016-08-24 12:20:03 +01:00
2019-06-22 08:17:17 +02:00
2018-05-22 16:57:56 +02:00
2016-09-30 09:14:14 -07:00
2015-05-01 17:35:54 +01:00
2016-07-24 22:08:25 +01:00
2019-05-31 06:48:31 -07:00
2011-06-06 01:16:30 -06:00
2011-06-06 01:16:30 -06:00
2015-09-17 12:13:40 +01:00
2017-03-12 06:41:41 +01:00
2016-09-29 11:01:36 -07:00
2014-12-22 15:32:42 +00:00
2018-10-03 17:01:49 -07:00
2014-10-20 16:21:36 +02:00
2016-07-11 19:32:38 +01:00
2015-05-26 11:39:16 +01:00
2016-09-14 16:05:35 +01:00
2018-02-25 11:05:49 +01:00
2018-03-22 09:17:56 +01:00
2014-10-20 16:21:36 +02:00
2018-10-03 17:01:49 -07:00
2019-05-31 06:48:29 -07:00
2015-12-13 20:10:15 +00:00
2019-03-23 13:19:46 +01:00
2015-10-28 10:30:17 +09:00
2019-05-31 06:48:31 -07:00
2016-08-18 19:10:39 +01:00
2015-07-31 18:14:57 +01:00
2017-12-29 17:42:59 +01:00
2016-08-09 15:25:43 +01:00
2015-09-22 09:30:10 -07:00
2016-05-04 14:21:03 +01:00
2019-05-31 06:48:31 -07:00
2016-07-04 16:28:52 +02:00