Files
linux/fs
Josef Bacik 63a49862df btrfs: abort the transaction if we fail to inc ref in btrfs_copy_root
commit 867ed321f9 upstream.

While testing my error handling patches, I added a error injection site
at btrfs_inc_extent_ref, to validate the error handling I added was
doing the correct thing.  However I hit a pretty ugly corruption while
doing this check, with the following error injection stack trace:

btrfs_inc_extent_ref
  btrfs_copy_root
    create_reloc_root
      btrfs_init_reloc_root
	btrfs_record_root_in_trans
	  btrfs_start_transaction
	    btrfs_update_inode
	      btrfs_update_time
		touch_atime
		  file_accessed
		    btrfs_file_mmap

This is because we do not catch the error from btrfs_inc_extent_ref,
which in practice would be ENOMEM, which means we lose the extent
references for a root that has already been allocated and inserted,
which is the problem.  Fix this by aborting the transaction if we fail
to do the reference modification.

CC: stable@vger.kernel.org # 4.4+
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-05-16 10:38:33 +09:00
..
2023-05-16 09:45:39 +09:00
2023-05-15 16:47:08 +09:00
2023-05-15 14:09:19 +09:00
2023-05-16 09:39:44 +09:00
2016-05-20 17:58:30 -07:00
2023-05-16 08:48:08 +09:00
2023-05-16 09:46:32 +09:00
2023-05-15 11:49:44 +09:00
2023-05-15 10:36:26 +09:00
2016-09-27 21:20:53 -04:00
2017-07-05 16:18:14 +02:00
2023-05-16 10:33:11 +09:00
2023-05-15 17:11:10 +09:00
2017-09-20 09:59:51 +02:00
2017-09-26 00:32:37 -07:00
2017-09-26 00:32:37 -07:00
2018-02-17 13:21:15 +01:00
2017-06-14 15:06:01 +02:00