2016-04-21 20:05:12

by Vladimir Zapolskiy

[permalink] [raw]
Subject: [PATCH] rapidio: fix potential NULL pointer dereference

The change fixes improper check for a returned error value by
class_create() function, which on error returns ERR_PTR() value,
thus the original check always results in a dead code on error path.

Signed-off-by: Vladimir Zapolskiy <[email protected]>
---
drivers/rapidio/devices/rio_mport_cdev.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/rapidio/devices/rio_mport_cdev.c b/drivers/rapidio/devices/rio_mport_cdev.c
index 5d4d918..96168b8 100644
--- a/drivers/rapidio/devices/rio_mport_cdev.c
+++ b/drivers/rapidio/devices/rio_mport_cdev.c
@@ -2669,9 +2669,9 @@ static int __init mport_init(void)

/* Create device class needed by udev */
dev_class = class_create(THIS_MODULE, DRV_NAME);
- if (!dev_class) {
+ if (IS_ERR(dev_class)) {
rmcd_error("Unable to create " DRV_NAME " class");
- return -EINVAL;
+ return PTR_ERR(dev_class);
}

ret = alloc_chrdev_region(&dev_number, 0, RIO_MAX_MPORTS, DRV_NAME);
--
2.1.4


2016-04-22 14:39:32

by Bounine, Alexandre

[permalink] [raw]
Subject: RE: [PATCH] rapidio: fix potential NULL pointer dereference

Thank you.

Ack-ed.

> -----Original Message-----
> From: Vladimir Zapolskiy [mailto:[email protected]]
> Sent: Thursday, April 21, 2016 4:05 PM
> To: Matt Porter; Bounine, Alexandre
> Cc: [email protected]
> Subject: [PATCH] rapidio: fix potential NULL pointer dereference
>
> The change fixes improper check for a returned error value by
> class_create() function, which on error returns ERR_PTR() value,
> thus the original check always results in a dead code on error path.
>
> Signed-off-by: Vladimir Zapolskiy <[email protected]>
> ---
> drivers/rapidio/devices/rio_mport_cdev.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/rapidio/devices/rio_mport_cdev.c
> b/drivers/rapidio/devices/rio_mport_cdev.c
> index 5d4d918..96168b8 100644
> --- a/drivers/rapidio/devices/rio_mport_cdev.c
> +++ b/drivers/rapidio/devices/rio_mport_cdev.c
> @@ -2669,9 +2669,9 @@ static int __init mport_init(void)
>
> /* Create device class needed by udev */
> dev_class = class_create(THIS_MODULE, DRV_NAME);
> - if (!dev_class) {
> + if (IS_ERR(dev_class)) {
> rmcd_error("Unable to create " DRV_NAME " class");
> - return -EINVAL;
> + return PTR_ERR(dev_class);
> }
>
> ret = alloc_chrdev_region(&dev_number, 0, RIO_MAX_MPORTS,
> DRV_NAME);
> --
> 2.1.4