diff options
Diffstat (limited to 'kernel/params.c')
-rw-r--r-- | kernel/params.c | 54 |
1 files changed, 15 insertions, 39 deletions
diff --git a/kernel/params.c b/kernel/params.c index 7686417ee00e..42fe5e6126c0 100644 --- a/kernel/params.c +++ b/kernel/params.c | |||
@@ -376,8 +376,6 @@ int param_get_string(char *buffer, struct kernel_param *kp) | |||
376 | 376 | ||
377 | extern struct kernel_param __start___param[], __stop___param[]; | 377 | extern struct kernel_param __start___param[], __stop___param[]; |
378 | 378 | ||
379 | #define MAX_KBUILD_MODNAME KOBJ_NAME_LEN | ||
380 | |||
381 | struct param_attribute | 379 | struct param_attribute |
382 | { | 380 | { |
383 | struct module_attribute mattr; | 381 | struct module_attribute mattr; |
@@ -472,7 +470,7 @@ param_sysfs_setup(struct module_kobject *mk, | |||
472 | sizeof(mp->grp.attrs[0])); | 470 | sizeof(mp->grp.attrs[0])); |
473 | size[1] = (valid_attrs + 1) * sizeof(mp->grp.attrs[0]); | 471 | size[1] = (valid_attrs + 1) * sizeof(mp->grp.attrs[0]); |
474 | 472 | ||
475 | mp = kmalloc(size[0] + size[1], GFP_KERNEL); | 473 | mp = kzalloc(size[0] + size[1], GFP_KERNEL); |
476 | if (!mp) | 474 | if (!mp) |
477 | return ERR_PTR(-ENOMEM); | 475 | return ERR_PTR(-ENOMEM); |
478 | 476 | ||
@@ -560,11 +558,10 @@ static void __init kernel_param_sysfs_setup(const char *name, | |||
560 | BUG_ON(!mk); | 558 | BUG_ON(!mk); |
561 | 559 | ||
562 | mk->mod = THIS_MODULE; | 560 | mk->mod = THIS_MODULE; |
563 | kobj_set_kset_s(mk, module_subsys); | 561 | mk->kobj.kset = module_kset; |
564 | kobject_set_name(&mk->kobj, name); | 562 | ret = kobject_init_and_add(&mk->kobj, &module_ktype, NULL, "%s", name); |
565 | kobject_init(&mk->kobj); | ||
566 | ret = kobject_add(&mk->kobj); | ||
567 | if (ret) { | 563 | if (ret) { |
564 | kobject_put(&mk->kobj); | ||
568 | printk(KERN_ERR "Module '%s' failed to be added to sysfs, " | 565 | printk(KERN_ERR "Module '%s' failed to be added to sysfs, " |
569 | "error number %d\n", name, ret); | 566 | "error number %d\n", name, ret); |
570 | printk(KERN_ERR "The system will be unstable now.\n"); | 567 | printk(KERN_ERR "The system will be unstable now.\n"); |
@@ -588,7 +585,7 @@ static void __init param_sysfs_builtin(void) | |||
588 | { | 585 | { |
589 | struct kernel_param *kp, *kp_begin = NULL; | 586 | struct kernel_param *kp, *kp_begin = NULL; |
590 | unsigned int i, name_len, count = 0; | 587 | unsigned int i, name_len, count = 0; |
591 | char modname[MAX_KBUILD_MODNAME + 1] = ""; | 588 | char modname[MODULE_NAME_LEN + 1] = ""; |
592 | 589 | ||
593 | for (i=0; i < __stop___param - __start___param; i++) { | 590 | for (i=0; i < __stop___param - __start___param; i++) { |
594 | char *dot; | 591 | char *dot; |
@@ -596,12 +593,12 @@ static void __init param_sysfs_builtin(void) | |||
596 | 593 | ||
597 | kp = &__start___param[i]; | 594 | kp = &__start___param[i]; |
598 | max_name_len = | 595 | max_name_len = |
599 | min_t(size_t, MAX_KBUILD_MODNAME, strlen(kp->name)); | 596 | min_t(size_t, MODULE_NAME_LEN, strlen(kp->name)); |
600 | 597 | ||
601 | dot = memchr(kp->name, '.', max_name_len); | 598 | dot = memchr(kp->name, '.', max_name_len); |
602 | if (!dot) { | 599 | if (!dot) { |
603 | DEBUGP("couldn't find period in first %d characters " | 600 | DEBUGP("couldn't find period in first %d characters " |
604 | "of %s\n", MAX_KBUILD_MODNAME, kp->name); | 601 | "of %s\n", MODULE_NAME_LEN, kp->name); |
605 | continue; | 602 | continue; |
606 | } | 603 | } |
607 | name_len = dot - kp->name; | 604 | name_len = dot - kp->name; |
@@ -679,8 +676,6 @@ static struct sysfs_ops module_sysfs_ops = { | |||
679 | .store = module_attr_store, | 676 | .store = module_attr_store, |
680 | }; | 677 | }; |
681 | 678 | ||
682 | static struct kobj_type module_ktype; | ||
683 | |||
684 | static int uevent_filter(struct kset *kset, struct kobject *kobj) | 679 | static int uevent_filter(struct kset *kset, struct kobject *kobj) |
685 | { | 680 | { |
686 | struct kobj_type *ktype = get_ktype(kobj); | 681 | struct kobj_type *ktype = get_ktype(kobj); |
@@ -694,21 +689,11 @@ static struct kset_uevent_ops module_uevent_ops = { | |||
694 | .filter = uevent_filter, | 689 | .filter = uevent_filter, |
695 | }; | 690 | }; |
696 | 691 | ||
697 | decl_subsys(module, &module_ktype, &module_uevent_ops); | 692 | struct kset *module_kset; |
698 | int module_sysfs_initialized; | 693 | int module_sysfs_initialized; |
699 | 694 | ||
700 | static void module_release(struct kobject *kobj) | 695 | struct kobj_type module_ktype = { |
701 | { | ||
702 | /* | ||
703 | * Stupid empty release function to allow the memory for the kobject to | ||
704 | * be properly cleaned up. This will not need to be present for 2.6.25 | ||
705 | * with the upcoming kobject core rework. | ||
706 | */ | ||
707 | } | ||
708 | |||
709 | static struct kobj_type module_ktype = { | ||
710 | .sysfs_ops = &module_sysfs_ops, | 696 | .sysfs_ops = &module_sysfs_ops, |
711 | .release = module_release, | ||
712 | }; | 697 | }; |
713 | 698 | ||
714 | /* | 699 | /* |
@@ -716,13 +701,11 @@ static struct kobj_type module_ktype = { | |||
716 | */ | 701 | */ |
717 | static int __init param_sysfs_init(void) | 702 | static int __init param_sysfs_init(void) |
718 | { | 703 | { |
719 | int ret; | 704 | module_kset = kset_create_and_add("module", &module_uevent_ops, NULL); |
720 | 705 | if (!module_kset) { | |
721 | ret = subsystem_register(&module_subsys); | 706 | printk(KERN_WARNING "%s (%d): error creating kset\n", |
722 | if (ret < 0) { | 707 | __FILE__, __LINE__); |
723 | printk(KERN_WARNING "%s (%d): subsystem_register error: %d\n", | 708 | return -ENOMEM; |
724 | __FILE__, __LINE__, ret); | ||
725 | return ret; | ||
726 | } | 709 | } |
727 | module_sysfs_initialized = 1; | 710 | module_sysfs_initialized = 1; |
728 | 711 | ||
@@ -732,14 +715,7 @@ static int __init param_sysfs_init(void) | |||
732 | } | 715 | } |
733 | subsys_initcall(param_sysfs_init); | 716 | subsys_initcall(param_sysfs_init); |
734 | 717 | ||
735 | #else | 718 | #endif /* CONFIG_SYSFS */ |
736 | #if 0 | ||
737 | static struct sysfs_ops module_sysfs_ops = { | ||
738 | .show = NULL, | ||
739 | .store = NULL, | ||
740 | }; | ||
741 | #endif | ||
742 | #endif | ||
743 | 719 | ||
744 | EXPORT_SYMBOL(param_set_byte); | 720 | EXPORT_SYMBOL(param_set_byte); |
745 | EXPORT_SYMBOL(param_get_byte); | 721 | EXPORT_SYMBOL(param_get_byte); |