staging: gasket: sysfs: clean up state if ENOMEM removing mapping
authorTodd Poynor <toddpoynor@google.com>
Sun, 5 Aug 2018 20:07:35 +0000 (13:07 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 8 Aug 2018 09:20:06 +0000 (11:20 +0200)
If kcalloc() returns NULL in put_mapping(), continue to clean up state,
including dropping the reference on the struct device and free attribute
memory.

Signed-off-by: Todd Poynor <toddpoynor@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/gasket/gasket_sysfs.c

index 56d62ae..fc45f0d 100644 (file)
@@ -101,13 +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) {
-                       mutex_unlock(&mapping->mutex);
-                       return;
-               }
-
-               for (i = 0; i < num_files_to_remove; i++)
-                       files_to_remove[i] = mapping->attributes[i].attr;
+               if (files_to_remove)
+                       for (i = 0; i < num_files_to_remove; i++)
+                               files_to_remove[i] =
+                                   mapping->attributes[i].attr;
+               else
+                       num_files_to_remove = 0;
 
                kfree(mapping->attributes);
                mapping->attributes = NULL;