lkml.org 
[lkml]   [2019]   [Apr]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.0 208/246] f2fs: UBSAN: set boolean value iostat_enable correctly
    Date
    5.0-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    [ Upstream commit ac92985864e187a1735502f6a02f54eaa655b2aa ]

    When setting /sys/fs/f2fs/<DEV>/iostat_enable with non-bool value, UBSAN
    reports the following warning.

    [ 7562.295484] ================================================================================
    [ 7562.296531] UBSAN: Undefined behaviour in fs/f2fs/f2fs.h:2776:10
    [ 7562.297651] load of value 64 is not a valid value for type '_Bool'
    [ 7562.298642] CPU: 1 PID: 7487 Comm: dd Not tainted 4.20.0-rc4+ #79
    [ 7562.298653] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
    [ 7562.298662] Call Trace:
    [ 7562.298760] dump_stack+0x46/0x5b
    [ 7562.298811] ubsan_epilogue+0x9/0x40
    [ 7562.298830] __ubsan_handle_load_invalid_value+0x72/0x90
    [ 7562.298863] f2fs_file_write_iter+0x29f/0x3f0
    [ 7562.298905] __vfs_write+0x115/0x160
    [ 7562.298922] vfs_write+0xa7/0x190
    [ 7562.298934] ksys_write+0x50/0xc0
    [ 7562.298973] do_syscall_64+0x4a/0xe0
    [ 7562.298992] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [ 7562.299001] RIP: 0033:0x7fa45ec19c00
    [ 7562.299004] Code: 73 01 c3 48 8b 0d 88 92 2c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 0f 1f 44 00 00 83 3d dd eb 2c 00 00 75 10 b8 01 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 31 c3 48 83 ec 08 e8 ce 8f 01 00 48 89 04 24
    [ 7562.299044] RSP: 002b:00007ffca52b49e8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    [ 7562.299052] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fa45ec19c00
    [ 7562.299059] RDX: 0000000000000400 RSI: 000000000093f000 RDI: 0000000000000001
    [ 7562.299065] RBP: 000000000093f000 R08: 0000000000000004 R09: 0000000000000000
    [ 7562.299071] R10: 00007ffca52b47b0 R11: 0000000000000246 R12: 0000000000000400
    [ 7562.299077] R13: 000000000093f000 R14: 000000000093f400 R15: 0000000000000000
    [ 7562.299091] ================================================================================

    So, if iostat_enable is enabled, set its value as true.

    Signed-off-by: Sheng Yong <shengyong1@huawei.com>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/f2fs/sysfs.c | 12 +++++++++---
    1 file changed, 9 insertions(+), 3 deletions(-)

    diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c
    index 0575edbe3ed6..f1ab9000b294 100644
    --- a/fs/f2fs/sysfs.c
    +++ b/fs/f2fs/sysfs.c
    @@ -278,10 +278,16 @@ out:
    return count;
    }

    - *ui = t;

    - if (!strcmp(a->attr.name, "iostat_enable") && *ui == 0)
    - f2fs_reset_iostat(sbi);
    + if (!strcmp(a->attr.name, "iostat_enable")) {
    + sbi->iostat_enable = !!t;
    + if (!sbi->iostat_enable)
    + f2fs_reset_iostat(sbi);
    + return count;
    + }
    +
    + *ui = (unsigned int)t;
    +
    return count;
    }

    --
    2.19.1


    \
     
     \ /
      Last update: 2019-04-04 11:21    [W:2.345 / U:0.012 seconds]
    ©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site