559
560
561
562
563void module_param_sysfs_remove(struct module *mod)
564{
565 if (mod->mkobj.mp) {
566 sysfs_remove_group(&mod->mkobj.kobj, &mod->mkobj.mp->grp);
567
568
569 free_module_param_attrs(&mod->mkobj);
570 }
571}
572#endif
573
574static void __init kernel_add_sysfs_param(const char *name,
575 struct kernel_param *kparam,
576 unsigned int name_skip)
577{
578 struct module_kobject *mk;
579 struct kobject *kobj;
580 int err;
581
582 kobj = kset_find_obj(module_kset, name);
583 if (kobj) {
584
585 mk = to_module_kobject(kobj);
586
587 sysfs_remove_group(&mk->kobj, &mk->mp->grp);
588 } else {
589 mk = kzalloc(sizeof(struct module_kobject), GFP_KERNEL);
590 BUG_ON(!mk);
591
592 mk->mod = THIS_MODULE;
593 mk->kobj.kset = module_kset;
594 err = kobject_init_and_add(&mk->kobj, &module_ktype, NULL,
595 "%s", name);
596 if (err) {
597 kobject_put(&mk->kobj);
598 printk(KERN_ERR "Module '%s' failed add to sysfs, "
599 "error number %d\n", name, err);