mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-03 00:54:09 +08:00
staging: vchiq_debugfs: Fix NPD in vchiq_dump_state
The commit42a2f6664e
("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:42a2f6664e
("staging: vc04_services: Move global g_state to vchiq_state") Signed-off-by: Stefan Wahren <wahrenst@gmx.net> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> Link: https://lore.kernel.org/r/20240524151542.19415-1-wahrenst@gmx.net Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c3f38fa61a
commit
c3552ab19a
@ -1759,7 +1759,7 @@ static int vchiq_probe(struct platform_device *pdev)
|
|||||||
if (err)
|
if (err)
|
||||||
goto failed_platform_init;
|
goto failed_platform_init;
|
||||||
|
|
||||||
vchiq_debugfs_init();
|
vchiq_debugfs_init(&mgmt->state);
|
||||||
|
|
||||||
dev_dbg(&pdev->dev, "arm: platform initialised - version %d (min %d)\n",
|
dev_dbg(&pdev->dev, "arm: platform initialised - version %d (min %d)\n",
|
||||||
VCHIQ_VERSION, VCHIQ_VERSION_MIN);
|
VCHIQ_VERSION, VCHIQ_VERSION_MIN);
|
||||||
|
@ -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)
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -121,12 +121,12 @@ void vchiq_debugfs_remove_instance(struct vchiq_instance *instance)
|
|||||||
debugfs_remove_recursive(node->dentry);
|
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_dir = debugfs_create_dir("vchiq", NULL);
|
||||||
vchiq_dbg_clients = debugfs_create_dir("clients", vchiq_dbg_dir);
|
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);
|
&vchiq_dump_fops);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ struct vchiq_debugfs_node {
|
|||||||
struct dentry *dentry;
|
struct dentry *dentry;
|
||||||
};
|
};
|
||||||
|
|
||||||
void vchiq_debugfs_init(void);
|
void vchiq_debugfs_init(struct vchiq_state *state);
|
||||||
|
|
||||||
void vchiq_debugfs_deinit(void);
|
void vchiq_debugfs_deinit(void);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user