All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Wang Jianjian <wangjianjian3@huawei.com>, Jan Kara <jack@suse.cz>,
	Sasha Levin <sashal@kernel.org>,
	jack@suse.com
Subject: [PATCH AUTOSEL 6.8 17/98] quota: Fix potential NULL pointer dereference
Date: Fri, 29 Mar 2024 08:36:48 -0400	[thread overview]
Message-ID: <20240329123919.3087149-17-sashal@kernel.org> (raw)
In-Reply-To: <20240329123919.3087149-1-sashal@kernel.org>

From: Wang Jianjian <wangjianjian3@huawei.com>

[ Upstream commit d0aa72604fbd80c8aabb46eda00535ed35570f1f ]

Below race may cause NULL pointer dereference

P1					P2
dquot_free_inode			quota_off
					  drop_dquot_ref
					   remove_dquot_ref
					   dquots = i_dquot(inode)
  dquots = i_dquot(inode)
  srcu_read_lock
  dquots[cnt]) != NULL (1)
					     dquots[type] = NULL (2)
  spin_lock(&dquots[cnt]->dq_dqb_lock) (3)
   ....

If dquot_free_inode(or other routines) checks inode's quota pointers (1)
before quota_off sets it to NULL(2) and use it (3) after that, NULL pointer
dereference will be triggered.

So let's fix it by using a temporary pointer to avoid this issue.

Signed-off-by: Wang Jianjian <wangjianjian3@huawei.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Message-Id: <20240202081852.2514092-1-wangjianjian3@huawei.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/quota/dquot.c | 98 ++++++++++++++++++++++++++++--------------------
 1 file changed, 57 insertions(+), 41 deletions(-)

diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index 1f0c754416b64..cafe65a03f6dc 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -399,15 +399,17 @@ int dquot_mark_dquot_dirty(struct dquot *dquot)
 EXPORT_SYMBOL(dquot_mark_dquot_dirty);
 
 /* Dirtify all the dquots - this can block when journalling */
-static inline int mark_all_dquot_dirty(struct dquot * const *dquot)
+static inline int mark_all_dquot_dirty(struct dquot * const *dquots)
 {
 	int ret, err, cnt;
+	struct dquot *dquot;
 
 	ret = err = 0;
 	for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
-		if (dquot[cnt])
+		dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
+		if (dquot)
 			/* Even in case of error we have to continue */
-			ret = mark_dquot_dirty(dquot[cnt]);
+			ret = mark_dquot_dirty(dquot);
 		if (!err)
 			err = ret;
 	}
@@ -1678,6 +1680,7 @@ int __dquot_alloc_space(struct inode *inode, qsize_t number, int flags)
 	struct dquot_warn warn[MAXQUOTAS];
 	int reserve = flags & DQUOT_SPACE_RESERVE;
 	struct dquot **dquots;
+	struct dquot *dquot;
 
 	if (!inode_quota_active(inode)) {
 		if (reserve) {
@@ -1697,27 +1700,26 @@ int __dquot_alloc_space(struct inode *inode, qsize_t number, int flags)
 	index = srcu_read_lock(&dquot_srcu);
 	spin_lock(&inode->i_lock);
 	for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
-		if (!dquots[cnt])
+		dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
+		if (!dquot)
 			continue;
 		if (reserve) {
-			ret = dquot_add_space(dquots[cnt], 0, number, flags,
-					      &warn[cnt]);
+			ret = dquot_add_space(dquot, 0, number, flags, &warn[cnt]);
 		} else {
-			ret = dquot_add_space(dquots[cnt], number, 0, flags,
-					      &warn[cnt]);
+			ret = dquot_add_space(dquot, number, 0, flags, &warn[cnt]);
 		}
 		if (ret) {
 			/* Back out changes we already did */
 			for (cnt--; cnt >= 0; cnt--) {
-				if (!dquots[cnt])
+				dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
+				if (!dquot)
 					continue;
-				spin_lock(&dquots[cnt]->dq_dqb_lock);
+				spin_lock(&dquot->dq_dqb_lock);
 				if (reserve)
-					dquot_free_reserved_space(dquots[cnt],
-								  number);
+					dquot_free_reserved_space(dquot, number);
 				else
-					dquot_decr_space(dquots[cnt], number);
-				spin_unlock(&dquots[cnt]->dq_dqb_lock);
+					dquot_decr_space(dquot, number);
+				spin_unlock(&dquot->dq_dqb_lock);
 			}
 			spin_unlock(&inode->i_lock);
 			goto out_flush_warn;
@@ -1748,6 +1750,7 @@ int dquot_alloc_inode(struct inode *inode)
 	int cnt, ret = 0, index;
 	struct dquot_warn warn[MAXQUOTAS];
 	struct dquot * const *dquots;
+	struct dquot *dquot;
 
 	if (!inode_quota_active(inode))
 		return 0;
@@ -1758,17 +1761,19 @@ int dquot_alloc_inode(struct inode *inode)
 	index = srcu_read_lock(&dquot_srcu);
 	spin_lock(&inode->i_lock);
 	for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
-		if (!dquots[cnt])
+		dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
+		if (!dquot)
 			continue;
-		ret = dquot_add_inodes(dquots[cnt], 1, &warn[cnt]);
+		ret = dquot_add_inodes(dquot, 1, &warn[cnt]);
 		if (ret) {
 			for (cnt--; cnt >= 0; cnt--) {
-				if (!dquots[cnt])
+				dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
+				if (!dquot)
 					continue;
 				/* Back out changes we already did */
-				spin_lock(&dquots[cnt]->dq_dqb_lock);
-				dquot_decr_inodes(dquots[cnt], 1);
-				spin_unlock(&dquots[cnt]->dq_dqb_lock);
+				spin_lock(&dquot->dq_dqb_lock);
+				dquot_decr_inodes(dquot, 1);
+				spin_unlock(&dquot->dq_dqb_lock);
 			}
 			goto warn_put_all;
 		}
@@ -1790,6 +1795,7 @@ EXPORT_SYMBOL(dquot_alloc_inode);
 void dquot_claim_space_nodirty(struct inode *inode, qsize_t number)
 {
 	struct dquot **dquots;
+	struct dquot *dquot;
 	int cnt, index;
 
 	if (!inode_quota_active(inode)) {
@@ -1805,9 +1811,8 @@ void dquot_claim_space_nodirty(struct inode *inode, qsize_t number)
 	spin_lock(&inode->i_lock);
 	/* Claim reserved quotas to allocated quotas */
 	for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
-		if (dquots[cnt]) {
-			struct dquot *dquot = dquots[cnt];
-
+		dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
+		if (dquot) {
 			spin_lock(&dquot->dq_dqb_lock);
 			if (WARN_ON_ONCE(dquot->dq_dqb.dqb_rsvspace < number))
 				number = dquot->dq_dqb.dqb_rsvspace;
@@ -1832,6 +1837,7 @@ EXPORT_SYMBOL(dquot_claim_space_nodirty);
 void dquot_reclaim_space_nodirty(struct inode *inode, qsize_t number)
 {
 	struct dquot **dquots;
+	struct dquot *dquot;
 	int cnt, index;
 
 	if (!inode_quota_active(inode)) {
@@ -1847,9 +1853,8 @@ void dquot_reclaim_space_nodirty(struct inode *inode, qsize_t number)
 	spin_lock(&inode->i_lock);
 	/* Claim reserved quotas to allocated quotas */
 	for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
-		if (dquots[cnt]) {
-			struct dquot *dquot = dquots[cnt];
-
+		dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
+		if (dquot) {
 			spin_lock(&dquot->dq_dqb_lock);
 			if (WARN_ON_ONCE(dquot->dq_dqb.dqb_curspace < number))
 				number = dquot->dq_dqb.dqb_curspace;
@@ -1876,6 +1881,7 @@ void __dquot_free_space(struct inode *inode, qsize_t number, int flags)
 	unsigned int cnt;
 	struct dquot_warn warn[MAXQUOTAS];
 	struct dquot **dquots;
+	struct dquot *dquot;
 	int reserve = flags & DQUOT_SPACE_RESERVE, index;
 
 	if (!inode_quota_active(inode)) {
@@ -1896,17 +1902,18 @@ void __dquot_free_space(struct inode *inode, qsize_t number, int flags)
 		int wtype;
 
 		warn[cnt].w_type = QUOTA_NL_NOWARN;
-		if (!dquots[cnt])
+		dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
+		if (!dquot)
 			continue;
-		spin_lock(&dquots[cnt]->dq_dqb_lock);
-		wtype = info_bdq_free(dquots[cnt], number);
+		spin_lock(&dquot->dq_dqb_lock);
+		wtype = info_bdq_free(dquot, number);
 		if (wtype != QUOTA_NL_NOWARN)
-			prepare_warning(&warn[cnt], dquots[cnt], wtype);
+			prepare_warning(&warn[cnt], dquot, wtype);
 		if (reserve)
-			dquot_free_reserved_space(dquots[cnt], number);
+			dquot_free_reserved_space(dquot, number);
 		else
-			dquot_decr_space(dquots[cnt], number);
-		spin_unlock(&dquots[cnt]->dq_dqb_lock);
+			dquot_decr_space(dquot, number);
+		spin_unlock(&dquot->dq_dqb_lock);
 	}
 	if (reserve)
 		*inode_reserved_space(inode) -= number;
@@ -1931,6 +1938,7 @@ void dquot_free_inode(struct inode *inode)
 	unsigned int cnt;
 	struct dquot_warn warn[MAXQUOTAS];
 	struct dquot * const *dquots;
+	struct dquot *dquot;
 	int index;
 
 	if (!inode_quota_active(inode))
@@ -1941,16 +1949,16 @@ void dquot_free_inode(struct inode *inode)
 	spin_lock(&inode->i_lock);
 	for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
 		int wtype;
-
 		warn[cnt].w_type = QUOTA_NL_NOWARN;
-		if (!dquots[cnt])
+		dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
+		if (!dquot)
 			continue;
-		spin_lock(&dquots[cnt]->dq_dqb_lock);
-		wtype = info_idq_free(dquots[cnt], 1);
+		spin_lock(&dquot->dq_dqb_lock);
+		wtype = info_idq_free(dquot, 1);
 		if (wtype != QUOTA_NL_NOWARN)
-			prepare_warning(&warn[cnt], dquots[cnt], wtype);
-		dquot_decr_inodes(dquots[cnt], 1);
-		spin_unlock(&dquots[cnt]->dq_dqb_lock);
+			prepare_warning(&warn[cnt], dquot, wtype);
+		dquot_decr_inodes(dquot, 1);
+		spin_unlock(&dquot->dq_dqb_lock);
 	}
 	spin_unlock(&inode->i_lock);
 	mark_all_dquot_dirty(dquots);
@@ -1977,7 +1985,7 @@ int __dquot_transfer(struct inode *inode, struct dquot **transfer_to)
 	qsize_t rsv_space = 0;
 	qsize_t inode_usage = 1;
 	struct dquot *transfer_from[MAXQUOTAS] = {};
-	int cnt, ret = 0;
+	int cnt, index, ret = 0;
 	char is_valid[MAXQUOTAS] = {};
 	struct dquot_warn warn_to[MAXQUOTAS];
 	struct dquot_warn warn_from_inodes[MAXQUOTAS];
@@ -2066,8 +2074,16 @@ int __dquot_transfer(struct inode *inode, struct dquot **transfer_to)
 	spin_unlock(&inode->i_lock);
 	spin_unlock(&dq_data_lock);
 
+	/*
+	 * These arrays are local and we hold dquot references so we don't need
+	 * the srcu protection but still take dquot_srcu to avoid warning in
+	 * mark_all_dquot_dirty().
+	 */
+	index = srcu_read_lock(&dquot_srcu);
 	mark_all_dquot_dirty(transfer_from);
 	mark_all_dquot_dirty(transfer_to);
+	srcu_read_unlock(&dquot_srcu, index);
+
 	flush_warnings(warn_to);
 	flush_warnings(warn_from_inodes);
 	flush_warnings(warn_from_space);
-- 
2.43.0


  parent reply	other threads:[~2024-03-29 12:40 UTC|newest]

Thread overview: 120+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-29 12:36 [PATCH AUTOSEL 6.8 01/98] drm/vc4: don't check if plane->state->fb == state->fb Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 02/98] drm/ci: uprev mesa version: fix kdl commit fetch Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 03/98] drm/amdgpu: Skip do PCI error slot reset during RAS recovery Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 04/98] Input: synaptics-rmi4 - fail probing if memory allocation for "phys" fails Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 05/98] drm: panel-orientation-quirks: Add quirk for GPD Win Mini Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 06/98] ASoC: SOF: amd: Optimize quirk for Valve Galileo Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 07/98] drm/ttm: return ENOSPC from ttm_bo_mem_space v3 Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 08/98] scsi: ufs: qcom: Avoid re-init quirk when gears match Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 09/98] drm/amd/display: increased min_dcfclk_mhz and min_fclk_mhz Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 10/98] drm/amd/display: For FPO and SubVP/DRR configs program vmin/max sel Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 11/98] arm64: dts: qcom: sdm630: add USB QMP PHY support Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 12/98] arm64: dts: qcom: sda660-ifc6560: enable USB 3.0 PHY Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 13/98] arm64: dts: qcom: Add support for Xiaomi Redmi Note 9S Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 14/98] pinctrl: renesas: checker: Limit cfg reg enum checks to provided IDs Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 15/98] VMCI: Fix memcpy() run-time warning in dg_dispatch_as_host() Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 16/98] sysv: don't call sb_bread() with pointers_lock held Sasha Levin
2024-03-29 12:36 ` Sasha Levin [this message]
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 18/98] scsi: lpfc: Fix possible memory leak in lpfc_rcv_padisc() Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 19/98] printk: For @suppress_panic_printk check for other CPU in panic Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 20/98] printk: Add this_cpu_in_panic() Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 21/98] printk: Avoid non-panic CPUs writing to ringbuffer Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 22/98] panic: Flush kernel log buffer at the end Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 23/98] dump_stack: Do not get cpu_sync for panic CPU Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 24/98] drm/amd/display: Disable idle reallow as part of command/gpint execution Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 25/98] isofs: handle CDs with bad root inode but good Joliet root directory Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 26/98] ASoC: Intel: sof_rt5682: dmi quirk cleanup for mtl boards Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 27/98] ASoC: Intel: common: DMI remap for rebranded Intel NUC M15 (LAPRC710) laptops Sasha Levin
2024-03-29 12:36 ` [PATCH AUTOSEL 6.8 28/98] cpuidle: Avoid potential overflow in integer multiplication Sasha Levin
2024-03-29 12:36   ` Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 29/98] ARM: dts: rockchip: fix rk3288 hdmi ports node Sasha Levin
2024-03-29 12:37   ` Sasha Levin
2024-03-29 12:37   ` Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 30/98] ARM: dts: rockchip: fix rk322x " Sasha Levin
2024-03-29 12:37   ` Sasha Levin
2024-03-29 12:37   ` Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 31/98] arm64: dts: rockchip: fix rk3328 " Sasha Levin
2024-03-29 12:37   ` Sasha Levin
2024-03-29 12:37   ` Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 32/98] arm64: dts: rockchip: fix rk3399 " Sasha Levin
2024-03-29 12:37   ` Sasha Levin
2024-03-29 12:37   ` Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 33/98] arm64: dts: qcom: qcs6490-rb3gen2: Declare GCC clocks protected Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 34/98] pmdomain: ti: Add a null pointer check to the omap_prm_domain_init Sasha Levin
2024-03-29 12:37   ` Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 35/98] pmdomain: imx8mp-blk-ctrl: imx8mp_blk: Add fdcc clock to hdmimix domain Sasha Levin
2024-03-29 12:37   ` Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 36/98] arm64: dts: sc8280xp: correct DMIC2 and DMIC3 pin config node names Sasha Levin
2024-04-02  7:23   ` Johan Hovold
2024-04-02 10:17     ` Krzysztof Kozlowski
2024-04-07 23:46       ` Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 37/98] arm64: dts: sm8450: " Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 38/98] arm64: dts: sm8550: " Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 39/98] arm64: dts: sm8650: " Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 40/98] rcu/nocb: Fix WARN_ON_ONCE() in the rcu_nocb_bypass_lock() Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 41/98] rcu-tasks: Repair RCU Tasks Trace quiescence check Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 42/98] Julia Lawall reported this null pointer dereference, this should fix it Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 43/98] ACPI: resource: Add IRQ override quirk for ASUS ExpertBook B2502FBA Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 44/98] media: sta2x11: fix irq handler cast Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 45/98] ALSA: firewire-lib: handle quirk to calculate payload quadlets as data block counter Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 46/98] drm/panel: simple: Add BOE BP082WX1-100 8.2" panel Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 47/98] x86/vdso: Fix rethunk patching for vdso-image-{32,64}.o Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 48/98] ASoC: Intel: avs: Populate board selection with new I2S entries Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 49/98] firmware: tegra: bpmp: Return directly after a failed kzalloc() in get_filename() Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 50/98] ext4: add a hint for block bitmap corrupt state in mb_groups Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 51/98] ext4: forbid commit inconsistent quota data when errors=remount-ro Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 52/98] ACPI: x86: Move acpi_quirk_skip_serdev_enumeration() out of CONFIG_X86_ANDROID_TABLETS Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 53/98] ACPI: x86: Add DELL0501 handling to acpi_quirk_skip_serdev_enumeration() Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 54/98] drm/amd/display: Fix nanosec stat overflow Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 55/98] pstore/zone: Add a null pointer check to the psz_kmsg_read Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 56/98] tools/power x86_energy_perf_policy: Fix file leak in get_pkg_num() Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 57/98] mfd: intel-lpss: Switch to generalized quirk table Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 58/98] mfd: intel-lpss: Introduce QUIRK_CLOCK_DIVIDER_UNITY for XPS 9530 Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 59/98] accel/habanalabs: increase HL_MAX_STR to 64 bytes to avoid warnings Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 60/98] i2c: designware: Fix RX FIFO depth define on Wangxun 10Gb NIC Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 61/98] HID: input: avoid polling stylus battery on Chromebook Pompom Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 62/98] drm/amd/amdgpu: Fix potential ioremap() memory leaks in amdgpu_device_init() Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 63/98] dma-direct: Leak pages on dma_set_decrypted() failure Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 64/98] drm: Check output polling initialized before disabling Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 65/98] SUNRPC: increase size of rpc_wait_queue.qlen from unsigned short to unsigned int Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 66/98] iommu/arm-smmu-v3: Hold arm_smmu_asid_lock during all of attach_dev Sasha Levin
2024-03-29 12:37   ` Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 67/98] PCI: Disable D3cold on Asus B1400 PCI-NVMe bridge Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 68/98] Revert "ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default" Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 69/98] sparc: vdso: Disable UBSAN instrumentation Sasha Levin
2024-03-30  2:05   ` Kees Cook
2024-04-07 23:46     ` Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 70/98] libperf evlist: Avoid out-of-bounds access Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 71/98] PCI: Mark LSI FW643 to avoid bus reset Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 72/98] crypto: iaa - Fix async_disable descriptor leak Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 73/98] cpufreq: Don't unregister cpufreq cooling on CPU hotplug Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 74/98] overflow: Allow non-type arg to type_max() and type_min() Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 75/98] sh: Fix build with CONFIG_UBSAN=y Sasha Levin
2024-03-30  2:06   ` Kees Cook
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 76/98] input/touchscreen: imagis: Correct the maximum touch area value Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 77/98] input/touchscreen: imagis: Add support for Imagis IST3038B Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 78/98] input/touchscreen: imagis: add support for IST3032C Sasha Levin
2024-03-30  9:33   ` Karel Balej
2024-04-07 23:48     ` Sasha Levin
2024-04-08 21:47       ` Karel Balej
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 79/98] drivers/perf: hisi: Enable HiSilicon Erratum 162700402 quirk for HIP09 Sasha Levin
2024-03-29 12:37   ` Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 80/98] btrfs: preallocate temporary extent buffer for inode logging when needed Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 81/98] btrfs: handle chunk tree lookup error in btrfs_relocate_sys_chunks() Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 82/98] btrfs: export: handle invalid inode or root reference in btrfs_get_parent() Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 83/98] btrfs: send: handle path ref underflow in header iterate_inode_ref() Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 84/98] block: prevent division by zero in blk_rq_stat_sum() Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 85/98] RDMA/cm: add timeout to cm_destroy_id wait Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 86/98] Input: make input_class constant Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 87/98] Input: imagis - use FIELD_GET where applicable Sasha Levin
2024-03-29 12:37 ` [PATCH AUTOSEL 6.8 88/98] Input: imagis - add touch key support Sasha Levin
2024-03-29 12:38 ` [PATCH AUTOSEL 6.8 89/98] smb: client: reuse file lease key in compound operations Sasha Levin
2024-03-29 12:38 ` [PATCH AUTOSEL 6.8 90/98] Input: allocate keycode for Display refresh rate toggle Sasha Levin
2024-03-29 12:38 ` [PATCH AUTOSEL 6.8 91/98] platform/x86: acer-wmi: Add support for Acer PH16-71 Sasha Levin
2024-03-29 12:38 ` [PATCH AUTOSEL 6.8 92/98] platform/x86: acer-wmi: Add predator_v4 module parameter Sasha Levin
2024-03-29 12:38 ` [PATCH AUTOSEL 6.8 93/98] platform/x86: touchscreen_dmi: Add an extra entry for a variant of the Chuwi Vi8 tablet Sasha Levin
2024-03-29 12:38 ` [PATCH AUTOSEL 6.8 94/98] perf/x86/amd/lbr: Discard erroneous branch entries Sasha Levin
2024-03-29 12:38 ` [PATCH AUTOSEL 6.8 95/98] ALSA: hda/realtek: Add quirk for Lenovo Yoga 9 14IMH9 Sasha Levin
2024-03-29 12:38 ` [PATCH AUTOSEL 6.8 96/98] ktest: force $buildonly = 1 for 'make_warnings_file' test type Sasha Levin
2024-03-29 12:38 ` [PATCH AUTOSEL 6.8 97/98] Input: xpad - add support for Snakebyte GAMEPADs Sasha Levin
2024-03-29 12:38 ` [PATCH AUTOSEL 6.8 98/98] ring-buffer: use READ_ONCE() to read cpu_buffer->commit_page in concurrent environment Sasha Levin

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=20240329123919.3087149-17-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=jack@suse.com \
    --cc=jack@suse.cz \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=wangjianjian3@huawei.com \
    /path/to/YOUR_REPLY

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

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