public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Hyunwoo Kim <imv4bel@gmail.com>,
	kernel test robot <lkp@intel.com>,
	Dan Carpenter <error27@gmail.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 4.19 086/148] media: dvb-core: Fix use-after-free due to race at dvb_register_device()
Date: Sun, 24 Mar 2024 19:49:10 -0400	[thread overview]
Message-ID: <20240324235012.1356413-87-sashal@kernel.org> (raw)
In-Reply-To: <20240324235012.1356413-1-sashal@kernel.org>

From: Hyunwoo Kim <imv4bel@gmail.com>

[ Upstream commit 627bb528b086b4136315c25d6a447a98ea9448d3 ]

dvb_register_device() dynamically allocates fops with kmemdup()
to set the fops->owner.
And these fops are registered in 'file->f_ops' using replace_fops()
in the dvb_device_open() process, and kfree()d in dvb_free_device().

However, it is not common to use dynamically allocated fops instead
of 'static const' fops as an argument of replace_fops(),
and UAF may occur.
These UAFs can occur on any dvb type using dvb_register_device(),
such as dvb_dvr, dvb_demux, dvb_frontend, dvb_net, etc.

So, instead of kfree() the fops dynamically allocated in
dvb_register_device() in dvb_free_device() called during the
.disconnect() process, kfree() it collectively in exit_dvbdev()
called when the dvbdev.c module is removed.

Link: https://lore.kernel.org/linux-media/20221117045925.14297-4-imv4bel@gmail.com
Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Stable-dep-of: 8c64f4cdf4e6 ("media: edia: dvbdev: fix a use-after-free")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/media/dvb-core/dvbdev.c | 84 ++++++++++++++++++++++++---------
 include/media/dvbdev.h          | 15 ++++++
 2 files changed, 78 insertions(+), 21 deletions(-)

diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
index cf0c428f5776b..35c272d77375e 100644
--- a/drivers/media/dvb-core/dvbdev.c
+++ b/drivers/media/dvb-core/dvbdev.c
@@ -37,6 +37,7 @@
 #include <media/tuner.h>
 
 static DEFINE_MUTEX(dvbdev_mutex);
+static LIST_HEAD(dvbdevfops_list);
 static int dvbdev_debug;
 
 module_param(dvbdev_debug, int, 0644);
@@ -464,14 +465,15 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
 			enum dvb_device_type type, int demux_sink_pads)
 {
 	struct dvb_device *dvbdev;
-	struct file_operations *dvbdevfops;
+	struct file_operations *dvbdevfops = NULL;
+	struct dvbdevfops_node *node = NULL, *new_node = NULL;
 	struct device *clsdev;
 	int minor;
 	int id, ret;
 
 	mutex_lock(&dvbdev_register_lock);
 
-	if ((id = dvbdev_get_free_id (adap, type)) < 0){
+	if ((id = dvbdev_get_free_id (adap, type)) < 0) {
 		mutex_unlock(&dvbdev_register_lock);
 		*pdvbdev = NULL;
 		pr_err("%s: couldn't find free device id\n", __func__);
@@ -479,18 +481,45 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
 	}
 
 	*pdvbdev = dvbdev = kzalloc(sizeof(*dvbdev), GFP_KERNEL);
-
 	if (!dvbdev){
 		mutex_unlock(&dvbdev_register_lock);
 		return -ENOMEM;
 	}
 
-	dvbdevfops = kmemdup(template->fops, sizeof(*dvbdevfops), GFP_KERNEL);
+	/*
+	 * When a device of the same type is probe()d more than once,
+	 * the first allocated fops are used. This prevents memory leaks
+	 * that can occur when the same device is probe()d repeatedly.
+	 */
+	list_for_each_entry(node, &dvbdevfops_list, list_head) {
+		if (node->fops->owner == adap->module &&
+				node->type == type &&
+				node->template == template) {
+			dvbdevfops = node->fops;
+			break;
+		}
+	}
 
-	if (!dvbdevfops){
-		kfree (dvbdev);
-		mutex_unlock(&dvbdev_register_lock);
-		return -ENOMEM;
+	if (dvbdevfops == NULL) {
+		dvbdevfops = kmemdup(template->fops, sizeof(*dvbdevfops), GFP_KERNEL);
+		if (!dvbdevfops) {
+			kfree(dvbdev);
+			mutex_unlock(&dvbdev_register_lock);
+			return -ENOMEM;
+		}
+
+		new_node = kzalloc(sizeof(struct dvbdevfops_node), GFP_KERNEL);
+		if (!new_node) {
+			kfree(dvbdevfops);
+			kfree(dvbdev);
+			mutex_unlock(&dvbdev_register_lock);
+			return -ENOMEM;
+		}
+
+		new_node->fops = dvbdevfops;
+		new_node->type = type;
+		new_node->template = template;
+		list_add_tail (&new_node->list_head, &dvbdevfops_list);
 	}
 
 	memcpy(dvbdev, template, sizeof(struct dvb_device));
@@ -501,20 +530,20 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
 	dvbdev->priv = priv;
 	dvbdev->fops = dvbdevfops;
 	init_waitqueue_head (&dvbdev->wait_queue);
-
 	dvbdevfops->owner = adap->module;
-
 	list_add_tail (&dvbdev->list_head, &adap->device_list);
-
 	down_write(&minor_rwsem);
 #ifdef CONFIG_DVB_DYNAMIC_MINORS
 	for (minor = 0; minor < MAX_DVB_MINORS; minor++)
 		if (dvb_minors[minor] == NULL)
 			break;
-
 	if (minor == MAX_DVB_MINORS) {
+		if (new_node) {
+			list_del (&new_node->list_head);
+			kfree(dvbdevfops);
+			kfree(new_node);
+		}
 		list_del (&dvbdev->list_head);
-		kfree(dvbdevfops);
 		kfree(dvbdev);
 		up_write(&minor_rwsem);
 		mutex_unlock(&dvbdev_register_lock);
@@ -523,41 +552,47 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
 #else
 	minor = nums2minor(adap->num, type, id);
 #endif
-
 	dvbdev->minor = minor;
 	dvb_minors[minor] = dvb_device_get(dvbdev);
 	up_write(&minor_rwsem);
-
 	ret = dvb_register_media_device(dvbdev, type, minor, demux_sink_pads);
 	if (ret) {
 		pr_err("%s: dvb_register_media_device failed to create the mediagraph\n",
 		      __func__);
-
+		if (new_node) {
+			list_del (&new_node->list_head);
+			kfree(dvbdevfops);
+			kfree(new_node);
+		}
 		dvb_media_device_free(dvbdev);
 		list_del (&dvbdev->list_head);
-		kfree(dvbdevfops);
 		kfree(dvbdev);
 		mutex_unlock(&dvbdev_register_lock);
 		return ret;
 	}
 
-	mutex_unlock(&dvbdev_register_lock);
-
 	clsdev = device_create(dvb_class, adap->device,
 			       MKDEV(DVB_MAJOR, minor),
 			       dvbdev, "dvb%d.%s%d", adap->num, dnames[type], id);
 	if (IS_ERR(clsdev)) {
 		pr_err("%s: failed to create device dvb%d.%s%d (%ld)\n",
 		       __func__, adap->num, dnames[type], id, PTR_ERR(clsdev));
+		if (new_node) {
+			list_del (&new_node->list_head);
+			kfree(dvbdevfops);
+			kfree(new_node);
+		}
 		dvb_media_device_free(dvbdev);
 		list_del (&dvbdev->list_head);
-		kfree(dvbdevfops);
 		kfree(dvbdev);
+		mutex_unlock(&dvbdev_register_lock);
 		return PTR_ERR(clsdev);
 	}
+
 	dprintk("DVB: register adapter%d/%s%d @ minor: %i (0x%02x)\n",
 		adap->num, dnames[type], id, minor, minor);
 
+	mutex_unlock(&dvbdev_register_lock);
 	return 0;
 }
 EXPORT_SYMBOL(dvb_register_device);
@@ -586,7 +621,6 @@ static void dvb_free_device(struct kref *ref)
 {
 	struct dvb_device *dvbdev = container_of(ref, struct dvb_device, ref);
 
-	kfree (dvbdev->fops);
 	kfree (dvbdev);
 }
 
@@ -1082,9 +1116,17 @@ static int __init init_dvbdev(void)
 
 static void __exit exit_dvbdev(void)
 {
+	struct dvbdevfops_node *node, *next;
+
 	class_destroy(dvb_class);
 	cdev_del(&dvb_device_cdev);
 	unregister_chrdev_region(MKDEV(DVB_MAJOR, 0), MAX_DVB_MINORS);
+
+	list_for_each_entry_safe(node, next, &dvbdevfops_list, list_head) {
+		list_del (&node->list_head);
+		kfree(node->fops);
+		kfree(node);
+	}
 }
 
 subsys_initcall(init_dvbdev);
diff --git a/include/media/dvbdev.h b/include/media/dvbdev.h
index 09279ed0051ea..0e2bda5ccadd5 100644
--- a/include/media/dvbdev.h
+++ b/include/media/dvbdev.h
@@ -189,6 +189,21 @@ struct dvb_device {
 	void *priv;
 };
 
+/**
+ * struct dvbdevfops_node - fops nodes registered in dvbdevfops_list
+ *
+ * @fops:		Dynamically allocated fops for ->owner registration
+ * @type:		type of dvb_device
+ * @template:		dvb_device used for registration
+ * @list_head:		list_head for dvbdevfops_list
+ */
+struct dvbdevfops_node {
+	struct file_operations *fops;
+	enum dvb_device_type type;
+	const struct dvb_device *template;
+	struct list_head list_head;
+};
+
 /**
  * dvb_device_get - Increase dvb_device reference
  *
-- 
2.43.0


  parent reply	other threads:[~2024-03-24 23:51 UTC|newest]

Thread overview: 152+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-24 23:47 [PATCH 4.19 000/148] 4.19.311-rc1 review Sasha Levin
2024-03-24 23:47 ` [PATCH 4.19 001/148] ASoC: rt5645: Make LattePanda board DMI match more precise Sasha Levin
2024-03-24 23:47 ` [PATCH 4.19 002/148] x86/xen: Add some null pointer checking to smp.c Sasha Levin
2024-03-24 23:47 ` [PATCH 4.19 003/148] MIPS: Clear Cause.BD in instruction_pointer_set Sasha Levin
2024-03-24 23:47 ` [PATCH 4.19 004/148] net/iucv: fix the allocation size of iucv_path_table array Sasha Levin
2024-03-24 23:47 ` [PATCH 4.19 005/148] block: sed-opal: handle empty atoms when parsing response Sasha Levin
2024-03-24 23:47 ` [PATCH 4.19 006/148] dm-verity, dm-crypt: align "struct bvec_iter" correctly Sasha Levin
2024-03-24 23:47 ` [PATCH 4.19 007/148] scsi: mpt3sas: Prevent sending diag_reset when the controller is ready Sasha Levin
2024-03-24 23:47 ` [PATCH 4.19 008/148] Bluetooth: rfcomm: Fix null-ptr-deref in rfcomm_check_security Sasha Levin
2024-03-24 23:47 ` [PATCH 4.19 009/148] firewire: core: use long bus reset on gap count error Sasha Levin
2024-03-24 23:47 ` [PATCH 4.19 010/148] ASoC: Intel: bytcr_rt5640: Add an extra entry for the Chuwi Vi8 tablet Sasha Levin
2024-03-24 23:47 ` [PATCH 4.19 011/148] Input: gpio_keys_polled - suppress deferred probe error for gpio Sasha Levin
2024-03-24 23:47 ` [PATCH 4.19 012/148] ASoC: wm8962: Enable oscillator if selecting WM8962_FLL_OSC Sasha Levin
2024-03-24 23:47 ` [PATCH 4.19 013/148] ASoC: wm8962: Enable both SPKOUTR_ENA and SPKOUTL_ENA in mono mode Sasha Levin
2024-03-24 23:47 ` [PATCH 4.19 014/148] ASoC: wm8962: Fix up incorrect error message in wm8962_set_fll Sasha Levin
2024-03-24 23:47 ` [PATCH 4.19 015/148] crypto: algif_aead - fix uninitialized ctx->init Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 016/148] crypto: af_alg - make some functions static Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 017/148] crypto: algif_aead - Only wake up when ctx->more is zero Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 018/148] do_sys_name_to_handle(): use kzalloc() to fix kernel-infoleak Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 019/148] fs/select: rework stack allocation hack for clang Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 020/148] md: switch to ->check_events for media change notifications Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 021/148] block: add a new set_read_only method Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 022/148] md: implement ->set_read_only to hook into BLKROSET processing Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 023/148] md: Don't clear MD_CLOSING when the raid is about to stop Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 024/148] aoe: fix the potential use-after-free problem in aoecmd_cfg_pkts Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 025/148] timekeeping: Fix cross-timestamp interpolation on counter wrap Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 026/148] timekeeping: Fix cross-timestamp interpolation corner case decision Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 027/148] timekeeping: Fix cross-timestamp interpolation for non-x86 Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 028/148] wifi: ath10k: fix NULL pointer dereference in ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev() Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 029/148] b43: dma: Fix use true/false for bool type variable Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 030/148] wifi: b43: Stop/wake correct queue in DMA Tx path when QoS is disabled Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 031/148] wifi: b43: Stop/wake correct queue in PIO " Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 032/148] b43: main: Fix use true/false for bool type Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 033/148] wifi: b43: Stop correct queue in DMA worker when QoS is disabled Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 034/148] wifi: b43: Disable QoS for bcm4331 Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 035/148] wifi: mwifiex: debugfs: Drop unnecessary error check for debugfs_create_dir() Sasha Levin
2024-03-28 10:34   ` Pavel Machek
2024-03-24 23:48 ` [PATCH 4.19 036/148] ARM: dts: renesas: r8a73a4: Fix external clocks and clock rate Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 037/148] cpufreq: brcmstb-avs-cpufreq: add check for cpufreq_cpu_get's return value Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 038/148] sock_diag: annotate data-races around sock_diag_handlers[family] Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 039/148] af_unix: Annotate data-race of gc_in_progress in wait_for_unix_gc() Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 040/148] wifi: libertas: fix some memleaks in lbs_allocate_cmd_buffer() Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 041/148] ACPI: processor_idle: Fix memory leak in acpi_processor_power_exit() Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 042/148] bus: tegra-aconnect: Update dependency to ARCH_TEGRA Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 043/148] iommu/amd: Mark interrupt as managed Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 044/148] wifi: brcmsmac: avoid function pointer casts Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 045/148] ARM: dts: arm: realview: Fix development chip ROM compatible value Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 046/148] ACPI: scan: Fix device check notification handling Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 047/148] x86, relocs: Ignore relocations in .notes section Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 048/148] SUNRPC: fix some memleaks in gssx_dec_option_array Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 049/148] mmc: wmt-sdmmc: remove an incorrect release_mem_region() call in the .remove function Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 050/148] igb: move PEROUT and EXTTS isr logic to separate functions Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 051/148] igb: Fix missing time sync events Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 052/148] Bluetooth: Remove superfluous call to hci_conn_check_pending() Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 053/148] Bluetooth: hci_core: Fix possible buffer overflow Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 054/148] sr9800: Add check for usbnet_get_endpoints Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 055/148] bpf: Fix hashtab overflow check on 32-bit arches Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 056/148] bpf: Fix stackmap " Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 057/148] ipv6: fib6_rules: flush route cache when rule is changed Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 058/148] tcp: fix incorrect parameter validation in the do_tcp_getsockopt() function Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 059/148] l2tp: fix incorrect parameter validation in the pppol2tp_getsockopt() function Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 060/148] udp: fix incorrect parameter validation in the udp_lib_getsockopt() function Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 061/148] net: kcm: fix incorrect parameter validation in the kcm_getsockopt) function Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 062/148] net/x25: fix incorrect parameter validation in the x25_getsockopt() function Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 063/148] nfp: flower: handle acti_netdevs allocation failure Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 064/148] dm raid: fix false positive for requeue needed during reshape Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 065/148] dm: call the resume method on internal suspend Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 066/148] drm/tegra: dsi: Add missing check for of_find_device_by_node Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 067/148] gpu: host1x: mipi: Update tegra_mipi_request() to be node based Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 068/148] drm/tegra: dsi: Make use of the helper function dev_err_probe() Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 069/148] drm/tegra: dsi: Fix some error handling paths in tegra_dsi_probe() Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 070/148] drm/tegra: dsi: Fix missing pm_runtime_disable() in the error handling path of tegra_dsi_probe() Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 071/148] drm/rockchip: inno_hdmi: Fix video timing Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 072/148] drm: Don't treat 0 as -1 in drm_fixp2int_ceil Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 073/148] drm/rockchip: lvds: do not overwrite error code Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 074/148] drm/rockchip: lvds: do not print scary message when probing defer Sasha Levin
2024-03-24 23:48 ` [PATCH 4.19 075/148] media: tc358743: register v4l2 async device only after successful setup Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 076/148] perf evsel: Fix duplicate initialization of data->id in evsel__parse_sample() Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 077/148] ABI: sysfs-bus-pci-devices-aer_stats uses an invalid tag Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 078/148] PCI/AER: Fix rootport attribute paths in ABI docs Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 079/148] media: em28xx: annotate unchecked call to media_device_register() Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 080/148] media: v4l2-tpg: fix some memleaks in tpg_alloc Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 081/148] media: v4l2-mem2mem: fix a memleak in v4l2_m2m_register_entity Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 082/148] media: dvbdev: remove double-unlock Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 083/148] media: media/dvb: Use kmemdup rather than duplicating its implementation Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 084/148] media: dvbdev: Fix memleak in dvb_register_device Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 085/148] media: dvbdev: fix error logic at dvb_register_device() Sasha Levin
2024-03-24 23:49 ` Sasha Levin [this message]
2024-03-24 23:49 ` [PATCH 4.19 087/148] media: edia: dvbdev: fix a use-after-free Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 088/148] clk: qcom: reset: Allow specifying custom reset delay Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 089/148] clk: qcom: reset: support resetting multiple bits Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 090/148] clk: qcom: reset: Commonize the de/assert functions Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 091/148] clk: qcom: reset: Ensure write completion on reset de/assertion Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 092/148] quota: code cleanup for __dquot_alloc_space() Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 093/148] fs/quota: erase unused but set variable warning Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 094/148] quota: check time limit when back out space/inode change Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 095/148] quota: simplify drop_dquot_ref() Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 096/148] quota: Fix potential NULL pointer dereference Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 097/148] quota: Fix rcu annotations of inode dquot pointers Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 098/148] perf thread_map: Free strlist on normal path in thread_map__new_by_tid_str() Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 099/148] drm/radeon/ni: Fix wrong firmware size logging in ni_init_microcode() Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 100/148] ALSA: seq: fix function cast warnings Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 101/148] media: go7007: add check of return value of go7007_read_addr() Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 102/148] media: pvrusb2: fix pvr2_stream_callback casts Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 103/148] firmware: qcom: scm: Add WLAN VMID for Qualcomm SCM interface Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 104/148] clk: qcom: dispcc-sdm845: Adjust internal GDSC wait times Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 105/148] drm/mediatek: dsi: Fix DSI RGB666 formats and definitions Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 106/148] PCI: Mark 3ware-9650SE Root Port Extended Tags as broken Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 107/148] clk: hisilicon: hi3519: Release the correct number of gates in hi3519_clk_unregister() Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 108/148] drm/tegra: put drm_gem_object ref on error in tegra_fb_create Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 109/148] mfd: syscon: Call of_node_put() only when of_parse_phandle() takes a ref Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 110/148] crypto: arm - Rename functions to avoid conflict with crypto/sha256.h Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 111/148] crypto: arm/sha - fix function cast warnings Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 112/148] mtd: rawnand: lpc32xx_mlc: fix irq handler prototype Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 113/148] ASoC: meson: axg-tdm-interface: fix mclk setup without mclk-fs Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 114/148] drm/amdgpu: Fix missing break in ATOM_ARG_IMM Case of atom_get_src_int() Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 115/148] media: pvrusb2: fix uaf in pvr2_context_set_notify Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 116/148] media: dvb-frontends: avoid stack overflow warnings with clang Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 117/148] media: go7007: fix a memleak in go7007_load_encoder Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 118/148] drm/mediatek: Fix a null pointer crash in mtk_drm_crtc_finish_page_flip Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 119/148] powerpc/hv-gpci: Fix the H_GET_PERF_COUNTER_INFO hcall return value checks Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 120/148] powerpc/embedded6xx: Fix no previous prototype for avr_uart_send() etc Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 121/148] backlight: lm3630a: Initialize backlight_properties on init Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 122/148] backlight: lm3630a: Don't set bl->props.brightness in get_brightness Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 123/148] backlight: da9052: Fully initialize backlight_properties during probe Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 124/148] backlight: lm3639: " Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 125/148] backlight: lp8788: " Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 126/148] arch/powerpc: Remove <linux/fb.h> from backlight code Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 127/148] sparc32: Fix section mismatch in leon_pci_grpci Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 128/148] ALSA: usb-audio: Stop parsing channels bits when all channels are found Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 129/148] scsi: csiostor: Avoid function pointer casts Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 130/148] scsi: bfa: Fix function pointer type mismatch for hcb_qe->cbfn Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 131/148] net: sunrpc: Fix an off by one in rpc_sockaddr2uaddr() Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 132/148] NFS: Fix an off by one in root_nfs_cat() Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 133/148] clk: qcom: gdsc: Add support to update GDSC transition delay Sasha Levin
2024-03-24 23:49 ` [PATCH 4.19 134/148] usb: phy: generic: Get the vbus supply Sasha Levin
2024-03-26 21:25   ` Sean Anderson
2024-03-24 23:49 ` [PATCH 4.19 135/148] serial: max310x: fix syntax error in IRQ error message Sasha Levin
2024-03-24 23:50 ` [PATCH 4.19 136/148] tty: serial: samsung: fix tx_empty() to return TIOCSER_TEMT Sasha Levin
2024-03-24 23:50 ` [PATCH 4.19 137/148] kconfig: fix infinite loop when expanding a macro at the end of file Sasha Levin
2024-03-24 23:50 ` [PATCH 4.19 138/148] rtc: mt6397: select IRQ_DOMAIN instead of depending on it Sasha Levin
2024-03-24 23:50 ` [PATCH 4.19 139/148] serial: 8250_exar: Don't remove GPIO device on suspend Sasha Levin
2024-03-24 23:50 ` [PATCH 4.19 140/148] staging: greybus: fix get_channel_from_mode() failure path Sasha Levin
2024-03-24 23:50 ` [PATCH 4.19 141/148] usb: gadget: net2272: Use irqflags in the call to net2272_probe_fin Sasha Levin
2024-03-24 23:50 ` [PATCH 4.19 142/148] net: hsr: fix placement of logical operator in a multi-line statement Sasha Levin
2024-03-24 23:50 ` [PATCH 4.19 143/148] hsr: Fix uninit-value access in hsr_get_node() Sasha Levin
2024-03-24 23:50 ` [PATCH 4.19 144/148] rds: introduce acquire/release ordering in acquire/release_in_xmit() Sasha Levin
2024-03-24 23:50 ` [PATCH 4.19 145/148] hsr: Handle failures in module init Sasha Levin
2024-03-24 23:50 ` [PATCH 4.19 146/148] net/bnx2x: Prevent access to a freed page in page_pool Sasha Levin
2024-03-24 23:50 ` [PATCH 4.19 147/148] spi: spi-mt65xx: Fix NULL pointer access in interrupt handler Sasha Levin
2024-03-24 23:50 ` [PATCH 4.19 148/148] Linux 4.19.311-rc1 Sasha Levin
2024-03-25 10:08 ` [PATCH 4.19 000/148] 4.19.311-rc1 review Pavel Machek

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=20240324235012.1356413-87-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=error27@gmail.com \
    --cc=imv4bel@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=mchehab@kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

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

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