fs/partition/check.c: fix return value warning
RFC 1/1 fs/partition/check.c: fix return value warning
Quoted 1 line
From
d805dda412346225a50af2d399d958a4bc676c38Mon Sep 17 00:00:00 2001
From: Abdel Benamrouche <[email protected]>
Date: Fri, 25 Jul 2008 01:48:25 -0700
Subject: [PATCH] fs/partition/check.c: fix return value warning
[ Upstream commit d805dda412346225a50af2d399d958a4bc676c38 ]
fs/partitions/check.c:381: warning: ignoring return value of ___device_add___,
declared with attribute warn_unused_result
fs/partitions/check.c +22 -6
@@ -344,18 +344,18 @@ static ssize_t whole_disk_show(struct device *dev, static DEVICE_ATTR(whole_disk, S_IRUSR | S_IRGRP | S_IROTH, whole_disk_show, NULL); -void add_partition (struct gendisk *disk,int part,sector_t start,sector_t len,int flags) +int add_partition (struct gendisk *disk,int part,sector_t start,sector_t len,int flags) {struct hd_struct *p;int err; p =kzalloc (sizeof (*p),GFP_KERNEL );if (!p) -return ; +return -ENOMEM ;if (!init_part_stats (p)) { -kfree (p); -return ; + err = -ENOMEM ; + goto out0; } p->start_sect = start; p->nr_sects = len;
@@ -378,15 +378,31 @@ void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len,/* delay uevent until 'holders' subdir is created */ p->dev.uevent_suppress =1 ; -device_add (&p->dev); + err =device_add (&p->dev); +if (err) + goto out1;partition_sysfs_add_subdir (p); p->dev.uevent_suppress =0 ; -if (flags &ADDPART_FLAG_WHOLEDISK ) +if (flags &ADDPART_FLAG_WHOLEDISK ) { err =device_create_file (&p->dev, &dev_attr_whole_disk); +if (err) + goto out2; + }/* suppress uevent if the disk supresses it */ if (!disk->dev.uevent_suppress)kobject_uevent (&p->dev.kobj,KOBJ_ADD ); + +return 0 ; + +out2: +device_del (&p->dev); +out1: +put_device (&p->dev); +free_part_stats (p); +out0: +kfree (p); +return err; }/* Not exported, helper to add_disk(). */
include/linux/genhd.h +1 -1
@@ -541,7 +541,7 @@ extern dev_t blk_lookup_devt(const char *name, int part);extern char *disk_name (struct gendisk *hd,int part,char *buf);extern int rescan_partitions (struct gendisk *disk,struct block_device *bdev); -extern void add_partition (struct gendisk *,int ,sector_t ,sector_t ,int ); +extern int __must_check add_partition (struct gendisk *,int ,sector_t ,sector_t ,int );extern void delete_partition (struct gendisk *,int );extern void printk_all_partitions (void );
Quoted 4 lines · Oliver Pinter
Subject: [PATCH]
fs/partition/check.c: fix return value warning[ Upstream commit
d805dda412346225a50af2d399d958a4bc676c38]
Why are these being submitted for stable kernels?
Oliver - stable kernels should _not_ get trivial fixes that don't actually have any problems associated with them.
Every patch in a stable kernel has a downside. It had better have a big upside too. These don't.
Please don't just send patches to the stable team because they "look fine". They should be real bugs, with real consequences. And no, a compiler warning is not a real consequence.
Linus
Quoted 3 lines · Linus Torvalds
Please don't just send patches to the stable team because they "look fine". They should be real bugs, with real consequences. And no, a compiler warning is not a real consequence.
BTW, before Oliver does the mistake, I'd suggest never forwarding network patches to stable either as Davem already maintains his own -stable queue ;-)
Willy
Willy, this good to know ...
and I think, this patch fixed a small leak:
+
+out2:
+ device_del(&p->dev);
+out1:
+ put_device(&p->dev);
+ free_part_stats(p);
+out0:
+ kfree(p);
+ return err;
Quoted 12 lines · Willy Tarreau
Quoted 3 lines · Linus Torvalds
Please don't just send patches to the stable team because they "look fine". They should be real bugs, with real consequences. And no, a compiler warning is not a real consequence.
BTW, before Oliver does the mistake, I'd suggest never forwarding network patches to stable either as Davem already maintains his own -stable queue ;-)
Willy
Signature · 2 lines
Thanks, Oliver
Quoted 15 lines · Oliver Pinter
Willy, this good to know ...
and I think, this patch fixed a small leak:
fs/partitions/check.c +9
-0+ +out2: +device_del (&p->dev); +out1: +put_device (&p->dev); +free_part_stats (p); +out0: +kfree (p); +return err;
Quoted 5 lines
Quoted 4 lines · Willy Tarreau
Quoted 3 lines · Linus Torvalds
Please don't just send patches to the stable team because they "look fine". They should be real bugs, with real consequences. And no, a compiler warning is not a real consequence.
Oliver, check under which circumstances the leak happens, and which problems the leak causes for the system.
Newly added failure handling paths, which by nature are insufficiently runtime-tested, need to be well considered before they are taken over into -stable even if the code looks OK. I.e. they need to address bugs which are known to cause problems of certain severity in practice.
Signature · 3 lines
Stefan Richter -=====-==--- =--- ---== http://arcgraph.de/sr/