• J
    btrfs: fix double put of block group with nocow · 230ed397
    Josef Bacik 提交于
    While debugging a patch that I wrote I was hitting use-after-free panics
    when accessing block groups on unmount.  This turned out to be because
    in the nocow case if we bail out of doing the nocow for whatever reason
    we need to call btrfs_dec_nocow_writers() if we called the inc.  This
    puts our block group, but a few error cases does
    
    if (nocow) {
        btrfs_dec_nocow_writers();
        goto error;
    }
    
    unfortunately, error is
    
    error:
    	if (nocow)
    		btrfs_dec_nocow_writers();
    
    so we get a double put on our block group.  Fix this by dropping the
    error cases calling of btrfs_dec_nocow_writers(), as it's handled at the
    error label now.
    
    Fixes: 762bf098 ("btrfs: improve error handling in run_delalloc_nocow")
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: NFilipe Manana <fdmanana@suse.com>
    Signed-off-by: NJosef Bacik <josef@toxicpanda.com>
    Reviewed-by: NDavid Sterba <dsterba@suse.com>
    Signed-off-by: NDavid Sterba <dsterba@suse.com>
    230ed397
inode.c 284.5 KB