after commit 52b85909f85d("block: fold register_disk into device_add_disk") when set attribute_group with following code: disk_to_dev(disk)->groups = attr_groups; err = add_disk(disk); disk_to_dev(disk)->groups will set to NULL in device_add_disk, static inline int __must_check add_disk(struct gendisk *disk) { return device_add_disk(NULL, disk, NULL); } int __must_check device_add_disk(struct device *parent, ... const struct attribute_group **groups) { … ddev->groups = groups and it will lose attribute group set. Signed-off-by: Sun Feng <loyou85@xxxxxxxxx> --- block/genhd.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/block/genhd.c b/block/genhd.c index 27205ae..6b76f67 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -459,7 +459,10 @@ int __must_check device_add_disk(struct device *parent, struct gendisk *disk, dev_set_uevent_suppress(ddev, 1); ddev->parent = parent; - ddev->groups = groups; + if (groups) { + WARN_ON(ddev->groups); + ddev->groups = groups; + } dev_set_name(ddev, "%s", disk->disk_name); if (!(disk->flags & GENHD_FL_HIDDEN)) ddev->devt = MKDEV(disk->major, disk->first_minor); -- 2.7.4