mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-10-01 01:35:54 -04:00
52 lines
1.5 KiB
Diff
52 lines
1.5 KiB
Diff
From bbf26183b7a6236ba602f4d6a2f7cade35bba043 Mon Sep 17 00:00:00 2001
|
|
From: Andrey Konovalov <andreyknvl@google.com>
|
|
Date: Thu, 14 Sep 2017 14:30:55 +0200
|
|
Subject: [PATCH] uwb: properly check kthread_run return value
|
|
|
|
uwbd_start() calls kthread_run() and checks that the return value is
|
|
not NULL. But the return value is not NULL in case kthread_run() fails,
|
|
it takes the form of ERR_PTR(-EINTR).
|
|
|
|
Use IS_ERR() instead.
|
|
|
|
Also add a check to uwbd_stop().
|
|
|
|
Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
|
|
Cc: stable <stable@vger.kernel.org>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
---
|
|
drivers/uwb/uwbd.c | 12 ++++++++----
|
|
1 file changed, 8 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/drivers/uwb/uwbd.c b/drivers/uwb/uwbd.c
|
|
index 01c20a260a8b3..39dd4ef53c779 100644
|
|
--- a/drivers/uwb/uwbd.c
|
|
+++ b/drivers/uwb/uwbd.c
|
|
@@ -302,18 +302,22 @@ static int uwbd(void *param)
|
|
/** Start the UWB daemon */
|
|
void uwbd_start(struct uwb_rc *rc)
|
|
{
|
|
- rc->uwbd.task = kthread_run(uwbd, rc, "uwbd");
|
|
- if (rc->uwbd.task == NULL)
|
|
+ struct task_struct *task = kthread_run(uwbd, rc, "uwbd");
|
|
+ if (IS_ERR(task)) {
|
|
+ rc->uwbd.task = NULL;
|
|
printk(KERN_ERR "UWB: Cannot start management daemon; "
|
|
"UWB won't work\n");
|
|
- else
|
|
+ } else {
|
|
+ rc->uwbd.task = task;
|
|
rc->uwbd.pid = rc->uwbd.task->pid;
|
|
+ }
|
|
}
|
|
|
|
/* Stop the UWB daemon and free any unprocessed events */
|
|
void uwbd_stop(struct uwb_rc *rc)
|
|
{
|
|
- kthread_stop(rc->uwbd.task);
|
|
+ if (rc->uwbd.task)
|
|
+ kthread_stop(rc->uwbd.task);
|
|
uwbd_flush(rc);
|
|
}
|
|
|