• Bart Van Assche's avatar
    f2fs: Restore rwsem lockdep support · c7f91bd4
    Bart Van Assche authored
    Lockdep uses lock class keys in its analysis. init_rwsem() instantiates
    one lock class key with each init_rwsem() user as follows:
    
     #define init_rwsem(sem)                                        \
     do {                                                           \
             static struct lock_class_key __key;                    \
                                                                    \
             __init_rwsem((sem), #sem, &__key);                     \
     } while (0)
    
    Commit e4544b63 ("f2fs: move f2fs to use reader-unfair rwsems") reduced
    the number of lock class keys from one per init_rwsem() user to one per
    file in which init_f2fs_rwsem() is used. This causes the same lock class key
    to be associated with multiple f2fs rwsems and also triggers a number of
    false positive lockdep deadlock reports. Fix this by again instantiating one
    lock class key with each init_f2fs_rwsem() caller.
    
    Cc: Tim Murray <timmurray@google.com>
    Reported-by: syzbot+0b9cadf5fc45a98a5083@syzkaller.appspotmail.com
    Fixes: e4544b63 ("f2fs: move f2fs to use reader-unfair rwsems")
    Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    c7f91bd4
f2fs.h 146 KB