diff mbox series

hwspinlock: Fix incorrect return pointers

Message ID 782fc498b4f4c6e8130d64face93023eb3dc9866.1530152980.git.baolin.wang@linaro.org
State Accepted
Commit ddb34f480d1b8051bc18e6ff22e93a6c9a33f94f
Headers show
Series hwspinlock: Fix incorrect return pointers | expand

Commit Message

(Exiting) Baolin Wang June 28, 2018, 2:32 a.m. UTC
The commit 4f1acd758b08 ("hwspinlock: Add devm_xxx() APIs to request/free
hwlock") introduces one bug, that will return one error pointer if failed
to request one hwlock, but we expect NULL pointer on error for consumers.
This patch will fix this issue.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Baolin Wang <baolin.wang@linaro.org>

---
 drivers/hwspinlock/hwspinlock_core.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

-- 
1.7.9.5

Comments

(Exiting) Baolin Wang July 30, 2018, 11:34 a.m. UTC | #1
Hi Bjorn,

On 28 June 2018 at 10:32, Baolin Wang <baolin.wang@linaro.org> wrote:
> The commit 4f1acd758b08 ("hwspinlock: Add devm_xxx() APIs to request/free

> hwlock") introduces one bug, that will return one error pointer if failed

> to request one hwlock, but we expect NULL pointer on error for consumers.

> This patch will fix this issue.

>

> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

> Signed-off-by: Baolin Wang <baolin.wang@linaro.org>


Could you pick up this patch which fixes the incorrect return value
issue? Thanks.

> ---

>  drivers/hwspinlock/hwspinlock_core.c |    8 ++++----

>  1 file changed, 4 insertions(+), 4 deletions(-)

>

> diff --git a/drivers/hwspinlock/hwspinlock_core.c b/drivers/hwspinlock/hwspinlock_core.c

> index e16d648..2bad40d 100644

> --- a/drivers/hwspinlock/hwspinlock_core.c

> +++ b/drivers/hwspinlock/hwspinlock_core.c

> @@ -877,10 +877,10 @@ struct hwspinlock *devm_hwspin_lock_request(struct device *dev)

>

>         ptr = devres_alloc(devm_hwspin_lock_release, sizeof(*ptr), GFP_KERNEL);

>         if (!ptr)

> -               return ERR_PTR(-ENOMEM);

> +               return NULL;

>

>         hwlock = hwspin_lock_request();

> -       if (!IS_ERR(hwlock)) {

> +       if (hwlock) {

>                 *ptr = hwlock;

>                 devres_add(dev, ptr);

>         } else {

> @@ -913,10 +913,10 @@ struct hwspinlock *devm_hwspin_lock_request_specific(struct device *dev,

>

>         ptr = devres_alloc(devm_hwspin_lock_release, sizeof(*ptr), GFP_KERNEL);

>         if (!ptr)

> -               return ERR_PTR(-ENOMEM);

> +               return NULL;

>

>         hwlock = hwspin_lock_request_specific(id);

> -       if (!IS_ERR(hwlock)) {

> +       if (hwlock) {

>                 *ptr = hwlock;

>                 devres_add(dev, ptr);

>         } else {

> --

> 1.7.9.5

>




-- 
Baolin Wang
Best Regards
Bjorn Andersson July 31, 2018, 4:02 a.m. UTC | #2
On Mon 30 Jul 04:34 PDT 2018, Baolin Wang wrote:

> Hi Bjorn,

> 

> On 28 June 2018 at 10:32, Baolin Wang <baolin.wang@linaro.org> wrote:

> > The commit 4f1acd758b08 ("hwspinlock: Add devm_xxx() APIs to request/free

> > hwlock") introduces one bug, that will return one error pointer if failed

> > to request one hwlock, but we expect NULL pointer on error for consumers.

> > This patch will fix this issue.

> >

> > Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

> > Signed-off-by: Baolin Wang <baolin.wang@linaro.org>

> 

> Could you pick up this patch which fixes the incorrect return value

> issue? Thanks.

> 


I thought I had picked this already, it's applied now. Sorry about the
delay.

Regards,
Bjorn

> > ---

> >  drivers/hwspinlock/hwspinlock_core.c |    8 ++++----

> >  1 file changed, 4 insertions(+), 4 deletions(-)

> >

> > diff --git a/drivers/hwspinlock/hwspinlock_core.c b/drivers/hwspinlock/hwspinlock_core.c

> > index e16d648..2bad40d 100644

> > --- a/drivers/hwspinlock/hwspinlock_core.c

> > +++ b/drivers/hwspinlock/hwspinlock_core.c

> > @@ -877,10 +877,10 @@ struct hwspinlock *devm_hwspin_lock_request(struct device *dev)

> >

> >         ptr = devres_alloc(devm_hwspin_lock_release, sizeof(*ptr), GFP_KERNEL);

> >         if (!ptr)

> > -               return ERR_PTR(-ENOMEM);

> > +               return NULL;

> >

> >         hwlock = hwspin_lock_request();

> > -       if (!IS_ERR(hwlock)) {

> > +       if (hwlock) {

> >                 *ptr = hwlock;

> >                 devres_add(dev, ptr);

> >         } else {

> > @@ -913,10 +913,10 @@ struct hwspinlock *devm_hwspin_lock_request_specific(struct device *dev,

> >

> >         ptr = devres_alloc(devm_hwspin_lock_release, sizeof(*ptr), GFP_KERNEL);

> >         if (!ptr)

> > -               return ERR_PTR(-ENOMEM);

> > +               return NULL;

> >

> >         hwlock = hwspin_lock_request_specific(id);

> > -       if (!IS_ERR(hwlock)) {

> > +       if (hwlock) {

> >                 *ptr = hwlock;

> >                 devres_add(dev, ptr);

> >         } else {

> > --

> > 1.7.9.5

> >

> 

> 

> 

> -- 

> Baolin Wang

> Best Regards
diff mbox series

Patch

diff --git a/drivers/hwspinlock/hwspinlock_core.c b/drivers/hwspinlock/hwspinlock_core.c
index e16d648..2bad40d 100644
--- a/drivers/hwspinlock/hwspinlock_core.c
+++ b/drivers/hwspinlock/hwspinlock_core.c
@@ -877,10 +877,10 @@  struct hwspinlock *devm_hwspin_lock_request(struct device *dev)
 
 	ptr = devres_alloc(devm_hwspin_lock_release, sizeof(*ptr), GFP_KERNEL);
 	if (!ptr)
-		return ERR_PTR(-ENOMEM);
+		return NULL;
 
 	hwlock = hwspin_lock_request();
-	if (!IS_ERR(hwlock)) {
+	if (hwlock) {
 		*ptr = hwlock;
 		devres_add(dev, ptr);
 	} else {
@@ -913,10 +913,10 @@  struct hwspinlock *devm_hwspin_lock_request_specific(struct device *dev,
 
 	ptr = devres_alloc(devm_hwspin_lock_release, sizeof(*ptr), GFP_KERNEL);
 	if (!ptr)
-		return ERR_PTR(-ENOMEM);
+		return NULL;
 
 	hwlock = hwspin_lock_request_specific(id);
-	if (!IS_ERR(hwlock)) {
+	if (hwlock) {
 		*ptr = hwlock;
 		devres_add(dev, ptr);
 	} else {