• Daniel Santos's avatar
    jffs2: Fix use of uninitialized delayed_work, lockdep breakage · a788c527
    Daniel Santos authored
    jffs2_sync_fs makes the assumption that if CONFIG_JFFS2_FS_WRITEBUFFER
    is defined then a write buffer is available and has been initialized.
    However, this does is not the case when the mtd device has no
    out-of-band buffer:
    
    int jffs2_nand_flash_setup(struct jffs2_sb_info *c)
    {
            if (!c->mtd->oobsize)
                    return 0;
    ...
    
    The resulting call to cancel_delayed_work_sync passing a uninitialized
    (but zeroed) delayed_work struct forces lockdep to become disabled.
    
    [   90.050639] overlayfs: upper fs does not support tmpfile.
    [   90.652264] INFO: trying to register non-static key.
    [   90.662171] the code is fine but needs lockdep annotation.
    [   90.673090] turning off the locking correctness validator.
    [   90.684021] CPU: 0 PID: 1762 Comm: mount_root Not tainted 4.14.63 #0
    [   90.696672] Stack : 00000000 00000000 80d8f6a2 00000038 805f0000 80444600 8fe364f4 805dfbe7
    [   90.713349]         80563a30 000006e2 8068370c 00000001 00000000 00000001 8e2fdc48 ffffffff
    [   90.730020]         00000000 00000000 80d90000 00000000 00000106 00000000 6465746e 312e3420
    [   90.746690]         6b636f6c 03bf0000 f8000000 20676e69 00000000 80000000 00000000 8e2c2a90
    [   90.763362]         80d90000 00000001 00000000 8e2c2a90 00000003 80260dc0 08052098 80680000
    [   90.780033]         ...
    [   90.784902] Call Trace:
    [   90.789793] [<8000f0d8>] show_stack+0xb8/0x148
    [   90.798659] [<8005a000>] register_lock_class+0x270/0x55c
    [   90.809247] [<8005cb64>] __lock_acquire+0x13c/0xf7c
    [   90.818964] [<8005e314>] lock_acquire+0x194/0x1dc
    [   90.828345] [<8003f27c>] flush_work+0x200/0x24c
    [   90.837374] [<80041dfc>] __cancel_work_timer+0x158/0x210
    [   90.847958] [<801a8770>] jffs2_sync_fs+0x20/0x54
    [   90.857173] [<80125cf4>] iterate_supers+0xf4/0x120
    [   90.866729] [<80158fc4>] sys_sync+0x44/0x9c
    [   90.875067] [<80014424>] syscall_common+0x34/0x58
    Signed-off-by: default avatarDaniel Santos <daniel.santos@pobox.com>
    Reviewed-by: default avatarHou Tao <houtao1@huawei.com>
    Signed-off-by: default avatarBoris Brezillon <boris.brezillon@bootlin.com>
    a788c527
Name
Last commit
Last update
..
Kconfig Loading commit data...
LICENCE Loading commit data...
Makefile Loading commit data...
README.Locking Loading commit data...
TODO Loading commit data...
acl.c Loading commit data...
acl.h Loading commit data...
background.c Loading commit data...
build.c Loading commit data...
compr.c Loading commit data...
compr.h Loading commit data...
compr_lzo.c Loading commit data...
compr_rtime.c Loading commit data...
compr_rubin.c Loading commit data...
compr_zlib.c Loading commit data...
debug.c Loading commit data...
debug.h Loading commit data...
dir.c Loading commit data...
erase.c Loading commit data...
file.c Loading commit data...
fs.c Loading commit data...
gc.c Loading commit data...
ioctl.c Loading commit data...
jffs2_fs_i.h Loading commit data...
jffs2_fs_sb.h Loading commit data...
malloc.c Loading commit data...
nodelist.c Loading commit data...
nodelist.h Loading commit data...
nodemgmt.c Loading commit data...
os-linux.h Loading commit data...
read.c Loading commit data...
readinode.c Loading commit data...
scan.c Loading commit data...
security.c Loading commit data...
summary.c Loading commit data...
summary.h Loading commit data...
super.c Loading commit data...
symlink.c Loading commit data...
wbuf.c Loading commit data...
write.c Loading commit data...
writev.c Loading commit data...
xattr.c Loading commit data...
xattr.h Loading commit data...
xattr_trusted.c Loading commit data...
xattr_user.c Loading commit data...