Messages in this thread Patch in this message | | | From | Sun Feng <> | Subject | [PATCH] block: fix attribute_group lost if set before add_disk | Date | Fri, 10 Jun 2022 15:16:29 +0800 |
| |
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@gmail.com> --- 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
| |