07 Oct, 2020

1 commit

  • syzbot reported warning message:

    Call Trace:
    __dump_stack lib/dump_stack.c:77 [inline]
    dump_stack+0x1d6/0x29e lib/dump_stack.c:118
    register_lock_class+0xf06/0x1520 kernel/locking/lockdep.c:893
    __lock_acquire+0xfd/0x2ae0 kernel/locking/lockdep.c:4320
    lock_acquire+0x148/0x720 kernel/locking/lockdep.c:5029
    __raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
    _raw_spin_lock+0x2a/0x40 kernel/locking/spinlock.c:151
    spin_lock include/linux/spinlock.h:354 [inline]
    exfat_cache_inval_inode+0x30/0x280 fs/exfat/cache.c:226
    exfat_evict_inode+0x124/0x270 fs/exfat/inode.c:660
    evict+0x2bb/0x6d0 fs/inode.c:576
    exfat_fill_super+0x1e07/0x27d0 fs/exfat/super.c:681
    get_tree_bdev+0x3e9/0x5f0 fs/super.c:1342
    vfs_get_tree+0x88/0x270 fs/super.c:1547
    do_new_mount fs/namespace.c:2875 [inline]
    path_mount+0x179d/0x29e0 fs/namespace.c:3192
    do_mount fs/namespace.c:3205 [inline]
    __do_sys_mount fs/namespace.c:3413 [inline]
    __se_sys_mount+0x126/0x180 fs/namespace.c:3390
    do_syscall_64+0x31/0x70 arch/x86/entry/common.c:46
    entry_SYSCALL_64_after_hwframe+0x44/0xa9

    If exfat_read_root() returns an error, spinlock is used in
    exfat_evict_inode() without initialization. This patch combines
    exfat_cache_init_inode() with exfat_inode_init_once() to initialize
    spinlock by slab constructor.

    Fixes: c35b6810c495 ("exfat: add exfat cache")
    Cc: stable@vger.kernel.org # v5.7+
    Reported-by: syzbot
    Signed-off-by: Namjae Jeon

    Namjae Jeon
     

06 Mar, 2020

1 commit

  • This adds the implementation of exfat cache.

    Signed-off-by: Namjae Jeon
    Signed-off-by: Sungjong Seo
    Reviewed-by: Pali Rohár
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Al Viro

    Namjae Jeon