lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <CAAeHK+xN+xFxjR+c6RRAau1h2jpouCsu6nbr4S0Rf_sYDhJg=g@mail.gmail.com> Date: Thu, 14 Sep 2017 14:31:25 +0200 From: Andrey Konovalov <andreyknvl@...gle.com> To: Dmitry Vyukov <dvyukov@...gle.com> Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>, Johan Hovold <johan@...nel.org>, "Gustavo A . R . Silva" <garsilva@...eddedor.com>, Arvind Yadav <arvind.yadav.cs@...il.com>, USB list <linux-usb@...r.kernel.org>, LKML <linux-kernel@...r.kernel.org>, Kostya Serebryany <kcc@...gle.com> Subject: Re: [PATCH v2] uwb: properly check kthread_run return value On Wed, Sep 13, 2017 at 6:53 PM, Dmitry Vyukov <dvyukov@...gle.com> wrote: > On Wed, Sep 13, 2017 at 6:06 PM, Andrey Konovalov <andreyknvl@...gle.com> wrote: >> 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@...gle.com> >> --- >> drivers/uwb/uwbd.c | 5 +++-- >> 1 file changed, 3 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/uwb/uwbd.c b/drivers/uwb/uwbd.c >> index 01c20a260a8b..2a3cc48d837c 100644 >> --- a/drivers/uwb/uwbd.c >> +++ b/drivers/uwb/uwbd.c >> @@ -303,7 +303,7 @@ static int uwbd(void *param) >> void uwbd_start(struct uwb_rc *rc) >> { >> rc->uwbd.task = kthread_run(uwbd, rc, "uwbd"); >> - if (rc->uwbd.task == NULL) >> + if (IS_ERR(rc->uwbd.task)) >> printk(KERN_ERR "UWB: Cannot start management daemon; " >> "UWB won't work\n"); >> else >> @@ -313,7 +313,8 @@ void uwbd_start(struct uwb_rc *rc) >> /* Stop the UWB daemon and free any unprocessed events */ >> void uwbd_stop(struct uwb_rc *rc) >> { >> - kthread_stop(rc->uwbd.task); >> + if (!IS_ERR(rc->uwbd.task)) >> + kthread_stop(rc->uwbd.task); > > It looks weird to assign an error to rc->uwbd.task and leave it there. > I think it's better to not assign errors to rc->uwbd.task, i.e. it's > either a valid task or NULL. Sent v3. > >> uwbd_flush(rc); >> } >> >> -- >> 2.14.1.581.gf28d330327-goog >>
Powered by blists - more mailing lists