Re: [PATCH] btrfs: Fix a C compliance issue
flat view
From: David Sterba <hidden>
Date: 2018-06-18 09:29:24
On Sat, Jun 16, 2018 at 01:28:13PM +0300, Nikolay Borisov wrote:
On 16.06.2018 01:36, Bart Van Assche wrote:quoted
The C programming language does not allow to use preprocessor statements inside macro arguments (pr_info() is defined as a macro). Hence rework the pr_info() statement in btrfs_print_mod_info() such that it becomes compliant. This patch allows tools like sparse to analyze the BTRFS source code. Fixes: 62e855771dac ("btrfs: convert printk(KERN_* to use pr_* calls") Signed-off-by: Bart Van Assche <redacted> Cc: Jeff Mahoney <redacted> Cc: David Sterba <dsterba@suse.com> --- fs/btrfs/super.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 81107ad49f3a..dd4980df5b8e 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c@@ -2369,7 +2369,7 @@ static __cold void btrfs_interface_exit(void) static void __init btrfs_print_mod_info(void) { - pr_info("Btrfs loaded, crc32c=%s" + static const char fmt[] = KERN_INFO "Btrfs loaded, crc32c=%s" #ifdef CONFIG_BTRFS_DEBUG ", debug=on" #endif@@ -2382,8 +2382,8 @@ static void __init btrfs_print_mod_info(void) #ifdef CONFIG_BTRFS_FS_REF_VERIFY ", ref-verify=on" #endif - "\n", - crc32c_impl()); + "\n"; + printk(fmt, crc32c_impl());I'd rather not see more printk being added. Nothing prevents from having the fmt string being passed to pr_info.
So you mean to do + static const char fmt[] = "Btrfs loaded, crc32c=%s" + pr_info(fmt); ?