From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Zhenhua Ma <mazhenhua@xiaomi.com>,
Peter Zijlstra <peterz@infradead.org>,
Waiman Long <longman@redhat.com>, Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.15 155/179] locking/rwsem: Make handoff bit handling more consistent
Date: Mon, 29 Nov 2021 19:19:09 +0100 [thread overview]
Message-ID: <20211129181724.051544085@linuxfoundation.org> (raw)
In-Reply-To: <20211129181718.913038547@linuxfoundation.org>
From: Waiman Long <longman@redhat.com>
[ Upstream commit d257cc8cb8d5355ffc43a96bab94db7b5a324803 ]
There are some inconsistency in the way that the handoff bit is being
handled in readers and writers that lead to a race condition.
Firstly, when a queue head writer set the handoff bit, it will clear
it when the writer is being killed or interrupted on its way out
without acquiring the lock. That is not the case for a queue head
reader. The handoff bit will simply be inherited by the next waiter.
Secondly, in the out_nolock path of rwsem_down_read_slowpath(), both
the waiter and handoff bits are cleared if the wait queue becomes
empty. For rwsem_down_write_slowpath(), however, the handoff bit is
not checked and cleared if the wait queue is empty. This can
potentially make the handoff bit set with empty wait queue.
Worse, the situation in rwsem_down_write_slowpath() relies on wstate,
a variable set outside of the critical section containing the ->count
manipulation, this leads to race condition where RWSEM_FLAG_HANDOFF
can be double subtracted, corrupting ->count.
To make the handoff bit handling more consistent and robust, extract
out handoff bit clearing code into the new rwsem_del_waiter() helper
function. Also, completely eradicate wstate; always evaluate
everything inside the same critical section.
The common function will only use atomic_long_andnot() to clear bits
when the wait queue is empty to avoid possible race condition. If the
first waiter with handoff bit set is killed or interrupted to exit the
slowpath without acquiring the lock, the next waiter will inherit the
handoff bit.
While at it, simplify the trylock for loop in
rwsem_down_write_slowpath() to make it easier to read.
Fixes: 4f23dbc1e657 ("locking/rwsem: Implement lock handoff to prevent lock starvation")
Reported-by: Zhenhua Ma <mazhenhua@xiaomi.com>
Suggested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Waiman Long <longman@redhat.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20211116012912.723980-1-longman@redhat.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/locking/rwsem.c | 171 ++++++++++++++++++++---------------------
1 file changed, 85 insertions(+), 86 deletions(-)
diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c
index 29eea50a3e678..e63f740c2cc84 100644
--- a/kernel/locking/rwsem.c
+++ b/kernel/locking/rwsem.c
@@ -106,9 +106,9 @@
* atomic_long_cmpxchg() will be used to obtain writer lock.
*
* There are three places where the lock handoff bit may be set or cleared.
- * 1) rwsem_mark_wake() for readers.
- * 2) rwsem_try_write_lock() for writers.
- * 3) Error path of rwsem_down_write_slowpath().
+ * 1) rwsem_mark_wake() for readers -- set, clear
+ * 2) rwsem_try_write_lock() for writers -- set, clear
+ * 3) rwsem_del_waiter() -- clear
*
* For all the above cases, wait_lock will be held. A writer must also
* be the first one in the wait_list to be eligible for setting the handoff
@@ -335,6 +335,9 @@ struct rwsem_waiter {
struct task_struct *task;
enum rwsem_waiter_type type;
unsigned long timeout;
+
+ /* Writer only, not initialized in reader */
+ bool handoff_set;
};
#define rwsem_first_waiter(sem) \
list_first_entry(&sem->wait_list, struct rwsem_waiter, list)
@@ -345,12 +348,6 @@ enum rwsem_wake_type {
RWSEM_WAKE_READ_OWNED /* Waker thread holds the read lock */
};
-enum writer_wait_state {
- WRITER_NOT_FIRST, /* Writer is not first in wait list */
- WRITER_FIRST, /* Writer is first in wait list */
- WRITER_HANDOFF /* Writer is first & handoff needed */
-};
-
/*
* The typical HZ value is either 250 or 1000. So set the minimum waiting
* time to at least 4ms or 1 jiffy (if it is higher than 4ms) in the wait
@@ -366,6 +363,31 @@ enum writer_wait_state {
*/
#define MAX_READERS_WAKEUP 0x100
+static inline void
+rwsem_add_waiter(struct rw_semaphore *sem, struct rwsem_waiter *waiter)
+{
+ lockdep_assert_held(&sem->wait_lock);
+ list_add_tail(&waiter->list, &sem->wait_list);
+ /* caller will set RWSEM_FLAG_WAITERS */
+}
+
+/*
+ * Remove a waiter from the wait_list and clear flags.
+ *
+ * Both rwsem_mark_wake() and rwsem_try_write_lock() contain a full 'copy' of
+ * this function. Modify with care.
+ */
+static inline void
+rwsem_del_waiter(struct rw_semaphore *sem, struct rwsem_waiter *waiter)
+{
+ lockdep_assert_held(&sem->wait_lock);
+ list_del(&waiter->list);
+ if (likely(!list_empty(&sem->wait_list)))
+ return;
+
+ atomic_long_andnot(RWSEM_FLAG_HANDOFF | RWSEM_FLAG_WAITERS, &sem->count);
+}
+
/*
* handle the lock release when processes blocked on it that can now run
* - if we come here from up_xxxx(), then the RWSEM_FLAG_WAITERS bit must
@@ -377,6 +399,8 @@ enum writer_wait_state {
* preferably when the wait_lock is released
* - woken process blocks are discarded from the list after having task zeroed
* - writers are only marked woken if downgrading is false
+ *
+ * Implies rwsem_del_waiter() for all woken readers.
*/
static void rwsem_mark_wake(struct rw_semaphore *sem,
enum rwsem_wake_type wake_type,
@@ -491,18 +515,25 @@ static void rwsem_mark_wake(struct rw_semaphore *sem,
adjustment = woken * RWSEM_READER_BIAS - adjustment;
lockevent_cond_inc(rwsem_wake_reader, woken);
+
+ oldcount = atomic_long_read(&sem->count);
if (list_empty(&sem->wait_list)) {
- /* hit end of list above */
+ /*
+ * Combined with list_move_tail() above, this implies
+ * rwsem_del_waiter().
+ */
adjustment -= RWSEM_FLAG_WAITERS;
+ if (oldcount & RWSEM_FLAG_HANDOFF)
+ adjustment -= RWSEM_FLAG_HANDOFF;
+ } else if (woken) {
+ /*
+ * When we've woken a reader, we no longer need to force
+ * writers to give up the lock and we can clear HANDOFF.
+ */
+ if (oldcount & RWSEM_FLAG_HANDOFF)
+ adjustment -= RWSEM_FLAG_HANDOFF;
}
- /*
- * When we've woken a reader, we no longer need to force writers
- * to give up the lock and we can clear HANDOFF.
- */
- if (woken && (atomic_long_read(&sem->count) & RWSEM_FLAG_HANDOFF))
- adjustment -= RWSEM_FLAG_HANDOFF;
-
if (adjustment)
atomic_long_add(adjustment, &sem->count);
@@ -533,12 +564,12 @@ static void rwsem_mark_wake(struct rw_semaphore *sem,
* race conditions between checking the rwsem wait list and setting the
* sem->count accordingly.
*
- * If wstate is WRITER_HANDOFF, it will make sure that either the handoff
- * bit is set or the lock is acquired with handoff bit cleared.
+ * Implies rwsem_del_waiter() on success.
*/
static inline bool rwsem_try_write_lock(struct rw_semaphore *sem,
- enum writer_wait_state wstate)
+ struct rwsem_waiter *waiter)
{
+ bool first = rwsem_first_waiter(sem) == waiter;
long count, new;
lockdep_assert_held(&sem->wait_lock);
@@ -547,13 +578,19 @@ static inline bool rwsem_try_write_lock(struct rw_semaphore *sem,
do {
bool has_handoff = !!(count & RWSEM_FLAG_HANDOFF);
- if (has_handoff && wstate == WRITER_NOT_FIRST)
- return false;
+ if (has_handoff) {
+ if (!first)
+ return false;
+
+ /* First waiter inherits a previously set handoff bit */
+ waiter->handoff_set = true;
+ }
new = count;
if (count & RWSEM_LOCK_MASK) {
- if (has_handoff || (wstate != WRITER_HANDOFF))
+ if (has_handoff || (!rt_task(waiter->task) &&
+ !time_after(jiffies, waiter->timeout)))
return false;
new |= RWSEM_FLAG_HANDOFF;
@@ -570,9 +607,17 @@ static inline bool rwsem_try_write_lock(struct rw_semaphore *sem,
* We have either acquired the lock with handoff bit cleared or
* set the handoff bit.
*/
- if (new & RWSEM_FLAG_HANDOFF)
+ if (new & RWSEM_FLAG_HANDOFF) {
+ waiter->handoff_set = true;
+ lockevent_inc(rwsem_wlock_handoff);
return false;
+ }
+ /*
+ * Have rwsem_try_write_lock() fully imply rwsem_del_waiter() on
+ * success.
+ */
+ list_del(&waiter->list);
rwsem_set_owner(sem);
return true;
}
@@ -953,7 +998,7 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
}
adjustment += RWSEM_FLAG_WAITERS;
}
- list_add_tail(&waiter.list, &sem->wait_list);
+ rwsem_add_waiter(sem, &waiter);
/* we're now waiting on the lock, but no longer actively locking */
count = atomic_long_add_return(adjustment, &sem->count);
@@ -999,11 +1044,7 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
return sem;
out_nolock:
- list_del(&waiter.list);
- if (list_empty(&sem->wait_list)) {
- atomic_long_andnot(RWSEM_FLAG_WAITERS|RWSEM_FLAG_HANDOFF,
- &sem->count);
- }
+ rwsem_del_waiter(sem, &waiter);
raw_spin_unlock_irq(&sem->wait_lock);
__set_current_state(TASK_RUNNING);
lockevent_inc(rwsem_rlock_fail);
@@ -1017,9 +1058,7 @@ static struct rw_semaphore *
rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
{
long count;
- enum writer_wait_state wstate;
struct rwsem_waiter waiter;
- struct rw_semaphore *ret = sem;
DEFINE_WAKE_Q(wake_q);
/* do optimistic spinning and steal lock if possible */
@@ -1035,16 +1074,13 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
waiter.task = current;
waiter.type = RWSEM_WAITING_FOR_WRITE;
waiter.timeout = jiffies + RWSEM_WAIT_TIMEOUT;
+ waiter.handoff_set = false;
raw_spin_lock_irq(&sem->wait_lock);
-
- /* account for this before adding a new element to the list */
- wstate = list_empty(&sem->wait_list) ? WRITER_FIRST : WRITER_NOT_FIRST;
-
- list_add_tail(&waiter.list, &sem->wait_list);
+ rwsem_add_waiter(sem, &waiter);
/* we're now waiting on the lock */
- if (wstate == WRITER_NOT_FIRST) {
+ if (rwsem_first_waiter(sem) != &waiter) {
count = atomic_long_read(&sem->count);
/*
@@ -1080,13 +1116,16 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
/* wait until we successfully acquire the lock */
set_current_state(state);
for (;;) {
- if (rwsem_try_write_lock(sem, wstate)) {
+ if (rwsem_try_write_lock(sem, &waiter)) {
/* rwsem_try_write_lock() implies ACQUIRE on success */
break;
}
raw_spin_unlock_irq(&sem->wait_lock);
+ if (signal_pending_state(state, current))
+ goto out_nolock;
+
/*
* After setting the handoff bit and failing to acquire
* the lock, attempt to spin on owner to accelerate lock
@@ -1095,7 +1134,7 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
* In this case, we attempt to acquire the lock again
* without sleeping.
*/
- if (wstate == WRITER_HANDOFF) {
+ if (waiter.handoff_set) {
enum owner_state owner_state;
preempt_disable();
@@ -1106,66 +1145,26 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
goto trylock_again;
}
- /* Block until there are no active lockers. */
- for (;;) {
- if (signal_pending_state(state, current))
- goto out_nolock;
-
- schedule();
- lockevent_inc(rwsem_sleep_writer);
- set_current_state(state);
- /*
- * If HANDOFF bit is set, unconditionally do
- * a trylock.
- */
- if (wstate == WRITER_HANDOFF)
- break;
-
- if ((wstate == WRITER_NOT_FIRST) &&
- (rwsem_first_waiter(sem) == &waiter))
- wstate = WRITER_FIRST;
-
- count = atomic_long_read(&sem->count);
- if (!(count & RWSEM_LOCK_MASK))
- break;
-
- /*
- * The setting of the handoff bit is deferred
- * until rwsem_try_write_lock() is called.
- */
- if ((wstate == WRITER_FIRST) && (rt_task(current) ||
- time_after(jiffies, waiter.timeout))) {
- wstate = WRITER_HANDOFF;
- lockevent_inc(rwsem_wlock_handoff);
- break;
- }
- }
+ schedule();
+ lockevent_inc(rwsem_sleep_writer);
+ set_current_state(state);
trylock_again:
raw_spin_lock_irq(&sem->wait_lock);
}
__set_current_state(TASK_RUNNING);
- list_del(&waiter.list);
raw_spin_unlock_irq(&sem->wait_lock);
lockevent_inc(rwsem_wlock);
-
- return ret;
+ return sem;
out_nolock:
__set_current_state(TASK_RUNNING);
raw_spin_lock_irq(&sem->wait_lock);
- list_del(&waiter.list);
-
- if (unlikely(wstate == WRITER_HANDOFF))
- atomic_long_add(-RWSEM_FLAG_HANDOFF, &sem->count);
-
- if (list_empty(&sem->wait_list))
- atomic_long_andnot(RWSEM_FLAG_WAITERS, &sem->count);
- else
+ rwsem_del_waiter(sem, &waiter);
+ if (!list_empty(&sem->wait_list))
rwsem_mark_wake(sem, RWSEM_WAKE_ANY, &wake_q);
raw_spin_unlock_irq(&sem->wait_lock);
wake_up_q(&wake_q);
lockevent_inc(rwsem_wlock_fail);
-
return ERR_PTR(-EINTR);
}
--
2.33.0
next prev parent reply other threads:[~2021-11-29 18:44 UTC|newest]
Thread overview: 189+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-29 18:16 [PATCH 5.15 000/179] 5.15.6-rc1 review Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 001/179] scsi: sd: Fix sd_do_mode_sense() buffer length handling Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 002/179] ACPI: Get acpi_devices parent from the parent field Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 003/179] ACPI: CPPC: Add NULL pointer check to cppc_get_perf() Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 004/179] USB: serial: pl2303: fix GC type detection Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 005/179] USB: serial: option: add Telit LE910S1 0x9200 composition Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 006/179] USB: serial: option: add Fibocom FM101-GL variants Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 007/179] usb: dwc2: gadget: Fix ISOC flow for elapsed frames Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 008/179] usb: dwc2: hcd_queue: Fix use of floating point literal Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 009/179] usb: dwc3: leave default DMA for PCI devices Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 010/179] usb: dwc3: core: Revise GHWPARAMS9 offset Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 011/179] usb: dwc3: gadget: Ignore NoStream after End Transfer Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 012/179] usb: dwc3: gadget: Check for L1/L2/U3 for Start Transfer Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 013/179] usb: dwc3: gadget: Fix null pointer exception Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 014/179] net: usb: Correct PHY handling of smsc95xx Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 015/179] net: nexthop: fix null pointer dereference when IPv6 is not enabled Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 016/179] usb: chipidea: ci_hdrc_imx: fix potential error pointer dereference in probe Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 017/179] usb: typec: fusb302: Fix masking of comparator and bc_lvl interrupts Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 018/179] usb: xhci: tegra: Check padctrl interrupt presence in device tree Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 019/179] usb: hub: Fix usb enumeration issue due to address0 race Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 020/179] usb: hub: Fix locking issues with address0_mutex Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 021/179] binder: fix test regression due to sender_euid change Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 022/179] ALSA: ctxfi: Fix out-of-range access Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 023/179] ALSA: hda/realtek: Add quirk for ASRock NUC Box 1100 Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 024/179] ALSA: hda/realtek: Fix LED on HP ProBook 435 G7 Greg Kroah-Hartman
2021-11-29 18:16 ` [PATCH 5.15 025/179] media: cec: copy sequence field for the reply Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 026/179] Revert "parisc: Fix backtrace to always include init funtion names" Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 027/179] HID: wacom: Use "Confidence" flag to prevent reporting invalid contacts Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 028/179] staging/fbtft: Fix backlight Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 029/179] staging: greybus: Add missing rwsem around snd_ctl_remove() calls Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 030/179] staging: rtl8192e: Fix use after free in _rtl92e_pci_disconnect() Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 031/179] staging: r8188eu: Use kzalloc() with GFP_ATOMIC in atomic context Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 032/179] staging: r8188eu: Fix breakage introduced when 5G code was removed Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 033/179] staging: r8188eu: use GFP_ATOMIC under spinlock Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 034/179] staging: r8188eu: fix a memory leak in rtw_wx_read32() Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 035/179] fuse: release pipe buf after last use Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 036/179] xen: dont continue xenstore initialization in case of errors Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 037/179] xen: detect uninitialized xenbus in xenbus_init Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 038/179] io_uring: correct link-list traversal locking Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 039/179] io_uring: fail cancellation for EXITING tasks Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 040/179] io_uring: fix link traversal locking Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 041/179] drm/amdgpu: IH process reset count when restart Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 042/179] drm/amdgpu/pm: fix powerplay OD interface Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 043/179] drm/nouveau: recognise GA106 Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 044/179] ksmbd: downgrade addition info error msg to debug in smb2_get_info_sec() Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 045/179] ksmbd: contain default data stream even if xattr is empty Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 046/179] ksmbd: fix memleak in get_file_stream_info() Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 047/179] KVM: PPC: Book3S HV: Prevent POWER7/8 TLB flush flushing SLB Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 048/179] tracing/uprobe: Fix uprobe_perf_open probes iteration Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 049/179] tracing: Fix pid filtering when triggers are attached Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 050/179] mmc: sdhci-esdhc-imx: disable CMDQ support Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 051/179] mmc: sdhci: Fix ADMA for PAGE_SIZE >= 64KiB Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 052/179] mdio: aspeed: Fix "Link is Down" issue Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 053/179] arm64: mm: Fix VM_BUG_ON(mm != &init_mm) for trans_pgd Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 054/179] cpufreq: intel_pstate: Fix active mode offline/online EPP handling Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 055/179] powerpc/32: Fix hardlockup on vmap stack overflow Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 056/179] iomap: Fix inline extent handling in iomap_readpage Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 057/179] NFSv42: Fix pagecache invalidation after COPY/CLONE Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 058/179] PCI: aardvark: Deduplicate code in advk_pcie_rd_conf() Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 059/179] PCI: aardvark: Implement re-issuing config requests on CRS response Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 060/179] PCI: aardvark: Simplify initialization of rootcap on virtual bridge Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 061/179] PCI: aardvark: Fix link training Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 062/179] drm/amd/display: Fix OLED brightness control on eDP Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 063/179] proc/vmcore: fix clearing user buffer by properly using clear_user() Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 064/179] ASoC: SOF: Intel: hda: fix hotplug when only codec is suspended Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 065/179] netfilter: ctnetlink: fix filtering with CTA_TUPLE_REPLY Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 066/179] netfilter: ctnetlink: do not erase error code with EINVAL Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 067/179] netfilter: ipvs: Fix reuse connection if RS weight is 0 Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 068/179] netfilter: flowtable: fix IPv6 tunnel addr match Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 069/179] media: v4l2-core: fix VIDIOC_DQEVENT handling on non-x86 Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 070/179] firmware: arm_scmi: Fix null de-reference on error path Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 071/179] ARM: dts: BCM5301X: Fix I2C controller interrupt Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 072/179] ARM: dts: BCM5301X: Add interrupt properties to GPIO node Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 073/179] ARM: dts: bcm2711: Fix PCIe interrupts Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 074/179] ASoC: qdsp6: q6routing: Conditionally reset FrontEnd Mixer Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 075/179] ASoC: qdsp6: q6asm: fix q6asm_dai_prepare error handling Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 076/179] ASoC: topology: Add missing rwsem around snd_ctl_remove() calls Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 077/179] ASoC: codecs: wcd938x: fix volatile register range Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 078/179] ASoC: codecs: wcd934x: return error code correctly from hw_params Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 079/179] ASoC: codecs: lpass-rx-macro: fix HPHR setting CLSH mask Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 080/179] net: ieee802154: handle iftypes as u32 Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 081/179] firmware: arm_scmi: Fix base agent discover response Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 082/179] firmware: arm_scmi: pm: Propagate return value to caller Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 083/179] ASoC: stm32: i2s: fix 32 bits channel length without mclk Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 084/179] NFSv42: Dont fail clone() unless the OP_CLONE operation failed Greg Kroah-Hartman
2021-11-29 18:17 ` [PATCH 5.15 085/179] ARM: socfpga: Fix crash with CONFIG_FORTIRY_SOURCE Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 086/179] drm/nouveau/acr: fix a couple NULL vs IS_ERR() checks Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 087/179] scsi: qla2xxx: edif: Fix off by one bug in qla_edif_app_getfcinfo() Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 088/179] scsi: mpt3sas: Fix kernel panic during drive powercycle test Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 089/179] scsi: mpt3sas: Fix system going into read-only mode Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 090/179] scsi: mpt3sas: Fix incorrect system timestamp Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 091/179] drm/vc4: fix error code in vc4_create_object() Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 092/179] drm/aspeed: Fix vga_pw sysfs output Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 093/179] net: marvell: prestera: fix brige port operation Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 094/179] net: marvell: prestera: fix double free issue on err path Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 095/179] HID: input: Fix parsing of HID_CP_CONSUMER_CONTROL fields Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 096/179] HID: input: set usage type to key on keycode remap Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 097/179] HID: magicmouse: prevent division by 0 on scroll Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 098/179] iavf: Prevent changing static ITR values if adaptive moderation is on Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 099/179] iavf: Fix refreshing iavf adapter stats on ethtool request Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 100/179] iavf: Fix VLAN feature flags after VFR Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 101/179] x86/pvh: add prototype for xen_pvh_init() Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 102/179] xen/pvh: add missing prototype to header Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 103/179] ALSA: intel-dsp-config: add quirk for JSL devices based on ES8336 codec Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 104/179] mptcp: fix delack timer Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 105/179] mptcp: use delegate action to schedule 3rd ack retrans Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 106/179] af_unix: fix regression in read after shutdown Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 107/179] firmware: smccc: Fix check for ARCH_SOC_ID not implemented Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 108/179] ipv6: fix typos in __ip6_finish_output() Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 109/179] nfp: checking parameter process for rx-usecs/tx-usecs is invalid Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 110/179] net: stmmac: retain PTP clock time during SIOCSHWTSTAMP ioctls Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 111/179] net: ipv6: add fib6_nh_release_dsts stub Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 112/179] net: nexthop: release IPv6 per-cpu dsts when replacing a nexthop group Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 113/179] ice: fix vsi->txq_map sizing Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 114/179] ice: avoid bpf_prog refcount underflow Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 115/179] scsi: core: sysfs: Fix setting device state to SDEV_RUNNING Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 116/179] scsi: scsi_debug: Zero clear zones at reset write pointer Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 117/179] erofs: fix deadlock when shrink erofs slab Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 118/179] i2c: virtio: disable timeout handling Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 119/179] net/smc: Ensure the active closing peer first closes clcsock Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 120/179] mlxsw: spectrum: Protect driver from buggy firmware Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 121/179] net: ipa: directly disable ipa-setup-ready interrupt Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 122/179] net: ipa: separate disabling setup from modem stop Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 123/179] net: ipa: kill ipa_cmd_pipeline_clear() Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 124/179] net: marvell: mvpp2: increase MTU limit when XDP enabled Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 125/179] cpufreq: intel_pstate: Add Ice Lake server to out-of-band IDs Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 126/179] nvmet-tcp: fix incomplete data digest send Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 127/179] drm/hyperv: Fix device removal on Gen1 VMs Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 128/179] arm64: uaccess: avoid blocking within critical sections Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 129/179] net/ncsi : Add payload to be 32-bit aligned to fix dropped packets Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 130/179] PM: hibernate: use correct mode for swsusp_close() Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 131/179] drm/amd/display: Fix DPIA outbox timeout after GPU reset Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 132/179] drm/amd/display: Set plane update flags for all planes in reset Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 133/179] tcp_cubic: fix spurious Hystart ACK train detections for not-cwnd-limited flows Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 134/179] lan743x: fix deadlock in lan743x_phy_link_status_change() Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 135/179] net: phylink: Force link down and retrigger resolve on interface change Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 136/179] net: phylink: Force retrigger in case of latched link-fail indicator Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 137/179] net/smc: Fix NULL pointer dereferencing in smc_vlan_by_tcpsk() Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 138/179] net/smc: Fix loop in smc_listen Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 139/179] nvmet: use IOCB_NOWAIT only if the filesystem supports it Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 140/179] igb: fix netpoll exit with traffic Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 141/179] MIPS: loongson64: fix FTLB configuration Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 142/179] MIPS: use 3-level pgtable for 64KB page size on MIPS_VA_BITS_48 Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 143/179] tls: splice_read: fix record type check Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 144/179] tls: splice_read: fix accessing pre-processed records Greg Kroah-Hartman
2021-11-29 18:18 ` [PATCH 5.15 145/179] tls: fix replacing proto_ops Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 146/179] net: stmmac: Disable Tx queues when reconfiguring the interface Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 147/179] net/sched: sch_ets: dont peek at classes beyond nbands Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 148/179] ethtool: ioctl: fix potential NULL deref in ethtool_set_coalesce() Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 149/179] net: vlan: fix underflow for the real_dev refcnt Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 150/179] net/smc: Dont call clcsock shutdown twice when smc shutdown Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 151/179] net: hns3: fix VF RSS failed problem after PF enable multi-TCs Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 152/179] net: hns3: fix incorrect components info of ethtool --reset command Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 153/179] net: mscc: ocelot: dont downgrade timestamping RX filters in SIOCSHWTSTAMP Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 154/179] net: mscc: ocelot: correctly report the timestamping RX filters in ethtool Greg Kroah-Hartman
2021-11-29 18:19 ` Greg Kroah-Hartman [this message]
2021-11-29 18:19 ` [PATCH 5.15 156/179] perf: Ignore sigtrap for tracepoints destined for other tasks Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 157/179] sched/scs: Reset task stack state in bringup_cpu() Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 158/179] iommu/rockchip: Fix PAGE_DESC_HI_MASKs for RK3568 Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 159/179] iommu/vt-d: Fix unmap_pages support Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 160/179] f2fs: quota: fix potential deadlock Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 161/179] f2fs: set SBI_NEED_FSCK flag when inconsistent node block found Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 162/179] riscv: dts: microchip: fix board compatible Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 163/179] riscv: dts: microchip: drop duplicated MMC/SDHC node Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 164/179] cifs: nosharesock should not share socket with future sessions Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 165/179] ceph: properly handle statfs on multifs setups Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 166/179] iommu/amd: Clarify AMD IOMMUv2 initialization messages Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 167/179] vdpa_sim: avoid putting an uninitialized iova_domain Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 168/179] vhost/vsock: fix incorrect used length reported to the guest Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 169/179] ksmbd: Fix an error handling path in smb2_sess_setup() Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 170/179] tracing: Check pid filtering when creating events Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 171/179] cifs: nosharesock should be set on new server Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 172/179] io_uring: fix soft lockup when call __io_remove_buffers Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 173/179] firmware: arm_scmi: Fix type error assignment in voltage protocol Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 174/179] firmware: arm_scmi: Fix type error in sensor protocol Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 175/179] docs: accounting: update delay-accounting.rst reference Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 176/179] blk-mq: cancel blk-mq dispatch work in both blk_cleanup_queue and disk_release() Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 177/179] block: avoid to quiesce queue in elevator_init_mq Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 178/179] drm/amdgpu/gfx10: add wraparound gpu counter check for APUs as well Greg Kroah-Hartman
2021-11-29 18:19 ` [PATCH 5.15 179/179] drm/amdgpu/gfx9: switch to golden tsc registers for renoir+ Greg Kroah-Hartman
2021-11-30 1:02 ` [PATCH 5.15 000/179] 5.15.6-rc1 review Shuah Khan
2021-11-30 1:56 ` Fox Chen
2021-11-30 4:22 ` Florian Fainelli
2021-11-30 5:46 ` Naresh Kamboju
2021-11-30 8:48 ` Jon Hunter
2021-11-30 8:54 ` Greg Kroah-Hartman
2021-11-30 9:02 ` Jon Hunter
2021-11-30 17:40 ` Guenter Roeck
2021-12-01 2:29 ` 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=20211129181724.051544085@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=longman@redhat.com \
--cc=mazhenhua@xiaomi.com \
--cc=peterz@infradead.org \
--cc=sashal@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).