All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Philipp Fent <fent@in.tum.de>,
	Anand Jain <anand.jain@oracle.com>,
	Filipe Manana <fdmanana@suse.com>,
	David Sterba <dsterba@suse.com>
Subject: [PATCH 5.12 143/161] btrfs: fix fsync failure and transaction abort after writes to prealloc extents
Date: Tue,  8 Jun 2021 20:27:53 +0200	[thread overview]
Message-ID: <20210608175950.286075344@linuxfoundation.org> (raw)
In-Reply-To: <20210608175945.476074951@linuxfoundation.org>

From: Filipe Manana <fdmanana@suse.com>

commit ea7036de0d36c4e6c9508f68789e9567d514333a upstream.

When doing a series of partial writes to different ranges of preallocated
extents with transaction commits and fsyncs in between, we can end up with
a checksum items in a log tree. This causes an fsync to fail with -EIO and
abort the transaction, turning the filesystem to RO mode, when syncing the
log.

For this to happen, we need to have a full fsync of a file following one
or more fast fsyncs.

The following example reproduces the problem and explains how it happens:

  $ mkfs.btrfs -f /dev/sdc
  $ mount /dev/sdc /mnt

  # Create our test file with 2 preallocated extents. Leave a 1M hole
  # between them to ensure that we get two file extent items that will
  # never be merged into a single one. The extents are contiguous on disk,
  # which will later result in the checksums for their data to be merged
  # into a single checksum item in the csums btree.
  #
  $ xfs_io -f \
           -c "falloc 0 1M" \
           -c "falloc 3M 3M" \
           /mnt/foobar

  # Now write to the second extent and leave only 1M of it as unwritten,
  # which corresponds to the file range [4M, 5M[.
  #
  # Then fsync the file to flush delalloc and to clear full sync flag from
  # the inode, so that a future fsync will use the fast code path.
  #
  # After the writeback triggered by the fsync we have 3 file extent items
  # that point to the second extent we previously allocated:
  #
  # 1) One file extent item of type BTRFS_FILE_EXTENT_REG that covers the
  #    file range [3M, 4M[
  #
  # 2) One file extent item of type BTRFS_FILE_EXTENT_PREALLOC that covers
  #    the file range [4M, 5M[
  #
  # 3) One file extent item of type BTRFS_FILE_EXTENT_REG that covers the
  #    file range [5M, 6M[
  #
  # All these file extent items have a generation of 6, which is the ID of
  # the transaction where they were created. The split of the original file
  # extent item is done at btrfs_mark_extent_written() when ordered extents
  # complete for the file ranges [3M, 4M[ and [5M, 6M[.
  #
  $ xfs_io -c "pwrite -S 0xab 3M 1M" \
           -c "pwrite -S 0xef 5M 1M" \
           -c "fsync" \
           /mnt/foobar

  # Commit the current transaction. This wipes out the log tree created by
  # the previous fsync.
  sync

  # Now write to the unwritten range of the second extent we allocated,
  # corresponding to the file range [4M, 5M[, and fsync the file, which
  # triggers the fast fsync code path.
  #
  # The fast fsync code path sees that there is a new extent map covering
  # the file range [4M, 5M[ and therefore it will log a checksum item
  # covering the range [1M, 2M[ of the second extent we allocated.
  #
  # Also, after the fsync finishes we no longer have the 3 file extent
  # items that pointed to 3 sections of the second extent we allocated.
  # Instead we end up with a single file extent item pointing to the whole
  # extent, with a type of BTRFS_FILE_EXTENT_REG and a generation of 7 (the
  # current transaction ID). This is due to the file extent item merging we
  # do when completing ordered extents into ranges that point to unwritten
  # (preallocated) extents. This merging is done at
  # btrfs_mark_extent_written().
  #
  $ xfs_io -c "pwrite -S 0xcd 4M 1M" \
           -c "fsync" \
           /mnt/foobar

  # Now do some write to our file outside the range of the second extent
  # that we allocated with fallocate() and truncate the file size from 6M
  # down to 5M.
  #
  # The truncate operation sets the full sync runtime flag on the inode,
  # forcing the next fsync to use the slow code path. It also changes the
  # length of the second file extent item so that it represents the file
  # range [3M, 5M[ and not the range [3M, 6M[ anymore.
  #
  # Finally fsync the file. Since this is a fsync that triggers the slow
  # code path, it will remove all items associated to the inode from the
  # log tree and then it will scan for file extent items in the
  # fs/subvolume tree that have a generation matching the current
  # transaction ID, which is 7. This means it will log 2 file extent
  # items:
  #
  # 1) One for the first extent we allocated, covering the file range
  #    [0, 1M[
  #
  # 2) Another for the first 2M of the second extent we allocated,
  #    covering the file range [3M, 5M[
  #
  # When logging the first file extent item we log a single checksum item
  # that has all the checksums for the entire extent.
  #
  # When logging the second file extent item, we also lookup for the
  # checksums that are associated with the range [0, 2M[ of the second
  # extent we allocated (file range [3M, 5M[), and then we log them with
  # btrfs_csum_file_blocks(). However that results in ending up with a log
  # that has two checksum items with ranges that overlap:
  #
  # 1) One for the range [1M, 2M[ of the second extent we allocated,
  #    corresponding to the file range [4M, 5M[, which we logged in the
  #    previous fsync that used the fast code path;
  #
  # 2) One for the ranges [0, 1M[ and [0, 2M[ of the first and second
  #    extents, respectively, corresponding to the files ranges [0, 1M[
  #    and [3M, 5M[. This one was added during this last fsync that uses
  #    the slow code path and overlaps with the previous one logged by
  #    the previous fast fsync.
  #
  # This happens because when logging the checksums for the second
  # extent, we notice they start at an offset that matches the end of the
  # checksums item that we logged for the first extent, and because both
  # extents are contiguous on disk, btrfs_csum_file_blocks() decides to
  # extend that existing checksums item and append the checksums for the
  # second extent to this item. The end result is we end up with two
  # checksum items in the log tree that have overlapping ranges, as
  # listed before, resulting in the fsync to fail with -EIO and aborting
  # the transaction, turning the filesystem into RO mode.
  #
  $ xfs_io -c "pwrite -S 0xff 0 1M" \
           -c "truncate 5M" \
           -c "fsync" \
           /mnt/foobar
  fsync: Input/output error

After running the example, dmesg/syslog shows the tree checker complained
about the checksum items with overlapping ranges and we aborted the
transaction:

  $ dmesg
  (...)
  [756289.557487] BTRFS critical (device sdc): corrupt leaf: root=18446744073709551610 block=30720000 slot=5, csum end range (16777216) goes beyond the start range (15728640) of the next csum item
  [756289.560583] BTRFS info (device sdc): leaf 30720000 gen 7 total ptrs 7 free space 11677 owner 18446744073709551610
  [756289.562435] BTRFS info (device sdc): refs 2 lock_owner 0 current 2303929
  [756289.563654] 	item 0 key (257 1 0) itemoff 16123 itemsize 160
  [756289.564649] 		inode generation 6 size 5242880 mode 100600
  [756289.565636] 	item 1 key (257 12 256) itemoff 16107 itemsize 16
  [756289.566694] 	item 2 key (257 108 0) itemoff 16054 itemsize 53
  [756289.567725] 		extent data disk bytenr 13631488 nr 1048576
  [756289.568697] 		extent data offset 0 nr 1048576 ram 1048576
  [756289.569689] 	item 3 key (257 108 1048576) itemoff 16001 itemsize 53
  [756289.570682] 		extent data disk bytenr 0 nr 0
  [756289.571363] 		extent data offset 0 nr 2097152 ram 2097152
  [756289.572213] 	item 4 key (257 108 3145728) itemoff 15948 itemsize 53
  [756289.573246] 		extent data disk bytenr 14680064 nr 3145728
  [756289.574121] 		extent data offset 0 nr 2097152 ram 3145728
  [756289.574993] 	item 5 key (18446744073709551606 128 13631488) itemoff 12876 itemsize 3072
  [756289.576113] 	item 6 key (18446744073709551606 128 15728640) itemoff 11852 itemsize 1024
  [756289.577286] BTRFS error (device sdc): block=30720000 write time tree block corruption detected
  [756289.578644] ------------[ cut here ]------------
  [756289.579376] WARNING: CPU: 0 PID: 2303929 at fs/btrfs/disk-io.c:465 csum_one_extent_buffer+0xed/0x100 [btrfs]
  [756289.580857] Modules linked in: btrfs dm_zero dm_dust loop dm_snapshot (...)
  [756289.591534] CPU: 0 PID: 2303929 Comm: xfs_io Tainted: G        W         5.12.0-rc8-btrfs-next-87 #1
  [756289.592580] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014
  [756289.594161] RIP: 0010:csum_one_extent_buffer+0xed/0x100 [btrfs]
  [756289.595122] Code: 5d c3 e8 76 60 (...)
  [756289.597509] RSP: 0018:ffffb51b416cb898 EFLAGS: 00010282
  [756289.598142] RAX: 0000000000000000 RBX: fffff02b8a365bc0 RCX: 0000000000000000
  [756289.598970] RDX: 0000000000000000 RSI: ffffffffa9112421 RDI: 00000000ffffffff
  [756289.599798] RBP: ffffa06500880000 R08: 0000000000000000 R09: 0000000000000000
  [756289.600619] R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000000
  [756289.601456] R13: ffffa0652b1d8980 R14: ffffa06500880000 R15: 0000000000000000
  [756289.602278] FS:  00007f08b23c9800(0000) GS:ffffa0682be00000(0000) knlGS:0000000000000000
  [756289.603217] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
  [756289.603892] CR2: 00005652f32d0138 CR3: 000000025d616003 CR4: 0000000000370ef0
  [756289.604725] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
  [756289.605563] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
  [756289.606400] Call Trace:
  [756289.606704]  btree_csum_one_bio+0x244/0x2b0 [btrfs]
  [756289.607313]  btrfs_submit_metadata_bio+0xb7/0x100 [btrfs]
  [756289.608040]  submit_one_bio+0x61/0x70 [btrfs]
  [756289.608587]  btree_write_cache_pages+0x587/0x610 [btrfs]
  [756289.609258]  ? free_debug_processing+0x1d5/0x240
  [756289.609812]  ? __module_address+0x28/0xf0
  [756289.610298]  ? lock_acquire+0x1a0/0x3e0
  [756289.610754]  ? lock_acquired+0x19f/0x430
  [756289.611220]  ? lock_acquire+0x1a0/0x3e0
  [756289.611675]  do_writepages+0x43/0xf0
  [756289.612101]  ? __filemap_fdatawrite_range+0xa4/0x100
  [756289.612800]  __filemap_fdatawrite_range+0xc5/0x100
  [756289.613393]  btrfs_write_marked_extents+0x68/0x160 [btrfs]
  [756289.614085]  btrfs_sync_log+0x21c/0xf20 [btrfs]
  [756289.614661]  ? finish_wait+0x90/0x90
  [756289.615096]  ? __mutex_unlock_slowpath+0x45/0x2a0
  [756289.615661]  ? btrfs_log_inode_parent+0x3c9/0xdc0 [btrfs]
  [756289.616338]  ? lock_acquire+0x1a0/0x3e0
  [756289.616801]  ? lock_acquired+0x19f/0x430
  [756289.617284]  ? lock_acquire+0x1a0/0x3e0
  [756289.617750]  ? lock_release+0x214/0x470
  [756289.618221]  ? lock_acquired+0x19f/0x430
  [756289.618704]  ? dput+0x20/0x4a0
  [756289.619079]  ? dput+0x20/0x4a0
  [756289.619452]  ? lockref_put_or_lock+0x9/0x30
  [756289.619969]  ? lock_release+0x214/0x470
  [756289.620445]  ? lock_release+0x214/0x470
  [756289.620924]  ? lock_release+0x214/0x470
  [756289.621415]  btrfs_sync_file+0x46a/0x5b0 [btrfs]
  [756289.621982]  do_fsync+0x38/0x70
  [756289.622395]  __x64_sys_fsync+0x10/0x20
  [756289.622907]  do_syscall_64+0x33/0x80
  [756289.623438]  entry_SYSCALL_64_after_hwframe+0x44/0xae
  [756289.624063] RIP: 0033:0x7f08b27fbb7b
  [756289.624588] Code: 0f 05 48 3d 00 (...)
  [756289.626760] RSP: 002b:00007ffe2583f940 EFLAGS: 00000293 ORIG_RAX: 000000000000004a
  [756289.627639] RAX: ffffffffffffffda RBX: 00005652f32cd0f0 RCX: 00007f08b27fbb7b
  [756289.628464] RDX: 00005652f32cbca0 RSI: 00005652f32cd110 RDI: 0000000000000003
  [756289.629323] RBP: 00005652f32cd110 R08: 0000000000000000 R09: 00007f08b28c4be0
  [756289.630172] R10: fffffffffffff39a R11: 0000000000000293 R12: 0000000000000001
  [756289.631007] R13: 00005652f32cd0f0 R14: 0000000000000001 R15: 00005652f32cc480
  [756289.631819] irq event stamp: 0
  [756289.632188] hardirqs last  enabled at (0): [<0000000000000000>] 0x0
  [756289.632911] hardirqs last disabled at (0): [<ffffffffa7e97c29>] copy_process+0x879/0x1cc0
  [756289.633893] softirqs last  enabled at (0): [<ffffffffa7e97c29>] copy_process+0x879/0x1cc0
  [756289.634871] softirqs last disabled at (0): [<0000000000000000>] 0x0
  [756289.635606] ---[ end trace 0a039fdc16ff3fef ]---
  [756289.636179] BTRFS: error (device sdc) in btrfs_sync_log:3136: errno=-5 IO failure
  [756289.637082] BTRFS info (device sdc): forced readonly

Having checksum items covering ranges that overlap is dangerous as in some
cases it can lead to having extent ranges for which we miss checksums
after log replay or getting the wrong checksum item. There were some fixes
in the past for bugs that resulted in this problem, and were explained and
fixed by the following commits:

  27b9a8122ff71a ("Btrfs: fix csum tree corruption, duplicate and outdated checksums")
  b84b8390d6009c ("Btrfs: fix file read corruption after extent cloning and fsync")
  40e046acbd2f36 ("Btrfs: fix missing data checksums after replaying a log tree")
  e289f03ea79bbc ("btrfs: fix corrupt log due to concurrent fsync of inodes with shared extents")

Fix the issue by making btrfs_csum_file_blocks() taking into account the
start offset of the next checksum item when it decides to extend an
existing checksum item, so that it never extends the checksum to end at a
range that goes beyond the start range of the next checksum item.

When we can not access the next checksum item without releasing the path,
simply drop the optimization of extending the previous checksum item and
fallback to inserting a new checksum item - this happens rarely and the
optimization is not significant enough for a log tree in order to justify
the extra complexity, as it would only save a few bytes (the size of a
struct btrfs_item) of leaf space.

This behaviour is only needed when inserting into a log tree because
for the regular checksums tree we never have a case where we try to
insert a range of checksums that overlap with a range that was previously
inserted.

A test case for fstests will follow soon.

Reported-by: Philipp Fent <fent@in.tum.de>
Link: https://lore.kernel.org/linux-btrfs/93c4600e-5263-5cba-adf0-6f47526e7561@in.tum.de/
CC: stable@vger.kernel.org # 5.4+
Tested-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/btrfs/file-item.c |   98 +++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 76 insertions(+), 22 deletions(-)

--- a/fs/btrfs/file-item.c
+++ b/fs/btrfs/file-item.c
@@ -922,6 +922,37 @@ int btrfs_del_csums(struct btrfs_trans_h
 	return ret;
 }
 
+static int find_next_csum_offset(struct btrfs_root *root,
+				 struct btrfs_path *path,
+				 u64 *next_offset)
+{
+	const u32 nritems = btrfs_header_nritems(path->nodes[0]);
+	struct btrfs_key found_key;
+	int slot = path->slots[0] + 1;
+	int ret;
+
+	if (nritems == 0 || slot >= nritems) {
+		ret = btrfs_next_leaf(root, path);
+		if (ret < 0) {
+			return ret;
+		} else if (ret > 0) {
+			*next_offset = (u64)-1;
+			return 0;
+		}
+		slot = path->slots[0];
+	}
+
+	btrfs_item_key_to_cpu(path->nodes[0], &found_key, slot);
+
+	if (found_key.objectid != BTRFS_EXTENT_CSUM_OBJECTID ||
+	    found_key.type != BTRFS_EXTENT_CSUM_KEY)
+		*next_offset = (u64)-1;
+	else
+		*next_offset = found_key.offset;
+
+	return 0;
+}
+
 int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans,
 			   struct btrfs_root *root,
 			   struct btrfs_ordered_sum *sums)
@@ -937,7 +968,6 @@ int btrfs_csum_file_blocks(struct btrfs_
 	u64 total_bytes = 0;
 	u64 csum_offset;
 	u64 bytenr;
-	u32 nritems;
 	u32 ins_size;
 	int index = 0;
 	int found_next;
@@ -980,26 +1010,10 @@ again:
 			goto insert;
 		}
 	} else {
-		int slot = path->slots[0] + 1;
-		/* we didn't find a csum item, insert one */
-		nritems = btrfs_header_nritems(path->nodes[0]);
-		if (!nritems || (path->slots[0] >= nritems - 1)) {
-			ret = btrfs_next_leaf(root, path);
-			if (ret < 0) {
-				goto out;
-			} else if (ret > 0) {
-				found_next = 1;
-				goto insert;
-			}
-			slot = path->slots[0];
-		}
-		btrfs_item_key_to_cpu(path->nodes[0], &found_key, slot);
-		if (found_key.objectid != BTRFS_EXTENT_CSUM_OBJECTID ||
-		    found_key.type != BTRFS_EXTENT_CSUM_KEY) {
-			found_next = 1;
-			goto insert;
-		}
-		next_offset = found_key.offset;
+		/* We didn't find a csum item, insert one. */
+		ret = find_next_csum_offset(root, path, &next_offset);
+		if (ret < 0)
+			goto out;
 		found_next = 1;
 		goto insert;
 	}
@@ -1055,8 +1069,48 @@ extend_csum:
 		tmp = sums->len - total_bytes;
 		tmp >>= fs_info->sectorsize_bits;
 		WARN_ON(tmp < 1);
+		extend_nr = max_t(int, 1, tmp);
+
+		/*
+		 * A log tree can already have checksum items with a subset of
+		 * the checksums we are trying to log. This can happen after
+		 * doing a sequence of partial writes into prealloc extents and
+		 * fsyncs in between, with a full fsync logging a larger subrange
+		 * of an extent for which a previous fast fsync logged a smaller
+		 * subrange. And this happens in particular due to merging file
+		 * extent items when we complete an ordered extent for a range
+		 * covered by a prealloc extent - this is done at
+		 * btrfs_mark_extent_written().
+		 *
+		 * So if we try to extend the previous checksum item, which has
+		 * a range that ends at the start of the range we want to insert,
+		 * make sure we don't extend beyond the start offset of the next
+		 * checksum item. If we are at the last item in the leaf, then
+		 * forget the optimization of extending and add a new checksum
+		 * item - it is not worth the complexity of releasing the path,
+		 * getting the first key for the next leaf, repeat the btree
+		 * search, etc, because log trees are temporary anyway and it
+		 * would only save a few bytes of leaf space.
+		 */
+		if (root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID) {
+			if (path->slots[0] + 1 >=
+			    btrfs_header_nritems(path->nodes[0])) {
+				ret = find_next_csum_offset(root, path, &next_offset);
+				if (ret < 0)
+					goto out;
+				found_next = 1;
+				goto insert;
+			}
+
+			ret = find_next_csum_offset(root, path, &next_offset);
+			if (ret < 0)
+				goto out;
+
+			tmp = (next_offset - bytenr) >> fs_info->sectorsize_bits;
+			if (tmp <= INT_MAX)
+				extend_nr = min_t(int, extend_nr, tmp);
+		}
 
-		extend_nr = max_t(int, 1, (int)tmp);
 		diff = (csum_offset + extend_nr) * csum_size;
 		diff = min(diff,
 			   MAX_CSUM_ITEMS(fs_info, csum_size) * csum_size);



  parent reply	other threads:[~2021-06-08 19:31 UTC|newest]

Thread overview: 172+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-08 18:25 [PATCH 5.12 000/161] 5.12.10-rc1 review Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 001/161] mt76: mt7921: add rcu section in mt7921_mcu_tx_rate_report Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 002/161] mt76: mt7921: fix possible AOOB issue " Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 003/161] mt76: mt76x0e: fix device hang during suspend/resume Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 004/161] hwmon: (dell-smm-hwmon) Fix index values Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 005/161] hwmon: (pmbus/isl68137) remove READ_TEMPERATURE_3 for RAA228228 Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 006/161] netfilter: conntrack: unregister ipv4 sockopts on error unwind Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 007/161] efi/fdt: fix panic when no valid fdt found Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 008/161] efi: Allow EFI_MEMORY_XP and EFI_MEMORY_RO both to be cleared Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 009/161] efi/libstub: prevent read overflow in find_file_option() Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 010/161] efi: cper: fix snprintf() use in cper_dimm_err_location() Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 011/161] vfio/pci: Fix error return code in vfio_ecap_init() Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 012/161] vfio/pci: zap_vma_ptes() needs MMU Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 013/161] samples: vfio-mdev: fix error handing in mdpy_fb_probe() Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 014/161] vfio/platform: fix module_put call in error flow Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 015/161] ipvs: ignore IP_VS_SVC_F_HASHED flag when adding service Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 016/161] HID: logitech-hidpp: initialize level variable Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 017/161] HID: pidff: fix error return code in hid_pidff_init() Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 018/161] HID: amd_sfh: Fix memory leak in amd_sfh_work Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 019/161] HID: i2c-hid: fix format string mismatch Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 020/161] kbuild: Quote OBJCOPY var to avoid a pahole call break the build Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 021/161] devlink: Correct VIRTUAL port to not have phys_port attributes Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 022/161] net/sched: act_ct: Offload connections with commit action Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 023/161] net/sched: act_ct: Fix ct template allocation for zone 0 Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 024/161] mptcp: fix sk_forward_memory corruption on retransmission Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 025/161] mptcp: always parse mptcp options for MPC reqsk Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 026/161] mptcp: do not reset MP_CAPABLE subflow on mapping errors Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 027/161] nvme-rdma: fix in-casule data send for chained sgls Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 028/161] ACPICA: Clean up context mutex during object deletion Greg Kroah-Hartman
2021-06-08 18:25 ` [PATCH 5.12 029/161] perf probe: Fix NULL pointer dereference in convert_variable_location() Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 030/161] net: dsa: tag_8021q: fix the VLAN IDs used for encoding sub-VLANs Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 031/161] net: sock: fix in-kernel mark setting Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 032/161] net/tls: Replace TLS_RX_SYNC_RUNNING with RCU Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 033/161] net/tls: Fix use-after-free after the TLS device goes down and up Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 034/161] net/mlx5e: Fix incompatible casting Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 035/161] net/mlx5: Check firmware sync reset requested is set before trying to abort it Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 036/161] net/mlx5e: Check for needed capability for cvlan matching Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 037/161] net/mlx5e: Fix adding encap rules to slow path Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 038/161] net/mlx5: DR, Create multi-destination flow table with level less than 64 Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 039/161] nvmet: fix freeing unallocated p2pmem Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 040/161] netfilter: nft_ct: skip expectations for confirmed conntrack Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 041/161] netfilter: nfnetlink_cthelper: hit EBUSY on updates if size mismatches Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 042/161] drm/i915/selftests: Fix return value check in live_breadcrumbs_smoketest() Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 043/161] bpf, lockdown, audit: Fix buggy SELinux lockdown permission checks Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 044/161] ieee802154: fix error return code in ieee802154_add_iface() Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 045/161] ieee802154: fix error return code in ieee802154_llsec_getparams() Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 046/161] igb: Fix XDP with PTP enabled Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 047/161] igb: add correct exception tracing for XDP Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 048/161] ixgbevf: " Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 049/161] ice: track AF_XDP ZC enabled queues in bitmap Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 050/161] cxgb4: fix regression with HASH tc prio value update Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 051/161] ipv6: Fix KASAN: slab-out-of-bounds Read in fib6_nh_flush_exceptions Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 052/161] ice: Fix allowing VF to request more/less queues via virtchnl Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 053/161] ice: Fix VFR issues for AVF drivers that expect ATQLEN cleared Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 054/161] ice: handle the VF VSI rebuild failure Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 055/161] ice: report supported and advertised autoneg using PHY capabilities Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 056/161] ice: Allow all LLDP packets from PF to Tx Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 057/161] i2c: qcom-geni: Add shutdown callback for i2c Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 058/161] sch_htb: fix refcount leak in htb_parent_to_leaf_offload Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 059/161] cxgb4: avoid link re-train during TC-MQPRIO configuration Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 060/161] i40e: optimize for XDP_REDIRECT in xsk path Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 061/161] i40e: add correct exception tracing for XDP Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 062/161] ice: optimize for XDP_REDIRECT in xsk path Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 063/161] ice: add correct exception tracing for XDP Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 064/161] ixgbe: optimize for XDP_REDIRECT in xsk path Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 065/161] ixgbe: add correct exception tracing for XDP Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 066/161] arm64: dts: ti: j7200-main: Mark Main NAVSS as dma-coherent Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 067/161] optee: use export_uuid() to copy client UUID Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 068/161] bus: ti-sysc: Fix am335x resume hang for usb otg module Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 069/161] arm64: dts: ls1028a: fix memory node Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 070/161] arm64: dts: zii-ultra: remove second GEN_3V3 regulator instance Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 071/161] arm64: dts: zii-ultra: fix 12V_MAIN voltage Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 072/161] arm64: dts: freescale: sl28: var4: fix RGMII clock and voltage Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 073/161] arm64: dts: freescale: sl28: var1: " Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 074/161] ARM: dts: imx7d-meerkat96: Fix the tuning-step property Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 075/161] ARM: dts: imx7d-pico: " Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 076/161] ARM: dts: imx: emcon-avari: Fix nxp,pca8574 #gpio-cells Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 077/161] bus: ti-sysc: Fix flakey idling of uarts and stop using swsup_sidle_act Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 078/161] arm64: meson: select COMMON_CLK Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 079/161] tipc: add extack messages for bearer/media failure Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 080/161] tipc: fix unique bearer names sanity check Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 081/161] serial: stm32: fix threaded interrupt handling Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 082/161] riscv: vdso: fix and clean-up Makefile Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 083/161] libceph: dont set global_id until we get an auth ticket Greg Kroah-Hartman
2021-06-08 19:07   ` Ilya Dryomov
2021-06-08 19:24     ` Sasha Levin
2021-06-08 19:39       ` Ilya Dryomov
2021-06-08 18:26 ` [PATCH 5.12 084/161] amdgpu: fix GEM obj leak in amdgpu_display_user_framebuffer_create Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 085/161] io_uring: fix link timeout refs Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 086/161] io_uring: use better types for cflags Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 087/161] io_uring: wrap io_kiocb reference count manipulation in helpers Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 088/161] io_uring: fix ltout double free on completion race Greg Kroah-Hartman
2021-06-08 18:26 ` [PATCH 5.12 089/161] drm/amdgpu/vcn3: add cancel_delayed_work_sync before power gate Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 090/161] drm/amdgpu/jpeg2.5: " Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 091/161] drm/amdgpu/jpeg3: " Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 092/161] Bluetooth: fix the erroneous flush_work() order Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 093/161] Bluetooth: use correct lock to prevent UAF of hdev object Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 094/161] wireguard: do not use -O3 Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 095/161] wireguard: peer: allocate in kmem_cache Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 096/161] wireguard: use synchronize_net rather than synchronize_rcu Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 097/161] wireguard: selftests: remove old conntrack kconfig value Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 098/161] wireguard: selftests: make sure rp_filter is disabled on vethc Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 099/161] wireguard: allowedips: initialize list head in selftest Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 100/161] wireguard: allowedips: remove nodes in O(1) Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 101/161] wireguard: allowedips: allocate nodes in kmem_cache Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 102/161] wireguard: allowedips: free empty intermediate nodes when removing single node Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 103/161] net: caif: added cfserl_release function Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 104/161] net: caif: add proper error handling Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 105/161] net: caif: fix memory leak in caif_device_notify Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 106/161] net: caif: fix memory leak in cfusbl_device_notify Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 107/161] HID: i2c-hid: Skip ELAN power-on command after reset Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 108/161] HID: magicmouse: fix NULL-deref on disconnect Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 109/161] HID: multitouch: require Finger field to mark Win8 reports as MT Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 110/161] gfs2: fix scheduling while atomic bug in glocks Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 111/161] ALSA: timer: Fix master timer notification Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 112/161] ALSA: hda: Fix for mute key LED for HP Pavilion 15-CK0xx Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 113/161] ALSA: hda: update the power_state during the direct-complete Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 114/161] ARM: dts: imx6dl-yapp4: Fix RGMII connection to QCA8334 switch Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 115/161] ARM: dts: imx6q-dhcom: Add PU,VDD1P1,VDD2P5 regulators Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 116/161] ext4: fix memory leak in ext4_fill_super Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 117/161] ext4: fix bug on in ext4_es_cache_extent as ext4_split_extent_at failed Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 118/161] ext4: fix fast commit alignment issues Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 119/161] ext4: fix memory leak in ext4_mb_init_backend on error path Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 120/161] ext4: fix accessing uninit percpu counter variable with fast_commit Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 121/161] usb: dwc2: Fix build in periphal-only mode Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 122/161] Revert "MIPS: make userspace mapping young by default" Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 123/161] kfence: maximize allocation wait timeout duration Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 124/161] kfence: use TASK_IDLE when awaiting allocation Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 125/161] pid: take a reference when initializing `cad_pid` Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 126/161] ocfs2: fix data corruption by fallocate Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 127/161] mm/debug_vm_pgtable: fix alignment for pmd/pud_advanced_tests() Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 128/161] mm/page_alloc: fix counting of free pages after take off from buddy Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 129/161] scsi: lpfc: Fix failure to transmit ABTS on FC link Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 130/161] x86/cpufeatures: Force disable X86_FEATURE_ENQCMD and remove update_pasid() Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 131/161] dmaengine: idxd: Use cpu_feature_enabled() Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 132/161] x86/sev: Check SME/SEV support in CPUID first Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 133/161] KVM: PPC: Book3S HV: Save host FSCR in the P7/8 path Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 134/161] nfc: fix NULL ptr dereference in llcp_sock_getname() after failed connect Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 135/161] drm/amdgpu: Dont query CE and UE errors Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 136/161] drm/amdgpu: make sure we unpin the UVD BO Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 137/161] x86/apic: Mark _all_ legacy interrupts when IO/APIC is missing Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 138/161] x86/thermal: Fix LVT thermal setup for SMI delivery mode Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 139/161] powerpc/kprobes: Fix validation of prefixed instructions across page boundary Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 140/161] btrfs: mark ordered extent and inode with error if we fail to finish Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 141/161] btrfs: fix error handling in btrfs_del_csums Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 142/161] btrfs: return errors from btrfs_del_csums in cleanup_ref_head Greg Kroah-Hartman
2021-06-08 18:27 ` Greg Kroah-Hartman [this message]
2021-06-08 18:27 ` [PATCH 5.12 144/161] btrfs: check error value from btrfs_update_inode in tree log Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 145/161] btrfs: fixup error handling in fixup_inode_link_counts Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 146/161] btrfs: abort in rename_exchange if we fail to insert the second ref Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 147/161] btrfs: fix deadlock when cloning inline extents and low on available space Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 148/161] mm, hugetlb: fix simple resv_huge_pages underflow on UFFDIO_COPY Greg Kroah-Hartman
2021-06-08 18:27 ` [PATCH 5.12 149/161] drm/msm/dpu: always use mdp device to scale bandwidth Greg Kroah-Hartman
2021-06-08 18:28 ` [PATCH 5.12 150/161] KVM: SVM: Truncate GPR value for DR and CR accesses in !64-bit mode Greg Kroah-Hartman
2021-06-08 18:28 ` [PATCH 5.12 151/161] x86/kvm: Teardown PV features on boot CPU as well Greg Kroah-Hartman
2021-06-08 18:28 ` [PATCH 5.12 152/161] x86/kvm: Disable kvmclock on all CPUs on shutdown Greg Kroah-Hartman
2021-06-08 18:28 ` [PATCH 5.12 153/161] x86/kvm: Disable all PV features on crash Greg Kroah-Hartman
2021-06-08 18:28 ` [PATCH 5.12 154/161] KVM: arm64: Commit pending PC adjustemnts before returning to userspace Greg Kroah-Hartman
2021-06-08 18:28 ` [PATCH 5.12 155/161] KVM: arm64: Resolve all pending PC updates before immediate exit Greg Kroah-Hartman
2021-06-08 18:28 ` [PATCH 5.12 156/161] ARM: OMAP1: isp1301-omap: Add missing gpiod_add_lookup_table function Greg Kroah-Hartman
2021-06-08 18:28 ` [PATCH 5.12 157/161] i2c: qcom-geni: Suspend and resume the bus during SYSTEM_SLEEP_PM ops Greg Kroah-Hartman
2021-06-08 18:28 ` [PATCH 5.12 158/161] x86/fault: Dont send SIGSEGV twice on SEGV_PKUERR Greg Kroah-Hartman
2021-06-08 18:28 ` [PATCH 5.12 159/161] netfilter: nf_tables: missing error reporting for not selected expressions Greg Kroah-Hartman
2021-06-08 18:28 ` [PATCH 5.12 160/161] xen-netback: take a reference to the RX task thread Greg Kroah-Hartman
2021-06-08 18:28 ` [PATCH 5.12 161/161] neighbour: allow NUD_NOARP entries to be forced GCed Greg Kroah-Hartman
2021-06-08 23:56 ` [PATCH 5.12 000/161] 5.12.10-rc1 review Fox Chen
2021-06-09  2:54 ` Shuah Khan
2021-06-09  7:48 ` Naresh Kamboju
2021-06-09  9:34 ` Jon Hunter
2021-06-09 18:50 ` Guenter Roeck
2021-06-09 18:57 ` Florian Fainelli
2021-06-09 20:47 ` Justin Forbes

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210608175950.286075344@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=anand.jain@oracle.com \
    --cc=dsterba@suse.com \
    --cc=fdmanana@suse.com \
    --cc=fent@in.tum.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.