Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fe480a26 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Modules: only add drivers/ direcory if needed



This changes the module core to only create the drivers/ directory if we
are going to put something in it.

Cc: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent f30c53a8
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -1131,12 +1131,6 @@ static int mod_sysfs_setup(struct module *mod,
	if (err)
		goto out;

	mod->mkobj.drivers_dir = kobject_add_dir(&mod->mkobj.kobj, "drivers");
	if (!mod->mkobj.drivers_dir) {
		err = -ENOMEM;
		goto out_unreg;
	}

	err = module_param_sysfs_setup(mod, kparam, num_params);
	if (err)
		goto out_unreg_drivers;
@@ -1151,8 +1145,6 @@ static int mod_sysfs_setup(struct module *mod,
out_unreg_param:
	module_param_sysfs_remove(mod);
out_unreg_drivers:
	kobject_unregister(mod->mkobj.drivers_dir);
out_unreg:
	kobject_del(&mod->mkobj.kobj);
	kobject_put(&mod->mkobj.kobj);
out:
@@ -1163,6 +1155,7 @@ static void mod_kobject_remove(struct module *mod)
{
	module_remove_modinfo_attrs(mod);
	module_param_sysfs_remove(mod);
	if (mod->mkobj.drivers_dir)
		kobject_unregister(mod->mkobj.drivers_dir);

	kobject_unregister(&mod->mkobj.kobj);
@@ -2340,6 +2333,14 @@ static char *make_driver_name(struct device_driver *drv)
	return driver_name;
}

static void module_create_drivers_dir(struct module_kobject *mk)
{
	if (!mk || mk->drivers_dir)
		return;

	mk->drivers_dir = kobject_add_dir(&mk->kobj, "drivers");
}

void module_add_driver(struct module *mod, struct device_driver *drv)
{
	char *driver_name;
@@ -2367,6 +2368,7 @@ void module_add_driver(struct module *mod, struct device_driver *drv)
	no_warn = sysfs_create_link(&drv->kobj, &mk->kobj, "module");
	driver_name = make_driver_name(drv);
	if (driver_name) {
		module_create_drivers_dir(mk);
		no_warn = sysfs_create_link(mk->drivers_dir, &drv->kobj,
					    driver_name);
		kfree(driver_name);
+0 −1
Original line number Diff line number Diff line
@@ -565,7 +565,6 @@ static void __init kernel_param_sysfs_setup(const char *name,
	ret = kobject_add(&mk->kobj);
	BUG_ON(ret < 0);
	param_sysfs_setup(mk, kparam, num_params, name_skip);
	mk->drivers_dir = kobject_add_dir(&mk->kobj, "drivers");
	kobject_uevent(&mk->kobj, KOBJ_ADD);
}