mirror of
https://github.com/torvalds/linux.git
synced 2026-05-13 00:28:54 +02:00
ipmi:ssif: Clean up kthread on errors
If an error occurs after the ssif kthread is created, but before the
main IPMI code starts the ssif interface, the ssif kthread will not
be stopped.
So make sure the kthread is stopped on an error condition if it is
running.
Fixes: 259307074b ("ipmi: Add SMBus interface driver (SSIF)")
Reported-by: Li Xiao <<252270051@hdu.edu.cn>
Cc: stable@vger.kernel.org
Reviewed-by: Li Xiao <252270051@hdu.edu.cn>
Signed-off-by: Corey Minyard <corey@minyard.net>
This commit is contained in:
parent
91eb7ec726
commit
75c486cb1b
|
|
@ -1268,8 +1268,10 @@ static void shutdown_ssif(void *send_info)
|
|||
ssif_info->stopping = true;
|
||||
timer_delete_sync(&ssif_info->watch_timer);
|
||||
timer_delete_sync(&ssif_info->retry_timer);
|
||||
if (ssif_info->thread)
|
||||
if (ssif_info->thread) {
|
||||
kthread_stop(ssif_info->thread);
|
||||
ssif_info->thread = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void ssif_remove(struct i2c_client *client)
|
||||
|
|
@ -1912,6 +1914,15 @@ static int ssif_probe(struct i2c_client *client)
|
|||
|
||||
out:
|
||||
if (rv) {
|
||||
/*
|
||||
* If ipmi_register_smi() starts the interface, it will
|
||||
* call shutdown and that will free the thread and set
|
||||
* it to NULL. Otherwise it must be freed here.
|
||||
*/
|
||||
if (ssif_info->thread) {
|
||||
kthread_stop(ssif_info->thread);
|
||||
ssif_info->thread = NULL;
|
||||
}
|
||||
if (addr_info)
|
||||
addr_info->client = NULL;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user