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, Eric Biggers <ebiggers@google.com>
Subject: [PATCH 5.15 099/171] aio: fix use-after-free due to missing POLLFREE handling
Date: Mon, 13 Dec 2021 10:30:14 +0100	[thread overview]
Message-ID: <20211213092948.375701665@linuxfoundation.org> (raw)
In-Reply-To: <20211213092945.091487407@linuxfoundation.org>

From: Eric Biggers <ebiggers@google.com>

commit 50252e4b5e989ce64555c7aef7516bdefc2fea72 upstream.

signalfd_poll() and binder_poll() are special in that they use a
waitqueue whose lifetime is the current task, rather than the struct
file as is normally the case.  This is okay for blocking polls, since a
blocking poll occurs within one task; however, non-blocking polls
require another solution.  This solution is for the queue to be cleared
before it is freed, by sending a POLLFREE notification to all waiters.

Unfortunately, only eventpoll handles POLLFREE.  A second type of
non-blocking poll, aio poll, was added in kernel v4.18, and it doesn't
handle POLLFREE.  This allows a use-after-free to occur if a signalfd or
binder fd is polled with aio poll, and the waitqueue gets freed.

Fix this by making aio poll handle POLLFREE.

A patch by Ramji Jiyani <ramjiyani@google.com>
(https://lore.kernel.org/r/20211027011834.2497484-1-ramjiyani@google.com)
tried to do this by making aio_poll_wake() always complete the request
inline if POLLFREE is seen.  However, that solution had two bugs.
First, it introduced a deadlock, as it unconditionally locked the aio
context while holding the waitqueue lock, which inverts the normal
locking order.  Second, it didn't consider that POLLFREE notifications
are missed while the request has been temporarily de-queued.

The second problem was solved by my previous patch.  This patch then
properly fixes the use-after-free by handling POLLFREE in a
deadlock-free way.  It does this by taking advantage of the fact that
freeing of the waitqueue is RCU-delayed, similar to what eventpoll does.

Fixes: 2c14fa838cbe ("aio: implement IOCB_CMD_POLL")
Cc: <stable@vger.kernel.org> # v4.18+
Link: https://lore.kernel.org/r/20211209010455.42744-6-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/aio.c                        |  137 ++++++++++++++++++++++++++++++----------
 include/uapi/asm-generic/poll.h |    2 
 2 files changed, 107 insertions(+), 32 deletions(-)

--- a/fs/aio.c
+++ b/fs/aio.c
@@ -1621,6 +1621,51 @@ static void aio_poll_put_work(struct wor
 	iocb_put(iocb);
 }
 
+/*
+ * Safely lock the waitqueue which the request is on, synchronizing with the
+ * case where the ->poll() provider decides to free its waitqueue early.
+ *
+ * Returns true on success, meaning that req->head->lock was locked, req->wait
+ * is on req->head, and an RCU read lock was taken.  Returns false if the
+ * request was already removed from its waitqueue (which might no longer exist).
+ */
+static bool poll_iocb_lock_wq(struct poll_iocb *req)
+{
+	wait_queue_head_t *head;
+
+	/*
+	 * While we hold the waitqueue lock and the waitqueue is nonempty,
+	 * wake_up_pollfree() will wait for us.  However, taking the waitqueue
+	 * lock in the first place can race with the waitqueue being freed.
+	 *
+	 * We solve this as eventpoll does: by taking advantage of the fact that
+	 * all users of wake_up_pollfree() will RCU-delay the actual free.  If
+	 * we enter rcu_read_lock() and see that the pointer to the queue is
+	 * non-NULL, we can then lock it without the memory being freed out from
+	 * under us, then check whether the request is still on the queue.
+	 *
+	 * Keep holding rcu_read_lock() as long as we hold the queue lock, in
+	 * case the caller deletes the entry from the queue, leaving it empty.
+	 * In that case, only RCU prevents the queue memory from being freed.
+	 */
+	rcu_read_lock();
+	head = smp_load_acquire(&req->head);
+	if (head) {
+		spin_lock(&head->lock);
+		if (!list_empty(&req->wait.entry))
+			return true;
+		spin_unlock(&head->lock);
+	}
+	rcu_read_unlock();
+	return false;
+}
+
+static void poll_iocb_unlock_wq(struct poll_iocb *req)
+{
+	spin_unlock(&req->head->lock);
+	rcu_read_unlock();
+}
+
 static void aio_poll_complete_work(struct work_struct *work)
 {
 	struct poll_iocb *req = container_of(work, struct poll_iocb, work);
@@ -1640,24 +1685,25 @@ static void aio_poll_complete_work(struc
 	 * avoid further branches in the fast path.
 	 */
 	spin_lock_irq(&ctx->ctx_lock);
-	spin_lock(&req->head->lock);
-	if (!mask && !READ_ONCE(req->cancelled)) {
-		/*
-		 * The request isn't actually ready to be completed yet.
-		 * Reschedule completion if another wakeup came in.
-		 */
-		if (req->work_need_resched) {
-			schedule_work(&req->work);
-			req->work_need_resched = false;
-		} else {
-			req->work_scheduled = false;
+	if (poll_iocb_lock_wq(req)) {
+		if (!mask && !READ_ONCE(req->cancelled)) {
+			/*
+			 * The request isn't actually ready to be completed yet.
+			 * Reschedule completion if another wakeup came in.
+			 */
+			if (req->work_need_resched) {
+				schedule_work(&req->work);
+				req->work_need_resched = false;
+			} else {
+				req->work_scheduled = false;
+			}
+			poll_iocb_unlock_wq(req);
+			spin_unlock_irq(&ctx->ctx_lock);
+			return;
 		}
-		spin_unlock(&req->head->lock);
-		spin_unlock_irq(&ctx->ctx_lock);
-		return;
-	}
-	list_del_init(&req->wait.entry);
-	spin_unlock(&req->head->lock);
+		list_del_init(&req->wait.entry);
+		poll_iocb_unlock_wq(req);
+	} /* else, POLLFREE has freed the waitqueue, so we must complete */
 	list_del_init(&iocb->ki_list);
 	iocb->ki_res.res = mangle_poll(mask);
 	spin_unlock_irq(&ctx->ctx_lock);
@@ -1671,13 +1717,14 @@ static int aio_poll_cancel(struct kiocb
 	struct aio_kiocb *aiocb = container_of(iocb, struct aio_kiocb, rw);
 	struct poll_iocb *req = &aiocb->poll;
 
-	spin_lock(&req->head->lock);
-	WRITE_ONCE(req->cancelled, true);
-	if (!req->work_scheduled) {
-		schedule_work(&aiocb->poll.work);
-		req->work_scheduled = true;
-	}
-	spin_unlock(&req->head->lock);
+	if (poll_iocb_lock_wq(req)) {
+		WRITE_ONCE(req->cancelled, true);
+		if (!req->work_scheduled) {
+			schedule_work(&aiocb->poll.work);
+			req->work_scheduled = true;
+		}
+		poll_iocb_unlock_wq(req);
+	} /* else, the request was force-cancelled by POLLFREE already */
 
 	return 0;
 }
@@ -1729,7 +1776,8 @@ static int aio_poll_wake(struct wait_que
 		 *
 		 * Don't remove the request from the waitqueue here, as it might
 		 * not actually be complete yet (we won't know until vfs_poll()
-		 * is called), and we must not miss any wakeups.
+		 * is called), and we must not miss any wakeups.  POLLFREE is an
+		 * exception to this; see below.
 		 */
 		if (req->work_scheduled) {
 			req->work_need_resched = true;
@@ -1737,6 +1785,28 @@ static int aio_poll_wake(struct wait_que
 			schedule_work(&req->work);
 			req->work_scheduled = true;
 		}
+
+		/*
+		 * If the waitqueue is being freed early but we can't complete
+		 * the request inline, we have to tear down the request as best
+		 * we can.  That means immediately removing the request from its
+		 * waitqueue and preventing all further accesses to the
+		 * waitqueue via the request.  We also need to schedule the
+		 * completion work (done above).  Also mark the request as
+		 * cancelled, to potentially skip an unneeded call to ->poll().
+		 */
+		if (mask & POLLFREE) {
+			WRITE_ONCE(req->cancelled, true);
+			list_del_init(&req->wait.entry);
+
+			/*
+			 * Careful: this *must* be the last step, since as soon
+			 * as req->head is NULL'ed out, the request can be
+			 * completed and freed, since aio_poll_complete_work()
+			 * will no longer need to take the waitqueue lock.
+			 */
+			smp_store_release(&req->head, NULL);
+		}
 	}
 	return 1;
 }
@@ -1744,6 +1814,7 @@ static int aio_poll_wake(struct wait_que
 struct aio_poll_table {
 	struct poll_table_struct	pt;
 	struct aio_kiocb		*iocb;
+	bool				queued;
 	int				error;
 };
 
@@ -1754,11 +1825,12 @@ aio_poll_queue_proc(struct file *file, s
 	struct aio_poll_table *pt = container_of(p, struct aio_poll_table, pt);
 
 	/* multiple wait queues per file are not supported */
-	if (unlikely(pt->iocb->poll.head)) {
+	if (unlikely(pt->queued)) {
 		pt->error = -EINVAL;
 		return;
 	}
 
+	pt->queued = true;
 	pt->error = 0;
 	pt->iocb->poll.head = head;
 	add_wait_queue(head, &pt->iocb->poll.wait);
@@ -1790,6 +1862,7 @@ static int aio_poll(struct aio_kiocb *ai
 	apt.pt._qproc = aio_poll_queue_proc;
 	apt.pt._key = req->events;
 	apt.iocb = aiocb;
+	apt.queued = false;
 	apt.error = -EINVAL; /* same as no support for IOCB_CMD_POLL */
 
 	/* initialized the list so that we can do list_empty checks */
@@ -1798,9 +1871,10 @@ static int aio_poll(struct aio_kiocb *ai
 
 	mask = vfs_poll(req->file, &apt.pt) & req->events;
 	spin_lock_irq(&ctx->ctx_lock);
-	if (likely(req->head)) {
-		spin_lock(&req->head->lock);
-		if (list_empty(&req->wait.entry) || req->work_scheduled) {
+	if (likely(apt.queued)) {
+		bool on_queue = poll_iocb_lock_wq(req);
+
+		if (!on_queue || req->work_scheduled) {
 			/*
 			 * aio_poll_wake() already either scheduled the async
 			 * completion work, or completed the request inline.
@@ -1816,7 +1890,7 @@ static int aio_poll(struct aio_kiocb *ai
 		} else if (cancel) {
 			/* Cancel if possible (may be too late though). */
 			WRITE_ONCE(req->cancelled, true);
-		} else if (!list_empty(&req->wait.entry)) {
+		} else if (on_queue) {
 			/*
 			 * Actually waiting for an event, so add the request to
 			 * active_reqs so that it can be cancelled if needed.
@@ -1824,7 +1898,8 @@ static int aio_poll(struct aio_kiocb *ai
 			list_add_tail(&aiocb->ki_list, &ctx->active_reqs);
 			aiocb->ki_cancel = aio_poll_cancel;
 		}
-		spin_unlock(&req->head->lock);
+		if (on_queue)
+			poll_iocb_unlock_wq(req);
 	}
 	if (mask) { /* no async, we'd stolen it */
 		aiocb->ki_res.res = mangle_poll(mask);
--- a/include/uapi/asm-generic/poll.h
+++ b/include/uapi/asm-generic/poll.h
@@ -29,7 +29,7 @@
 #define POLLRDHUP       0x2000
 #endif
 
-#define POLLFREE	(__force __poll_t)0x4000	/* currently only for epoll */
+#define POLLFREE	(__force __poll_t)0x4000
 
 #define POLL_BUSY_LOOP	(__force __poll_t)0x8000
 



  parent reply	other threads:[~2021-12-13 10:25 UTC|newest]

Thread overview: 179+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-13  9:28 [PATCH 5.15 000/171] 5.15.8-rc1 review Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 001/171] usb: gadget: uvc: fix multiple opens Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 002/171] HID: quirks: Add quirk for the Microsoft Surface 3 type-cover Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 003/171] HID: google: add eel USB id Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 004/171] HID: intel-ish-hid: ipc: only enable IRQ wakeup when requested Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 005/171] HID: add hid_is_usb() function to make it simpler for USB detection Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 006/171] HID: add USB_HID dependancy to hid-prodikeys Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 007/171] HID: add USB_HID dependancy to hid-chicony Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 008/171] HID: add USB_HID dependancy on some USB HID drivers Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 009/171] HID: bigbenff: prevent null pointer dereference Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 010/171] HID: wacom: fix problems when device is not a valid USB device Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 011/171] HID: check for valid USB device for many HID drivers Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 012/171] mtd: dataflash: Add device-tree SPI IDs Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 013/171] mmc: spi: " Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 014/171] HID: sony: fix error path in probe Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 015/171] HID: Ignore battery for Elan touchscreen on Asus UX550VE Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 016/171] platform/x86/intel: hid: add quirk to support Surface Go 3 Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 017/171] nft_set_pipapo: Fix bucket load in AVX2 lookup routine for six 8-bit groups Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 018/171] IB/hfi1: Insure use of smp_processor_id() is preempt disabled Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 019/171] IB/hfi1: Fix early init panic Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 020/171] IB/hfi1: Fix leak of rcvhdrtail_dummy_kvaddr Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 021/171] can: kvaser_usb: get CAN clock frequency from device Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 022/171] can: kvaser_pciefd: kvaser_pciefd_rx_error_frame(): increase correct stats->{rx,tx}_errors counter Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 023/171] can: sja1000: fix use after free in ems_pcmcia_add_card() Greg Kroah-Hartman
2021-12-13  9:28 ` [PATCH 5.15 024/171] can: pch_can: pch_can_rx_normal: fix use after free Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 025/171] can: m_can: m_can_read_fifo: fix memory leak in error branch Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 026/171] can: m_can: pci: fix incorrect reference clock rate Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 027/171] can: m_can: pci: fix iomap_read_fifo() and iomap_write_fifo() Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 028/171] can: m_can: Disable and ignore ELO interrupt Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 029/171] net: dsa: mv88e6xxx: fix "dont use PHY_DETECT on internal PHYs" Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 030/171] net: dsa: mv88e6xxx: allow use of PHYs on CPU and DSA ports Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 031/171] x86/sme: Explicitly map new EFI memmap table as encrypted Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 032/171] platform/x86: amd-pmc: Fix s2idle failures on certain AMD laptops Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 033/171] nfc: fix potential NULL pointer deref in nfc_genl_dump_ses_done Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 034/171] selftests: netfilter: add a vrf+conntrack testcase Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 035/171] vrf: dont run conntrack on vrf with !dflt qdisc Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 036/171] bpf, x86: Fix "no previous prototype" warning Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 037/171] bpf, sockmap: Attach map progs to psock early for feature probes Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 038/171] bpf: Make sure bpf_disable_instrumentation() is safe vs preemption Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 039/171] bpf: Fix the off-by-two error in range markings Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 040/171] ice: ignore dropped packets during init Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 041/171] ethtool: do not perform operations on net devices being unregistered Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 042/171] bonding: make tx_rebalance_counter an atomic Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 043/171] nfp: Fix memory leak in nfp_cpp_area_cache_add() Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 044/171] seg6: fix the iif in the IPv6 socket control block Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 045/171] udp: using datalen to cap max gso segments Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 046/171] netfilter: nft_exthdr: break evaluation if setting TCP option fails Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 047/171] netfilter: conntrack: annotate data-races around ct->timeout Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 048/171] iavf: restore MSI state on reset Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 049/171] iavf: Fix reporting when setting descriptor count Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 050/171] IB/hfi1: Correct guard on eager buffer deallocation Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 051/171] devlink: fix netns refcount leak in devlink_nl_cmd_reload() Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 052/171] net: bcm4908: Handle dma_set_coherent_mask error codes Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 053/171] net: dsa: mv88e6xxx: error handling for serdes_power functions Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 054/171] net: dsa: felix: Fix memory leak in felix_setup_mmio_filtering Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 055/171] net/sched: fq_pie: prevent dismantle issue Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 056/171] net: mvpp2: fix XDP rx queues registering Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 057/171] KVM: x86: Dont WARN if userspace mucks with RCX during string I/O exit Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 058/171] KVM: x86: Ignore sparse banks size for an "all CPUs", non-sparse IPI req Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 059/171] KVM: x86: Wait for IPIs to be delivered when handling Hyper-V TLB flush hypercall Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 060/171] timers: implement usleep_idle_range() Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 061/171] mm/damon/core: fix fake load reports due to uninterruptible sleeps Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 062/171] mm/slub: fix endianness bug for alloc/free_traces attributes Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 063/171] mm: bdi: initialize bdi_min_ratio when bdi is unregistered Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 064/171] ALSA: ctl: Fix copy of updated id with element read/write Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 065/171] ALSA: hda/realtek - Add headset Mic support for Lenovo ALC897 platform Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 066/171] ALSA: hda/realtek: Fix quirk for TongFang PHxTxX1 Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 067/171] ALSA: pcm: oss: Fix negative period/buffer sizes Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 068/171] ALSA: pcm: oss: Limit the period size to 16MB Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 069/171] ALSA: pcm: oss: Handle missing errors in snd_pcm_oss_change_params*() Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 070/171] cifs: Fix crash on unload of cifs_arc4.ko Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 071/171] scsi: qla2xxx: Format log strings only if needed Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 072/171] btrfs: clear extent buffer uptodate when we fail to write it Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 073/171] btrfs: fix re-dirty process of tree-log nodes Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 074/171] btrfs: replace the BUG_ON in btrfs_del_root_ref with proper error handling Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 075/171] btrfs: free exchange changeset on failures Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 076/171] perf intel-pt: Fix some PGE (packet generation enable/control flow packets) usage Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 077/171] perf intel-pt: Fix sync state when a PSB (synchronization) packet is found Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 078/171] perf intel-pt: Fix intel_pt_fup_event() assumptions about setting state type Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 079/171] perf intel-pt: Fix state setting when receiving overflow (OVF) packet Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 080/171] perf intel-pt: Fix next err value, walking trace Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 081/171] perf intel-pt: Fix missing instruction events with q option Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 082/171] perf intel-pt: Fix error timestamp setting on the decoder error path Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 083/171] md: fix update super 1.0 on rdev size change Greg Kroah-Hartman
2021-12-13  9:29 ` [PATCH 5.15 084/171] nfsd: fix use-after-free due to delegation race Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 085/171] nfsd: Fix nsfd startup race (again) Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 086/171] tracefs: Have new files inherit the ownership of their parent Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 087/171] selftests: KVM: avoid failures due to reserved HyperTransport region Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 088/171] hwmon: (pwm-fan) Ensure the fan going on in .probe() Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 089/171] mmc: renesas_sdhi: initialize variable properly when tuning Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 090/171] clk: qcom: regmap-mux: fix parent clock lookup Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 091/171] thermal: int340x: Fix VCoRefLow MMIO bit offset for TGL Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 092/171] drm/syncobj: Deal with signalled fences in drm_syncobj_find_fence Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 093/171] libata: add horkage for ASMedia 1092 Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 094/171] io_uring: ensure task_work gets run as part of cancelations Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 095/171] wait: add wake_up_pollfree() Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 096/171] binder: use wake_up_pollfree() Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 097/171] signalfd: " Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 098/171] aio: keep poll requests on waitqueue until completed Greg Kroah-Hartman
2021-12-13  9:30 ` Greg Kroah-Hartman [this message]
2021-12-13  9:30 ` [PATCH 5.15 100/171] tracefs: Set all files to the same group ownership as the mount option Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 101/171] i2c: mpc: Use atomic read and fix break condition Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 102/171] block: fix ioprio_get(IOPRIO_WHO_PGRP) vs setuid(2) Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 103/171] scsi: pm80xx: Do not call scsi_remove_host() in pm8001_alloc() Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 104/171] scsi: scsi_debug: Fix buffer size of REPORT ZONES command Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 105/171] ALSA: usb-audio: Reorder snd_djm_devices[] entries Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 106/171] qede: validate non LSO skb length Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 107/171] PM: runtime: Fix pm_runtime_active() kerneldoc comment Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 108/171] ASoC: rt5682: Fix crash due to out of scope stack vars Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 109/171] ASoC: qdsp6: q6routing: Fix return value from msm_routing_put_audio_mixer Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 110/171] ASoC: codecs: wsa881x: fix return values from kcontrol put Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 111/171] ASoC: codecs: wcd934x: handle channel mappping list correctly Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 112/171] ASoC: codecs: wcd934x: return correct value from mixer put Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 113/171] RDMA/hns: Do not halt commands during reset until later Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 114/171] RDMA/hns: Do not destroy QP resources in the hw resetting phase Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 115/171] hwmon: (dell-smm) Fix warning on /proc/i8k creation error Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 116/171] clk: imx: use module_platform_driver Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 117/171] clk: qcom: clk-alpha-pll: Dont reconfigure running Trion Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 118/171] i40e: Fix failed opcode appearing if handling messages from VF Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 119/171] i40e: Fix pre-set max number of queues for VF Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 120/171] mtd: rawnand: fsmc: Take instruction delay into account Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 121/171] mtd: rawnand: fsmc: Fix timing computation Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 122/171] bpf, sockmap: Re-evaluate proto ops when psock is removed from sockmap Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 123/171] i40e: Fix NULL pointer dereference in i40e_dbg_dump_desc Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 124/171] Revert "PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridge" Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 125/171] drm/amd/display: Fix DPIA outbox timeout after S3/S4/reset Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 126/171] perf tools: Fix SMT detection fast read path Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 127/171] Documentation/locking/locktypes: Update migrate_disable() bits Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 128/171] dt-bindings: net: Reintroduce PHY no lane swap binding Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 129/171] tools build: Remove needless libpython-version feature check that breaks test-all fast path Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 130/171] net: cdc_ncm: Allow for dwNtbOutMaxSize to be unset or zero Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 131/171] net: altera: set a couple error code in probe() Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 132/171] net: fec: only clear interrupt of handling queue in fec_enet_rx_queue() Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 133/171] net, neigh: clear whole pneigh_entry at alloc time Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 134/171] net/qla3xxx: fix an error code in ql_adapter_up() Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 135/171] selftests/fib_tests: Rework fib_rp_filter_test() Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 136/171] USB: gadget: detect too-big endpoint 0 requests Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 137/171] USB: gadget: zero allocate endpoint 0 buffers Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 138/171] Revert "usb: dwc3: dwc3-qcom: Enable tx-fifo-resize property by default" Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 139/171] usb: core: config: fix validation of wMaxPacketValue entries Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 140/171] xhci: Remove CONFIG_USB_DEFAULT_PERSIST to prevent xHCI from runtime suspending Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 141/171] usb: core: config: using bit mask instead of individual bits Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 142/171] xhci: avoid race between disable slot command and host runtime suspend Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 143/171] iio: gyro: adxrs290: fix data signedness Greg Kroah-Hartman
2021-12-13  9:30 ` [PATCH 5.15 144/171] iio: trigger: Fix reference counting Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 145/171] iio: trigger: stm32-timer: fix MODULE_ALIAS Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 146/171] iio: stk3310: Dont return error code in interrupt handler Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 147/171] iio: mma8452: Fix trigger reference couting Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 148/171] iio: ltr501: Dont return error code in trigger handler Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 149/171] iio: kxsd9: " Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 150/171] iio: itg3200: Call iio_trigger_notify_done() on error Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 151/171] iio: dln2-adc: Fix lockdep complaint Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 152/171] iio: dln2: Check return value of devm_iio_trigger_register() Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 153/171] iio: at91-sama5d2: Fix incorrect sign extension Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 154/171] iio: adc: stm32: fix a current leak by resetting pcsel before disabling vdda Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 155/171] iio: adc: axp20x_adc: fix charging current reporting on AXP22x Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 156/171] iio: ad7768-1: Call iio_trigger_notify_done() on error Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 157/171] iio: accel: kxcjk-1013: Fix possible memory leak in probe and remove Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 158/171] misc: rtsx: Avoid mangling IRQ during runtime PM Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 159/171] nvmem: eeprom: at25: fix FRAM byte_len Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 160/171] bus: mhi: pci_generic: Fix device recovery failed issue Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 161/171] bus: mhi: core: Add support for forced PM resume Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 162/171] csky: fix typo of fpu config macro Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 163/171] irqchip/aspeed-scu: Replace update_bits with write_bits Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 164/171] irqchip/armada-370-xp: Fix return value of armada_370_xp_msi_alloc() Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 165/171] irqchip/armada-370-xp: Fix support for Multi-MSI interrupts Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 166/171] aio: Fix incorrect usage of eventfd_signal_allowed() Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 167/171] irqchip/irq-gic-v3-its.c: Force synchronisation when issuing INVALL Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 168/171] irqchip: nvic: Fix offset for Interrupt Priority Offsets Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 169/171] misc: fastrpc: fix improper packet size calculation Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 170/171] clocksource/drivers/dw_apb_timer_of: Fix probe failure Greg Kroah-Hartman
2021-12-13  9:31 ` [PATCH 5.15 171/171] bpf: Add selftests to cover packet access corner cases Greg Kroah-Hartman
2021-12-13 13:55 ` [PATCH 5.15 000/171] 5.15.8-rc1 review Fox Chen
2021-12-13 14:46 ` Jon Hunter
2021-12-13 16:42 ` Naresh Kamboju
2021-12-13 19:56 ` Guenter Roeck
2021-12-13 20:24 ` Shuah Khan
2021-12-13 22:01 ` Florian Fainelli
2021-12-13 22:46 ` Rudi Heitbaum

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=20211213092948.375701665@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=ebiggers@google.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).