Btrfs-progs: add kstrdup() return value check
authorFilipe David Borba Manana <fdmanana@gmail.com>
Sun, 30 Jun 2013 11:51:45 +0000 (12:51 +0100)
committerDavid Sterba <dsterba@suse.cz>
Fri, 9 Aug 2013 12:32:32 +0000 (14:32 +0200)
When allocating a btrfs_device structure, device_list_add()
in volumes.c was not checking if the call to duplicate the
label string succeeded or not.

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
volumes.c

index 68b4294..28b208d 100644 (file)
--- a/volumes.c
+++ b/volumes.c
@@ -124,6 +124,11 @@ static int device_list_add(const char *path,
                        return -ENOMEM;
                }
                device->label = kstrdup(disk_super->label, GFP_NOFS);
+               if (!device->label) {
+                       kfree(device->name);
+                       kfree(device);
+                       return -ENOMEM;
+               }
                device->total_devs = btrfs_super_num_devices(disk_super);
                device->super_bytes_used = btrfs_super_bytes_used(disk_super);
                device->total_bytes =