2020-07-30 08:20:57

by Colin King

[permalink] [raw]
Subject: [PATCH][next] habanalabs: fix incorrect check on failed workqueue create

From: Colin Ian King <[email protected]>

The null check on a failed workqueue create is currently null checking
hdev->cq_wq rather than the pointer hdev->cq_wq[i] and so the test
will never be true on a failed workqueue create. Fix this by checking
hdev->cq_wq[i].

Addresses-Coverity: ("Dereference before null check")
Fixes: 5574cb2194b1 ("habanalabs: Assign each CQ with its own work queue")
Signed-off-by: Colin Ian King <[email protected]>
---
drivers/misc/habanalabs/common/device.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/misc/habanalabs/common/device.c b/drivers/misc/habanalabs/common/device.c
index be16b75bdfdb..35214a186913 100644
--- a/drivers/misc/habanalabs/common/device.c
+++ b/drivers/misc/habanalabs/common/device.c
@@ -288,7 +288,7 @@ static int device_early_init(struct hl_device *hdev)
for (i = 0 ; i < hdev->asic_prop.completion_queues_count ; i++) {
snprintf(workq_name, 32, "hl-free-jobs-%u", i);
hdev->cq_wq[i] = create_singlethread_workqueue(workq_name);
- if (hdev->cq_wq == NULL) {
+ if (hdev->cq_wq[i] == NULL) {
dev_err(hdev->dev, "Failed to allocate CQ workqueue\n");
rc = -ENOMEM;
goto free_cq_wq;
--
2.27.0


2020-07-30 10:53:40

by Oded Gabbay

[permalink] [raw]
Subject: Re: [PATCH][next] habanalabs: fix incorrect check on failed workqueue create

On Thu, Jul 30, 2020 at 11:20 AM Colin King <[email protected]> wrote:
>
> From: Colin Ian King <[email protected]>
>
> The null check on a failed workqueue create is currently null checking
> hdev->cq_wq rather than the pointer hdev->cq_wq[i] and so the test
> will never be true on a failed workqueue create. Fix this by checking
> hdev->cq_wq[i].
>
> Addresses-Coverity: ("Dereference before null check")
> Fixes: 5574cb2194b1 ("habanalabs: Assign each CQ with its own work queue")
> Signed-off-by: Colin Ian King <[email protected]>
> ---
> drivers/misc/habanalabs/common/device.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/misc/habanalabs/common/device.c b/drivers/misc/habanalabs/common/device.c
> index be16b75bdfdb..35214a186913 100644
> --- a/drivers/misc/habanalabs/common/device.c
> +++ b/drivers/misc/habanalabs/common/device.c
> @@ -288,7 +288,7 @@ static int device_early_init(struct hl_device *hdev)
> for (i = 0 ; i < hdev->asic_prop.completion_queues_count ; i++) {
> snprintf(workq_name, 32, "hl-free-jobs-%u", i);
> hdev->cq_wq[i] = create_singlethread_workqueue(workq_name);
> - if (hdev->cq_wq == NULL) {
> + if (hdev->cq_wq[i] == NULL) {
> dev_err(hdev->dev, "Failed to allocate CQ workqueue\n");
> rc = -ENOMEM;
> goto free_cq_wq;
> --
> 2.27.0
>

This patch is:
Reviewed-by: Oded Gabbay <[email protected]>

Greg, can you please apply it directly to the char-misc-next branch ?
I don't want to send a pull request for 1 patch.

Thanks,
Oded

2020-07-31 06:24:16

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH][next] habanalabs: fix incorrect check on failed workqueue create

On Thu, Jul 30, 2020 at 01:51:48PM +0300, Oded Gabbay wrote:
> On Thu, Jul 30, 2020 at 11:20 AM Colin King <[email protected]> wrote:
> >
> > From: Colin Ian King <[email protected]>
> >
> > The null check on a failed workqueue create is currently null checking
> > hdev->cq_wq rather than the pointer hdev->cq_wq[i] and so the test
> > will never be true on a failed workqueue create. Fix this by checking
> > hdev->cq_wq[i].
> >
> > Addresses-Coverity: ("Dereference before null check")
> > Fixes: 5574cb2194b1 ("habanalabs: Assign each CQ with its own work queue")
> > Signed-off-by: Colin Ian King <[email protected]>
> > ---
> > drivers/misc/habanalabs/common/device.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/misc/habanalabs/common/device.c b/drivers/misc/habanalabs/common/device.c
> > index be16b75bdfdb..35214a186913 100644
> > --- a/drivers/misc/habanalabs/common/device.c
> > +++ b/drivers/misc/habanalabs/common/device.c
> > @@ -288,7 +288,7 @@ static int device_early_init(struct hl_device *hdev)
> > for (i = 0 ; i < hdev->asic_prop.completion_queues_count ; i++) {
> > snprintf(workq_name, 32, "hl-free-jobs-%u", i);
> > hdev->cq_wq[i] = create_singlethread_workqueue(workq_name);
> > - if (hdev->cq_wq == NULL) {
> > + if (hdev->cq_wq[i] == NULL) {
> > dev_err(hdev->dev, "Failed to allocate CQ workqueue\n");
> > rc = -ENOMEM;
> > goto free_cq_wq;
> > --
> > 2.27.0
> >
>
> This patch is:
> Reviewed-by: Oded Gabbay <[email protected]>
>
> Greg, can you please apply it directly to the char-misc-next branch ?
> I don't want to send a pull request for 1 patch.

Already merged :)

2020-08-09 11:04:59

by Oded Gabbay

[permalink] [raw]
Subject: Re: [PATCH][next] habanalabs: fix incorrect check on failed workqueue create

On Fri, Jul 31, 2020 at 9:21 AM Greg Kroah-Hartman
<[email protected]> wrote:
>
> On Thu, Jul 30, 2020 at 01:51:48PM +0300, Oded Gabbay wrote:
> > On Thu, Jul 30, 2020 at 11:20 AM Colin King <[email protected]> wrote:
> > >
> > > From: Colin Ian King <[email protected]>
> > >
> > > The null check on a failed workqueue create is currently null checking
> > > hdev->cq_wq rather than the pointer hdev->cq_wq[i] and so the test
> > > will never be true on a failed workqueue create. Fix this by checking
> > > hdev->cq_wq[i].
> > >
> > > Addresses-Coverity: ("Dereference before null check")
> > > Fixes: 5574cb2194b1 ("habanalabs: Assign each CQ with its own work queue")
> > > Signed-off-by: Colin Ian King <[email protected]>
> > > ---
> > > drivers/misc/habanalabs/common/device.c | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/misc/habanalabs/common/device.c b/drivers/misc/habanalabs/common/device.c
> > > index be16b75bdfdb..35214a186913 100644
> > > --- a/drivers/misc/habanalabs/common/device.c
> > > +++ b/drivers/misc/habanalabs/common/device.c
> > > @@ -288,7 +288,7 @@ static int device_early_init(struct hl_device *hdev)
> > > for (i = 0 ; i < hdev->asic_prop.completion_queues_count ; i++) {
> > > snprintf(workq_name, 32, "hl-free-jobs-%u", i);
> > > hdev->cq_wq[i] = create_singlethread_workqueue(workq_name);
> > > - if (hdev->cq_wq == NULL) {
> > > + if (hdev->cq_wq[i] == NULL) {
> > > dev_err(hdev->dev, "Failed to allocate CQ workqueue\n");
> > > rc = -ENOMEM;
> > > goto free_cq_wq;
> > > --
> > > 2.27.0
> > >
> >
> > This patch is:
> > Reviewed-by: Oded Gabbay <[email protected]>
> >
> > Greg, can you please apply it directly to the char-misc-next branch ?
> > I don't want to send a pull request for 1 patch.
>
> Already merged :)

Hi Greg,
I can't find this patch in char-misc-next.
Can you please check if you applied it ?
If not, I'll apply it to my fixes tree and send it to you for -rc2

Thanks,
Oded

2020-08-09 12:03:30

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH][next] habanalabs: fix incorrect check on failed workqueue create

On Sun, Aug 09, 2020 at 02:02:18PM +0300, Oded Gabbay wrote:
> On Fri, Jul 31, 2020 at 9:21 AM Greg Kroah-Hartman
> <[email protected]> wrote:
> >
> > On Thu, Jul 30, 2020 at 01:51:48PM +0300, Oded Gabbay wrote:
> > > On Thu, Jul 30, 2020 at 11:20 AM Colin King <[email protected]> wrote:
> > > >
> > > > From: Colin Ian King <[email protected]>
> > > >
> > > > The null check on a failed workqueue create is currently null checking
> > > > hdev->cq_wq rather than the pointer hdev->cq_wq[i] and so the test
> > > > will never be true on a failed workqueue create. Fix this by checking
> > > > hdev->cq_wq[i].
> > > >
> > > > Addresses-Coverity: ("Dereference before null check")
> > > > Fixes: 5574cb2194b1 ("habanalabs: Assign each CQ with its own work queue")
> > > > Signed-off-by: Colin Ian King <[email protected]>
> > > > ---
> > > > drivers/misc/habanalabs/common/device.c | 2 +-
> > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/drivers/misc/habanalabs/common/device.c b/drivers/misc/habanalabs/common/device.c
> > > > index be16b75bdfdb..35214a186913 100644
> > > > --- a/drivers/misc/habanalabs/common/device.c
> > > > +++ b/drivers/misc/habanalabs/common/device.c
> > > > @@ -288,7 +288,7 @@ static int device_early_init(struct hl_device *hdev)
> > > > for (i = 0 ; i < hdev->asic_prop.completion_queues_count ; i++) {
> > > > snprintf(workq_name, 32, "hl-free-jobs-%u", i);
> > > > hdev->cq_wq[i] = create_singlethread_workqueue(workq_name);
> > > > - if (hdev->cq_wq == NULL) {
> > > > + if (hdev->cq_wq[i] == NULL) {
> > > > dev_err(hdev->dev, "Failed to allocate CQ workqueue\n");
> > > > rc = -ENOMEM;
> > > > goto free_cq_wq;
> > > > --
> > > > 2.27.0
> > > >
> > >
> > > This patch is:
> > > Reviewed-by: Oded Gabbay <[email protected]>
> > >
> > > Greg, can you please apply it directly to the char-misc-next branch ?
> > > I don't want to send a pull request for 1 patch.
> >
> > Already merged :)
>
> Hi Greg,
> I can't find this patch in char-misc-next.
> Can you please check if you applied it ?

Oops, you are right, I did not take it, my fault, sorry.

> If not, I'll apply it to my fixes tree and send it to you for -rc2

That would be great, thanks for following up on this.

greg k-h

2020-08-09 12:05:26

by Oded Gabbay

[permalink] [raw]
Subject: Re: [PATCH][next] habanalabs: fix incorrect check on failed workqueue create

On Sun, Aug 9, 2020 at 3:02 PM Greg Kroah-Hartman
<[email protected]> wrote:
>
> On Sun, Aug 09, 2020 at 02:02:18PM +0300, Oded Gabbay wrote:
> > On Fri, Jul 31, 2020 at 9:21 AM Greg Kroah-Hartman
> > <[email protected]> wrote:
> > >
> > > On Thu, Jul 30, 2020 at 01:51:48PM +0300, Oded Gabbay wrote:
> > > > On Thu, Jul 30, 2020 at 11:20 AM Colin King <[email protected]> wrote:
> > > > >
> > > > > From: Colin Ian King <[email protected]>
> > > > >
> > > > > The null check on a failed workqueue create is currently null checking
> > > > > hdev->cq_wq rather than the pointer hdev->cq_wq[i] and so the test
> > > > > will never be true on a failed workqueue create. Fix this by checking
> > > > > hdev->cq_wq[i].
> > > > >
> > > > > Addresses-Coverity: ("Dereference before null check")
> > > > > Fixes: 5574cb2194b1 ("habanalabs: Assign each CQ with its own work queue")
> > > > > Signed-off-by: Colin Ian King <[email protected]>
> > > > > ---
> > > > > drivers/misc/habanalabs/common/device.c | 2 +-
> > > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/drivers/misc/habanalabs/common/device.c b/drivers/misc/habanalabs/common/device.c
> > > > > index be16b75bdfdb..35214a186913 100644
> > > > > --- a/drivers/misc/habanalabs/common/device.c
> > > > > +++ b/drivers/misc/habanalabs/common/device.c
> > > > > @@ -288,7 +288,7 @@ static int device_early_init(struct hl_device *hdev)
> > > > > for (i = 0 ; i < hdev->asic_prop.completion_queues_count ; i++) {
> > > > > snprintf(workq_name, 32, "hl-free-jobs-%u", i);
> > > > > hdev->cq_wq[i] = create_singlethread_workqueue(workq_name);
> > > > > - if (hdev->cq_wq == NULL) {
> > > > > + if (hdev->cq_wq[i] == NULL) {
> > > > > dev_err(hdev->dev, "Failed to allocate CQ workqueue\n");
> > > > > rc = -ENOMEM;
> > > > > goto free_cq_wq;
> > > > > --
> > > > > 2.27.0
> > > > >
> > > >
> > > > This patch is:
> > > > Reviewed-by: Oded Gabbay <[email protected]>
> > > >
> > > > Greg, can you please apply it directly to the char-misc-next branch ?
> > > > I don't want to send a pull request for 1 patch.
> > >
> > > Already merged :)
> >
> > Hi Greg,
> > I can't find this patch in char-misc-next.
> > Can you please check if you applied it ?
>
> Oops, you are right, I did not take it, my fault, sorry.
>
> > If not, I'll apply it to my fixes tree and send it to you for -rc2
>
> That would be great, thanks for following up on this.
>
> greg k-h

Sure, np.
Thanks,
Oded