• Josef Bacik's avatar
    Btrfs: fix panic when trying to destroy a newly allocated · a6dbd429
    Josef Bacik authored
    There is a problem where iget5_locked will look for an inode, not find it, and
    then subsequently try to allocate it.  Another CPU will have raced in and
    allocated the inode instead, so when iget5_locked gets the inode spin lock again
    and does a search, it finds the new inode.  So it goes ahead and calls
    destroy_inode on the inode it just allocated.  The problem is we don't set
    BTRFS_I(inode)->root until the new inode is completely initialized.  This patch
    makes us set root to NULL when alloc'ing a new inode, so when we get to
    btrfs_destroy_inode and we see that root is NULL we can just free up the memory
    and continue on.  This fixes the panic
    
    http://www.kerneloops.org/submitresult.php?number=812690
    
    Thanks,
    Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    a6dbd429
inode.c 159 KB