Message ID | 20240524151542.19415-1-wahrenst@gmx.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | staging: vchiq_debugfs: Fix NPD in vchiq_dump_state | expand |
Hi Stefan, Thanks for the fixup! On 24/05/24 8:45 pm, Stefan Wahren wrote: > The commit 42a2f6664e18 ("staging: vc04_services: Move global g_state > to vchiq_state") falsely assumed that the debugfs entry vchiq/state > was created with vchiq_instance as data. This causes now a NULL > pointer derefence while trying to dump the vchiq state. So fix > this by passing vchiq_state as data, because this is the relevant > part here. > > Fixes: 42a2f6664e18 ("staging: vc04_services: Move global g_state to vchiq_state") > Signed-off-by: Stefan Wahren <wahrenst@gmx.net> LGTM, Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> > --- > .../staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 2 +- > .../vc04_services/interface/vchiq_arm/vchiq_debugfs.c | 8 ++++---- > .../vc04_services/interface/vchiq_arm/vchiq_debugfs.h | 2 +- > 3 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c > index 297af1d80b12..69daeba974f2 100644 > --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c > +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c > @@ -1759,7 +1759,7 @@ static int vchiq_probe(struct platform_device *pdev) > if (err) > goto failed_platform_init; > > - vchiq_debugfs_init(); > + vchiq_debugfs_init(&mgmt->state); > > dev_dbg(&pdev->dev, "arm: platform initialised - version %d (min %d)\n", > VCHIQ_VERSION, VCHIQ_VERSION_MIN); > diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.c > index 54e7bf029d9a..1f74d0bb33ba 100644 > --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.c > +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.c > @@ -42,9 +42,9 @@ static int debugfs_trace_show(struct seq_file *f, void *offset) > > static int vchiq_dump_show(struct seq_file *f, void *offset) > { > - struct vchiq_instance *instance = f->private; > + struct vchiq_state *state = f->private; > > - vchiq_dump_state(f, instance->state); > + vchiq_dump_state(f, state); > > return 0; > } > @@ -121,12 +121,12 @@ void vchiq_debugfs_remove_instance(struct vchiq_instance *instance) > debugfs_remove_recursive(node->dentry); > } > > -void vchiq_debugfs_init(void) > +void vchiq_debugfs_init(struct vchiq_state *state) > { > vchiq_dbg_dir = debugfs_create_dir("vchiq", NULL); > vchiq_dbg_clients = debugfs_create_dir("clients", vchiq_dbg_dir); > > - debugfs_create_file("state", S_IFREG | 0444, vchiq_dbg_dir, NULL, > + debugfs_create_file("state", S_IFREG | 0444, vchiq_dbg_dir, state, > &vchiq_dump_fops); > } > > diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.h b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.h > index e9bf055a4ca9..fabffd81b1ec 100644 > --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.h > +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.h > @@ -10,7 +10,7 @@ struct vchiq_debugfs_node { > struct dentry *dentry; > }; > > -void vchiq_debugfs_init(void); > +void vchiq_debugfs_init(struct vchiq_state *state); > > void vchiq_debugfs_deinit(void); > > -- > 2.34.1 >
diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c index 297af1d80b12..69daeba974f2 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c @@ -1759,7 +1759,7 @@ static int vchiq_probe(struct platform_device *pdev) if (err) goto failed_platform_init; - vchiq_debugfs_init(); + vchiq_debugfs_init(&mgmt->state); dev_dbg(&pdev->dev, "arm: platform initialised - version %d (min %d)\n", VCHIQ_VERSION, VCHIQ_VERSION_MIN); diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.c index 54e7bf029d9a..1f74d0bb33ba 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.c @@ -42,9 +42,9 @@ static int debugfs_trace_show(struct seq_file *f, void *offset) static int vchiq_dump_show(struct seq_file *f, void *offset) { - struct vchiq_instance *instance = f->private; + struct vchiq_state *state = f->private; - vchiq_dump_state(f, instance->state); + vchiq_dump_state(f, state); return 0; } @@ -121,12 +121,12 @@ void vchiq_debugfs_remove_instance(struct vchiq_instance *instance) debugfs_remove_recursive(node->dentry); } -void vchiq_debugfs_init(void) +void vchiq_debugfs_init(struct vchiq_state *state) { vchiq_dbg_dir = debugfs_create_dir("vchiq", NULL); vchiq_dbg_clients = debugfs_create_dir("clients", vchiq_dbg_dir); - debugfs_create_file("state", S_IFREG | 0444, vchiq_dbg_dir, NULL, + debugfs_create_file("state", S_IFREG | 0444, vchiq_dbg_dir, state, &vchiq_dump_fops); } diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.h b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.h index e9bf055a4ca9..fabffd81b1ec 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.h +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.h @@ -10,7 +10,7 @@ struct vchiq_debugfs_node { struct dentry *dentry; }; -void vchiq_debugfs_init(void); +void vchiq_debugfs_init(struct vchiq_state *state); void vchiq_debugfs_deinit(void);
The commit 42a2f6664e18 ("staging: vc04_services: Move global g_state to vchiq_state") falsely assumed that the debugfs entry vchiq/state was created with vchiq_instance as data. This causes now a NULL pointer derefence while trying to dump the vchiq state. So fix this by passing vchiq_state as data, because this is the relevant part here. Fixes: 42a2f6664e18 ("staging: vc04_services: Move global g_state to vchiq_state") Signed-off-by: Stefan Wahren <wahrenst@gmx.net> --- .../staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 2 +- .../vc04_services/interface/vchiq_arm/vchiq_debugfs.c | 8 ++++---- .../vc04_services/interface/vchiq_arm/vchiq_debugfs.h | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) -- 2.34.1