• Zhang Huan's avatar
    jbd2: fix potential memory leak on transaction commit · 6cba611e
    Zhang Huan authored
    There is potential memory leak of journal head in function
    jbd2_journal_commit_transaction. The problem is that JBD2 will not
    reclaim the journal head of commit record if error occurs or journal
    is abotred.
    
    I use the following script to reproduce this issue, on a RHEL6
    system. I found it very easy to reproduce with async commit enabled.
    
    mount /dev/sdb /mnt -o journal_checksum,journal_async_commit
    touch /mnt/xxx
    echo offline > /sys/block/sdb/device/state
    sync
    umount /mnt
    rmmod ext4
    rmmod jbd2
    
    Removal of the jbd2 module will make slab complaining that
    "cache `jbd2_journal_head': can't free all objects".
    Signed-off-by: default avatarZhang Huan <zhhuan@gmail.com>
    Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
    6cba611e
commit.c 31.1 KB