stable.vger.kernel.org archive mirror
 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, Josef Bacik <josef@toxicpanda.com>,
	Filipe Manana <fdmanana@suse.com>,
	David Sterba <dsterba@suse.com>
Subject: [PATCH 5.16 179/186] btrfs: fallback to blocking mode when doing async dio over multiple extents
Date: Mon,  7 Mar 2022 10:20:17 +0100	[thread overview]
Message-ID: <20220307091659.084842846@linuxfoundation.org> (raw)
In-Reply-To: <20220307091654.092878898@linuxfoundation.org>

From: Filipe Manana <fdmanana@suse.com>

commit ca93e44bfb5fd7996b76f0f544999171f647f93b upstream.

Some users recently reported that MariaDB was getting a read corruption
when using io_uring on top of btrfs. This started to happen in 5.16,
after commit 51bd9563b6783d ("btrfs: fix deadlock due to page faults
during direct IO reads and writes"). That changed btrfs to use the new
iomap flag IOMAP_DIO_PARTIAL and to disable page faults before calling
iomap_dio_rw(). This was necessary to fix deadlocks when the iovector
corresponds to a memory mapped file region. That type of scenario is
exercised by test case generic/647 from fstests.

For this MariaDB scenario, we attempt to read 16K from file offset X
using IOCB_NOWAIT and io_uring. In that range we have 4 extents, each
with a size of 4K, and what happens is the following:

1) btrfs_direct_read() disables page faults and calls iomap_dio_rw();

2) iomap creates a struct iomap_dio object, its reference count is
   initialized to 1 and its ->size field is initialized to 0;

3) iomap calls btrfs_dio_iomap_begin() with file offset X, which finds
   the first 4K extent, and setups an iomap for this extent consisting
   of a single page;

4) At iomap_dio_bio_iter(), we are able to access the first page of the
   buffer (struct iov_iter) with bio_iov_iter_get_pages() without
   triggering a page fault;

5) iomap submits a bio for this 4K extent
   (iomap_dio_submit_bio() -> btrfs_submit_direct()) and increments
   the refcount on the struct iomap_dio object to 2; The ->size field
   of the struct iomap_dio object is incremented to 4K;

6) iomap calls btrfs_iomap_begin() again, this time with a file
   offset of X + 4K. There we setup an iomap for the next extent
   that also has a size of 4K;

7) Then at iomap_dio_bio_iter() we call bio_iov_iter_get_pages(),
   which tries to access the next page (2nd page) of the buffer.
   This triggers a page fault and returns -EFAULT;

8) At __iomap_dio_rw() we see the -EFAULT, but we reset the error
   to 0 because we passed the flag IOMAP_DIO_PARTIAL to iomap and
   the struct iomap_dio object has a ->size value of 4K (we submitted
   a bio for an extent already). The 'wait_for_completion' variable
   is not set to true, because our iocb has IOCB_NOWAIT set;

9) At the bottom of __iomap_dio_rw(), we decrement the reference count
   of the struct iomap_dio object from 2 to 1. Because we were not
   the only ones holding a reference on it and 'wait_for_completion' is
   set to false, -EIOCBQUEUED is returned to btrfs_direct_read(), which
   just returns it up the callchain, up to io_uring;

10) The bio submitted for the first extent (step 5) completes and its
    bio endio function, iomap_dio_bio_end_io(), decrements the last
    reference on the struct iomap_dio object, resulting in calling
    iomap_dio_complete_work() -> iomap_dio_complete().

11) At iomap_dio_complete() we adjust the iocb->ki_pos from X to X + 4K
    and return 4K (the amount of io done) to iomap_dio_complete_work();

12) iomap_dio_complete_work() calls the iocb completion callback,
    iocb->ki_complete() with a second argument value of 4K (total io
    done) and the iocb with the adjust ki_pos of X + 4K. This results
    in completing the read request for io_uring, leaving it with a
    result of 4K bytes read, and only the first page of the buffer
    filled in, while the remaining 3 pages, corresponding to the other
    3 extents, were not filled;

13) For the application, the result is unexpected because if we ask
    to read N bytes, it expects to get N bytes read as long as those
    N bytes don't cross the EOF (i_size).

MariaDB reports this as an error, as it's not expecting a short read,
since it knows it's asking for read operations fully within the i_size
boundary. This is typical in many applications, but it may also be
questionable if they should react to such short reads by issuing more
read calls to get the remaining data. Nevertheless, the short read
happened due to a change in btrfs regarding how it deals with page
faults while in the middle of a read operation, and there's no reason
why btrfs can't have the previous behaviour of returning the whole data
that was requested by the application.

The problem can also be triggered with the following simple program:

  /* Get O_DIRECT */
  #ifndef _GNU_SOURCE
  #define _GNU_SOURCE
  #endif

  #include <stdio.h>
  #include <stdlib.h>
  #include <unistd.h>
  #include <fcntl.h>
  #include <errno.h>
  #include <string.h>
  #include <liburing.h>

  int main(int argc, char *argv[])
  {
      char *foo_path;
      struct io_uring ring;
      struct io_uring_sqe *sqe;
      struct io_uring_cqe *cqe;
      struct iovec iovec;
      int fd;
      long pagesize;
      void *write_buf;
      void *read_buf;
      ssize_t ret;
      int i;

      if (argc != 2) {
          fprintf(stderr, "Use: %s <directory>\n", argv[0]);
          return 1;
      }

      foo_path = malloc(strlen(argv[1]) + 5);
      if (!foo_path) {
          fprintf(stderr, "Failed to allocate memory for file path\n");
          return 1;
      }
      strcpy(foo_path, argv[1]);
      strcat(foo_path, "/foo");

      /*
       * Create file foo with 2 extents, each with a size matching
       * the page size. Then allocate a buffer to read both extents
       * with io_uring, using O_DIRECT and IOCB_NOWAIT. Before doing
       * the read with io_uring, access the first page of the buffer
       * to fault it in, so that during the read we only trigger a
       * page fault when accessing the second page of the buffer.
       */
       fd = open(foo_path, O_CREAT | O_TRUNC | O_WRONLY |
                O_DIRECT, 0666);
       if (fd == -1) {
           fprintf(stderr,
                   "Failed to create file 'foo': %s (errno %d)",
                   strerror(errno), errno);
           return 1;
       }

       pagesize = sysconf(_SC_PAGE_SIZE);
       ret = posix_memalign(&write_buf, pagesize, 2 * pagesize);
       if (ret) {
           fprintf(stderr, "Failed to allocate write buffer\n");
           return 1;
       }

       memset(write_buf, 0xab, pagesize);
       memset(write_buf + pagesize, 0xcd, pagesize);

       /* Create 2 extents, each with a size matching page size. */
       for (i = 0; i < 2; i++) {
           ret = pwrite(fd, write_buf + i * pagesize, pagesize,
                        i * pagesize);
           if (ret != pagesize) {
               fprintf(stderr,
                     "Failed to write to file, ret = %ld errno %d (%s)\n",
                      ret, errno, strerror(errno));
               return 1;
           }
           ret = fsync(fd);
           if (ret != 0) {
               fprintf(stderr, "Failed to fsync file\n");
               return 1;
           }
       }

       close(fd);
       fd = open(foo_path, O_RDONLY | O_DIRECT);
       if (fd == -1) {
           fprintf(stderr,
                   "Failed to open file 'foo': %s (errno %d)",
                   strerror(errno), errno);
           return 1;
       }

       ret = posix_memalign(&read_buf, pagesize, 2 * pagesize);
       if (ret) {
           fprintf(stderr, "Failed to allocate read buffer\n");
           return 1;
       }

       /*
        * Fault in only the first page of the read buffer.
        * We want to trigger a page fault for the 2nd page of the
        * read buffer during the read operation with io_uring
        * (O_DIRECT and IOCB_NOWAIT).
        */
       memset(read_buf, 0, 1);

       ret = io_uring_queue_init(1, &ring, 0);
       if (ret != 0) {
           fprintf(stderr, "Failed to create io_uring queue\n");
           return 1;
       }

       sqe = io_uring_get_sqe(&ring);
       if (!sqe) {
           fprintf(stderr, "Failed to get io_uring sqe\n");
           return 1;
       }

       iovec.iov_base = read_buf;
       iovec.iov_len = 2 * pagesize;
       io_uring_prep_readv(sqe, fd, &iovec, 1, 0);

       ret = io_uring_submit_and_wait(&ring, 1);
       if (ret != 1) {
           fprintf(stderr,
                   "Failed at io_uring_submit_and_wait()\n");
           return 1;
       }

       ret = io_uring_wait_cqe(&ring, &cqe);
       if (ret < 0) {
           fprintf(stderr, "Failed at io_uring_wait_cqe()\n");
           return 1;
       }

       printf("io_uring read result for file foo:\n\n");
       printf("  cqe->res == %d (expected %d)\n", cqe->res, 2 * pagesize);
       printf("  memcmp(read_buf, write_buf) == %d (expected 0)\n",
              memcmp(read_buf, write_buf, 2 * pagesize));

       io_uring_cqe_seen(&ring, cqe);
       io_uring_queue_exit(&ring);

       return 0;
  }

When running it on an unpatched kernel:

  $ gcc io_uring_test.c -luring
  $ mkfs.btrfs -f /dev/sda
  $ mount /dev/sda /mnt/sda
  $ ./a.out /mnt/sda
  io_uring read result for file foo:

    cqe->res == 4096 (expected 8192)
    memcmp(read_buf, write_buf) == -205 (expected 0)

After this patch, the read always returns 8192 bytes, with the buffer
filled with the correct data. Although that reproducer always triggers
the bug in my test vms, it's possible that it will not be so reliable
on other environments, as that can happen if the bio for the first
extent completes and decrements the reference on the struct iomap_dio
object before we do the atomic_dec_and_test() on the reference at
__iomap_dio_rw().

Fix this in btrfs by having btrfs_dio_iomap_begin() return -EAGAIN
whenever we try to satisfy a non blocking IO request (IOMAP_NOWAIT flag
set) over a range that spans multiple extents (or a mix of extents and
holes). This avoids returning success to the caller when we only did
partial IO, which is not optimal for writes and for reads it's actually
incorrect, as the caller doesn't expect to get less bytes read than it has
requested (unless EOF is crossed), as previously mentioned. This is also
the type of behaviour that xfs follows (xfs_direct_write_iomap_begin()),
even though it doesn't use IOMAP_DIO_PARTIAL.

A test case for fstests will follow soon.

Link: https://lore.kernel.org/linux-btrfs/CABVffEM0eEWho+206m470rtM0d9J8ue85TtR-A_oVTuGLWFicA@mail.gmail.com/
Link: https://lore.kernel.org/linux-btrfs/CAHF2GV6U32gmqSjLe=XKgfcZAmLCiH26cJ2OnHGp5x=VAH4OHQ@mail.gmail.com/
CC: stable@vger.kernel.org # 5.16+
Reviewed-by: Josef Bacik <josef@toxicpanda.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/inode.c |   28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -7965,6 +7965,34 @@ static int btrfs_dio_iomap_begin(struct
 	}
 
 	len = min(len, em->len - (start - em->start));
+
+	/*
+	 * If we have a NOWAIT request and the range contains multiple extents
+	 * (or a mix of extents and holes), then we return -EAGAIN to make the
+	 * caller fallback to a context where it can do a blocking (without
+	 * NOWAIT) request. This way we avoid doing partial IO and returning
+	 * success to the caller, which is not optimal for writes and for reads
+	 * it can result in unexpected behaviour for an application.
+	 *
+	 * When doing a read, because we use IOMAP_DIO_PARTIAL when calling
+	 * iomap_dio_rw(), we can end up returning less data then what the caller
+	 * asked for, resulting in an unexpected, and incorrect, short read.
+	 * That is, the caller asked to read N bytes and we return less than that,
+	 * which is wrong unless we are crossing EOF. This happens if we get a
+	 * page fault error when trying to fault in pages for the buffer that is
+	 * associated to the struct iov_iter passed to iomap_dio_rw(), and we
+	 * have previously submitted bios for other extents in the range, in
+	 * which case iomap_dio_rw() may return us EIOCBQUEUED if not all of
+	 * those bios have completed by the time we get the page fault error,
+	 * which we return back to our caller - we should only return EIOCBQUEUED
+	 * after we have submitted bios for all the extents in the range.
+	 */
+	if ((flags & IOMAP_NOWAIT) && len < length) {
+		free_extent_map(em);
+		ret = -EAGAIN;
+		goto unlock_err;
+	}
+
 	if (write) {
 		ret = btrfs_get_blocks_direct_write(&em, inode, dio_data,
 						    start, len);



  parent reply	other threads:[~2022-03-07 10:21 UTC|newest]

Thread overview: 188+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-07  9:17 [PATCH 5.16 000/186] 5.16.13-rc1 review Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 001/186] mac80211_hwsim: report NOACK frames in tx_status Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 002/186] mac80211_hwsim: initialize ieee80211_tx_info at hw_scan_work Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 003/186] i2c: bcm2835: Avoid clock stretching timeouts Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 004/186] ASoC: rt5682s: do not block workqueue if card is unbound Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 005/186] ASoC: rt5668: " Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 006/186] ASoC: rt5682: " Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 007/186] regulator: core: fix false positive in regulator_late_cleanup() Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 008/186] Input: clear BTN_RIGHT/MIDDLE on buttonpads Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 009/186] btrfs: get rid of warning on transaction commit when using flushoncommit Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 010/186] KVM: arm64: vgic: Read HW interrupt pending state from the HW Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 011/186] block: loop:use kstatfs.f_bsize of backing file to set discard granularity Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 012/186] tipc: fix a bit overflow in tipc_crypto_key_rcv() Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 013/186] cifs: do not use uninitialized data in the owner/group sid Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 014/186] cifs: fix double free race when mount fails in cifs_get_root() Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 015/186] HID: amd_sfh: Handle amd_sfh work buffer in PM ops Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 016/186] HID: amd_sfh: Add functionality to clear interrupts Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 017/186] HID: amd_sfh: Add interrupt handler to process interrupts Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 018/186] cifs: modefromsids must add an ACE for authenticated users Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 019/186] selftests/seccomp: Fix seccomp failure by adding missing headers Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 020/186] drm/amd/pm: correct UMD pstate clocks for Dimgrey Cavefish and Beige Goby Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 021/186] selftests/ftrace: Do not trace do_softirq because of PREEMPT_RT Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 022/186] dmaengine: shdma: Fix runtime PM imbalance on error Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 023/186] i2c: cadence: allow COMPILE_TEST Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 024/186] i2c: imx: " Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 025/186] i2c: qup: " Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 026/186] net: usb: cdc_mbim: avoid altsetting toggling for Telit FN990 Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 027/186] block-map: add __GFP_ZERO flag for alloc_page in function bio_copy_kern Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 028/186] usb: gadget: dont release an existing dev->buf Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 029/186] usb: gadget: clear related members when goto fail Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 030/186] exfat: reuse exfat_inode_info variable instead of calling EXFAT_I() Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 031/186] exfat: fix i_blocks for files truncated over 4 GiB Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 032/186] tracing: Add test for user space strings when filtering on string pointers Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 033/186] arm64: Mark start_backtrace() notrace and NOKPROBE_SYMBOL Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 034/186] serial: stm32: prevent TDR register overwrite when sending x_char Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 035/186] KVM: arm64: Workaround Cortex-A510s single-step and PAC trap errata Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 036/186] ext4: drop ineligible txn start stop APIs Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 037/186] ext4: simplify updating of fast commit stats Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 038/186] ext4: fast commit may not fallback for ineligible commit Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 039/186] ext4: fast commit may miss file actions Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 040/186] sched/fair: Fix fault in reweight_entity Greg Kroah-Hartman
2022-03-07  9:17 ` [PATCH 5.16 041/186] KVM: x86: Add KVM_CAP_ENABLE_CAP to x86 Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 042/186] ata: pata_hpt37x: fix PCI clock detection Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 043/186] drm/amdgpu: check vm ready by amdgpu_vm->evicting flag Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 044/186] tracing: Add ustring operation to filtering string pointers Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 045/186] ipv6: fix skb drops in igmp6_event_query() and igmp6_event_report() Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 046/186] btrfs: defrag: bring back the old file extent search behavior Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 047/186] btrfs: defrag: dont use merged extent map for their generation check Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 048/186] ALSA: intel_hdmi: Fix reference to PCM buffer address Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 049/186] ucounts: Fix systemd LimitNPROC with private users regression Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 050/186] binfmt_elf: Avoid total_mapping_size for ET_EXEC Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 051/186] riscv/efi_stub: Fix get_boot_hartid_from_fdt() return value Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 052/186] riscv: Fix config KASAN && SPARSEMEM && !SPARSE_VMEMMAP Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 053/186] riscv: Fix config KASAN && DEBUG_VIRTUAL Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 054/186] iwlwifi: mvm: check debugfs_dir ptr before use Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 055/186] ASoC: ops: Shift tested values in snd_soc_put_volsw() by +min Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 056/186] iommu/vt-d: Fix double list_add when enabling VMD in scalable mode Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 057/186] iommu/amd: Recover from event log overflow Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 058/186] drm/i915: s/JSP2/ICP2/ PCH Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 059/186] drm/amd/display: Reduce dmesg error to a debug print Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 060/186] xen/netfront: destroy queues before real_num_tx_queues is zeroed Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 061/186] thermal: core: Fix TZ_GET_TRIP NULL pointer dereference Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 062/186] mac80211: fix EAPoL rekey fail in 802.3 rx path Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 063/186] blktrace: fix use after free for struct blk_trace Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 064/186] ntb: intel: fix port config status offset for SPR Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 065/186] mm: Consider __GFP_NOWARN flag for oversized kvmalloc() calls Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 066/186] xfrm: fix MTU regression Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 067/186] netfilter: fix use-after-free in __nf_register_net_hook() Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 068/186] bpf, sockmap: Do not ignore orig_len parameter Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 069/186] xfrm: fix the if_id check in changelink Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 070/186] xfrm: enforce validity of offload input flags Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 071/186] e1000e: Correct NVM checksum verification flow Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 072/186] net: fix up skbs delta_truesize in UDP GRO frag_list Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 073/186] netfilter: nf_queue: dont assume sk is full socket Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 074/186] netfilter: nf_queue: fix possible use-after-free Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 075/186] netfilter: nf_queue: handle socket prefetch Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 076/186] batman-adv: Request iflink once in batadv-on-batadv check Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 077/186] batman-adv: Request iflink once in batadv_get_real_netdevice Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 078/186] batman-adv: Dont expect inter-netns unique iflink indices Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 079/186] net: ipv6: ensure we call ipv6_mc_down() at most once Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 080/186] net: dcb: flush lingering app table entries for unregistered devices Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 081/186] net: ipa: fix a build dependency Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 082/186] net: ipa: add an interconnect dependency Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 083/186] net/smc: fix connection leak Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 084/186] net/smc: fix unexpected SMC_CLC_DECL_ERR_REGRMB error generated by client Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 085/186] net/smc: fix unexpected SMC_CLC_DECL_ERR_REGRMB error cause by server Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 086/186] btrfs: fix ENOSPC failure when attempting direct IO write into NOCOW range Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 087/186] platform/x86: amd-pmc: Set QOS during suspend on CZN w/ timer wakeup Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 088/186] net: dsa: microchip: fix bridging with more than two member ports Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 089/186] mac80211: fix forwarded mesh frames AC & queue selection Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 090/186] net: stmmac: fix return value of __setup handler Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 091/186] mac80211: treat some SAE auth steps as final Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 092/186] iavf: Fix missing check for running netdev Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 093/186] net: sxgbe: fix return value of __setup handler Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 094/186] ibmvnic: register netdev after init of adapter Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 095/186] net: arcnet: com20020: Fix null-ptr-deref in com20020pci_probe() Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 096/186] ixgbe: xsk: change !netif_carrier_ok() handling in ixgbe_xmit_zc() Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 097/186] iavf: Fix deadlock in iavf_reset_task Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 098/186] efivars: Respect "block" flag in efivar_entry_set_safe() Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 099/186] auxdisplay: lcd2s: Fix lcd2s_redefine_char() feature Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 100/186] firmware: arm_scmi: Remove space in MODULE_ALIAS name Greg Kroah-Hartman
2022-03-07  9:18 ` [PATCH 5.16 101/186] ASoC: cs4265: Fix the duplicated control name Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 102/186] auxdisplay: lcd2s: Fix memory leak in ->remove() Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 103/186] auxdisplay: lcd2s: Use proper API to free the instance of charlcd object Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 104/186] can: gs_usb: change active_channelss type from atomic_t to u8 Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 105/186] iommu/tegra-smmu: Fix missing put_device() call in tegra_smmu_find Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 106/186] arm64: dts: rockchip: Switch RK3399-Gru DP to SPDIF output Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 107/186] igc: igc_read_phy_reg_gpy: drop premature return Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 108/186] ARM: Fix kgdb breakpoint for Thumb2 Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 109/186] mips: setup: fix setnocoherentio() boolean setting Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 110/186] ARM: 9182/1: mmu: fix returns from early_param() and __setup() functions Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 111/186] mptcp: Correctly set DATA_FIN timeout when number of retransmits is large Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 112/186] selftests: mlxsw: tc_police_scale: Make test more robust Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 113/186] pinctrl: sunxi: Use unique lockdep classes for IRQs Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 114/186] igc: igc_write_phy_reg_gpy: drop premature return Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 115/186] ibmvnic: free reset-work-item when flushing Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 116/186] memfd: fix F_SEAL_WRITE after shmem huge page allocated Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 117/186] s390/setup: preserve memory at OLDMEM_BASE and OLDMEM_SIZE Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 118/186] s390/extable: fix exception table sorting Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 119/186] sched: Fix yet more sched_fork() races Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 120/186] arm64: dts: rockchip: drop pclk_xpcs from gmac0 on rk3568 Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 121/186] arm64: dts: juno: Remove GICv2m dma-range Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 122/186] arm64: dts: rockchip: fix Quartz64-A ddr regulator voltage Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 123/186] arm64: dts: imx8mm: Fix VPU Hanging Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 124/186] iommu/amd: Simplify pagetable freeing Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 125/186] iommu/amd: Use put_pages_list Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 126/186] iommu/amd: Fix I/O page table memory leak Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 127/186] MIPS: ralink: mt7621: do memory detection on KSEG1 Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 128/186] ARM: dts: switch timer config to common devkit8000 devicetree Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 129/186] ARM: dts: Use 32KiHz oscillator on devkit8000 Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 130/186] soc: fsl: guts: Revert commit 3c0d64e867ed Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 131/186] soc: fsl: guts: Add a missing memory allocation failure check Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 132/186] soc: fsl: qe: Check of ioremap return value Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 133/186] soc: imx: gpcv2: Fix clock disabling imbalance in error path Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 134/186] netfilter: nf_tables: prefer kfree_rcu(ptr, rcu) variant Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 135/186] ARM: tegra: Move panels to AUX bus Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 136/186] Bluetooth: Fix bt_skb_sendmmsg not allocating partial chunks Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 137/186] can: etas_es58x: change opened_channel_cnts type from atomic_t to u8 Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 138/186] net: stmmac: enhance XDP ZC driver level switching performance Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 139/186] net: stmmac: only enable DMA interrupts when ready Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 140/186] ibmvnic: initialize rc before completing wait Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 141/186] ibmvnic: define flush_reset_queue helper Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 142/186] ibmvnic: complete init_done on transport events Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 143/186] ibmvnic: Update driver return codes Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 144/186] ibmvnic: init init_done_rc earlier Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 145/186] ibmvnic: clear fop when retrying probe Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 146/186] ibmvnic: Allow queueing resets during probe Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 147/186] net: chelsio: cxgb3: check the return value of pci_find_capability() Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 148/186] net: sparx5: Fix add vlan when invalid operation Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 149/186] iavf: Add trace while removing device Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 150/186] iavf: Rework mutexes for better synchronisation Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 151/186] iavf: Add waiting so the port is initialized in remove Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 152/186] iavf: Fix init state closure on remove Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 153/186] iavf: Fix locking for VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 154/186] iavf: Fix race in init state Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 155/186] iavf: Fix __IAVF_RESETTING state usage Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 156/186] drm/i915/guc/slpc: Correct the param count for unset param Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 157/186] drm/bridge: ti-sn65dsi86: Properly undo autosuspend Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 158/186] e1000e: Fix possible HW unit hang after an s0ix exit Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 159/186] MIPS: ralink: mt7621: use bitwise NOT instead of logical Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 160/186] nl80211: Handle nla_memdup failures in handle_nan_filter Greg Kroah-Hartman
2022-03-07  9:19 ` [PATCH 5.16 161/186] ptp: ocp: Add ptp_ocp_adjtime_coarse for large adjustments Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 162/186] drm/amdgpu: fix suspend/resume hang regression Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 163/186] net: dcb: disable softirqs in dcbnl_flush_dev() Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 164/186] selftests: mlxsw: resource_scale: Fix return value Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 165/186] net: stmmac: perserve TX and RX coalesce value during XDP setup Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 166/186] Input: elan_i2c - move regulator_[en|dis]able() out of elan_[en|dis]able_power() Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 167/186] Input: elan_i2c - fix regulator enable count imbalance after suspend/resume Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 168/186] Input: samsung-keypad - properly state IOMEM dependency Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 169/186] HID: add mapping for KEY_DICTATE Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 170/186] HID: add mapping for KEY_ALL_APPLICATIONS Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 171/186] tracing/histogram: Fix sorting on old "cpu" value Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 172/186] tracing: Fix return value of __setup handlers Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 173/186] btrfs: fix lost prealloc extents beyond eof after full fsync Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 174/186] btrfs: fix relocation crash due to premature return from btrfs_commit_transaction() Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 175/186] btrfs: subpage: fix a wrong check on subpage->writers Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 176/186] btrfs: do not WARN_ON() if we have PageError set Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 177/186] btrfs: qgroup: fix deadlock between rescan worker and remove qgroup Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 178/186] btrfs: add missing run of delayed items after unlink during log replay Greg Kroah-Hartman
2022-03-07  9:20 ` Greg Kroah-Hartman [this message]
2022-03-07  9:20 ` [PATCH 5.16 180/186] btrfs: do not start relocation until in progress drops are done Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 181/186] Revert "xfrm: xfrm_state_mtu should return at least 1280 for ipv6" Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 182/186] proc: fix documentation and description of pagemap Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 183/186] x86/kvmclock: Fix Hyper-V Isolated VMs boot issue when vCPUs > 64 Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 184/186] s390/ftrace: fix arch_ftrace_get_regs implementation Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 185/186] s390/ftrace: fix ftrace_caller/ftrace_regs_caller generation Greg Kroah-Hartman
2022-03-07  9:20 ` [PATCH 5.16 186/186] KVM: x86/mmu: Passing up the error state of mmu_alloc_shadow_roots() Greg Kroah-Hartman
2022-03-07 14:29 ` [PATCH 5.16 000/186] 5.16.13-rc1 review Fox Chen

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=20220307091659.084842846@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=dsterba@suse.com \
    --cc=fdmanana@suse.com \
    --cc=josef@toxicpanda.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).