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: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>,
	syzbot <syzbot+c558267ad910fc494497@syzkaller.appspotmail.com>,
	Alan Stern <stern@rowland.harvard.edu>,
	Sean Young <sean@mess.org>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Sasha Levin <sashal@kernel.org>,
	linux-media@vger.kernel.org
Subject: [PATCH AUTOSEL 5.15 080/109] media: imon: reorganize serialization
Date: Mon, 30 May 2022 09:37:56 -0400	[thread overview]
Message-ID: <20220530133825.1933431-80-sashal@kernel.org> (raw)
In-Reply-To: <20220530133825.1933431-1-sashal@kernel.org>

From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>

[ Upstream commit db264d4c66c0fe007b5d19fd007707cd0697603d ]

Since usb_register_dev() from imon_init_display() from imon_probe() holds
minor_rwsem while display_open() which holds driver_lock and ictx->lock is
called with minor_rwsem held from usb_open(), holding driver_lock or
ictx->lock when calling usb_register_dev() causes circular locking
dependency problem.

Since usb_deregister_dev() from imon_disconnect() holds minor_rwsem while
display_open() which holds driver_lock is called with minor_rwsem held,
holding driver_lock when calling usb_deregister_dev() also causes circular
locking dependency problem.

Sean Young explained that the problem is there are imon devices which have
two usb interfaces, even though it is one device. The probe and disconnect
function of both usb interfaces can run concurrently.

Alan Stern responded that the driver and USB cores guarantee that when an
interface is probed, both the interface and its USB device are locked.
Ditto for when the disconnect callback gets run. So concurrent probing/
disconnection of multiple interfaces on the same device is not possible.

Therefore, we don't need locks for handling race between imon_probe() and
imon_disconnect(). But we still need to handle race between display_open()
/vfd_write()/lcd_write()/display_close() and imon_disconnect(), for
disconnect event can happen while file descriptors are in use.

Since "struct file"->private_data is set by display_open(), vfd_write()/
lcd_write()/display_close() can assume that "struct file"->private_data
is not NULL even after usb_set_intfdata(interface, NULL) was called.

Replace insufficiently held driver_lock with refcount_t based management.
Add a boolean flag for recording whether imon_disconnect() was already
called. Use RCU for accessing this boolean flag and refcount_t.

Since the boolean flag for imon_disconnect() is shared, disconnect event
on either intf0 or intf1 affects both interfaces. But I assume that this
change does not matter, for usually disconnect event would not happen
while interfaces are in use.

Link: https://syzkaller.appspot.com/bug?extid=c558267ad910fc494497

Reported-by: syzbot <syzbot+c558267ad910fc494497@syzkaller.appspotmail.com>
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Tested-by: syzbot <syzbot+c558267ad910fc494497@syzkaller.appspotmail.com>
Cc: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/media/rc/imon.c | 99 +++++++++++++++++++----------------------
 1 file changed, 47 insertions(+), 52 deletions(-)

diff --git a/drivers/media/rc/imon.c b/drivers/media/rc/imon.c
index 2ca4e86c7b9f..97355e3ebdfd 100644
--- a/drivers/media/rc/imon.c
+++ b/drivers/media/rc/imon.c
@@ -153,6 +153,24 @@ struct imon_context {
 	const struct imon_usb_dev_descr *dev_descr;
 					/* device description with key */
 					/* table for front panels */
+	/*
+	 * Fields for deferring free_imon_context().
+	 *
+	 * Since reference to "struct imon_context" is stored into
+	 * "struct file"->private_data, we need to remember
+	 * how many file descriptors might access this "struct imon_context".
+	 */
+	refcount_t users;
+	/*
+	 * Use a flag for telling display_open()/vfd_write()/lcd_write() that
+	 * imon_disconnect() was already called.
+	 */
+	bool disconnected;
+	/*
+	 * We need to wait for RCU grace period in order to allow
+	 * display_open() to safely check ->disconnected and increment ->users.
+	 */
+	struct rcu_head rcu;
 };
 
 #define TOUCH_TIMEOUT	(HZ/30)
@@ -160,18 +178,18 @@ struct imon_context {
 /* vfd character device file operations */
 static const struct file_operations vfd_fops = {
 	.owner		= THIS_MODULE,
-	.open		= &display_open,
-	.write		= &vfd_write,
-	.release	= &display_close,
+	.open		= display_open,
+	.write		= vfd_write,
+	.release	= display_close,
 	.llseek		= noop_llseek,
 };
 
 /* lcd character device file operations */
 static const struct file_operations lcd_fops = {
 	.owner		= THIS_MODULE,
-	.open		= &display_open,
-	.write		= &lcd_write,
-	.release	= &display_close,
+	.open		= display_open,
+	.write		= lcd_write,
+	.release	= display_close,
 	.llseek		= noop_llseek,
 };
 
@@ -439,9 +457,6 @@ static struct usb_driver imon_driver = {
 	.id_table	= imon_usb_id_table,
 };
 
-/* to prevent races between open() and disconnect(), probing, etc */
-static DEFINE_MUTEX(driver_lock);
-
 /* Module bookkeeping bits */
 MODULE_AUTHOR(MOD_AUTHOR);
 MODULE_DESCRIPTION(MOD_DESC);
@@ -481,9 +496,11 @@ static void free_imon_context(struct imon_context *ictx)
 	struct device *dev = ictx->dev;
 
 	usb_free_urb(ictx->tx_urb);
+	WARN_ON(ictx->dev_present_intf0);
 	usb_free_urb(ictx->rx_urb_intf0);
+	WARN_ON(ictx->dev_present_intf1);
 	usb_free_urb(ictx->rx_urb_intf1);
-	kfree(ictx);
+	kfree_rcu(ictx, rcu);
 
 	dev_dbg(dev, "%s: iMON context freed\n", __func__);
 }
@@ -499,9 +516,6 @@ static int display_open(struct inode *inode, struct file *file)
 	int subminor;
 	int retval = 0;
 
-	/* prevent races with disconnect */
-	mutex_lock(&driver_lock);
-
 	subminor = iminor(inode);
 	interface = usb_find_interface(&imon_driver, subminor);
 	if (!interface) {
@@ -509,13 +523,16 @@ static int display_open(struct inode *inode, struct file *file)
 		retval = -ENODEV;
 		goto exit;
 	}
-	ictx = usb_get_intfdata(interface);
 
-	if (!ictx) {
+	rcu_read_lock();
+	ictx = usb_get_intfdata(interface);
+	if (!ictx || ictx->disconnected || !refcount_inc_not_zero(&ictx->users)) {
+		rcu_read_unlock();
 		pr_err("no context found for minor %d\n", subminor);
 		retval = -ENODEV;
 		goto exit;
 	}
+	rcu_read_unlock();
 
 	mutex_lock(&ictx->lock);
 
@@ -533,8 +550,10 @@ static int display_open(struct inode *inode, struct file *file)
 
 	mutex_unlock(&ictx->lock);
 
+	if (retval && refcount_dec_and_test(&ictx->users))
+		free_imon_context(ictx);
+
 exit:
-	mutex_unlock(&driver_lock);
 	return retval;
 }
 
@@ -544,16 +563,9 @@ static int display_open(struct inode *inode, struct file *file)
  */
 static int display_close(struct inode *inode, struct file *file)
 {
-	struct imon_context *ictx = NULL;
+	struct imon_context *ictx = file->private_data;
 	int retval = 0;
 
-	ictx = file->private_data;
-
-	if (!ictx) {
-		pr_err("no context for device\n");
-		return -ENODEV;
-	}
-
 	mutex_lock(&ictx->lock);
 
 	if (!ictx->display_supported) {
@@ -568,6 +580,8 @@ static int display_close(struct inode *inode, struct file *file)
 	}
 
 	mutex_unlock(&ictx->lock);
+	if (refcount_dec_and_test(&ictx->users))
+		free_imon_context(ictx);
 	return retval;
 }
 
@@ -934,15 +948,12 @@ static ssize_t vfd_write(struct file *file, const char __user *buf,
 	int offset;
 	int seq;
 	int retval = 0;
-	struct imon_context *ictx;
+	struct imon_context *ictx = file->private_data;
 	static const unsigned char vfd_packet6[] = {
 		0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF };
 
-	ictx = file->private_data;
-	if (!ictx) {
-		pr_err_ratelimited("no context for device\n");
+	if (ictx->disconnected)
 		return -ENODEV;
-	}
 
 	mutex_lock(&ictx->lock);
 
@@ -1018,13 +1029,10 @@ static ssize_t lcd_write(struct file *file, const char __user *buf,
 			 size_t n_bytes, loff_t *pos)
 {
 	int retval = 0;
-	struct imon_context *ictx;
+	struct imon_context *ictx = file->private_data;
 
-	ictx = file->private_data;
-	if (!ictx) {
-		pr_err_ratelimited("no context for device\n");
+	if (ictx->disconnected)
 		return -ENODEV;
-	}
 
 	mutex_lock(&ictx->lock);
 
@@ -2402,7 +2410,6 @@ static int imon_probe(struct usb_interface *interface,
 	int ifnum, sysfs_err;
 	int ret = 0;
 	struct imon_context *ictx = NULL;
-	struct imon_context *first_if_ctx = NULL;
 	u16 vendor, product;
 
 	usbdev     = usb_get_dev(interface_to_usbdev(interface));
@@ -2414,17 +2421,12 @@ static int imon_probe(struct usb_interface *interface,
 	dev_dbg(dev, "%s: found iMON device (%04x:%04x, intf%d)\n",
 		__func__, vendor, product, ifnum);
 
-	/* prevent races probing devices w/multiple interfaces */
-	mutex_lock(&driver_lock);
-
 	first_if = usb_ifnum_to_if(usbdev, 0);
 	if (!first_if) {
 		ret = -ENODEV;
 		goto fail;
 	}
 
-	first_if_ctx = usb_get_intfdata(first_if);
-
 	if (ifnum == 0) {
 		ictx = imon_init_intf0(interface, id);
 		if (!ictx) {
@@ -2432,9 +2434,11 @@ static int imon_probe(struct usb_interface *interface,
 			ret = -ENODEV;
 			goto fail;
 		}
+		refcount_set(&ictx->users, 1);
 
 	} else {
 		/* this is the secondary interface on the device */
+		struct imon_context *first_if_ctx = usb_get_intfdata(first_if);
 
 		/* fail early if first intf failed to register */
 		if (!first_if_ctx) {
@@ -2448,14 +2452,13 @@ static int imon_probe(struct usb_interface *interface,
 			ret = -ENODEV;
 			goto fail;
 		}
+		refcount_inc(&ictx->users);
 
 	}
 
 	usb_set_intfdata(interface, ictx);
 
 	if (ifnum == 0) {
-		mutex_lock(&ictx->lock);
-
 		if (product == 0xffdc && ictx->rf_device) {
 			sysfs_err = sysfs_create_group(&interface->dev.kobj,
 						       &imon_rf_attr_group);
@@ -2466,21 +2469,17 @@ static int imon_probe(struct usb_interface *interface,
 
 		if (ictx->display_supported)
 			imon_init_display(ictx, interface);
-
-		mutex_unlock(&ictx->lock);
 	}
 
 	dev_info(dev, "iMON device (%04x:%04x, intf%d) on usb<%d:%d> initialized\n",
 		 vendor, product, ifnum,
 		 usbdev->bus->busnum, usbdev->devnum);
 
-	mutex_unlock(&driver_lock);
 	usb_put_dev(usbdev);
 
 	return 0;
 
 fail:
-	mutex_unlock(&driver_lock);
 	usb_put_dev(usbdev);
 	dev_err(dev, "unable to register, err %d\n", ret);
 
@@ -2496,10 +2495,8 @@ static void imon_disconnect(struct usb_interface *interface)
 	struct device *dev;
 	int ifnum;
 
-	/* prevent races with multi-interface device probing and display_open */
-	mutex_lock(&driver_lock);
-
 	ictx = usb_get_intfdata(interface);
+	ictx->disconnected = true;
 	dev = ictx->dev;
 	ifnum = interface->cur_altsetting->desc.bInterfaceNumber;
 
@@ -2540,11 +2537,9 @@ static void imon_disconnect(struct usb_interface *interface)
 		}
 	}
 
-	if (!ictx->dev_present_intf0 && !ictx->dev_present_intf1)
+	if (refcount_dec_and_test(&ictx->users))
 		free_imon_context(ictx);
 
-	mutex_unlock(&driver_lock);
-
 	dev_dbg(dev, "%s: iMON device (intf%d) disconnected\n",
 		__func__, ifnum);
 }
-- 
2.35.1


  parent reply	other threads:[~2022-05-30 14:18 UTC|newest]

Thread overview: 162+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-30 13:36 [PATCH AUTOSEL 5.15 001/109] iommu/vt-d: Add RPLS to quirk list to skip TE disabling Sasha Levin
2022-05-30 13:36 ` Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 002/109] drm/vmwgfx: validate the screen formats Sasha Levin
2022-05-30 13:36   ` Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 003/109] drm/virtio: fix NULL pointer dereference in virtio_gpu_conn_get_modes Sasha Levin
2022-05-30 13:36   ` Sasha Levin
2022-05-30 13:36   ` Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 004/109] selftests/bpf: Fix vfs_link kprobe definition Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 005/109] selftests/bpf: Fix parsing of prog types in UAPI hdr for bpftool sync Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 006/109] mwifiex: add mutex lock for call in mwifiex_dfs_chan_sw_work_queue Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 007/109] b43legacy: Fix assigning negative value to unsigned variable Sasha Levin
2022-05-30 13:36   ` Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 008/109] b43: " Sasha Levin
2022-05-30 13:36   ` Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 009/109] ipw2x00: Fix potential NULL dereference in libipw_xmit() Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 010/109] ipv6: fix locking issues with loops over idev->addr_list Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 011/109] fbcon: Consistently protect deferred_takeover with console_lock() Sasha Levin
2022-05-30 13:36   ` Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 012/109] x86/platform/uv: Update TSC sync state for UV5 Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 013/109] ACPICA: Avoid cache flush inside virtual machines Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 014/109] mac80211: minstrel_ht: fix where rate stats are stored (fixes debugfs output) Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 015/109] drm/komeda: return early if drm_universal_plane_init() fails Sasha Levin
2022-05-30 13:36   ` Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 016/109] drm/amd/display: Disabling Z10 on DCN31 Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 017/109] rcu-tasks: Fix race in schedule and flush work Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 018/109] rcu: Make TASKS_RUDE_RCU select IRQ_WORK Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 019/109] sfc: ef10: Fix assigning negative value to unsigned variable Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 020/109] ALSA: jack: Access input_dev under mutex Sasha Levin
2022-05-30 13:36   ` Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 021/109] rtw88: 8821c: fix debugfs rssi value Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 022/109] spi: spi-rspi: Remove setting {src,dst}_{addr,addr_width} based on DMA direction Sasha Levin
2022-05-30 13:36 ` [PATCH AUTOSEL 5.15 023/109] tools/power turbostat: fix ICX DRAM power numbers Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 024/109] scsi: lpfc: Move cfg_log_verbose check before calling lpfc_dmp_dbg() Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 025/109] scsi: lpfc: Fix SCSI I/O completion and abort handler deadlock Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 026/109] scsi: lpfc: Fix call trace observed during I/O with CMF enabled Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 027/109] cpuidle: PSCI: Improve support for suspend-to-RAM for PSCI OSI mode Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 028/109] drm/amd/pm: fix double free in si_parse_power_table() Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 029/109] ASoC: rsnd: care default case on rsnd_ssiu_busif_err_status_clear() Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 030/109] ASoC: rsnd: care return value from rsnd_node_fixed_index() Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 031/109] ath9k: fix QCA9561 PA bias level Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 032/109] media: venus: hfi: avoid null dereference in deinit Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 033/109] media: pci: cx23885: Fix the error handling in cx23885_initdev() Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 034/109] media: cx25821: Fix the warning when removing the module Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 035/109] md/bitmap: don't set sb values if can't pass sanity check Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 036/109] mmc: jz4740: Apply DMA engine limits to maximum segment size Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 037/109] drivers: mmc: sdhci_am654: Add the quirk to set TESTCD bit Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 038/109] drm/sun4i: Add support for D1 TCONs Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 039/109] scsi: megaraid: Fix error check return value of register_chrdev() Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 040/109] drm/amdgpu/sdma: Fix incorrect calculations of the wptr of the doorbells Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 041/109] scsi: ufs: Use pm_runtime_resume_and_get() instead of pm_runtime_get_sync() Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 042/109] scsi: lpfc: Fix resource leak in lpfc_sli4_send_seq_to_ulp() Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 043/109] ath11k: disable spectral scan during spectral deinit Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 044/109] arm64/sme: Add ID_AA64SMFR0_EL1 to __read_sysreg_by_encoding() Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 045/109] ASoC: Intel: bytcr_rt5640: Add quirk for the HP Pro Tablet 408 Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 046/109] drm/plane: Move range check for format_count earlier Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 047/109] drm/amd/pm: fix the compile warning Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 048/109] ath10k: skip ath10k_halt during suspend for driver state RESTARTING Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 049/109] arm64: compat: Do not treat syscall number as ESR_ELx for a bad syscall Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 050/109] drm: msm: fix error check return value of irq_of_parse_and_map() Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 051/109] scsi: target: tcmu: Fix possible data corruption Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 052/109] ipv6: Don't send rs packets to the interface of ARPHRD_TUNNEL Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 053/109] net/mlx5: fs, delete the FTE when there are no rules attached to it Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 054/109] ASoC: dapm: Don't fold register value changes into notifications Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 055/109] mlxsw: spectrum_dcb: Do not warn about priority changes Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 056/109] mlxsw: Treat LLDP packets as control Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 057/109] drm/amdgpu/psp: move PSP memory alloc from hw_init to sw_init Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 058/109] drm/amdgpu/ucode: Remove firmware load type check in amdgpu_ucode_free_bo Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 059/109] regulator: mt6315: Enforce regulator-compatible, not name Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 060/109] HID: bigben: fix slab-out-of-bounds Write in bigben_probe Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 061/109] of: Support more than one crash kernel regions for kexec -s Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 062/109] ASoC: tscs454: Add endianness flag in snd_soc_component_driver Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 063/109] scsi: lpfc: Alter FPIN stat accounting logic Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 064/109] net: remove two BUG() from skb_checksum_help() Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 065/109] s390/preempt: disable __preempt_count_add() optimization for PROFILE_ALL_BRANCHES Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 066/109] perf/amd/ibs: Cascade pmu init functions' return value Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 067/109] sched/core: Avoid obvious double update_rq_clock warning Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 068/109] spi: stm32-qspi: Fix wait_cmd timeout in APM mode Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 069/109] dma-debug: change allocation mode from GFP_NOWAIT to GFP_ATIOMIC Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 070/109] ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 071/109] ipmi:ssif: Check for NULL msg when handling events and messages Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 072/109] ipmi: Fix pr_fmt to avoid compilation issues Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 073/109] rtlwifi: Use pr_warn instead of WARN_ONCE Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 074/109] mt76: mt7921: accept rx frames with non-standard VHT MCS10-11 Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 075/109] mt76: fix encap offload ethernet type check Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 076/109] media: rga: fix possible memory leak in rga_probe Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 077/109] media: coda: limit frame interval enumeration to supported encoder frame sizes Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 078/109] media: hantro: HEVC: unconditionnaly set pps_{cb/cr}_qp_offset values Sasha Levin
2022-05-30 13:37   ` Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 079/109] media: ccs-core.c: fix failure to call clk_disable_unprepare Sasha Levin
2022-05-30 13:37 ` Sasha Levin [this message]
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 081/109] media: cec-adap.c: fix is_configuring state Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 082/109] usbnet: Run unregister_netdev() before unbind() again Sasha Levin
2022-05-30 13:37 ` [PATCH AUTOSEL 5.15 083/109] init: call time_init() before rand_initialize() Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 084/109] openrisc: start CPU timer early in boot Sasha Levin
2022-05-30 13:38   ` Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 085/109] nvme-pci: fix a NULL pointer dereference in nvme_alloc_admin_tags Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 086/109] ASoC: rt5645: Fix errorenous cleanup order Sasha Levin
2022-05-30 13:38   ` Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 087/109] nbd: Fix hung on disconnect request if socket is closed before Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 088/109] drm/amd/pm: update smartshift powerboost calc for smu12 Sasha Levin
2022-05-30 13:38   ` Sasha Levin
2022-05-30 13:38   ` Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 089/109] drm/amd/pm: update smartshift powerboost calc for smu13 Sasha Levin
2022-05-30 13:38   ` Sasha Levin
2022-05-30 13:38   ` Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 090/109] net: phy: micrel: Allow probing without .driver_data Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 091/109] media: exynos4-is: Fix compile warning Sasha Levin
2022-05-30 13:38   ` Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 092/109] media: hantro: Stop using H.264 parameter pic_num Sasha Levin
2022-05-30 13:38   ` Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 093/109] ASoC: max98357a: remove dependency on GPIOLIB Sasha Levin
2022-05-30 13:38   ` Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 094/109] ASoC: rt1015p: " Sasha Levin
2022-05-30 13:38   ` Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 095/109] ACPI: CPPC: Assume no transition latency if no PCCT Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 096/109] nvme: set non-mdts limits in nvme_scan_work Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 097/109] can: mcp251xfd: silence clang's -Wunaligned-access warning Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 098/109] x86/microcode: Add explicit CPU vendor dependency Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 099/109] net: ipa: ignore endianness if there is no header Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 100/109] ARM: 9201/1: spectre-bhb: rely on linker to emit cross-section literal loads Sasha Levin
2022-05-30 13:38   ` Sasha Levin
2022-05-30 13:52   ` Ard Biesheuvel
2022-05-30 13:52     ` Ard Biesheuvel
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 101/109] m68k: atari: Make Atari ROM port I/O write macros return void Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 102/109] hwmon: Make chip parameter for with_info API mandatory Sasha Levin
2022-05-30 14:29   ` Guenter Roeck
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 103/109] rxrpc: Return an error to sendmsg if call failed Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 104/109] rxrpc, afs: Fix selection of abort codes Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 105/109] afs: Adjust ACK interpretation to try and cope with NAT Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 106/109] eth: tg3: silence the GCC 12 array-bounds warning Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 107/109] char: tpm: cr50_i2c: Suppress duplicated error message in .remove() Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 108/109] selftests/bpf: fix btf_dump/btf_dump due to recent clang change Sasha Levin
2022-05-30 13:38 ` [PATCH AUTOSEL 5.15 109/109] gfs2: use i_lock spin_lock for inode qadata Sasha Levin
2022-05-30 13:38   ` [Cluster-devel] " 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=20220530133825.1933431-80-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=penguin-kernel@I-love.SAKURA.ne.jp \
    --cc=sean@mess.org \
    --cc=stable@vger.kernel.org \
    --cc=stern@rowland.harvard.edu \
    --cc=syzbot+c558267ad910fc494497@syzkaller.appspotmail.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.