WTF: patch "[PATCH] bcache: do not check return value of debugfs_create_dir()" was seriously submitted to be applied to the 4.18-stable tree?
Subsystems (2)
[email protected]
maintainerThe patch below was submitted to be applied to the 4.18-stable tree.
I fail to see how this patch meets the stable kernel rules as found at Documentation/process/stable-kernel-rules.rst.
I could be totally wrong, and if so, please respond to <[email protected]> and let me know why this patch should be applied. Otherwise, it is now dropped from my patch queues, never to be seen again.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
78ac2107176baa0daf65b0fb8e561d2ed14c83caMon Sep 17 00:00:00 2001
From: Coly Li <[email protected]>
Date: Thu, 9 Aug 2018 15:48:42 +0800
Subject: [PATCH] bcache: do not check return value of debugfs_create_dir()
Greg KH suggests that normal code should not care about debugfs. Therefore no matter successful or failed of debugfs_create_dir() execution, it is unncessary to check its return value.
There are two functions called debugfs_create_dir() and check the return value, which are bch_debug_init() and closure_debug_init(). This patch changes these two functions from int to void type, and ignore return values of debugfs_create_dir().
This patch does not fix exact bug, just makes things work as they should.
drivers/md/bcache/bcache.h +1 -1
@@ -1001,7 +1001,7 @@ void bch_open_buckets_free(struct cache_set *);int bch_cache_allocator_start (struct cache *ca);void bch_debug_exit (void ); -int bch_debug_init (struct kobject *); +void bch_debug_init (struct kobject *kobj);void bch_request_exit (void );int bch_request_init (void );
drivers/md/bcache/closure.c +9 -4
@@ -199,11 +199,16 @@ static const struct file_operations debug_ops = { .release = single_release }; -int __init closure_debug_init (void ) +void __init closure_debug_init (void ) { - closure_debug =debugfs_create_file ("closures" , -0400 , bcache_debug,NULL , &debug_ops); -return IS_ERR_OR_NULL (closure_debug); +if (!IS_ERR_OR_NULL (bcache_debug)) +/* +* it is unnecessary to check return value of +* debugfs_create_file(), we should not care +* about this. +*/ + closure_debug =debugfs_create_file ( +"closures" ,0400 , bcache_debug,NULL , &debug_ops); }#endif
drivers/md/bcache/closure.h +2 -2
@@ -186,13 +186,13 @@ static inline void closure_sync(struct closure *cl)#ifdef CONFIG_BCACHE_CLOSURES_DEBUG -int closure_debug_init (void ); +void closure_debug_init (void );void closure_debug_create (struct closure *cl);void closure_debug_destroy (struct closure *cl);#else -static inline int closure_debug_init (void ) {return 0 ; } +static inline void closure_debug_init (void ) {}static inline void closure_debug_create (struct closure *cl) {}static inline void closure_debug_destroy (struct closure *cl) {}
drivers/md/bcache/debug.c +6 -5
@@ -252,11 +252,12 @@ void bch_debug_exit(void)debugfs_remove_recursive (bcache_debug); } -int __init bch_debug_init (struct kobject *kobj) +void __init bch_debug_init (struct kobject *kobj) { -if (!IS_ENABLED (CONFIG_DEBUG_FS )) -return 0 ; - +/* +* it is unnecessary to check return value of +* debugfs_create_file(), we should not care +* about this. +*/ bcache_debug =debugfs_create_dir ("bcache" ,NULL ); -return IS_ERR_OR_NULL (bcache_debug); }
drivers/md/bcache/super.c +3 -1
@@ -2345,10 +2345,12 @@ static int __init bcache_init(void) goto err;if (bch_request_init () || -bch_debug_init (bcache_kobj) ||closure_debug_init () ||sysfs_create_files (bcache_kobj, files)) goto err; +bch_debug_init (bcache_kobj); +closure_debug_init (); +return 0 ; err:bcache_exit ();