On Sun, Aug 04, 2019 at 06:20:21PM +0800, Wu Hao wrote: > +static int fme_global_err_init(struct platform_device *pdev, > + struct dfl_feature *feature) > +{ > + struct device *dev; > + int ret = 0; > + > + dev = kzalloc(sizeof(*dev), GFP_KERNEL); > + if (!dev) > + return -ENOMEM; > + > + dev->parent = &pdev->dev; > + dev->release = err_dev_release; > + dev_set_name(dev, "errors"); > + > + fme_error_enable(feature); > + > + ret = device_register(dev); > + if (ret) { > + put_device(dev); > + return ret; > + } > + > + ret = device_add_groups(dev, error_groups); cute, but no, you do not create a whole struct device for a subdir. Use the attribute group name like you did on earlier patches. And again, you raced userspace and lost :( thanks, greg k-h