public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev, Lei Chen <lei.chen@smartx.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	John Stultz <jstultz@google.com>, Ingo Molnar <mingo@kernel.org>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.14 156/197] timekeeping: Prevent coarse clocks going backwards
Date: Mon, 12 May 2025 19:40:06 +0200	[thread overview]
Message-ID: <20250512172050.739583022@linuxfoundation.org> (raw)
In-Reply-To: <20250512172044.326436266@linuxfoundation.org>

6.14-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Thomas Gleixner <tglx@linutronix.de>

[ Upstream commit b71f9804f66c2592d4c3a2397b7374a4039005a5 ]

Lei Chen raised an issue with CLOCK_MONOTONIC_COARSE seeing time
inconsistencies. Lei tracked down that this was being caused by the
adjustment:

    tk->tkr_mono.xtime_nsec -= offset;

which is made to compensate for the unaccumulated cycles in offset when the
multiplicator is adjusted forward, so that the non-_COARSE clockids don't
see inconsistencies.

However, the _COARSE clockid getter functions use the adjusted xtime_nsec
value directly and do not compensate the negative offset via the
clocksource delta multiplied with the new multiplicator. In that case the
caller can observe time going backwards in consecutive calls.

By design, this negative adjustment should be fine, because the logic run
from timekeeping_adjust() is done after it accumulated approximately

     multiplicator * interval_cycles

into xtime_nsec.  The accumulated value is always larger then the

     mult_adj * offset

value, which is subtracted from xtime_nsec. Both operations are done
together under the tk_core.lock, so the net change to xtime_nsec is always
always be positive.

However, do_adjtimex() calls into timekeeping_advance() as well, to
apply the NTP frequency adjustment immediately. In this case,
timekeeping_advance() does not return early when the offset is smaller
then interval_cycles. In that case there is no time accumulated into
xtime_nsec. But the subsequent call into timekeeping_adjust(), which
modifies the multiplicator, subtracts from xtime_nsec to correct for the
new multiplicator.

Here because there was no accumulation, xtime_nsec becomes smaller than
before, which opens a window up to the next accumulation, where the
_COARSE clockid getters, which don't compensate for the offset, can
observe the inconsistency.

This has been tried to be fixed by forwarding the timekeeper in the case
that adjtimex() adjusts the multiplier, which resets the offset to zero:

  757b000f7b93 ("timekeeping: Fix possible inconsistencies in _COARSE clockids")

That works correctly, but unfortunately causes a regression on the
adjtimex() side. There are two issues:

   1) The forwarding of the base time moves the update out of the original
      period and establishes a new one.

   2) The clearing of the accumulated NTP error is changing the behaviour as
      well.

User-space expects that multiplier/frequency updates are in effect, when the
syscall returns, so delaying the update to the next tick is not solving the
problem either.

Commit 757b000f7b93 was reverted so that the established expectations of
user space implementations (ntpd, chronyd) are restored, but that obviously
brought the inconsistencies back.

One of the initial approaches to fix this was to establish a separate
storage for the coarse time getter nanoseconds part by calculating it from
the offset. That was dropped on the floor because not having yet another
state to maintain was simpler. But given the result of the above exercise,
this solution turns out to be the right one. Bring it back in a slightly
modified form.

Thus introduce timekeeper::coarse_nsec and store that nanoseconds part in
it, switch the time getter functions and the VDSO update to use that value.
coarse_nsec is set on operations which forward or initialize the timekeeper
and after time was accumulated during a tick. If there is no accumulation
the timestamp is unchanged.

This leaves the adjtimex() behaviour unmodified and prevents coarse time
from going backwards.

[ jstultz: Simplified the coarse_nsec calculation and kept behavior so
  	   coarse clockids aren't adjusted on each inter-tick adjtimex
  	   call, slightly reworked the comments and commit message ]

Fixes: da15cfdae033 ("time: Introduce CLOCK_REALTIME_COARSE")
Reported-by: Lei Chen <lei.chen@smartx.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: John Stultz <jstultz@google.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/all/20250419054706.2319105-1-jstultz@google.com
Closes: https://lore.kernel.org/lkml/20250310030004.3705801-1-lei.chen@smartx.com/
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/linux/timekeeper_internal.h |  8 +++--
 kernel/time/timekeeping.c           | 50 ++++++++++++++++++++++++-----
 kernel/time/vsyscall.c              |  4 +--
 3 files changed, 49 insertions(+), 13 deletions(-)

diff --git a/include/linux/timekeeper_internal.h b/include/linux/timekeeper_internal.h
index e39d4d563b197..785048a3b3e60 100644
--- a/include/linux/timekeeper_internal.h
+++ b/include/linux/timekeeper_internal.h
@@ -51,7 +51,7 @@ struct tk_read_base {
  * @offs_real:			Offset clock monotonic -> clock realtime
  * @offs_boot:			Offset clock monotonic -> clock boottime
  * @offs_tai:			Offset clock monotonic -> clock tai
- * @tai_offset:			The current UTC to TAI offset in seconds
+ * @coarse_nsec:		The nanoseconds part for coarse time getters
  * @tkr_raw:			The readout base structure for CLOCK_MONOTONIC_RAW
  * @raw_sec:			CLOCK_MONOTONIC_RAW  time in seconds
  * @clock_was_set_seq:		The sequence number of clock was set events
@@ -76,6 +76,7 @@ struct tk_read_base {
  *				ntp shifted nano seconds.
  * @ntp_err_mult:		Multiplication factor for scaled math conversion
  * @skip_second_overflow:	Flag used to avoid updating NTP twice with same second
+ * @tai_offset:			The current UTC to TAI offset in seconds
  *
  * Note: For timespec(64) based interfaces wall_to_monotonic is what
  * we need to add to xtime (or xtime corrected for sub jiffy times)
@@ -100,7 +101,7 @@ struct tk_read_base {
  * which results in the following cacheline layout:
  *
  * 0:	seqcount, tkr_mono
- * 1:	xtime_sec ... tai_offset
+ * 1:	xtime_sec ... coarse_nsec
  * 2:	tkr_raw, raw_sec
  * 3,4: Internal variables
  *
@@ -121,7 +122,7 @@ struct timekeeper {
 	ktime_t			offs_real;
 	ktime_t			offs_boot;
 	ktime_t			offs_tai;
-	s32			tai_offset;
+	u32			coarse_nsec;
 
 	/* Cacheline 2: */
 	struct tk_read_base	tkr_raw;
@@ -144,6 +145,7 @@ struct timekeeper {
 	u32			ntp_error_shift;
 	u32			ntp_err_mult;
 	u32			skip_second_overflow;
+	s32			tai_offset;
 };
 
 #ifdef CONFIG_GENERIC_TIME_VSYSCALL
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index 1e67d076f1955..a009c91f7b05f 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -164,10 +164,34 @@ static inline struct timespec64 tk_xtime(const struct timekeeper *tk)
 	return ts;
 }
 
+static inline struct timespec64 tk_xtime_coarse(const struct timekeeper *tk)
+{
+	struct timespec64 ts;
+
+	ts.tv_sec = tk->xtime_sec;
+	ts.tv_nsec = tk->coarse_nsec;
+	return ts;
+}
+
+/*
+ * Update the nanoseconds part for the coarse time keepers. They can't rely
+ * on xtime_nsec because xtime_nsec could be adjusted by a small negative
+ * amount when the multiplication factor of the clock is adjusted, which
+ * could cause the coarse clocks to go slightly backwards. See
+ * timekeeping_apply_adjustment(). Thus we keep a separate copy for the coarse
+ * clockids which only is updated when the clock has been set or  we have
+ * accumulated time.
+ */
+static inline void tk_update_coarse_nsecs(struct timekeeper *tk)
+{
+	tk->coarse_nsec = tk->tkr_mono.xtime_nsec >> tk->tkr_mono.shift;
+}
+
 static void tk_set_xtime(struct timekeeper *tk, const struct timespec64 *ts)
 {
 	tk->xtime_sec = ts->tv_sec;
 	tk->tkr_mono.xtime_nsec = (u64)ts->tv_nsec << tk->tkr_mono.shift;
+	tk_update_coarse_nsecs(tk);
 }
 
 static void tk_xtime_add(struct timekeeper *tk, const struct timespec64 *ts)
@@ -175,6 +199,7 @@ static void tk_xtime_add(struct timekeeper *tk, const struct timespec64 *ts)
 	tk->xtime_sec += ts->tv_sec;
 	tk->tkr_mono.xtime_nsec += (u64)ts->tv_nsec << tk->tkr_mono.shift;
 	tk_normalize_xtime(tk);
+	tk_update_coarse_nsecs(tk);
 }
 
 static void tk_set_wall_to_mono(struct timekeeper *tk, struct timespec64 wtm)
@@ -708,6 +733,7 @@ static void timekeeping_forward_now(struct timekeeper *tk)
 		tk_normalize_xtime(tk);
 		delta -= incr;
 	}
+	tk_update_coarse_nsecs(tk);
 }
 
 /**
@@ -804,8 +830,8 @@ EXPORT_SYMBOL_GPL(ktime_get_with_offset);
 ktime_t ktime_get_coarse_with_offset(enum tk_offsets offs)
 {
 	struct timekeeper *tk = &tk_core.timekeeper;
-	unsigned int seq;
 	ktime_t base, *offset = offsets[offs];
+	unsigned int seq;
 	u64 nsecs;
 
 	WARN_ON(timekeeping_suspended);
@@ -813,7 +839,7 @@ ktime_t ktime_get_coarse_with_offset(enum tk_offsets offs)
 	do {
 		seq = read_seqcount_begin(&tk_core.seq);
 		base = ktime_add(tk->tkr_mono.base, *offset);
-		nsecs = tk->tkr_mono.xtime_nsec >> tk->tkr_mono.shift;
+		nsecs = tk->coarse_nsec;
 
 	} while (read_seqcount_retry(&tk_core.seq, seq));
 
@@ -2161,7 +2187,7 @@ static bool timekeeping_advance(enum timekeeping_adv_mode mode)
 	struct timekeeper *real_tk = &tk_core.timekeeper;
 	unsigned int clock_set = 0;
 	int shift = 0, maxshift;
-	u64 offset;
+	u64 offset, orig_offset;
 
 	guard(raw_spinlock_irqsave)(&tk_core.lock);
 
@@ -2172,7 +2198,7 @@ static bool timekeeping_advance(enum timekeeping_adv_mode mode)
 	offset = clocksource_delta(tk_clock_read(&tk->tkr_mono),
 				   tk->tkr_mono.cycle_last, tk->tkr_mono.mask,
 				   tk->tkr_mono.clock->max_raw_delta);
-
+	orig_offset = offset;
 	/* Check if there's really nothing to do */
 	if (offset < real_tk->cycle_interval && mode == TK_ADV_TICK)
 		return false;
@@ -2205,6 +2231,14 @@ static bool timekeeping_advance(enum timekeeping_adv_mode mode)
 	 */
 	clock_set |= accumulate_nsecs_to_secs(tk);
 
+	/*
+	 * To avoid inconsistencies caused adjtimex TK_ADV_FREQ calls
+	 * making small negative adjustments to the base xtime_nsec
+	 * value, only update the coarse clocks if we accumulated time
+	 */
+	if (orig_offset != offset)
+		tk_update_coarse_nsecs(tk);
+
 	timekeeping_update_from_shadow(&tk_core, clock_set);
 
 	return !!clock_set;
@@ -2248,7 +2282,7 @@ void ktime_get_coarse_real_ts64(struct timespec64 *ts)
 	do {
 		seq = read_seqcount_begin(&tk_core.seq);
 
-		*ts = tk_xtime(tk);
+		*ts = tk_xtime_coarse(tk);
 	} while (read_seqcount_retry(&tk_core.seq, seq));
 }
 EXPORT_SYMBOL(ktime_get_coarse_real_ts64);
@@ -2271,7 +2305,7 @@ void ktime_get_coarse_real_ts64_mg(struct timespec64 *ts)
 
 	do {
 		seq = read_seqcount_begin(&tk_core.seq);
-		*ts = tk_xtime(tk);
+		*ts = tk_xtime_coarse(tk);
 		offset = tk_core.timekeeper.offs_real;
 	} while (read_seqcount_retry(&tk_core.seq, seq));
 
@@ -2350,12 +2384,12 @@ void ktime_get_coarse_ts64(struct timespec64 *ts)
 	do {
 		seq = read_seqcount_begin(&tk_core.seq);
 
-		now = tk_xtime(tk);
+		now = tk_xtime_coarse(tk);
 		mono = tk->wall_to_monotonic;
 	} while (read_seqcount_retry(&tk_core.seq, seq));
 
 	set_normalized_timespec64(ts, now.tv_sec + mono.tv_sec,
-				now.tv_nsec + mono.tv_nsec);
+				  now.tv_nsec + mono.tv_nsec);
 }
 EXPORT_SYMBOL(ktime_get_coarse_ts64);
 
diff --git a/kernel/time/vsyscall.c b/kernel/time/vsyscall.c
index 05d3831431658..c9d946b012d8b 100644
--- a/kernel/time/vsyscall.c
+++ b/kernel/time/vsyscall.c
@@ -97,12 +97,12 @@ void update_vsyscall(struct timekeeper *tk)
 	/* CLOCK_REALTIME_COARSE */
 	vdso_ts		= &vdata[CS_HRES_COARSE].basetime[CLOCK_REALTIME_COARSE];
 	vdso_ts->sec	= tk->xtime_sec;
-	vdso_ts->nsec	= tk->tkr_mono.xtime_nsec >> tk->tkr_mono.shift;
+	vdso_ts->nsec	= tk->coarse_nsec;
 
 	/* CLOCK_MONOTONIC_COARSE */
 	vdso_ts		= &vdata[CS_HRES_COARSE].basetime[CLOCK_MONOTONIC_COARSE];
 	vdso_ts->sec	= tk->xtime_sec + tk->wall_to_monotonic.tv_sec;
-	nsec		= tk->tkr_mono.xtime_nsec >> tk->tkr_mono.shift;
+	nsec		= tk->coarse_nsec;
 	nsec		= nsec + tk->wall_to_monotonic.tv_nsec;
 	vdso_ts->sec	+= __iter_div_u64_rem(nsec, NSEC_PER_SEC, &vdso_ts->nsec);
 
-- 
2.39.5




  parent reply	other threads:[~2025-05-12 17:49 UTC|newest]

Thread overview: 224+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-12 17:37 [PATCH 6.14 000/197] 6.14.7-rc1 review Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 001/197] dm: add missing unlock on in dm_keyslot_evict() Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 002/197] fs/erofs/fileio: call erofs_onlinefolio_split() after bio_add_folio() Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 003/197] Revert "btrfs: canonicalize the device path before adding it" Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 004/197] arm64: dts: imx8mm-verdin: Link reg_usdhc2_vqmmc to usdhc2 Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 005/197] firmware: arm_scmi: Fix timeout checks on polling path Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 006/197] can: mcan: m_can_class_unregister(): fix order of unregistration calls Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 007/197] s390/pci: Fix missing check for zpci_create_device() error return Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 008/197] wifi: cfg80211: fix out-of-bounds access during multi-link element defragmentation Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 009/197] vfio/pci: Align huge faults to order Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 010/197] s390/pci: Fix duplicate pci_dev_put() in disable_slot() when PF has child VFs Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 011/197] can: mcp251xfd: mcp251xfd_remove(): fix order of unregistration calls Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 012/197] can: rockchip_canfd: rkcanfd_remove(): " Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 013/197] ksmbd: prevent rename with empty string Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 014/197] ksmbd: prevent out-of-bounds stream writes by validating *pos Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 015/197] ksmbd: Fix UAF in __close_file_table_ids Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 016/197] openvswitch: Fix unsafe attribute parsing in output_userspace() Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 017/197] ksmbd: fix memory leak in parse_lease_state() Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 018/197] s390/entry: Fix last breaking event handling in case of stack corruption Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 019/197] sch_htb: make htb_deactivate() idempotent Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 020/197] virtio-net: dont re-enable refill work too early when NAPI is disabled Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 021/197] virtio-net: free xsk_buffs on error in virtnet_xsk_pool_enable() Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 022/197] gre: Fix again IPv6 link-local address generation Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 023/197] net: ethernet: mtk_eth_soc: reset all TX queues on DMA free Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 024/197] net: ethernet: mtk_eth_soc: do not reset PSE when setting FE Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 025/197] can: m_can: m_can_class_allocate_dev(): initialize spin lock on device probe Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 026/197] can: mcp251xfd: fix TDC setting for low data bit rates Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 027/197] can: gw: fix RCU/BH usage in cgw_create_job() Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 028/197] wifi: mac80211: fix the type of status_code for negotiated TID to Link Mapping Greg Kroah-Hartman
2025-05-12 17:37 ` [PATCH 6.14 029/197] ice: use DSN instead of PCI BDF for ice_adapter index Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 030/197] erofs: ensure the extra temporary copy is valid for shortened bvecs Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 031/197] ipvs: fix uninit-value for saddr in do_output_route4 Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 032/197] netfilter: ipset: fix region locking in hash types Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 033/197] bpf: Scrub packet on bpf_redirect_peer Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 034/197] net: dsa: b53: allow leaky reserved multicast Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 035/197] net: dsa: b53: keep CPU port always tagged again Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 036/197] net: dsa: b53: fix clearing PVID of a port Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 037/197] net: dsa: b53: fix flushing old pvid VLAN on pvid change Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 038/197] net: dsa: b53: fix VLAN ID for untagged vlan on bridge leave Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 039/197] net: dsa: b53: always rejoin default untagged VLAN " Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 040/197] net: dsa: b53: do not allow to configure VLAN 0 Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 041/197] net: dsa: b53: do not program vlans when vlan filtering is off Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 042/197] net: dsa: b53: fix toggling vlan_filtering Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 043/197] net: dsa: b53: fix learning on VLAN unaware bridges Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 044/197] net: dsa: b53: do not set learning and unicast/multicast on up Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 045/197] fbnic: Fix initialization of mailbox descriptor rings Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 046/197] fbnic: Gate AXI read/write enabling on FW mailbox Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 047/197] fbnic: Actually flush_tx instead of stalling out Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 048/197] fbnic: Cleanup handling of completions Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 049/197] fbnic: Improve responsiveness of fbnic_mbx_poll_tx_ready Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 050/197] fbnic: Pull fbnic_fw_xmit_cap_msg use out of interrupt context Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 051/197] fbnic: Do not allow mailbox to toggle to ready outside fbnic_mbx_poll_tx_ready Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 052/197] net: export a helper for adding up queue stats Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 053/197] virtio-net: fix total qstat values Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 054/197] Input: cyttsp5 - ensure minimum reset pulse width Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 055/197] Input: cyttsp5 - fix power control issue on wakeup Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 056/197] Input: mtk-pmic-keys - fix possible null pointer dereference Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 057/197] Input: xpad - fix Share button on Xbox One controllers Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 058/197] Input: xpad - add support for 8BitDo Ultimate 2 Wireless Controller Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 059/197] Input: xpad - fix two controller table values Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 060/197] Input: synaptics - enable InterTouch on Dynabook Portege X30-D Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 061/197] Input: synaptics - enable InterTouch on Dynabook Portege X30L-G Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 062/197] Input: synaptics - enable InterTouch on Dell Precision M3800 Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 063/197] Input: synaptics - enable SMBus for HP Elitebook 850 G1 Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 064/197] Input: synaptics - enable InterTouch on TUXEDO InfinityBook Pro 14 v5 Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 065/197] rust: clean Rust 1.88.0s `unnecessary_transmutes` lint Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 066/197] objtool/rust: add one more `noreturn` Rust function for Rust 1.87.0 Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 067/197] rust: clean Rust 1.88.0s warning about `clippy::disallowed_macros` configuration Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 068/197] uio_hv_generic: Fix sysfs creation path for ring buffer Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 069/197] staging: iio: adc: ad7816: Correct conditional logic for store mode Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 070/197] staging: bcm2835-camera: Initialise dev in v4l2_dev Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 071/197] staging: axis-fifo: Remove hardware resets for user errors Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 072/197] staging: axis-fifo: Correct handling of tx_fifo_depth for size validation Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 073/197] x86/mm: Eliminate window where TLB flushes may be inadvertently skipped Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 074/197] mm: fix folio_pte_batch() on XEN PV Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 075/197] mm: vmalloc: support more granular vrealloc() sizing Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 076/197] mm/huge_memory: fix dereferencing invalid pmd migration entry Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 077/197] mm/userfaultfd: fix uninitialized output field for -EAGAIN race Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 078/197] selftests/mm: compaction_test: support platform with huge mount of memory Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 079/197] selftests/mm: fix a build failure on powerpc Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 080/197] selftests/mm: fix build break when compiling pkey_util.c Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 081/197] KVM: x86/mmu: Prevent installing hugepages when mem attributes are changing Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 082/197] KVM: SVM: Forcibly leave SMM mode on SHUTDOWN interception Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 083/197] drm/amd/display: Shift DMUB AUX reply command if necessary Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 084/197] riscv: Fix kernel crash due to PR_SET_TAGGED_ADDR_CTRL Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 085/197] io_uring: ensure deferred completions are flushed for multishot Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 086/197] iio: adc: ad7768-1: Fix insufficient alignment of timestamp Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 087/197] iio: adc: ad7266: Fix potential timestamp alignment issue Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 088/197] iio: adc: ad7606: fix serial register access Greg Kroah-Hartman
2025-05-12 17:38 ` [PATCH 6.14 089/197] iio: adc: rockchip: Fix clock initialization sequence Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 090/197] iio: adis16201: Correct inclinometer channel resolution Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 091/197] iio: chemical: sps30: use aligned_s64 for timestamp Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 092/197] iio: chemical: pms7003: " Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 093/197] iio: hid-sensor-prox: Restore lost scale assignments Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 094/197] iio: hid-sensor-prox: support multi-channel SCALE calculation Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 095/197] iio: hid-sensor-prox: Fix incorrect OFFSET calculation Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 096/197] iio: imu: inv_mpu6050: align buffer for timestamp Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 097/197] iio: imu: st_lsm6dsx: fix possible lockup in st_lsm6dsx_read_fifo Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 098/197] iio: imu: st_lsm6dsx: fix possible lockup in st_lsm6dsx_read_tagged_fifo Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 099/197] iio: light: opt3001: fix deadlock due to concurrent flag access Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 100/197] iio: pressure: mprls0025pa: use aligned_s64 for timestamp Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 101/197] Revert "drm/amd: Stop evicting resources on APUs in suspend" Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 102/197] drm/v3d: Add job to pending list if the reset was skipped Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 103/197] drm/xe: Add page queue multiplier Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 104/197] drm/amdgpu: fix pm notifier handling Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 105/197] drm/amdgpu/vcn: using separate VCN1_AON_SOC offset Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 106/197] drm/amd/display: Fix invalid context error in dml helper Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 107/197] drm/amd/display: more liberal vmin/vmax update for freesync Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 108/197] drm/amd/display: Fix the checking condition in dmub aux handling Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 109/197] drm/amd/display: Remove incorrect checking in dmub aux handler Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 110/197] drm/amd/display: Fix wrong handling for AUX_DEFER case Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 111/197] drm/amd/display: Copy AUX read reply data whenever length > 0 Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 112/197] drm/amdgpu/hdp4: use memcfg register to post the write for HDP flush Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 113/197] drm/amdgpu/hdp5.2: " Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 114/197] drm/amdgpu/hdp5: " Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 115/197] drm/amdgpu/hdp6: " Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 116/197] drm/amdgpu/hdp7: " Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 117/197] xhci: dbc: Avoid event polling busyloop if pending rx transfers are inactive Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 118/197] usb: uhci-platform: Make the clock really optional Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 119/197] smb: client: Avoid race in open_cached_dir with lease breaks Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 120/197] xen: swiotlb: Use swiotlb bouncing if kmalloc allocation demands it Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 121/197] xenbus: Use kref to track req lifetime Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 122/197] accel/ivpu: Increase state dump msg timeout Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 123/197] arm64: cpufeature: Move arm64_use_ng_mappings to the .data section to prevent wrong idmap generation Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 124/197] clocksource/i8253: Use raw_spinlock_irqsave() in clockevent_i8253_disable() Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 125/197] KVM: arm64: Fix uninitialized memcache pointer in user_mem_abort() Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 126/197] memblock: Accept allocated memory before use in memblock_double_array() Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 127/197] module: ensure that kobject_put() is safe for module type kobjects Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 128/197] x86/microcode: Consolidate the loader enablement checking Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 129/197] ocfs2: fix panic in failed foilio allocation Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 130/197] ocfs2: fix the issue with discontiguous allocation in the global_bitmap Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 131/197] ocfs2: switch osb->disable_recovery to enum Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 132/197] ocfs2: implement handshaking with ocfs2 recovery thread Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 133/197] ocfs2: stop quota recovery before disabling quotas Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 134/197] usb: dwc3: gadget: Make gadget_wakeup asynchronous Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 135/197] usb: cdnsp: Fix issue with resuming from L1 Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 136/197] usb: cdnsp: fix L1 resume issue for RTL_REVISION_NEW_LPM version Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 137/197] usb: gadget: f_ecm: Add get_status callback Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 138/197] usb: gadget: tegra-xudc: ACK ST_RC after clearing CTRL_RUN Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 139/197] usb: gadget: Use get_status callback to set remote wakeup capability Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 140/197] usb: host: tegra: Prevent host controller crash when OTG port is used Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 141/197] usb: misc: onboard_usb_dev: fix support for Cypress HX3 hubs Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 142/197] usb: typec: tcpm: delay SNK_TRY_WAIT_DEBOUNCE to SRC_TRYWAIT transition Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 143/197] usb: typec: ucsi: displayport: Fix deadlock Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 144/197] usb: typec: ucsi: displayport: Fix NULL pointer access Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 145/197] USB: usbtmc: use interruptible sleep in usbtmc_read Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 146/197] usb: usbtmc: Fix erroneous get_stb ioctl error returns Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 147/197] usb: usbtmc: Fix erroneous wait_srq ioctl return Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 148/197] usb: usbtmc: Fix erroneous generic_read " Greg Kroah-Hartman
2025-05-12 17:39 ` [PATCH 6.14 149/197] iio: imu: bmi270: fix initial sampling frequency configuration Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 150/197] iio: accel: adxl367: fix setting odr for activity time update Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 151/197] iio: temp: maxim-thermocouple: Fix potential lack of DMA safe buffer Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 152/197] iio: accel: adxl355: Make timestamp 64-bit aligned using aligned_s64 Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 153/197] iio: adc: dln2: Use aligned_s64 for timestamp Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 154/197] MIPS: Fix idle VS timer enqueue Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 155/197] MIPS: Move r4k_wait() to .cpuidle.text section Greg Kroah-Hartman
2025-05-12 17:40 ` Greg Kroah-Hartman [this message]
2025-05-12 17:40 ` [PATCH 6.14 157/197] accel/ivpu: Separate DB ID and CMDQ ID allocations from CMDQ allocation Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 158/197] accel/ivpu: Correct mutex unlock order in job submission Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 159/197] MIPS: Fix MAX_REG_OFFSET Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 160/197] riscv: misaligned: Add handling for ZCB instructions Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 161/197] loop: factor out a loop_assign_backing_file helper Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 162/197] loop: Add sanity check for read/write_iter Greg Kroah-Hartman
2025-05-20  0:19   ` Justin Forbes
2025-05-20  4:56     ` Greg Kroah-Hartman
2025-05-20 15:22       ` Jens Axboe
2025-05-20 16:09         ` Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 163/197] drm/panel: simple: Update timings for AUO G101EVN010 Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 164/197] nvme: unblock ctrl state transition for firmware update Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 165/197] riscv: misaligned: factorize trap handling Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 166/197] riscv: misaligned: enable IRQs while handling misaligned accesses Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 167/197] riscv: Disallow PR_GET_TAGGED_ADDR_CTRL without Supm Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 168/197] drm/xe/tests/mocs: Hold XE_FORCEWAKE_ALL for LNCF regs Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 169/197] drm/xe: Release force wake first then runtime power Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 170/197] io_uring/sqpoll: Increase task_work submission batch size Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 171/197] do_umount(): add missing barrier before refcount checks in sync case Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 172/197] rust: allow Rust 1.87.0s `clippy::ptr_eq` lint Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 173/197] rust: clean Rust 1.88.0s `clippy::uninlined_format_args` lint Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 174/197] io_uring: always arm linked timeouts prior to issue Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 175/197] Bluetooth: btmtk: Remove the resetting step before downloading the fw Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 176/197] mm: page_alloc: dont steal single pages from biggest buddy Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 177/197] mm: page_alloc: speed up fallbacks in rmqueue_bulk() Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 178/197] arm64: insn: Add support for encoding DSB Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 179/197] arm64: proton-pack: Expose whether the platform is mitigated by firmware Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 180/197] arm64: proton-pack: Expose whether the branchy loop k value Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 181/197] arm64: bpf: Add BHB mitigation to the epilogue for cBPF programs Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 182/197] arm64: bpf: Only mitigate cBPF programs loaded by unprivileged users Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 183/197] arm64: proton-pack: Add new CPUs k values for branch mitigation Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 184/197] x86/bpf: Call branch history clearing sequence on exit Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 185/197] x86/bpf: Add IBHF call at end of classic BPF Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 186/197] x86/bhi: Do not set BHI_DIS_S in 32-bit mode Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 187/197] Documentation: x86/bugs/its: Add ITS documentation Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 188/197] x86/its: Enumerate Indirect Target Selection (ITS) bug Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 189/197] x86/its: Add support for ITS-safe indirect thunk Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 190/197] x86/its: Add support for ITS-safe return thunk Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 191/197] x86/its: Enable Indirect Target Selection mitigation Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 192/197] x86/its: Add "vmexit" option to skip mitigation on some CPUs Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 193/197] x86/its: Add support for RSB stuffing mitigation Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 194/197] x86/its: Align RETs in BHB clear sequence to avoid thunking Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 195/197] x86/ibt: Keep IBT disabled during alternative patching Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 196/197] x86/its: Use dynamic thunks for indirect branches Greg Kroah-Hartman
2025-05-12 17:40 ` [PATCH 6.14 197/197] selftest/x86/bugs: Add selftests for ITS Greg Kroah-Hartman
2025-05-12 19:30 ` [PATCH 6.14 000/197] 6.14.7-rc1 review Pavel Machek
2025-05-12 20:56 ` Jon Hunter
2025-05-13  0:26 ` Christian Heusel
2025-05-13  6:24   ` Luna Jernberg
2025-05-13 13:07   ` Mario Limonciello
2025-05-15 12:34   ` Luna Jernberg
2025-05-15 12:40     ` Christian Heusel
2025-05-13  9:41 ` Ron Economos
2025-05-13  9:45 ` Mark Brown
2025-05-13 10:40 ` Naresh Kamboju
2025-05-13 13:29   ` Naresh Kamboju
2025-05-14  9:53     ` Greg Kroah-Hartman
2025-05-13 11:38 ` Takeshi Ogasawara
2025-05-13 12:54 ` Florian Fainelli
2025-05-13 14:58 ` Markus Reichelt
2025-05-13 17:27 ` Peter Schneider
2025-05-13 17:30 ` Shuah Khan
2025-05-14  7:50 ` Christian Heusel
2025-05-14 11:49 ` Shung-Hsi Yu
2025-05-15  4:17   ` Pawan Gupta
2025-05-15 12:04     ` Shung-Hsi Yu
2025-05-14 16:45 ` Hardik Garg

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=20250512172050.739583022@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=jstultz@google.com \
    --cc=lei.chen@smartx.com \
    --cc=mingo@kernel.org \
    --cc=patches@lists.linux.dev \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tglx@linutronix.de \
    /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