All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Mikulas Patocka <mpatocka@redhat.com>,
	Dave Airlie <airlied@redhat.com>,
	Ladislav Michl <ladis@linux-mips.org>,
	Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	Bernie Thompson <bernie@plugable.com>
Subject: [PATCH 4.19 151/152] udlfb: handle unplug properly
Date: Mon, 25 Feb 2019 22:12:23 +0100	[thread overview]
Message-ID: <20190225195055.431849077@linuxfoundation.org> (raw)
In-Reply-To: <20190225195043.645958524@linuxfoundation.org>

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

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

From: Mikulas Patocka <mpatocka@redhat.com>

commit 68a958a915ca912b8ce71b9eea7445996f6e681e upstream.

The udlfb driver maintained an open count and cleaned up itself when the
count reached zero. But the console is also counted in the reference count
- so, if the user unplugged the device, the open count would not drop to
zero and the driver stayed loaded with console attached. If the user
re-plugged the adapter, it would create a device /dev/fb1, show green
screen and the access to the console would be lost.

The framebuffer subsystem has reference counting on its own - in order to
fix the unplug bug, we rely the framebuffer reference counting. When the
user unplugs the adapter, we call unregister_framebuffer unconditionally.
unregister_framebuffer will unbind the console, wait until all users stop
using the framebuffer and then call the fb_destroy method. The fb_destroy
cleans up the USB driver.

This patch makes the following changes:
* Drop dlfb->kref and rely on implicit framebuffer reference counting
  instead.
* dlfb_usb_disconnect calls unregister_framebuffer, the rest of driver
  cleanup is done in the function dlfb_ops_destroy. dlfb_ops_destroy will
  be called by the framebuffer subsystem when no processes have the
  framebuffer open or mapped.
* We don't use workqueue during initialization, but initialize directly
  from dlfb_usb_probe. The workqueue could race with dlfb_usb_disconnect
  and this racing would produce various kinds of memory corruption.
* We use usb_get_dev and usb_put_dev to make sure that the USB subsystem
  doesn't free the device under us.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
cc: Dave Airlie <airlied@redhat.com>
Cc: Bernie Thompson <bernie@plugable.com>,
Cc: Ladislav Michl <ladis@linux-mips.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/video/fbdev/udlfb.c |  141 +++++++++++---------------------------------
 include/video/udlfb.h       |    3 
 2 files changed, 37 insertions(+), 107 deletions(-)

--- a/drivers/video/fbdev/udlfb.c
+++ b/drivers/video/fbdev/udlfb.c
@@ -916,8 +916,6 @@ static int dlfb_ops_open(struct fb_info
 
 	dlfb->fb_count++;
 
-	kref_get(&dlfb->kref);
-
 	if (fb_defio && (info->fbdefio == NULL)) {
 		/* enable defio at last moment if not disabled by client */
 
@@ -940,14 +938,17 @@ static int dlfb_ops_open(struct fb_info
 	return 0;
 }
 
-/*
- * Called when all client interfaces to start transactions have been disabled,
- * and all references to our device instance (dlfb_data) are released.
- * Every transaction must have a reference, so we know are fully spun down
- */
-static void dlfb_free(struct kref *kref)
+static void dlfb_ops_destroy(struct fb_info *info)
 {
-	struct dlfb_data *dlfb = container_of(kref, struct dlfb_data, kref);
+	struct dlfb_data *dlfb = info->par;
+
+	if (info->cmap.len != 0)
+		fb_dealloc_cmap(&info->cmap);
+	if (info->monspecs.modedb)
+		fb_destroy_modedb(info->monspecs.modedb);
+	vfree(info->screen_base);
+
+	fb_destroy_modelist(&info->modelist);
 
 	while (!list_empty(&dlfb->deferred_free)) {
 		struct dlfb_deferred_free *d = list_entry(dlfb->deferred_free.next, struct dlfb_deferred_free, list);
@@ -957,40 +958,13 @@ static void dlfb_free(struct kref *kref)
 	}
 	vfree(dlfb->backing_buffer);
 	kfree(dlfb->edid);
+	usb_put_dev(dlfb->udev);
 	kfree(dlfb);
-}
-
-static void dlfb_free_framebuffer(struct dlfb_data *dlfb)
-{
-	struct fb_info *info = dlfb->info;
-
-	if (info) {
-		unregister_framebuffer(info);
-
-		if (info->cmap.len != 0)
-			fb_dealloc_cmap(&info->cmap);
-		if (info->monspecs.modedb)
-			fb_destroy_modedb(info->monspecs.modedb);
-		vfree(info->screen_base);
-
-		fb_destroy_modelist(&info->modelist);
-
-		dlfb->info = NULL;
-
-		/* Assume info structure is freed after this point */
-		framebuffer_release(info);
-	}
 
-	/* ref taken in probe() as part of registering framebfufer */
-	kref_put(&dlfb->kref, dlfb_free);
+	/* Assume info structure is freed after this point */
+	framebuffer_release(info);
 }
 
-static void dlfb_free_framebuffer_work(struct work_struct *work)
-{
-	struct dlfb_data *dlfb = container_of(work, struct dlfb_data,
-					     free_framebuffer_work.work);
-	dlfb_free_framebuffer(dlfb);
-}
 /*
  * Assumes caller is holding info->lock mutex (for open and release at least)
  */
@@ -1000,10 +974,6 @@ static int dlfb_ops_release(struct fb_in
 
 	dlfb->fb_count--;
 
-	/* We can't free fb_info here - fbmem will touch it when we return */
-	if (dlfb->virtualized && (dlfb->fb_count == 0))
-		schedule_delayed_work(&dlfb->free_framebuffer_work, HZ);
-
 	if ((dlfb->fb_count == 0) && (info->fbdefio)) {
 		fb_deferred_io_cleanup(info);
 		kfree(info->fbdefio);
@@ -1013,8 +983,6 @@ static int dlfb_ops_release(struct fb_in
 
 	dev_dbg(info->dev, "release, user=%d count=%d\n", user, dlfb->fb_count);
 
-	kref_put(&dlfb->kref, dlfb_free);
-
 	return 0;
 }
 
@@ -1172,6 +1140,7 @@ static struct fb_ops dlfb_ops = {
 	.fb_blank = dlfb_ops_blank,
 	.fb_check_var = dlfb_ops_check_var,
 	.fb_set_par = dlfb_ops_set_par,
+	.fb_destroy = dlfb_ops_destroy,
 };
 
 
@@ -1615,12 +1584,13 @@ success:
 	return true;
 }
 
-static void dlfb_init_framebuffer_work(struct work_struct *work);
-
 static int dlfb_usb_probe(struct usb_interface *intf,
 			  const struct usb_device_id *id)
 {
+	int i;
+	const struct device_attribute *attr;
 	struct dlfb_data *dlfb;
+	struct fb_info *info;
 	int retval = -ENOMEM;
 	struct usb_device *usbdev = interface_to_usbdev(intf);
 
@@ -1631,10 +1601,9 @@ static int dlfb_usb_probe(struct usb_int
 		goto error;
 	}
 
-	kref_init(&dlfb->kref); /* matching kref_put in usb .disconnect fn */
 	INIT_LIST_HEAD(&dlfb->deferred_free);
 
-	dlfb->udev = usbdev;
+	dlfb->udev = usb_get_dev(usbdev);
 	usb_set_intfdata(intf, dlfb);
 
 	dev_dbg(&intf->dev, "console enable=%d\n", console);
@@ -1657,42 +1626,6 @@ static int dlfb_usb_probe(struct usb_int
 	}
 
 
-	if (!dlfb_alloc_urb_list(dlfb, WRITES_IN_FLIGHT, MAX_TRANSFER)) {
-		retval = -ENOMEM;
-		dev_err(&intf->dev, "unable to allocate urb list\n");
-		goto error;
-	}
-
-	kref_get(&dlfb->kref); /* matching kref_put in free_framebuffer_work */
-
-	/* We don't register a new USB class. Our client interface is dlfbev */
-
-	/* Workitem keep things fast & simple during USB enumeration */
-	INIT_DELAYED_WORK(&dlfb->init_framebuffer_work,
-			  dlfb_init_framebuffer_work);
-	schedule_delayed_work(&dlfb->init_framebuffer_work, 0);
-
-	return 0;
-
-error:
-	if (dlfb) {
-
-		kref_put(&dlfb->kref, dlfb_free); /* last ref from kref_init */
-
-		/* dev has been deallocated. Do not dereference */
-	}
-
-	return retval;
-}
-
-static void dlfb_init_framebuffer_work(struct work_struct *work)
-{
-	int i, retval;
-	struct fb_info *info;
-	const struct device_attribute *attr;
-	struct dlfb_data *dlfb = container_of(work, struct dlfb_data,
-					     init_framebuffer_work.work);
-
 	/* allocates framebuffer driver structure, not framebuffer memory */
 	info = framebuffer_alloc(0, &dlfb->udev->dev);
 	if (!info) {
@@ -1706,17 +1639,22 @@ static void dlfb_init_framebuffer_work(s
 	dlfb->ops = dlfb_ops;
 	info->fbops = &dlfb->ops;
 
+	INIT_LIST_HEAD(&info->modelist);
+
+	if (!dlfb_alloc_urb_list(dlfb, WRITES_IN_FLIGHT, MAX_TRANSFER)) {
+		retval = -ENOMEM;
+		dev_err(&intf->dev, "unable to allocate urb list\n");
+		goto error;
+	}
+
+	/* We don't register a new USB class. Our client interface is dlfbev */
+
 	retval = fb_alloc_cmap(&info->cmap, 256, 0);
 	if (retval < 0) {
 		dev_err(info->device, "cmap allocation failed: %d\n", retval);
 		goto error;
 	}
 
-	INIT_DELAYED_WORK(&dlfb->free_framebuffer_work,
-			  dlfb_free_framebuffer_work);
-
-	INIT_LIST_HEAD(&info->modelist);
-
 	retval = dlfb_setup_modes(dlfb, info, NULL, 0);
 	if (retval != 0) {
 		dev_err(info->device,
@@ -1760,10 +1698,16 @@ static void dlfb_init_framebuffer_work(s
 		 dev_name(info->dev), info->var.xres, info->var.yres,
 		 ((dlfb->backing_buffer) ?
 		 info->fix.smem_len * 2 : info->fix.smem_len) >> 10);
-	return;
+	return 0;
 
 error:
-	dlfb_free_framebuffer(dlfb);
+	if (dlfb->info) {
+		dlfb_ops_destroy(dlfb->info);
+	} else if (dlfb) {
+		usb_put_dev(dlfb->udev);
+		kfree(dlfb);
+	}
+	return retval;
 }
 
 static void dlfb_usb_disconnect(struct usb_interface *intf)
@@ -1791,20 +1735,9 @@ static void dlfb_usb_disconnect(struct u
 		for (i = 0; i < ARRAY_SIZE(fb_device_attrs); i++)
 			device_remove_file(info->dev, &fb_device_attrs[i]);
 		device_remove_bin_file(info->dev, &edid_attr);
-		unlink_framebuffer(info);
 	}
 
-	usb_set_intfdata(intf, NULL);
-	dlfb->udev = NULL;
-
-	/* if clients still have us open, will be freed on last close */
-	if (dlfb->fb_count == 0)
-		schedule_delayed_work(&dlfb->free_framebuffer_work, 0);
-
-	/* release reference taken by kref_init in probe() */
-	kref_put(&dlfb->kref, dlfb_free);
-
-	/* consider dlfb_data freed */
+	unregister_framebuffer(info);
 }
 
 static struct usb_driver dlfb_driver = {
--- a/include/video/udlfb.h
+++ b/include/video/udlfb.h
@@ -36,12 +36,9 @@ struct dlfb_data {
 	struct usb_device *udev;
 	struct fb_info *info;
 	struct urb_list urbs;
-	struct kref kref;
 	char *backing_buffer;
 	int fb_count;
 	bool virtualized; /* true when physical usb device not present */
-	struct delayed_work init_framebuffer_work;
-	struct delayed_work free_framebuffer_work;
 	atomic_t usb_active; /* 0 = update virtual buffer, but no usb traffic */
 	atomic_t lost_pixels; /* 1 = a render op failed. Need screen refresh */
 	char *edid; /* null until we read edid from hw or get from sysfs */



  parent reply	other threads:[~2019-02-25 21:47 UTC|newest]

Thread overview: 162+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-25 21:09 [PATCH 4.19 000/152] 4.19.26-stable review Greg Kroah-Hartman
2019-02-25 21:09 ` [PATCH 4.19 001/152] ARM: 8834/1: Fix: kprobes: optimized kprobes illegal instruction Greg Kroah-Hartman
2019-02-25 21:09   ` Greg Kroah-Hartman
2019-02-25 21:09 ` [PATCH 4.19 002/152] tracing: Fix number of entries in trace header Greg Kroah-Hartman
2019-02-25 21:09 ` [PATCH 4.19 003/152] MIPS: eBPF: Always return sign extended 32b values Greg Kroah-Hartman
2019-02-25 21:09 ` [PATCH 4.19 004/152] gpio: MT7621: use a per instance irq_chip structure Greg Kroah-Hartman
2019-02-25 21:09 ` [PATCH 4.19 005/152] gpio: pxa: avoid attempting to set pin direction via pinctrl on MMP2 Greg Kroah-Hartman
2019-02-25 21:09 ` [PATCH 4.19 006/152] mac80211: Restore vif beacon interval if start ap fails Greg Kroah-Hartman
2019-02-25 21:09 ` [PATCH 4.19 007/152] mac80211: Use linked list instead of rhashtable walk for mesh tables Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 008/152] mac80211: Free mpath object when rhashtable insertion fails Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 009/152] libceph: handle an empty authorize reply Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 010/152] ceph: avoid repeatedly adding inode to mdsc->snap_flush_list Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 011/152] numa: change get_mempolicy() to use nr_node_ids instead of MAX_NUMNODES Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 012/152] proc, oom: do not report alien mms when setting oom_score_adj Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 013/152] ALSA: hda/realtek - Headset microphone and internal speaker support for System76 oryp5 Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 014/152] ALSA: hda/realtek: Disable PC beep in passthrough on alc285 Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 015/152] KEYS: allow reaching the keys quotas exactly Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 016/152] backlight: pwm_bl: Fix devicetree parsing with auto-generated brightness tables Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 017/152] mfd: ti_am335x_tscadc: Use PLATFORM_DEVID_AUTO while registering mfd cells Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 018/152] pvcalls-front: read all data before closing the connection Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 019/152] pvcalls-front: dont try to free unallocated rings Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 020/152] pvcalls-front: properly allocate sk Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 021/152] pvcalls-back: set -ENOTCONN in pvcalls_conn_back_read Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 022/152] mfd: twl-core: Fix section annotations on {,un}protect_pm_master Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 023/152] mfd: db8500-prcmu: Fix some section annotations Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 024/152] mfd: mt6397: Do not call irq_domain_remove if PMIC unsupported Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 025/152] mfd: ab8500-core: Return zero in get_register_interruptible() Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 026/152] mfd: bd9571mwv: Add volatile register to make DVFS work Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 027/152] mfd: qcom_rpm: write fw_version to CTRL_REG Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 028/152] mfd: wm5110: Add missing ASRC rate register Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 029/152] mfd: axp20x: Add AC power supply cell for AXP813 Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 030/152] mfd: axp20x: Re-align MFD cell entries Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 031/152] mfd: axp20x: Add supported cells for AXP803 Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 032/152] mfd: cros_ec_dev: Add missing mfd_remove_devices() call in remove Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 033/152] mfd: tps65218: Use devm_regmap_add_irq_chip and clean up error path in probe() Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 034/152] mfd: mc13xxx: Fix a missing check of a register-read failure Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 035/152] xen/pvcalls: remove set but not used variable intf Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 036/152] qed: Fix qed_chain_set_prod() for PBL chains with non power of 2 page count Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 037/152] qed: Fix qed_ll2_post_rx_buffer_notify_fw() by adding a write memory barrier Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 038/152] net: hns: Fix use after free identified by SLUB debug Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 039/152] bpf: Fix [::] -> [::1] rewrite in sys_sendmsg Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 040/152] selftests/bpf: Test [::] -> [::1] rewrite in sys_sendmsg in test_sock_addr Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 041/152] watchdog: mt7621_wdt/rt2880_wdt: Fix compilation problem Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 042/152] net/mlx4: Get rid of page operation after dma_alloc_coherent Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 043/152] MIPS: ath79: Enable OF serial ports in the default config Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 044/152] xprtrdma: Double free in rpcrdma_sendctxs_create() Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 045/152] mlxsw: spectrum_acl: Add cleanup after C-TCAM update error condition Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 046/152] selftests: forwarding: Add a test for VLAN deletion Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 047/152] netfilter: nf_tables: fix leaking object reference count Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 048/152] scsi: qla4xxx: check return code of qla4xxx_copy_from_fwddb_param Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 049/152] scsi: isci: initialize shost fully before calling scsi_add_host() Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 050/152] include/linux/compiler*.h: fix OPTIMIZER_HIDE_VAR Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 051/152] MIPS: jazz: fix 64bit build Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 052/152] netfilter: nft_flow_offload: Fix reverse route lookup Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 053/152] bpf: correctly set initial window on active Fast Open sender Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 054/152] pvcalls-front: Avoid get_free_pages(GFP_KERNEL) under spinlock Greg Kroah-Hartman
2019-02-25 21:10   ` Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 055/152] bpf: fix panic in stack_map_get_build_id() on i386 and arm32 Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 056/152] netfilter: nft_flow_offload: fix interaction with vrf slave device Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 057/152] RDMA/mthca: Clear QP objects during their allocation Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 058/152] powerpc/8xx: fix setting of pagetable for Abatron BDI debug tool Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 059/152] acpi/nfit: Fix race accessing memdev in nfit_get_smbios_id() Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 060/152] net: stmmac: Fix PCI module removal leak Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 061/152] net: stmmac: dwxgmac2: Only clear interrupts that are active Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 062/152] net: stmmac: Check if CBS is supported before configuring Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 063/152] net: stmmac: Fix the logic of checking if RX Watchdog must be enabled Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 064/152] net: stmmac: Prevent RX starvation in stmmac_napi_poll() Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 065/152] isdn: i4l: isdn_tty: Fix some concurrency double-free bugs Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 066/152] scsi: tcmu: avoid cmd/qfull timers updated whenever a new cmd comes Greg Kroah-Hartman
2019-02-25 21:10 ` [PATCH 4.19 067/152] scsi: ufs: Fix system suspend status Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 068/152] scsi: qedi: Add ep_state for login completion on un-reachable targets Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 069/152] scsi: ufs: Fix geometry descriptor size Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 070/152] scsi: cxgb4i: add wait_for_completion() Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 071/152] netfilter: nft_flow_offload: fix checking method of conntrack helper Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 072/152] always clear the X2APIC_ENABLE bit for PV guest Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 073/152] drm/meson: add missing of_node_put Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 074/152] drm/amdkfd: Dont assign dGPUs to APU topology devices Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 075/152] drm/amd/display: fix PME notification not working in RV desktop Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 076/152] vhost: return EINVAL if iovecs size does not match the message size Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 077/152] drm/sun4i: backend: add missing of_node_puts Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 078/152] pvcalls-front: fix potential null dereference Greg Kroah-Hartman
2019-02-25 21:11 ` Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 079/152] selftests: tc-testing: drop test on missing tunnel key id Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 080/152] selftests: tc-testing: fix tunnel_key failure if dst_port is unspecified Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 081/152] selftests: tc-testing: fix parsing of ife type Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 082/152] afs: Dont set vnode->cb_s_break in afs_validate() Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 083/152] afs: Fix key refcounting in file locking code Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 084/152] bpf: dont assume build-id length is always 20 bytes Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 085/152] bpf: zero out build_id for BPF_STACK_BUILD_ID_IP Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 086/152] selftests/bpf: retry tests that expect build-id Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 087/152] atm: he: fix sign-extension overflow on large shift Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 088/152] hwmon: (tmp421) Correct the misspelling of the tmp442 compatible attribute in OF device ID table Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 089/152] leds: lp5523: fix a missing check of return value of lp55xx_read Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 090/152] bpf: bpf_setsockopt: reset sock dst on SO_MARK changes Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 091/152] dpaa_eth: NETIF_F_LLTX requires to do our own update of trans_start Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 092/152] mlxsw: pci: Return error on PCI reset timeout Greg Kroah-Hartman
2019-02-25 21:11 ` [Bridge] [PATCH 4.19 093/152] net: bridge: Mark FDB entries that were added by user as such Greg Kroah-Hartman
2019-02-25 21:11   ` Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 094/152] mlxsw: spectrum_switchdev: Do not treat static FDB entries as sticky Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 095/152] selftests: forwarding: Add a test case for externally learned FDB entries Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 096/152] net/mlx5e: Fix wrong (zero) TX drop counter indication for representor Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 097/152] isdn: avm: Fix string plus integer warning from Clang Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 098/152] batman-adv: fix uninit-value in batadv_interface_tx() Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 099/152] inet_diag: fix reporting cgroup classid and fallback to priority Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 100/152] ipv6: propagate genlmsg_reply return code Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 101/152] net: ena: fix race between link up and device initalization Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 102/152] net/mlx4_en: Force CHECKSUM_NONE for short ethernet frames Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 103/152] net/mlx5e: Dont overwrite pedit action when multiple pedit used Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 104/152] net/packet: fix 4gb buffer limit due to overflow check Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 105/152] net: sfp: do not probe SFP module before were attached Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 106/152] sctp: call gso_reset_checksum when computing checksum in sctp_gso_segment Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 107/152] sctp: set stream ext to NULL after freeing it in sctp_stream_outq_migrate Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 108/152] team: avoid complex list operations in team_nl_cmd_options_set() Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 109/152] Revert "socket: fix struct ifreq size in compat ioctl" Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 110/152] Revert "kill dev_ifsioc()" Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 111/152] net: socket: fix SIOCGIFNAME in compat Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 112/152] net: socket: make bond ioctls go through compat_ifreq_ioctl() Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 113/152] geneve: should not call rt6_lookup() when ipv6 was disabled Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 114/152] sit: check if IPv6 enabled before calling ip6_err_gen_icmpv6_unreach() Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 115/152] net_sched: fix a race condition in tcindex_destroy() Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 116/152] net_sched: fix a memory leak in cls_tcindex Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 117/152] net_sched: fix two more memory leaks " Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 118/152] net/mlx5e: XDP, fix redirect resources availability check Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 119/152] RDMA/srp: Rework SCSI device reset handling Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 120/152] KEYS: user: Align the payload buffer Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 121/152] KEYS: always initialize keyring_index_key::desc_len Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 122/152] parisc: Fix ptrace syscall number modification Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 123/152] ARCv2: Enable unaligned access in early ASM code Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 124/152] ARC: U-boot: check arguments paranoidly Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 125/152] ARC: define ARCH_SLAB_MINALIGN = 8 Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 126/152] drm/amdgpu: Set DPM_FLAG_NEVER_SKIP when enabling PM-runtime Greg Kroah-Hartman
2019-02-25 21:11 ` [PATCH 4.19 127/152] gpu: drm: radeon: " Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 128/152] drm/i915/fbdev: Actually configure untiled displays Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 129/152] drm/amd/display: Fix MST reboot/poweroff sequence Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 130/152] mac80211: allocate tailroom for forwarded mesh packets Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 131/152] kvm: x86: Return LA57 feature based on hardware capability Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 132/152] net: validate untrusted gso packets without csum offload Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 133/152] net: avoid false positives in untrusted gso validation Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 134/152] staging: erofs: fix a bug when appling cache strategy Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 135/152] staging: erofs: complete error handing of z_erofs_do_read_page Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 136/152] staging: erofs: replace BUG_ON with DBG_BUGON in data.c Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 137/152] staging: erofs: drop multiref support temporarily Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 138/152] staging: erofs: remove the redundant d_rehash() for the root dentry Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 139/152] staging: erofs: atomic_cond_read_relaxed on ref-locked workgroup Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 140/152] staging: erofs: fix `erofs_workgroup_{try_to_freeze, unfreeze} Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 141/152] staging: erofs: add a full barrier in erofs_workgroup_unfreeze Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 142/152] staging: erofs: {dir,inode,super}.c: rectify BUG_ONs Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 143/152] staging: erofs: unzip_{pagevec.h,vle.c}: " Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 144/152] staging: erofs: unzip_vle_lz4.c,utils.c: " Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 145/152] Revert "bridge: do not add port to router list when receives query with source 0.0.0.0" Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 146/152] netfilter: nf_tables: fix flush after rule deletion in the same batch Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 147/152] netfilter: nft_compat: use-after-free when deleting targets Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 148/152] netfilter: ipv6: Dont preserve original oif for loopback address Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 149/152] netfilter: nfnetlink_osf: add missing fmatch check Greg Kroah-Hartman
2019-02-25 21:12 ` [PATCH 4.19 150/152] netfilter: ipt_CLUSTERIP: fix sleep-in-atomic bug in clusterip_config_entry_put() Greg Kroah-Hartman
2019-02-25 21:12 ` Greg Kroah-Hartman [this message]
2019-02-25 21:12 ` [PATCH 4.19 152/152] pinctrl: max77620: Use define directive for max77620_pinconf_param values Greg Kroah-Hartman
2019-02-26 12:26 ` [PATCH 4.19 000/152] 4.19.26-stable review Jon Hunter
2019-02-26 12:26   ` Jon Hunter
2019-02-26 13:02 ` Naresh Kamboju
2019-02-26 15:42 ` shuah
2019-02-26 17:47 ` Guenter Roeck

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=20190225195055.431849077@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=airlied@redhat.com \
    --cc=b.zolnierkie@samsung.com \
    --cc=bernie@plugable.com \
    --cc=ladis@linux-mips.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpatocka@redhat.com \
    --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 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.