fs/partitions/check.c: add_partition() warning fixes
PATCH 1/1 fs/partitions/check.c: add_partition() warning fixes
This patch fixes these warnings:
fs/partitions/check.c: In function ‘add_partition’:fs/partitions/check.c:391: warning: ignoring return value of ‘kobject_add’,
declared with attribute warn_unused_resultfs/partitions/check.c:394: warning: ignoring return value of
‘sysfs_create_link’, declared with attribute warn_unused_resultfs/partitions/check.c:401: warning: ignoring return value of
‘sysfs_create_file’, declared with attribute warn_unused_result
--- fs/partitions/check.c | 21 ++++++++++++++++++--- 1 files changed, 18 insertions(+), 3 deletions(-)
fs/partitions/check.c +18 -3
@@ -371,6 +371,7 @@ void delete_partition(struct gendisk *disk, int part)void 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)
@@ -388,20 +389,34 @@ void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len, p->kobj.parent = &disk->kobj; p->kobj.ktype = &ktype_part;kobject_init (&p->kobj); -kobject_add (&p->kobj); + err =kobject_add (&p->kobj); +if (err) + goto err_out;if (!disk->part_uevent_suppress)kobject_uevent (&p->kobj,KOBJ_ADD ); -sysfs_create_link (&p->kobj, &block_subsys.kobj,"subsystem" ); + err =sysfs_create_link (&p->kobj, &block_subsys.kobj,"subsystem" ); +if (err) + goto err_out_del_kobj;if (flags &ADDPART_FLAG_WHOLEDISK ) {static struct attribute addpartattr = { .name ="whole_disk" , .mode =S_IRUSR |S_IRGRP |S_IROTH , }; -sysfs_create_file (&p->kobj, &addpartattr); + err =sysfs_create_file (&p->kobj, &addpartattr); +if (err) + goto err_out_del_link; }partition_sysfs_add_subdir (p); disk->part[part-1 ] = p; +return ; + +err_out_del_link: +sysfs_remove_link (&p->kobj,"subsystem" ); +err_out_del_kobj: +kobject_del (&p->kobj); +err_out: +kfree (p); }static char *make_block_name (struct gendisk *disk)
Quoted 21 lines · Eugene Teo
fs/partitions/check.c +6
-3@@ -388,20 +389,34 @@ void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len, p->kobj.parent = &disk->kobj; p->kobj.ktype = &ktype_part;kobject_init (&p->kobj); -kobject_add (&p->kobj); + err =kobject_add (&p->kobj); +if (err) + goto err_out;if (!disk->part_uevent_suppress)kobject_uevent (&p->kobj,KOBJ_ADD ); -sysfs_create_link (&p->kobj, &block_subsys.kobj,"subsystem" ); + err =sysfs_create_link (&p->kobj, &block_subsys.kobj,"subsystem" ); +if (err) + goto err_out_del_kobj;if (flags &ADDPART_FLAG_WHOLEDISK ) {static struct attribute addpartattr = { .name ="whole_disk" , .mode =S_IRUSR |S_IRGRP |S_IROTH , }; -sysfs_create_file (&p->kobj, &addpartattr);
fs/partitions/check.c void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len, · line 415
Quoted 10 lines
fs/partitions/check.c +7
-0+ err =sysfs_create_file (&p->kobj, &addpartattr); +if (err) + goto err_out_del_link; }partition_sysfs_add_subdir (p); disk->part[part-1 ] = p; +return ; + +err_out_del_link: +sysfs_remove_link (&p->kobj,"subsystem" );
You need a remove uevent if you did an add uevent above.
fs/partitions/check.c void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len, · line 419
Quoted 4 lines
fs/partitions/check.c +4
-0+err_out_del_kobj: +kobject_del (&p->kobj); +err_out: +kfree (p);
Please use kobject_put() instead.
Hi Cornelia,
Quoted 2 lines · Cornelia Huck
On Sun, 29 Jul 2007 10:53:39 +0800,
Eugene Teo <[email protected]> wrote:
[...]
Quoted 7 lines
fs/partitions/check.c void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len, · line 415
Quoted 4 lines
fs/partitions/check.c +4
-0+return ; + +err_out_del_link: +sysfs_remove_link (&p->kobj,"subsystem" );You need a remove uevent if you did an add uevent above.
Quoted 6 lines
fs/partitions/check.c void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len, · line 419
Quoted 4 lines
fs/partitions/check.c +4
-0+err_out_del_kobj: +kobject_del (&p->kobj); +err_out: +kfree (p);Please use
kobject_put()instead.
Thanks for your feedback.
Eugene