On Mon, Apr 02, 2007 at 01:01:28PM +0200, Cornelia Huck wrote:
>On Sun, 1 Apr 2007 15:32:34 +0800,
>"Cong WANG" <[EMAIL PROTECTED]> wrote:
>
>> --- linux-2.6.21-rc5-mm3/fs/partitions/check.c.orig  2007-03-30
>> 21:35:45.000000000 +0800
>> +++ linux-2.6.21-rc5-mm3/fs/partitions/check.c       2007-03-30
>> 21:49:53.000000000 +0800
>> @@ -385,10 +385,16 @@ void add_partition(struct gendisk *disk,
>>      p->kobj.parent = &disk->kobj;
>>      p->kobj.ktype = &ktype_part;
>>      kobject_init(&p->kobj);
>> -    kobject_add(&p->kobj);
>> +    if (kobject_add(&p->kobj)) {
>> +            kfree(p);
>> +            return;
>> +    }
>>      if (!disk->part_uevent_suppress)
>>              kobject_uevent(&p->kobj, KOBJ_ADD);
>> -    sysfs_create_link(&p->kobj, &block_subsys.kset.kobj, "subsystem");
>> +    if (sysfs_create_link(&p->kobj, &block_subsys.kset.kobj, "subsystem")) {
>> +            kfree(p);
>> +            return;
>> +    }
>
>You need to properly undo whatever you did before. You're missing a
>KOBJ_DEL uevent and a kobject_del here.
>
>>      if (flags & ADDPART_FLAG_WHOLEDISK) {
>>              static struct attribute addpartattr = {
>>                      .name = "whole_disk",
>> @@ -396,7 +402,10 @@ void add_partition(struct gendisk *disk,
>>                      .owner = THIS_MODULE,
>>              };
>> 
>> -            sysfs_create_file(&p->kobj, &addpartattr);
>> +            if (sysfs_create_file(&p->kobj, &addpartattr)) {
>> +                    kfree(p);
>> +                    return;
>> +            }
>
>Also here.

Sorry for my delay. My mutt sucked these days. ;-(

OK. Thanks for your point. I make the patch again and is it OK now?
I find -mm4 still has these warnings when compile this file. It is not fixed 
yet, and the following patch can also be applied to -mm4.

----

--- linux-2.6.21-rc5-mm3/fs/partitions/check.c.orig     2007-03-30 
21:35:45.000000000 +0800
+++ linux-2.6.21-rc5-mm3/fs/partitions/check.c  2007-04-02 21:29:02.000000000 
+0800
@@ -385,10 +385,18 @@ void add_partition(struct gendisk *disk,
        p->kobj.parent = &disk->kobj;
        p->kobj.ktype = &ktype_part;
        kobject_init(&p->kobj);
-       kobject_add(&p->kobj);
+       if (kobject_add(&p->kobj)) {
+               kfree(p);
+               return;
+       }
        if (!disk->part_uevent_suppress)
                kobject_uevent(&p->kobj, KOBJ_ADD);
-       sysfs_create_link(&p->kobj, &block_subsys.kset.kobj, "subsystem");
+       if (sysfs_create_link(&p->kobj, &block_subsys.kset.kobj, "subsystem")) {
+               kobject_uevent(&p->kobj, KOBJ_REMOVE);
+               kobject_del(&p->kobj);
+               kfree(p);
+               return;
+       }
        if (flags & ADDPART_FLAG_WHOLEDISK) {
                static struct attribute addpartattr = {
                        .name = "whole_disk",
@@ -396,7 +404,13 @@ void add_partition(struct gendisk *disk,
                        .owner = THIS_MODULE,
                };
 
-               sysfs_create_file(&p->kobj, &addpartattr);
+               if (sysfs_create_file(&p->kobj, &addpartattr)) {
+                       sysfs_remove_link(&p->kobj, "subsystem");
+                       kobject_uevent(&p->kobj, KOBJ_REMOVE);
+                       kobject_del(&p->kobj);
+                       kfree(p);
+                       return;
+               }
        }
        partition_sysfs_add_subdir(p);
        disk->part[part-1] = p;



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to