Message ID | 20200419194529.4872-10-mcgrof@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block: fix blktrace debugfs use after free | expand |
On 4/19/20 12:45 PM, Luis Chamberlain wrote: > --- a/block/blk-debugfs.c > +++ b/block/blk-debugfs.c > @@ -15,6 +15,8 @@ struct dentry *blk_debugfs_root; > void blk_debugfs_register(void) > { > blk_debugfs_root = debugfs_create_dir("block", NULL); > + if (!blk_debugfs_root) > + panic("Failed to create block debugfs directory\n"); > } Does Linus' "don't kill the kernel" rant apply to this patch? Thanks, Bart.
On Sun, Apr 19, 2020 at 07:45:28PM +0000, Luis Chamberlain wrote: > If DEBUG_FS is disabled we have another inline > blk_debugfs_register() which just returns 0. > > If BLK_DEV_IO_TRACE is enabled we rely on the block debugfs > directory to have been created. If BLK_DEV_IO_TRACE is not enabled > though, but if debugfs is still enabled we will always create a > debugfs directory for a request_queue. Instead of special-casing > this just for BLK_DEV_IO_TRACE, ensure this block debugfs dir is > always created at boot if we have enabled debugfs. > > Signed-off-by: Luis Chamberlain <mcgrof@kernel.org> > --- > block/blk-debugfs.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/block/blk-debugfs.c b/block/blk-debugfs.c > index 761318dcbf40..d6ec980e7531 100644 > --- a/block/blk-debugfs.c > +++ b/block/blk-debugfs.c > @@ -15,6 +15,8 @@ struct dentry *blk_debugfs_root; > void blk_debugfs_register(void) > { > blk_debugfs_root = debugfs_create_dir("block", NULL); > + if (!blk_debugfs_root) > + panic("Failed to create block debugfs directory\n"); How rude, never crash the kernel for something so trivial as that. Heck, never do ANYTHING different in the kernel if debugfs fails to do something you think it should do. This is debugging code, nothing should ever depend on it, so just save the value (if you need it) and move on. Never check the value, as it means nothing to you. greg k-h
diff --git a/block/blk-debugfs.c b/block/blk-debugfs.c index 761318dcbf40..d6ec980e7531 100644 --- a/block/blk-debugfs.c +++ b/block/blk-debugfs.c @@ -15,6 +15,8 @@ struct dentry *blk_debugfs_root; void blk_debugfs_register(void) { blk_debugfs_root = debugfs_create_dir("block", NULL); + if (!blk_debugfs_root) + panic("Failed to create block debugfs directory\n"); } int __must_check blk_queue_debugfs_register(struct request_queue *q)
If DEBUG_FS is disabled we have another inline blk_debugfs_register() which just returns 0. If BLK_DEV_IO_TRACE is enabled we rely on the block debugfs directory to have been created. If BLK_DEV_IO_TRACE is not enabled though, but if debugfs is still enabled we will always create a debugfs directory for a request_queue. Instead of special-casing this just for BLK_DEV_IO_TRACE, ensure this block debugfs dir is always created at boot if we have enabled debugfs. Signed-off-by: Luis Chamberlain <mcgrof@kernel.org> --- block/blk-debugfs.c | 2 ++ 1 file changed, 2 insertions(+)