Message ID | 0f2913b8d9e23462d8bafec60dc3b1ec953e404b.1726673629.git.jacob.martin@canonical.com |
---|---|
State | New |
Headers | show |
Series | fix wbt:wbt_* trace event NULL pointer dereference with GENHD_FL_HIDDEN disks | expand |
Sending a v2 to fix threading. On 9/18/24 11:43 AM, Jacob Martin wrote: > From: Yufen Yu <yuyufen@huawei.com> > > BugLink: https://bugs.launchpad.net/bugs/2081085 > > Use the common interface bdi_dev_name() to get device name. > > Signed-off-by: Yufen Yu <yuyufen@huawei.com> > Signed-off-by: Christoph Hellwig <hch@lst.de> > Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Reviewed-by: Jan Kara <jack@suse.cz> > Reviewed-by: Bart Van Assche <bvanassche@acm.org> > > Add missing <linux/backing-dev.h> include BFQ > > Signed-off-by: Jens Axboe <axboe@kernel.dk> > > (cherry picked from commit d51cfc53ade3189455a1b88ec7a2ff0c24597cf8) > Signed-off-by: Jacob Martin <jacob.martin@canonical.com> > --- > block/bfq-iosched.c | 6 ++++-- > block/blk-cgroup.c | 2 +- > fs/ceph/debugfs.c | 2 +- > include/trace/events/wbt.h | 8 ++++---- > 4 files changed, 10 insertions(+), 8 deletions(-) > > diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c > index c73c8b0f5e40..e35ecd2bdff1 100644 > --- a/block/bfq-iosched.c > +++ b/block/bfq-iosched.c > @@ -123,6 +123,7 @@ > #include <linux/ioprio.h> > #include <linux/sbitmap.h> > #include <linux/delay.h> > +#include <linux/backing-dev.h> > > #include "blk.h" > #include "blk-mq.h" > @@ -5006,8 +5007,9 @@ bfq_set_next_ioprio_data(struct bfq_queue *bfqq, struct bfq_io_cq *bic) > ioprio_class = IOPRIO_PRIO_CLASS(bic->ioprio); > switch (ioprio_class) { > default: > - dev_err(bfqq->bfqd->queue->backing_dev_info->dev, > - "bfq: bad prio class %d\n", ioprio_class); > + pr_err("bdi %s: bfq: bad prio class %d\n", > + bdi_dev_name(bfqq->bfqd->queue->backing_dev_info), > + ioprio_class); > /* fall through */ > case IOPRIO_CLASS_NONE: > /* > diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c > index cd085a0e5e4a..510c85e80f64 100644 > --- a/block/blk-cgroup.c > +++ b/block/blk-cgroup.c > @@ -495,7 +495,7 @@ const char *blkg_dev_name(struct blkcg_gq *blkg) > { > /* some drivers (floppy) instantiate a queue w/o disk registered */ > if (blkg->q->backing_dev_info->dev) > - return dev_name(blkg->q->backing_dev_info->dev); > + return bdi_dev_name(blkg->q->backing_dev_info); > return NULL; > } > > diff --git a/fs/ceph/debugfs.c b/fs/ceph/debugfs.c > index c4947688134b..3b6f28827113 100644 > --- a/fs/ceph/debugfs.c > +++ b/fs/ceph/debugfs.c > @@ -271,7 +271,7 @@ void ceph_fs_debugfs_init(struct ceph_fs_client *fsc) > &congestion_kb_fops); > > snprintf(name, sizeof(name), "../../bdi/%s", > - dev_name(fsc->sb->s_bdi->dev)); > + bdi_dev_name(fsc->sb->s_bdi)); > fsc->debugfs_bdi = > debugfs_create_symlink("bdi", > fsc->client->debugfs_dir, > diff --git a/include/trace/events/wbt.h b/include/trace/events/wbt.h > index 37342a13c9cb..9996420d7ec4 100644 > --- a/include/trace/events/wbt.h > +++ b/include/trace/events/wbt.h > @@ -33,7 +33,7 @@ TRACE_EVENT(wbt_stat, > ), > > TP_fast_assign( > - strlcpy(__entry->name, dev_name(bdi->dev), > + strlcpy(__entry->name, bdi_dev_name(bdi), > ARRAY_SIZE(__entry->name)); > __entry->rmean = stat[0].mean; > __entry->rmin = stat[0].min; > @@ -68,7 +68,7 @@ TRACE_EVENT(wbt_lat, > ), > > TP_fast_assign( > - strlcpy(__entry->name, dev_name(bdi->dev), > + strlcpy(__entry->name, bdi_dev_name(bdi), > ARRAY_SIZE(__entry->name)); > __entry->lat = div_u64(lat, 1000); > ), > @@ -105,7 +105,7 @@ TRACE_EVENT(wbt_step, > ), > > TP_fast_assign( > - strlcpy(__entry->name, dev_name(bdi->dev), > + strlcpy(__entry->name, bdi_dev_name(bdi), > ARRAY_SIZE(__entry->name)); > __entry->msg = msg; > __entry->step = step; > @@ -141,7 +141,7 @@ TRACE_EVENT(wbt_timer, > ), > > TP_fast_assign( > - strlcpy(__entry->name, dev_name(bdi->dev), > + strlcpy(__entry->name, bdi_dev_name(bdi), > ARRAY_SIZE(__entry->name)); > __entry->status = status; > __entry->step = step;
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c index c73c8b0f5e40..e35ecd2bdff1 100644 --- a/block/bfq-iosched.c +++ b/block/bfq-iosched.c @@ -123,6 +123,7 @@ #include <linux/ioprio.h> #include <linux/sbitmap.h> #include <linux/delay.h> +#include <linux/backing-dev.h> #include "blk.h" #include "blk-mq.h" @@ -5006,8 +5007,9 @@ bfq_set_next_ioprio_data(struct bfq_queue *bfqq, struct bfq_io_cq *bic) ioprio_class = IOPRIO_PRIO_CLASS(bic->ioprio); switch (ioprio_class) { default: - dev_err(bfqq->bfqd->queue->backing_dev_info->dev, - "bfq: bad prio class %d\n", ioprio_class); + pr_err("bdi %s: bfq: bad prio class %d\n", + bdi_dev_name(bfqq->bfqd->queue->backing_dev_info), + ioprio_class); /* fall through */ case IOPRIO_CLASS_NONE: /* diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c index cd085a0e5e4a..510c85e80f64 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c @@ -495,7 +495,7 @@ const char *blkg_dev_name(struct blkcg_gq *blkg) { /* some drivers (floppy) instantiate a queue w/o disk registered */ if (blkg->q->backing_dev_info->dev) - return dev_name(blkg->q->backing_dev_info->dev); + return bdi_dev_name(blkg->q->backing_dev_info); return NULL; } diff --git a/fs/ceph/debugfs.c b/fs/ceph/debugfs.c index c4947688134b..3b6f28827113 100644 --- a/fs/ceph/debugfs.c +++ b/fs/ceph/debugfs.c @@ -271,7 +271,7 @@ void ceph_fs_debugfs_init(struct ceph_fs_client *fsc) &congestion_kb_fops); snprintf(name, sizeof(name), "../../bdi/%s", - dev_name(fsc->sb->s_bdi->dev)); + bdi_dev_name(fsc->sb->s_bdi)); fsc->debugfs_bdi = debugfs_create_symlink("bdi", fsc->client->debugfs_dir, diff --git a/include/trace/events/wbt.h b/include/trace/events/wbt.h index 37342a13c9cb..9996420d7ec4 100644 --- a/include/trace/events/wbt.h +++ b/include/trace/events/wbt.h @@ -33,7 +33,7 @@ TRACE_EVENT(wbt_stat, ), TP_fast_assign( - strlcpy(__entry->name, dev_name(bdi->dev), + strlcpy(__entry->name, bdi_dev_name(bdi), ARRAY_SIZE(__entry->name)); __entry->rmean = stat[0].mean; __entry->rmin = stat[0].min; @@ -68,7 +68,7 @@ TRACE_EVENT(wbt_lat, ), TP_fast_assign( - strlcpy(__entry->name, dev_name(bdi->dev), + strlcpy(__entry->name, bdi_dev_name(bdi), ARRAY_SIZE(__entry->name)); __entry->lat = div_u64(lat, 1000); ), @@ -105,7 +105,7 @@ TRACE_EVENT(wbt_step, ), TP_fast_assign( - strlcpy(__entry->name, dev_name(bdi->dev), + strlcpy(__entry->name, bdi_dev_name(bdi), ARRAY_SIZE(__entry->name)); __entry->msg = msg; __entry->step = step; @@ -141,7 +141,7 @@ TRACE_EVENT(wbt_timer, ), TP_fast_assign( - strlcpy(__entry->name, dev_name(bdi->dev), + strlcpy(__entry->name, bdi_dev_name(bdi), ARRAY_SIZE(__entry->name)); __entry->status = status; __entry->step = step;