2018-07-31 15:25:49

by Ivan Bornyakov

[permalink] [raw]
Subject: [PATCH] staging: gasket: sysfs: fix potential null dereference

Add handling of possible allocation failure.

Reported by smatch:

drivers/staging/gasket/gasket_sysfs.c:105 put_mapping() error: potential null dereference 'files_to_remove'. (kcalloc returns null)

Signed-off-by: Ivan Bornyakov <[email protected]>
---
drivers/staging/gasket/gasket_sysfs.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/drivers/staging/gasket/gasket_sysfs.c b/drivers/staging/gasket/gasket_sysfs.c
index ef4eca02afa6..682e5c21f203 100644
--- a/drivers/staging/gasket/gasket_sysfs.c
+++ b/drivers/staging/gasket/gasket_sysfs.c
@@ -101,6 +101,12 @@ static void put_mapping(struct gasket_sysfs_mapping *mapping)
files_to_remove = kcalloc(num_files_to_remove,
sizeof(*files_to_remove),
GFP_KERNEL);
+ if (!files_to_remove) {
+ pr_err("%s: can't allocate memory\n", __func__);
+ mutex_unlock(&mapping->mutex);
+ return;
+ }
+
for (i = 0; i < num_files_to_remove; i++)
files_to_remove[i] = mapping->attributes[i].attr;

--
2.16.4



2018-08-01 18:09:30

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] staging: gasket: sysfs: fix potential null dereference

On Tue, Jul 31, 2018 at 06:23:20PM +0300, Ivan Bornyakov wrote:
> Add handling of possible allocation failure.
>
> Reported by smatch:
>
> drivers/staging/gasket/gasket_sysfs.c:105 put_mapping() error: potential null dereference 'files_to_remove'. (kcalloc returns null)
>
> Signed-off-by: Ivan Bornyakov <[email protected]>
> ---
> drivers/staging/gasket/gasket_sysfs.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/staging/gasket/gasket_sysfs.c b/drivers/staging/gasket/gasket_sysfs.c
> index ef4eca02afa6..682e5c21f203 100644
> --- a/drivers/staging/gasket/gasket_sysfs.c
> +++ b/drivers/staging/gasket/gasket_sysfs.c
> @@ -101,6 +101,12 @@ static void put_mapping(struct gasket_sysfs_mapping *mapping)
> files_to_remove = kcalloc(num_files_to_remove,
> sizeof(*files_to_remove),
> GFP_KERNEL);
> + if (!files_to_remove) {
> + pr_err("%s: can't allocate memory\n", __func__);

kcalloc failing will print something, no need to do it again here.

thanks,

greg k-h

2018-08-01 18:39:55

by Ivan Bornyakov

[permalink] [raw]
Subject: [PATCH v2] staging: gasket: sysfs: fix potential null dereference

Add handling of possible allocation failure.

Reported by smatch:

drivers/staging/gasket/gasket_sysfs.c:105 put_mapping() error: potential null dereference 'files_to_remove'. (kcalloc returns null)

Signed-off-by: Ivan Bornyakov <[email protected]>
---
drivers/staging/gasket/gasket_sysfs.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/drivers/staging/gasket/gasket_sysfs.c b/drivers/staging/gasket/gasket_sysfs.c
index a4bfca43cd03..56d62aea5111 100644
--- a/drivers/staging/gasket/gasket_sysfs.c
+++ b/drivers/staging/gasket/gasket_sysfs.c
@@ -101,6 +101,11 @@ static void put_mapping(struct gasket_sysfs_mapping *mapping)
files_to_remove = kcalloc(num_files_to_remove,
sizeof(*files_to_remove),
GFP_KERNEL);
+ if (!files_to_remove) {
+ mutex_unlock(&mapping->mutex);
+ return;
+ }
+
for (i = 0; i < num_files_to_remove; i++)
files_to_remove[i] = mapping->attributes[i].attr;

--
2.16.4