btrfs: better handle btrfs_printk() defaults
authorPetr Mladek <pmladek@suse.com>
Wed, 14 Dec 2016 23:04:01 +0000 (15:04 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 15 Dec 2016 00:04:07 +0000 (16:04 -0800)
Commit 262c5e86fec7 ("printk/btrfs: handle more message headers")
triggers:

    warning: `ratelimit' may be used uninitialized in this function

with gcc (4.1.2) and probably many other versions.  The code actually is
correct but a bit twisted.  Let's make it more straightforward and set
the default values at the beginning.

Link: http://lkml.kernel.org/r/20161213135246.GQ3506@pathway.suse.cz
Signed-off-by: Petr Mladek <pmladek@suse.com>
Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: David Sterba <dsterba@suse.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/btrfs/super.c

index 180f910339f414307f9b9bf405c635e54104149a..3b713b6fcc26ba688cd1fafa9134d628c4542154 100644 (file)
@@ -202,12 +202,12 @@ static struct ratelimit_state printk_limits[] = {
 void btrfs_printk(const struct btrfs_fs_info *fs_info, const char *fmt, ...)
 {
        struct super_block *sb = fs_info->sb;
-       char lvl[PRINTK_MAX_SINGLE_HEADER_LEN + 1];
+       char lvl[PRINTK_MAX_SINGLE_HEADER_LEN + 1] = "\0";
        struct va_format vaf;
        va_list args;
-       const char *type = NULL;
        int kern_level;
-       struct ratelimit_state *ratelimit;
+       const char *type = logtypes[4];
+       struct ratelimit_state *ratelimit = &printk_limits[4];
 
        va_start(args, fmt);
 
@@ -223,12 +223,6 @@ void btrfs_printk(const struct btrfs_fs_info *fs_info, const char *fmt, ...)
                fmt += size;
        }
 
-       if (!type) {
-               *lvl = '\0';
-               type = logtypes[4];
-               ratelimit = &printk_limits[4];
-       }
-
        vaf.fmt = fmt;
        vaf.va = &args;