Skip to content

Commit 6bd87ee

Browse files
Christoph Hellwigaxboe
authored andcommitted
bdi: add a ->dev_name field to struct backing_dev_info
Cache a copy of the name for the life time of the backing_dev_info structure so that we can reference it even after unregistering. Fixes: 68f23b8 ("memcg: fix a crash in wb_workfn when a device disappears") Reported-by: Yufen Yu <[email protected]> Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: Jan Kara <[email protected]> Reviewed-by: Bart Van Assche <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
1 parent d51cfc5 commit 6bd87ee

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

include/linux/backing-dev-defs.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ struct backing_dev_info {
219219
wait_queue_head_t wb_waitq;
220220

221221
struct device *dev;
222+
char dev_name[64];
222223
struct device *owner;
223224

224225
struct timer_list laptop_mode_wb_timer;

mm/backing-dev.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -938,7 +938,8 @@ int bdi_register_va(struct backing_dev_info *bdi, const char *fmt, va_list args)
938938
if (bdi->dev) /* The driver needs to use separate queues per device */
939939
return 0;
940940

941-
dev = device_create_vargs(bdi_class, NULL, MKDEV(0, 0), bdi, fmt, args);
941+
vsnprintf(bdi->dev_name, sizeof(bdi->dev_name), fmt, args);
942+
dev = device_create(bdi_class, NULL, MKDEV(0, 0), bdi, bdi->dev_name);
942943
if (IS_ERR(dev))
943944
return PTR_ERR(dev);
944945

@@ -1047,7 +1048,7 @@ const char *bdi_dev_name(struct backing_dev_info *bdi)
10471048
{
10481049
if (!bdi || !bdi->dev)
10491050
return bdi_unknown_name;
1050-
return dev_name(bdi->dev);
1051+
return bdi->dev_name;
10511052
}
10521053
EXPORT_SYMBOL_GPL(bdi_dev_name);
10531054

0 commit comments

Comments
 (0)