On Fri, Jun 03, 2022 at 08:33:23AM +0200, Christoph Hellwig wrote: > @@ -112,9 +88,10 @@ int mdev_register_parent(struct mdev_parent *parent, struct device *dev, > return -ENOMEM; > } > > - ret = parent_create_sysfs_files(parent); > - if (ret) > - return ret; > + parent->mdev_types_kset = kset_create_and_add("mdev_supported_types", > + NULL, &parent->dev->kobj); > + if (!parent->mdev_types_kset) > + return -ENOMEM; > > ret = class_compat_create_link(mdev_bus_compat_class, dev, NULL); > if (ret) [..] kobject_uevent_env(&dev->kobj, KOBJ_CHANGE, envp); This changes the ordering with respect to this udev event, now the mdev_supported_types directory is created but the directory is empty, then the driver fills it after the KOBJ_CHANGE event is triggered. Granted this whole abusing some other struct device's sysfs thing is inherently wrong - I'm not really sure what impact this has. Though at least someone seemed to care since their is this uevent here... Maybe we need a 'finish register' call to trigger the uevent? Or perhaps trigger the uevent when each add_type is done? Everything else looks fine though, I looked at this for a while a long time ago and didn't see this nice final arrangement :\ Jason