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

Commit 80f03e34 authored by Kay Sievers's avatar Kay Sievers Committed by Greg Kroah-Hartman
Browse files

Driver core: add missing kset uevent



We get uevents for a bus/class going away, but not one registering.
Add the missing uevent in kset_register(), which will send an
event for a new bus/class. Suppress all unwanted uevents for bus
subdirectories like /bus/*/devices/, /bus/*/drivers/.

Now we get for module usbcore:
  add      /module/usbcore (module)
  add      /bus/usb (bus)
  add      /class/usb_host (class)
  add      /bus/usb/drivers/hub (drivers)
  add      /bus/usb/drivers/usb (drivers)
  remove   /bus/usb/drivers/usb (drivers)
  remove   /bus/usb/drivers/hub (drivers)
  remove   /class/usb_host (class)
  remove   /bus/usb (bus)
  remove   /module/usbcore (module)

instead of:
  add      /module/usbcore (module)
  add      /bus/usb/drivers/hub (drivers)
  add      /bus/usb/drivers/usb (drivers)
  remove   /bus/usb/drivers/usb (drivers)
  remove   /bus/usb/drivers/hub (drivers)
  remove   /class/usb_host (class)
  remove   /bus/usb/drivers (bus)
  remove   /bus/usb/devices (bus)
  remove   /bus/usb (bus)
  remove   /module/usbcore (module)

Signed-off-by: default avatarKay Sievers <kay.sievers@vrfy.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 4f5c791a
Loading
Loading
Loading
Loading
+14 −2
Original line number Original line Diff line number Diff line
@@ -138,12 +138,24 @@ void bus_remove_file(struct bus_type * bus, struct bus_attribute * attr)
	}
	}
}
}


static struct kobj_type ktype_bus = {
static struct kobj_type bus_ktype = {
	.sysfs_ops	= &bus_sysfs_ops,
	.sysfs_ops	= &bus_sysfs_ops,
};

static int bus_uevent_filter(struct kset *kset, struct kobject *kobj)
{
	struct kobj_type *ktype = get_ktype(kobj);

	if (ktype == &bus_ktype)
		return 1;
	return 0;
}


static struct kset_uevent_ops bus_uevent_ops = {
	.filter = bus_uevent_filter,
};
};


static decl_subsys(bus, &ktype_bus, NULL);
static decl_subsys(bus, &bus_ktype, &bus_uevent_ops);




#ifdef CONFIG_HOTPLUG
#ifdef CONFIG_HOTPLUG
+8 −1
Original line number Original line Diff line number Diff line
@@ -597,10 +597,17 @@ int kset_add(struct kset * k)


int kset_register(struct kset * k)
int kset_register(struct kset * k)
{
{
	int err;

	if (!k)
	if (!k)
		return -EINVAL;
		return -EINVAL;

	kset_init(k);
	kset_init(k);
	return kset_add(k);
	err = kset_add(k);
	if (err)
		return err;
	kobject_uevent(&k->kobj, KOBJ_ADD);
	return 0;
}
}