block: fix an error code in add_partition()
authorDan Carpenter <dan.carpenter@oracle.com>
Tue, 23 May 2017 14:28:36 +0000 (17:28 +0300)
committerBen Hutchings <ben@decadent.org.uk>
Fri, 15 Sep 2017 17:30:47 +0000 (18:30 +0100)
commit 7bd897cfce1eb373892d35d7f73201b0f9b221c4 upstream.

We don't set an error code on this path.  It means that we return NULL
instead of an error pointer and the caller does a NULL dereference.

Fixes: 6d1d8050b4bc ("block, partition: add partition_meta_info to hd_struct")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
[bwh: Backported to 3.2: adjust filename]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
fs/partitions/check.c

index 18c58e5..66897c9 100644 (file)
@@ -457,8 +457,10 @@ struct hd_struct *add_partition(struct gendisk *disk, int partno,
 
        if (info) {
                struct partition_meta_info *pinfo = alloc_part_info(disk);
 
        if (info) {
                struct partition_meta_info *pinfo = alloc_part_info(disk);
-               if (!pinfo)
+               if (!pinfo) {
+                       err = -ENOMEM;
                        goto out_free_stats;
                        goto out_free_stats;
+               }
                memcpy(pinfo, info, sizeof(*info));
                p->info = pinfo;
        }
                memcpy(pinfo, info, sizeof(*info));
                p->info = pinfo;
        }