• Pranay Kr. Srivastava's avatar
    ext4: Fix WARN_ON_ONCE in ext4_commit_super() · 4743f839
    Pranay Kr. Srivastava authored
    If there are racing calls to ext4_commit_super() it's possible for
    another writeback of the superblock to result in the buffer being
    marked with an error after we check if the buffer is marked as having
    a write error and the buffer up-to-date flag is set again.  If that
    happens mark_buffer_dirty() can end up throwing a WARN_ON_ONCE.
    
    Fix this by moving this check to write before we call
    write_buffer_dirty(), and keeping the buffer locked during this whole
    sequence.
    Signed-off-by: default avatarPranay Kr. Srivastava <pranjas@gmail.com>
    Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    4743f839
super.c 154 KB