stable.vger.kernel.org archive mirror
 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,
	Badhri Jagan Sridharan <badhri@google.com>,
	Alan Stern <stern@rowland.harvard.edu>
Subject: [PATCH 6.3 103/187] usb: gadget: udc: core: Prevent soft_connect_store() race
Date: Mon, 19 Jun 2023 12:28:41 +0200	[thread overview]
Message-ID: <20230619102202.562325527@linuxfoundation.org> (raw)
In-Reply-To: <20230619102157.579823843@linuxfoundation.org>

From: Badhri Jagan Sridharan <badhri@google.com>

commit 286d9975a838d0a54da049765fa1d1fb96b89682 upstream.

usb_udc_connect_control(), soft_connect_store() and
usb_gadget_deactivate() can potentially race against each other to invoke
usb_gadget_connect()/usb_gadget_disconnect(). To prevent this, guard
udc->started, gadget->allow_connect, gadget->deactivate and
gadget->connect with connect_lock so that ->pullup() is only invoked when
the gadget is bound, started and not deactivated. The routines
usb_gadget_connect_locked(), usb_gadget_disconnect_locked(),
usb_udc_connect_control_locked(), usb_gadget_udc_start_locked(),
usb_gadget_udc_stop_locked() are called with this lock held.

An earlier version of this commit was reverted due to the crash reported in
https://lore.kernel.org/all/ZF4BvgsOyoKxdPFF@francesco-nb.int.toradex.com/.
commit 16737e78d190 ("usb: gadget: udc: core: Offload usb_udc_vbus_handler processing")
addresses the crash reported.

Cc: stable@vger.kernel.org
Fixes: 628ef0d273a6 ("usb: udc: add usb_udc_vbus_handler")
Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
Reviewed-by: Alan Stern <stern@rowland.harvard.edu>
Message-ID: <20230609010227.978661-2-badhri@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/usb/gadget/udc/core.c |  155 ++++++++++++++++++++++++++++--------------
 1 file changed, 106 insertions(+), 49 deletions(-)

--- a/drivers/usb/gadget/udc/core.c
+++ b/drivers/usb/gadget/udc/core.c
@@ -40,6 +40,11 @@ static struct bus_type gadget_bus_type;
  * @allow_connect: Indicates whether UDC is allowed to be pulled up.
  * Set/cleared by gadget_(un)bind_driver() after gadget driver is bound or
  * unbound.
+ * @connect_lock: protects udc->started, gadget->connect,
+ * gadget->allow_connect and gadget->deactivate. The routines
+ * usb_gadget_connect_locked(), usb_gadget_disconnect_locked(),
+ * usb_udc_connect_control_locked(), usb_gadget_udc_start_locked() and
+ * usb_gadget_udc_stop_locked() are called with this lock held.
  *
  * This represents the internal data structure which is used by the UDC-class
  * to hold information about udc driver and gadget together.
@@ -53,6 +58,7 @@ struct usb_udc {
 	bool				started;
 	bool				allow_connect;
 	struct work_struct		vbus_work;
+	struct mutex			connect_lock;
 };
 
 static struct class *udc_class;
@@ -665,17 +671,8 @@ out:
 }
 EXPORT_SYMBOL_GPL(usb_gadget_vbus_disconnect);
 
-/**
- * usb_gadget_connect - software-controlled connect to USB host
- * @gadget:the peripheral being connected
- *
- * Enables the D+ (or potentially D-) pullup.  The host will start
- * enumerating this gadget when the pullup is active and a VBUS session
- * is active (the link is powered).
- *
- * Returns zero on success, else negative errno.
- */
-int usb_gadget_connect(struct usb_gadget *gadget)
+static int usb_gadget_connect_locked(struct usb_gadget *gadget)
+	__must_hold(&gadget->udc->connect_lock)
 {
 	int ret = 0;
 
@@ -684,10 +681,12 @@ int usb_gadget_connect(struct usb_gadget
 		goto out;
 	}
 
-	if (gadget->deactivated || !gadget->udc->allow_connect) {
+	if (gadget->deactivated || !gadget->udc->allow_connect || !gadget->udc->started) {
 		/*
-		 * If gadget is deactivated we only save new state.
-		 * Gadget will be connected automatically after activation.
+		 * If the gadget isn't usable (because it is deactivated,
+		 * unbound, or not yet started), we only save the new state.
+		 * The gadget will be connected automatically when it is
+		 * activated/bound/started.
 		 */
 		gadget->connected = true;
 		goto out;
@@ -702,22 +701,31 @@ out:
 
 	return ret;
 }
-EXPORT_SYMBOL_GPL(usb_gadget_connect);
 
 /**
- * usb_gadget_disconnect - software-controlled disconnect from USB host
- * @gadget:the peripheral being disconnected
- *
- * Disables the D+ (or potentially D-) pullup, which the host may see
- * as a disconnect (when a VBUS session is active).  Not all systems
- * support software pullup controls.
+ * usb_gadget_connect - software-controlled connect to USB host
+ * @gadget:the peripheral being connected
  *
- * Following a successful disconnect, invoke the ->disconnect() callback
- * for the current gadget driver so that UDC drivers don't need to.
+ * Enables the D+ (or potentially D-) pullup.  The host will start
+ * enumerating this gadget when the pullup is active and a VBUS session
+ * is active (the link is powered).
  *
  * Returns zero on success, else negative errno.
  */
-int usb_gadget_disconnect(struct usb_gadget *gadget)
+int usb_gadget_connect(struct usb_gadget *gadget)
+{
+	int ret;
+
+	mutex_lock(&gadget->udc->connect_lock);
+	ret = usb_gadget_connect_locked(gadget);
+	mutex_unlock(&gadget->udc->connect_lock);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(usb_gadget_connect);
+
+static int usb_gadget_disconnect_locked(struct usb_gadget *gadget)
+	__must_hold(&gadget->udc->connect_lock)
 {
 	int ret = 0;
 
@@ -729,7 +737,7 @@ int usb_gadget_disconnect(struct usb_gad
 	if (!gadget->connected)
 		goto out;
 
-	if (gadget->deactivated) {
+	if (gadget->deactivated || !gadget->udc->started) {
 		/*
 		 * If gadget is deactivated we only save new state.
 		 * Gadget will stay disconnected after activation.
@@ -752,6 +760,30 @@ out:
 
 	return ret;
 }
+
+/**
+ * usb_gadget_disconnect - software-controlled disconnect from USB host
+ * @gadget:the peripheral being disconnected
+ *
+ * Disables the D+ (or potentially D-) pullup, which the host may see
+ * as a disconnect (when a VBUS session is active).  Not all systems
+ * support software pullup controls.
+ *
+ * Following a successful disconnect, invoke the ->disconnect() callback
+ * for the current gadget driver so that UDC drivers don't need to.
+ *
+ * Returns zero on success, else negative errno.
+ */
+int usb_gadget_disconnect(struct usb_gadget *gadget)
+{
+	int ret;
+
+	mutex_lock(&gadget->udc->connect_lock);
+	ret = usb_gadget_disconnect_locked(gadget);
+	mutex_unlock(&gadget->udc->connect_lock);
+
+	return ret;
+}
 EXPORT_SYMBOL_GPL(usb_gadget_disconnect);
 
 /**
@@ -769,13 +801,14 @@ int usb_gadget_deactivate(struct usb_gad
 {
 	int ret = 0;
 
+	mutex_lock(&gadget->udc->connect_lock);
 	if (gadget->deactivated)
-		goto out;
+		goto unlock;
 
 	if (gadget->connected) {
-		ret = usb_gadget_disconnect(gadget);
+		ret = usb_gadget_disconnect_locked(gadget);
 		if (ret)
-			goto out;
+			goto unlock;
 
 		/*
 		 * If gadget was being connected before deactivation, we want
@@ -785,7 +818,8 @@ int usb_gadget_deactivate(struct usb_gad
 	}
 	gadget->deactivated = true;
 
-out:
+unlock:
+	mutex_unlock(&gadget->udc->connect_lock);
 	trace_usb_gadget_deactivate(gadget, ret);
 
 	return ret;
@@ -805,8 +839,9 @@ int usb_gadget_activate(struct usb_gadge
 {
 	int ret = 0;
 
+	mutex_lock(&gadget->udc->connect_lock);
 	if (!gadget->deactivated)
-		goto out;
+		goto unlock;
 
 	gadget->deactivated = false;
 
@@ -815,9 +850,11 @@ int usb_gadget_activate(struct usb_gadge
 	 * while it was being deactivated, we call usb_gadget_connect().
 	 */
 	if (gadget->connected)
-		ret = usb_gadget_connect(gadget);
+		ret = usb_gadget_connect_locked(gadget);
+	mutex_unlock(&gadget->udc->connect_lock);
 
-out:
+unlock:
+	mutex_unlock(&gadget->udc->connect_lock);
 	trace_usb_gadget_activate(gadget, ret);
 
 	return ret;
@@ -1056,19 +1093,22 @@ EXPORT_SYMBOL_GPL(usb_gadget_set_state);
 
 /* ------------------------------------------------------------------------- */
 
-static void usb_udc_connect_control(struct usb_udc *udc)
+/* Acquire connect_lock before calling this function. */
+static void usb_udc_connect_control_locked(struct usb_udc *udc) __must_hold(&udc->connect_lock)
 {
 	if (udc->vbus)
-		usb_gadget_connect(udc->gadget);
+		usb_gadget_connect_locked(udc->gadget);
 	else
-		usb_gadget_disconnect(udc->gadget);
+		usb_gadget_disconnect_locked(udc->gadget);
 }
 
 static void vbus_event_work(struct work_struct *work)
 {
 	struct usb_udc *udc = container_of(work, struct usb_udc, vbus_work);
 
-	usb_udc_connect_control(udc);
+	mutex_lock(&udc->connect_lock);
+	usb_udc_connect_control_locked(udc);
+	mutex_unlock(&udc->connect_lock);
 }
 
 /**
@@ -1117,7 +1157,7 @@ void usb_gadget_udc_reset(struct usb_gad
 EXPORT_SYMBOL_GPL(usb_gadget_udc_reset);
 
 /**
- * usb_gadget_udc_start - tells usb device controller to start up
+ * usb_gadget_udc_start_locked - tells usb device controller to start up
  * @udc: The UDC to be started
  *
  * This call is issued by the UDC Class driver when it's about
@@ -1128,8 +1168,11 @@ EXPORT_SYMBOL_GPL(usb_gadget_udc_reset);
  * necessary to have it powered on.
  *
  * Returns zero on success, else negative errno.
+ *
+ * Caller should acquire connect_lock before invoking this function.
  */
-static inline int usb_gadget_udc_start(struct usb_udc *udc)
+static inline int usb_gadget_udc_start_locked(struct usb_udc *udc)
+	__must_hold(&udc->connect_lock)
 {
 	int ret;
 
@@ -1146,7 +1189,7 @@ static inline int usb_gadget_udc_start(s
 }
 
 /**
- * usb_gadget_udc_stop - tells usb device controller we don't need it anymore
+ * usb_gadget_udc_stop_locked - tells usb device controller we don't need it anymore
  * @udc: The UDC to be stopped
  *
  * This call is issued by the UDC Class driver after calling
@@ -1155,8 +1198,11 @@ static inline int usb_gadget_udc_start(s
  * The details are implementation specific, but it can go as
  * far as powering off UDC completely and disable its data
  * line pullups.
+ *
+ * Caller should acquire connect lock before invoking this function.
  */
-static inline void usb_gadget_udc_stop(struct usb_udc *udc)
+static inline void usb_gadget_udc_stop_locked(struct usb_udc *udc)
+	__must_hold(&udc->connect_lock)
 {
 	if (!udc->started) {
 		dev_err(&udc->dev, "UDC had already stopped\n");
@@ -1315,6 +1361,7 @@ int usb_add_gadget(struct usb_gadget *ga
 
 	udc->gadget = gadget;
 	gadget->udc = udc;
+	mutex_init(&udc->connect_lock);
 
 	udc->started = false;
 
@@ -1518,12 +1565,16 @@ static int gadget_bind_driver(struct dev
 	if (ret)
 		goto err_bind;
 
-	ret = usb_gadget_udc_start(udc);
-	if (ret)
+	mutex_lock(&udc->connect_lock);
+	ret = usb_gadget_udc_start_locked(udc);
+	if (ret) {
+		mutex_unlock(&udc->connect_lock);
 		goto err_start;
+	}
 	usb_gadget_enable_async_callbacks(udc);
 	udc->allow_connect = true;
-	usb_udc_connect_control(udc);
+	usb_udc_connect_control_locked(udc);
+	mutex_unlock(&udc->connect_lock);
 
 	kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE);
 	return 0;
@@ -1556,12 +1607,14 @@ static void gadget_unbind_driver(struct
 
 	udc->allow_connect = false;
 	cancel_work_sync(&udc->vbus_work);
-	usb_gadget_disconnect(gadget);
+	mutex_lock(&udc->connect_lock);
+	usb_gadget_disconnect_locked(gadget);
 	usb_gadget_disable_async_callbacks(udc);
 	if (gadget->irq)
 		synchronize_irq(gadget->irq);
 	udc->driver->unbind(gadget);
-	usb_gadget_udc_stop(udc);
+	usb_gadget_udc_stop_locked(udc);
+	mutex_unlock(&udc->connect_lock);
 
 	mutex_lock(&udc_lock);
 	driver->is_bound = false;
@@ -1647,11 +1700,15 @@ static ssize_t soft_connect_store(struct
 	}
 
 	if (sysfs_streq(buf, "connect")) {
-		usb_gadget_udc_start(udc);
-		usb_gadget_connect(udc->gadget);
+		mutex_lock(&udc->connect_lock);
+		usb_gadget_udc_start_locked(udc);
+		usb_gadget_connect_locked(udc->gadget);
+		mutex_unlock(&udc->connect_lock);
 	} else if (sysfs_streq(buf, "disconnect")) {
-		usb_gadget_disconnect(udc->gadget);
-		usb_gadget_udc_stop(udc);
+		mutex_lock(&udc->connect_lock);
+		usb_gadget_disconnect_locked(udc->gadget);
+		usb_gadget_udc_stop_locked(udc);
+		mutex_unlock(&udc->connect_lock);
 	} else {
 		dev_err(dev, "unsupported command '%s'\n", buf);
 		ret = -EINVAL;



  parent reply	other threads:[~2023-06-19 10:36 UTC|newest]

Thread overview: 200+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-19 10:26 [PATCH 6.3 000/187] 6.3.9-rc1 review Greg Kroah-Hartman
2023-06-19 10:26 ` [PATCH 6.3 001/187] x86/head/64: Switch to KERNEL_CS as soon as new GDT is installed Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 002/187] cgroup: bpf: use cgroup_lock()/cgroup_unlock() wrappers Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 003/187] cgroup: always put cset in cgroup_css_set_put_fork Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 004/187] cgroup: fix missing cpus_read_{lock,unlock}() in cgroup_transfer_tasks() Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 005/187] qcom: llcc/edac: Fix the base address used for accessing LLCC banks Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 006/187] EDAC/qcom: Get rid of hardcoded register offsets Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 007/187] ksmbd: validate smb request protocol id Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 008/187] of: overlay: Fix missing of_node_put() in error case of init_overlay_changeset() Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 009/187] power: supply: ab8500: Fix external_power_changed race Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 010/187] power: supply: sc27xx: " Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 011/187] power: supply: bq27xxx: Use mod_delayed_work() instead of cancel() + schedule() Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 012/187] ARM: dts: vexpress: add missing cache properties Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 013/187] arm64: dts: arm: " Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 014/187] tools: gpio: fix debounce_period_us output of lsgpio Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 015/187] selftests: gpio: gpio-sim: Fix BUG: test FAILED due to recent change Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 016/187] power: supply: Ratelimit no data debug output Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 017/187] PCI/DPC: Quirk PIO log size for Intel Ice Lake Root Ports Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 018/187] platform/x86: asus-wmi: Ignore WMI events with codes 0x7B, 0xC0 Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 019/187] regulator: Fix error checking for debugfs_create_dir Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 020/187] irqchip/gic-v3: Disable pseudo NMIs on Mediatek devices w/ firmware issues Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 021/187] irqchip/meson-gpio: Mark OF related data as maybe unused Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 022/187] power: supply: Fix logic checking if system is running from battery Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 023/187] drm: panel-orientation-quirks: Change Airs quirk to support Air Plus Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 024/187] btrfs: scrub: try harder to mark RAID56 block groups read-only Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 025/187] btrfs: handle memory allocation failure in btrfs_csum_one_bio Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 026/187] ASoC: soc-pcm: test if a BE can be prepared Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 027/187] sfc: fix devlink info error handling Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 028/187] ASoC: Intel: avs: Account for UID of ACPI device Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 029/187] ASoC: Intel: avs: Fix avs_path_module::instance_id size Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 030/187] ASoC: Intel: avs: Add missing checks on FE startup Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 031/187] parisc: Improve cache flushing for PCXL in arch_sync_dma_for_cpu() Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 032/187] parisc: Flush gatt writes and adjust gatt mask in parisc_agp_mask_memory() Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 033/187] erofs: use HIPRI by default if per-cpu kthreads are enabled Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 034/187] MIPS: unhide PATA_PLATFORM Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 035/187] MIPS: Restore Au1300 support Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 036/187] MIPS: Alchemy: fix dbdma2 Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 037/187] mips: Move initrd_start check after initrd address sanitisation Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 038/187] ASoC: cs35l41: Fix default regmap values for some registers Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 039/187] ASoC: dwc: move DMA init to snd_soc_dai_driver probe() Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 040/187] xen/blkfront: Only check REQ_FUA for writes Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 041/187] drm:amd:amdgpu: Fix missing buffer object unlock in failure path Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 042/187] io_uring: unlock sqd->lock before sq thread release CPU Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 043/187] NVMe: Add MAXIO 1602 to bogus nid list Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 044/187] irqchip/gic: Correctly validate OF quirk descriptors Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 045/187] wifi: cfg80211: fix locking in regulatory disconnect Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 046/187] wifi: cfg80211: fix double lock bug in reg_wdev_chan_valid() Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 047/187] epoll: ep_autoremove_wake_function should use list_del_init_careful Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 048/187] ocfs2: fix use-after-free when unmounting read-only filesystem Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 049/187] ocfs2: check new file size on fallocate call Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 050/187] zswap: do not shrink if cgroup may not zswap Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 051/187] mm/damon/core: fix divide error in damon_nr_accesses_to_accesses_bp() Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 052/187] nios2: dts: Fix tse_mac "max-frame-size" property Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 053/187] mm/uffd: fix vma operation where start addr cuts part of vma Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 054/187] nilfs2: fix incomplete buffer cleanup in nilfs_btnode_abort_change_key() Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 055/187] nilfs2: fix possible out-of-bounds segment allocation in resize ioctl Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 056/187] nilfs2: reject devices with insufficient block count Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 057/187] LoongArch: Fix debugfs_create_dir() error checking Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 058/187] LoongArch: Fix perf event id calculation Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 059/187] io_uring/net: save msghdr->msg_control for retries Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 060/187] Revert "drm/amdgpu: remove TOPDOWN flags when allocating VRAM in large bar system" Greg Kroah-Hartman
2023-06-19 10:27 ` [PATCH 6.3 061/187] kexec: support purgatories with .text.hot sections Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 062/187] x86/purgatory: remove PGO flags Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 063/187] riscv/purgatory: " Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 064/187] powerpc/purgatory: " Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 065/187] btrfs: subpage: fix a crash in metadata repair path Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 066/187] btrfs: properly enable async discard when switching from RO->RW Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 067/187] btrfs: do not ASSERT() on duplicated global roots Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 068/187] btrfs: fix iomap_begin length for nocow writes Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 069/187] btrfs: can_nocow_file_extent should pass down args->strict from callers Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 070/187] ALSA: usb-audio: Fix broken resume due to UAC3 power state Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 071/187] ALSA: usb-audio: Add quirk flag for HEM devices to enable native DSD playback Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 072/187] s390/ism: Fix trying to free already-freed IRQ by repeated ism_dev_exit() Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 073/187] dm thin metadata: check fail_io before using data_sm Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 074/187] dm thin: fix issue_discard to pass GFP_NOIO to __blkdev_issue_discard Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 075/187] net: ethernet: stmicro: stmmac: fix possible memory leak in __stmmac_open Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 076/187] nouveau: fix client work fence deletion race Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 077/187] mm/gup_test: fix ioctl fail for compat task Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 078/187] RDMA/uverbs: Restrict usage of privileged QKEYs Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 079/187] drm/amdgpu: vcn_4_0 set instance 0 init sched score to 1 Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 080/187] net: usb: qmi_wwan: add support for Compal RXM-G1 Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 081/187] drm/amd/display: limit DPIA link rate to HBR3 Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 082/187] drm/amd/display: edp do not add non-edid timings Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 083/187] drm/amd: Make sure image is written to trigger VBIOS image update flow Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 084/187] drm/amd: Tighten permissions on VBIOS flashing attributes Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 085/187] drm/amd/pm: workaround for compute workload type on some skus Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 086/187] drm/amdgpu: add missing radeon secondary PCI ID Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 087/187] drm/amdgpu: Reset CP_VMID_PREEMPT after trailing fence signaled Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 088/187] drm/amdgpu: Program gds backup address as zero if no gds allocated Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 089/187] drm/amdgpu: Implement gfx9 patch functions for resubmission Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 090/187] drm/amdgpu: Modify indirect buffer packages " Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 091/187] ALSA: hda/realtek: Add a quirk for Compaq N14JP6 Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 092/187] thunderbolt: Increase DisplayPort Connection Manager handshake timeout Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 093/187] thunderbolt: Do not touch CL state configuration during discovery Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 094/187] thunderbolt: dma_test: Use correct value for absent rings when creating paths Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 095/187] thunderbolt: Mask ring interrupt on Intel hardware as well Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 096/187] clk: pxa: fix NULL pointer dereference in pxa3xx_clk_update_accr Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 097/187] USB: serial: option: add Quectel EM061KGL series Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 098/187] serial: lantiq: add missing interrupt ack Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 099/187] tty: serial: fsl_lpuart: reduce RX watermark to 0 on LS1028A Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 100/187] usb: typec: ucsi: Fix command cancellation Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 101/187] usb: typec: Fix fast_role_swap_current show function Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 102/187] usb: gadget: udc: core: Offload usb_udc_vbus_handler processing Greg Kroah-Hartman
2023-06-19 10:28 ` Greg Kroah-Hartman [this message]
2023-06-19 10:28 ` [PATCH 6.3 104/187] usb: gadget: udc: renesas_usb3: Fix RZ/V2M {modprobe,bind} error Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 105/187] USB: dwc3: qcom: fix NULL-deref on suspend Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 106/187] USB: dwc3: fix use-after-free on core driver unbind Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 107/187] usb: dwc3: gadget: Reset num TRBs before giving back the request Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 108/187] RDMA/rtrs: Fix the last iu->buf leak in err path Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 109/187] RDMA/rtrs: Fix rxe_dealloc_pd warning Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 110/187] RDMA/rxe: Fix packet length checks Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 111/187] RDMA/rxe: Fix ref count error in check_rkey() Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 112/187] RDMA/bnxt_re: Fix reporting active_{speed,width} attributes Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 113/187] spi: cadence-quadspi: Add missing check for dma_set_mask Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 114/187] spi: fsl-dspi: avoid SCK glitches with continuous transfers Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 115/187] regulator: qcom-rpmh: add support for pmm8654au regulators Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 116/187] regulator: qcom-rpmh: Fix regulators for PM8550 Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 117/187] netfilter: nf_tables: integrate pipapo into commit protocol Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 118/187] netfilter: nfnetlink: skip error delivery on batch in case of ENOMEM Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 119/187] ice: do not busy-wait to read GNSS data Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 120/187] ice: Dont dereference NULL in ice_gnss_read error path Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 6.3 121/187] ice: Fix XDP memory leak when NIC is brought up and down Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 122/187] netfilter: nf_tables: incorrect error path handling with NFT_MSG_NEWRULE Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 123/187] net: enetc: correct the indexes of highest and 2nd highest TCs Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 124/187] ping6: Fix send to link-local addresses with VRF Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 125/187] igb: Fix extts capture value format for 82580/i354/i350 Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 126/187] net/sched: act_pedit: remove extra check for key type Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 127/187] net/sched: act_pedit: Parse L3 Header for L4 offset Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 128/187] net: renesas: rswitch: Fix timestamp feature after all descriptors are used Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 129/187] octeontx2-af: Fix promiscuous mode Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 130/187] net/sched: taprio: fix slab-out-of-bounds Read in taprio_dequeue_from_txq Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 131/187] net/sched: cls_u32: Fix reference counter leak leading to overflow Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 132/187] wifi: mac80211: fix link activation settings order Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 133/187] wifi: cfg80211: fix link del callback to call correct handler Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 134/187] wifi: mac80211: take lock before setting vif links Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 135/187] RDMA/rxe: Fix the use-before-initialization error of resp_pkts Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 136/187] iavf: remove mask from iavf_irq_enable_queues() Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 137/187] octeontx2-af: fixed resource availability check Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 138/187] octeontx2-af: fix lbk link credits on cn10k Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 139/187] RDMA/mlx5: Initiate dropless RQ for RAW Ethernet functions Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 140/187] RDMA/mlx5: Create an indirect flow table for steering anchor Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 141/187] RDMA/cma: Always set static rate to 0 for RoCE Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 142/187] IB/uverbs: Fix to consider event queue closing also upon non-blocking mode Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 143/187] RDMA/mlx5: Fix affinity assignment Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 144/187] IB/isert: Fix dead lock in ib_isert Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 145/187] IB/isert: Fix possible list corruption in CMA handler Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 146/187] IB/isert: Fix incorrect release of isert connection Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 147/187] net: ethtool: correct MAX attribute value for stats Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 148/187] wifi: mac80211: fragment per STA profile correctly Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 149/187] ipvlan: fix bound dev checking for IPv6 l3s mode Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 150/187] sctp: fix an error code in sctp_sf_eat_auth() Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 151/187] igc: Clean the TX buffer and TX descriptor ring Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 152/187] igc: Fix possible system crash when loading module Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 153/187] igb: fix nvm.ops.read() error handling Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 154/187] net: phylink: report correct max speed for QUSGMII Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 155/187] net: phylink: use a dedicated helper to parse usgmii control word Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 156/187] drm/nouveau: dont detect DSM for non-NVIDIA device Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 157/187] drm/bridge: ti-sn65dsi86: Avoid possible buffer overflow Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 158/187] drm/nouveau/dp: check for NULL nv_connector->native_mode Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 159/187] drm/nouveau: add nv_encoder pointer check for NULL Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 160/187] net: ethernet: ti: am65-cpsw: Call of_node_put() on error path Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 161/187] selftests/tc-testing: Fix Error: Specified qdisc kind is unknown Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 162/187] selftests/tc-testing: Fix Error: failed to find target LOG Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 163/187] selftests/tc-testing: Fix SFB db test Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 164/187] net/sched: act_ct: Fix promotion of offloaded unreplied tuple Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 165/187] net/sched: Refactor qdisc_graft() for ingress and clsact Qdiscs Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 166/187] net/sched: qdisc_destroy() old ingress and clsact Qdiscs before grafting Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 167/187] selftests: forwarding: hw_stats_l3: Set addrgenmode in a separate step Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 168/187] cifs: fix lease break oops in xfstest generic/098 Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 169/187] RDMA/rxe: Fix rxe_cq_post Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 170/187] Revert "media: dvb-core: Fix use-after-free on race condition at dvb_frontend" Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 171/187] ext4: drop the call to ext4_error() from ext4_get_group_info() Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 172/187] ice: Fix ice module unload Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 173/187] net/sched: cls_api: Fix lockup on flushing explicitly created chain Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 174/187] net: dsa: felix: fix taprio guard band overflow at 10Mbps with jumbo frames Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 175/187] net: lapbether: only support ethernet devices Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 176/187] net: macsec: fix double free of percpu stats Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 177/187] sfc: fix XDP queues mode with legacy IRQ Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 178/187] dm: dont lock fs when the map is NULL during suspend or resume Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 179/187] net: tipc: resize nlattr array to correct size Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 180/187] selftests/ptp: Fix timestamp printf format for PTP_SYS_OFFSET Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 6.3 181/187] octeon_ep: Add missing check for ioremap Greg Kroah-Hartman
2023-06-19 10:30 ` [PATCH 6.3 182/187] afs: Fix vlserver probe RTT handling Greg Kroah-Hartman
2023-06-19 10:30 ` [PATCH 6.3 183/187] parisc: Delete redundant register definitions in <asm/assembly.h> Greg Kroah-Hartman
2023-06-19 10:30 ` [PATCH 6.3 184/187] arm64: dts: qcom: sm8550: Use the correct LLCC register scheme Greg Kroah-Hartman
2023-06-19 10:30 ` [PATCH 6.3 185/187] neighbour: delete neigh_lookup_nodev as not used Greg Kroah-Hartman
2023-06-19 10:30 ` [PATCH 6.3 186/187] scsi: target: core: Fix error path in target_setup_session() Greg Kroah-Hartman
2023-06-19 10:30 ` [PATCH 6.3 187/187] blk-cgroup: Flush stats before releasing blkcg_gq Greg Kroah-Hartman
2023-06-19 19:01 ` [PATCH 6.3 000/187] 6.3.9-rc1 review Markus Reichelt
2023-06-19 19:42 ` Florian Fainelli
2023-06-20  0:11 ` Ron Economos
2023-06-20  5:29 ` Naresh Kamboju
2023-06-20  9:14 ` Chris Paterson
2023-06-20 10:22 ` Jon Hunter
2023-06-20 10:53 ` Conor Dooley
2023-06-20 12:20 ` Sudip Mukherjee (Codethink)
2023-06-20 17:09 ` Allen Pais
2023-06-20 20:17 ` Shuah Khan
2023-06-21  0:39 ` Guenter Roeck
2023-06-21  1:43 ` 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=20230619102202.562325527@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=badhri@google.com \
    --cc=patches@lists.linux.dev \
    --cc=stable@vger.kernel.org \
    --cc=stern@rowland.harvard.edu \
    /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).