UPSTREAM: gnss: fix potential error pointer dereference

The gnss_allocate_device() function returns a mix of NULL and error
pointers on error.  It should only return one or the other.  Since the
callers both check for NULL, I've modified it to return NULL on error.

Fixes: 2b6a44035143 ("gnss: add GNSS receiver subsystem")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit d9995a0fab40af333b08902ad43a387843ca0e17)
Bug: 146062677
Change-Id: I0d555d6459ab76a8c4eb8208a5bf469d04a16121
Signed-off-by: Alistair Delva <adelva@google.com>
This commit is contained in:
Dan Carpenter
2018-07-16 12:42:03 +02:00
committed by Alistair Delva
parent 38361f5185
commit 4743b4fd4a

View File

@@ -235,7 +235,7 @@ struct gnss_device *gnss_allocate_device(struct device *parent)
id = ida_simple_get(&gnss_minors, 0, GNSS_MINORS, GFP_KERNEL);
if (id < 0) {
kfree(gdev);
return ERR_PTR(id);
return NULL;
}
gdev->id = id;
@@ -270,7 +270,7 @@ struct gnss_device *gnss_allocate_device(struct device *parent)
err_put_device:
put_device(dev);
return ERR_PTR(-ENOMEM);
return NULL;
}
EXPORT_SYMBOL_GPL(gnss_allocate_device);