public inbox for linux-kernel@vger.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, Andy Whitcroft <apw@canonical.com>,
	"H.J. Lu" <hjl.tools@gmail.com>,
	Peter Hurley <peter@hurleysoftware.com>
Subject: [PATCH 4.0 084/148] pty: Fix input race when closing
Date: Wed,  3 Jun 2015 21:09:14 +0900	[thread overview]
Message-ID: <20150603114209.026664028@linuxfoundation.org> (raw)
In-Reply-To: <20150603114205.337615117@linuxfoundation.org>

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

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

From: Peter Hurley <peter@hurleysoftware.com>

commit 1a48632ffed61352a7810ce089dc5a8bcd505a60 upstream.

A read() from a pty master may mistakenly indicate EOF (errno == -EIO)
after the pty slave has closed, even though input data remains to be read.
For example,

       pty slave       |        input worker        |    pty master
                       |                            |
                       |                            |   n_tty_read()
pty_write()            |                            |     input avail? no
  add data             |                            |     sleep
  schedule worker  --->|                            |     .
                       |---> flush_to_ldisc()       |     .
pty_close()            |       fill read buffer     |     .
  wait for worker      |       wakeup reader    --->|     .
                       |       read buffer full?    |---> input avail ? yes
                       |<---   yes - exit worker    |     copy 4096 bytes to user
  TTY_OTHER_CLOSED <---|                            |<--- kick worker
                       |                            |

		                **** New read() before worker starts ****

                       |                            |   n_tty_read()
                       |                            |     input avail? no
                       |                            |     TTY_OTHER_CLOSED? yes
                       |                            |     return -EIO

Several conditions are required to trigger this race:
1. the ldisc read buffer must become full so the input worker exits
2. the read() count parameter must be >= 4096 so the ldisc read buffer
   is empty
3. the subsequent read() occurs before the kicked worker has processed
   more input

However, the underlying cause of the race is that data is pipelined, while
tty state is not; ie., data already written by the pty slave end is not
yet visible to the pty master end, but state changes by the pty slave end
are visible to the pty master end immediately.

Pipeline the TTY_OTHER_CLOSED state through input worker to the reader.
1. Introduce TTY_OTHER_DONE which is set by the input worker when
   TTY_OTHER_CLOSED is set and either the input buffers are flushed or
   input processing has completed. Readers/polls are woken when
   TTY_OTHER_DONE is set.
2. Reader/poll checks TTY_OTHER_DONE instead of TTY_OTHER_CLOSED.
3. A new input worker is started from pty_close() after setting
   TTY_OTHER_CLOSED, which ensures the TTY_OTHER_DONE state will be
   set if the last input worker is already finished (or just about to
   exit).

Remove tty_flush_to_ldisc(); no in-tree callers.

Fixes: 52bce7f8d4fc ("pty, n_tty: Simplify input processing on final close")
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=96311
BugLink: http://bugs.launchpad.net/bugs/1429756
Reported-by: Andy Whitcroft <apw@canonical.com>
Reported-by: H.J. Lu <hjl.tools@gmail.com>
Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 Documentation/serial/tty.txt |    3 +++
 drivers/tty/n_hdlc.c         |    4 ++--
 drivers/tty/n_tty.c          |   22 ++++++++++++++++++----
 drivers/tty/pty.c            |    5 +++--
 drivers/tty/tty_buffer.c     |   41 +++++++++++++++++++++++++++--------------
 include/linux/tty.h          |    2 +-
 6 files changed, 54 insertions(+), 23 deletions(-)

--- a/Documentation/serial/tty.txt
+++ b/Documentation/serial/tty.txt
@@ -198,6 +198,9 @@ TTY_IO_ERROR		If set, causes all subsequ
 
 TTY_OTHER_CLOSED	Device is a pty and the other side has closed.
 
+TTY_OTHER_DONE		Device is a pty and the other side has closed and
+			all pending input processing has been completed.
+
 TTY_NO_WRITE_SPLIT	Prevent driver from splitting up writes into
 			smaller chunks.
 
--- a/drivers/tty/n_hdlc.c
+++ b/drivers/tty/n_hdlc.c
@@ -600,7 +600,7 @@ static ssize_t n_hdlc_tty_read(struct tt
 	add_wait_queue(&tty->read_wait, &wait);
 
 	for (;;) {
-		if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) {
+		if (test_bit(TTY_OTHER_DONE, &tty->flags)) {
 			ret = -EIO;
 			break;
 		}
@@ -828,7 +828,7 @@ static unsigned int n_hdlc_tty_poll(stru
 		/* set bits for operations that won't block */
 		if (n_hdlc->rx_buf_list.head)
 			mask |= POLLIN | POLLRDNORM;	/* readable */
-		if (test_bit(TTY_OTHER_CLOSED, &tty->flags))
+		if (test_bit(TTY_OTHER_DONE, &tty->flags))
 			mask |= POLLHUP;
 		if (tty_hung_up_p(filp))
 			mask |= POLLHUP;
--- a/drivers/tty/n_tty.c
+++ b/drivers/tty/n_tty.c
@@ -1949,6 +1949,18 @@ static inline int input_available_p(stru
 		return ldata->commit_head - ldata->read_tail >= amt;
 }
 
+static inline int check_other_done(struct tty_struct *tty)
+{
+	int done = test_bit(TTY_OTHER_DONE, &tty->flags);
+	if (done) {
+		/* paired with cmpxchg() in check_other_closed(); ensures
+		 * read buffer head index is not stale
+		 */
+		smp_mb__after_atomic();
+	}
+	return done;
+}
+
 /**
  *	copy_from_read_buf	-	copy read data directly
  *	@tty: terminal device
@@ -2167,7 +2179,7 @@ static ssize_t n_tty_read(struct tty_str
 	struct n_tty_data *ldata = tty->disc_data;
 	unsigned char __user *b = buf;
 	DEFINE_WAIT_FUNC(wait, woken_wake_function);
-	int c;
+	int c, done;
 	int minimum, time;
 	ssize_t retval = 0;
 	long timeout;
@@ -2235,8 +2247,10 @@ static ssize_t n_tty_read(struct tty_str
 		    ((minimum - (b - buf)) >= 1))
 			ldata->minimum_to_wake = (minimum - (b - buf));
 
+		done = check_other_done(tty);
+
 		if (!input_available_p(tty, 0)) {
-			if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) {
+			if (done) {
 				retval = -EIO;
 				break;
 			}
@@ -2443,12 +2457,12 @@ static unsigned int n_tty_poll(struct tt
 
 	poll_wait(file, &tty->read_wait, wait);
 	poll_wait(file, &tty->write_wait, wait);
+	if (check_other_done(tty))
+		mask |= POLLHUP;
 	if (input_available_p(tty, 1))
 		mask |= POLLIN | POLLRDNORM;
 	if (tty->packet && tty->link->ctrl_status)
 		mask |= POLLPRI | POLLIN | POLLRDNORM;
-	if (test_bit(TTY_OTHER_CLOSED, &tty->flags))
-		mask |= POLLHUP;
 	if (tty_hung_up_p(file))
 		mask |= POLLHUP;
 	if (!(mask & (POLLHUP | POLLIN | POLLRDNORM))) {
--- a/drivers/tty/pty.c
+++ b/drivers/tty/pty.c
@@ -53,9 +53,8 @@ static void pty_close(struct tty_struct
 	/* Review - krefs on tty_link ?? */
 	if (!tty->link)
 		return;
-	tty_flush_to_ldisc(tty->link);
 	set_bit(TTY_OTHER_CLOSED, &tty->link->flags);
-	wake_up_interruptible(&tty->link->read_wait);
+	tty_flip_buffer_push(tty->link->port);
 	wake_up_interruptible(&tty->link->write_wait);
 	if (tty->driver->subtype == PTY_TYPE_MASTER) {
 		set_bit(TTY_OTHER_CLOSED, &tty->flags);
@@ -243,7 +242,9 @@ static int pty_open(struct tty_struct *t
 		goto out;
 
 	clear_bit(TTY_IO_ERROR, &tty->flags);
+	/* TTY_OTHER_CLOSED must be cleared before TTY_OTHER_DONE */
 	clear_bit(TTY_OTHER_CLOSED, &tty->link->flags);
+	clear_bit(TTY_OTHER_DONE, &tty->link->flags);
 	set_bit(TTY_THROTTLED, &tty->flags);
 	return 0;
 
--- a/drivers/tty/tty_buffer.c
+++ b/drivers/tty/tty_buffer.c
@@ -37,6 +37,28 @@
 
 #define TTY_BUFFER_PAGE	(((PAGE_SIZE - sizeof(struct tty_buffer)) / 2) & ~0xFF)
 
+/*
+ * If all tty flip buffers have been processed by flush_to_ldisc() or
+ * dropped by tty_buffer_flush(), check if the linked pty has been closed.
+ * If so, wake the reader/poll to process
+ */
+static inline void check_other_closed(struct tty_struct *tty)
+{
+	unsigned long flags, old;
+
+	/* transition from TTY_OTHER_CLOSED => TTY_OTHER_DONE must be atomic */
+	for (flags = ACCESS_ONCE(tty->flags);
+	     test_bit(TTY_OTHER_CLOSED, &flags);
+	     ) {
+		old = flags;
+		__set_bit(TTY_OTHER_DONE, &flags);
+		flags = cmpxchg(&tty->flags, old, flags);
+		if (old == flags) {
+			wake_up_interruptible(&tty->read_wait);
+			break;
+		}
+	}
+}
 
 /**
  *	tty_buffer_lock_exclusive	-	gain exclusive access to buffer
@@ -229,6 +251,8 @@ void tty_buffer_flush(struct tty_struct
 	if (ld && ld->ops->flush_buffer)
 		ld->ops->flush_buffer(tty);
 
+	check_other_closed(tty);
+
 	atomic_dec(&buf->priority);
 	mutex_unlock(&buf->lock);
 }
@@ -471,8 +495,10 @@ static void flush_to_ldisc(struct work_s
 		smp_rmb();
 		count = head->commit - head->read;
 		if (!count) {
-			if (next == NULL)
+			if (next == NULL) {
+				check_other_closed(tty);
 				break;
+			}
 			buf->head = next;
 			tty_buffer_free(port, head);
 			continue;
@@ -489,19 +515,6 @@ static void flush_to_ldisc(struct work_s
 }
 
 /**
- *	tty_flush_to_ldisc
- *	@tty: tty to push
- *
- *	Push the terminal flip buffers to the line discipline.
- *
- *	Must not be called from IRQ context.
- */
-void tty_flush_to_ldisc(struct tty_struct *tty)
-{
-	flush_work(&tty->port->buf.work);
-}
-
-/**
  *	tty_flip_buffer_push	-	terminal
  *	@port: tty port to push
  *
--- a/include/linux/tty.h
+++ b/include/linux/tty.h
@@ -339,6 +339,7 @@ struct tty_file_private {
 #define TTY_EXCLUSIVE 		3	/* Exclusive open mode */
 #define TTY_DEBUG 		4	/* Debugging */
 #define TTY_DO_WRITE_WAKEUP 	5	/* Call write_wakeup after queuing new */
+#define TTY_OTHER_DONE		6	/* Closed pty has completed input processing */
 #define TTY_LDISC_OPEN	 	11	/* Line discipline is open */
 #define TTY_PTY_LOCK 		16	/* pty private */
 #define TTY_NO_WRITE_SPLIT 	17	/* Preserve write boundaries to driver */
@@ -462,7 +463,6 @@ extern int tty_hung_up_p(struct file *fi
 extern void do_SAK(struct tty_struct *tty);
 extern void __do_SAK(struct tty_struct *tty);
 extern void no_tty(void);
-extern void tty_flush_to_ldisc(struct tty_struct *tty);
 extern void tty_buffer_free_all(struct tty_port *port);
 extern void tty_buffer_flush(struct tty_struct *tty, struct tty_ldisc *ld);
 extern void tty_buffer_init(struct tty_port *port);



  parent reply	other threads:[~2015-06-03 12:47 UTC|newest]

Thread overview: 148+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-03 12:07 [PATCH 4.0 000/148] 4.0.5-stable review Greg Kroah-Hartman
2015-06-03 12:07 ` [PATCH 4.0 001/148] mnt: Fail collect_mounts when applied to unmounted mounts Greg Kroah-Hartman
2015-06-03 12:07 ` [PATCH 4.0 002/148] fs_pin: Allow for the possibility that m_list or s_list go unused Greg Kroah-Hartman
2015-06-03 12:07 ` [PATCH 4.0 003/148] iommu/amd: Fix bug in put_pasid_state_wait Greg Kroah-Hartman
2015-06-03 12:07 ` [PATCH 4.0 004/148] iommu/arm-smmu: Fix sign-extension of upstream bus addresses at stage 1 Greg Kroah-Hartman
2015-06-03 12:07 ` [PATCH 4.0 005/148] Revert "KVM: x86: drop fpu_activate hook" Greg Kroah-Hartman
2015-06-03 12:07 ` [PATCH 4.0 006/148] x86/mce: Fix MCE severity messages Greg Kroah-Hartman
2015-06-03 12:07 ` [PATCH 4.0 007/148] x86/fpu: Disable XSAVES* support for now Greg Kroah-Hartman
2015-06-03 12:07 ` [PATCH 4.0 008/148] KVM: MMU: fix CR4.SMEP=1, CR0.WP=0 with shadow pages Greg Kroah-Hartman
2015-06-03 12:07 ` [PATCH 4.0 009/148] KVM: MMU: fix smap permission check Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 010/148] kvm: fix crash in kvm_vcpu_reload_apic_access_page Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 011/148] KVM: MMU: fix SMAP virtualization Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 012/148] kvm/fpu: Enable eager restore kvm FPU for MPX Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 013/148] ktime: Fix ktime_divns to do signed division Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 014/148] fs, omfs: add NULL terminator in the end up the token list Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 015/148] omfs: fix sign confusion for bitmap loop counter Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 016/148] xfs: xfs_attr_inactive leaves inconsistent attr fork state behind Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 017/148] xfs: xfs_iozero can return positive errno Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 018/148] lguest: fix out-by-one error in address checking Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 019/148] ovl: dont remove non-empty opaque directory Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 020/148] ovl: mount read-only if workdir cant be created Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 021/148] mfd: da9052: Fix broken regulator probe Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 022/148] libceph: request a new osdmap if lingering request maps to no osd Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 023/148] Revert "libceph: clear r_req_lru_item in __unregister_linger_request()" Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 024/148] Btrfs: fix racy system chunk allocation when setting block group ro Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 025/148] xen/events: dont bind non-percpu VIRQs with percpu chip Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 026/148] hwmon: (ntc_thermistor) Ensure iio channel is of type IIO_VOLTAGE Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 027/148] iio/axp288_adc: add missing channel info mask Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 028/148] iio:st_sensors: Fix oops when probing SPI devices Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 029/148] iio: light: hid-sensor-prox: Fix modifier Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 030/148] iio: pressure: hid-sensor-press: " Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 031/148] iio: adc: spmi-vadc: Fix overflow in output value normalization Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 032/148] iio: adc: cc10001: Fix the channel number mapping Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 033/148] iio: adc: cc10001: Fix incorrect use of power-up/power-down register Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 034/148] iio: adc: cc10001: Add delay before setting START bit Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 035/148] iio: adc: cc10001: Fix regulator_get_voltage() return value check Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 036/148] iio: adc: xilinx: Fix register addresses Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 037/148] iio: adc: xilinx: Fix "vccaux" channel .address Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 038/148] iio: adc: xilinx: Fix VREFP scale Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 039/148] iio: adc: xilinx: Fix VREFN sign Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 040/148] hwmon: (tmp401) Do not auto-detect chip on I2C address 0x37 Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 041/148] hwmon: (nct6775) Add missing sysfs attribute initialization Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 042/148] hwmon: (nct6683) " Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 043/148] clk: exynos5420: Restore GATE_BUS_TOP on suspend Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 044/148] clk: add missing lock when call clk_core_enable in clk_set_parent Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 045/148] brcmfmac: avoid null pointer access when brcmf_msgbuf_get_pktid() fails Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 046/148] lib: Fix strnlen_user() to not touch memory after specified maximum Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 047/148] d_walk() might skip too much Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 048/148] module: Call module notifier on failure after complete_formation() Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 049/148] ALSA: usb-audio: Add quirk for MS LifeCam Studio Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 050/148] ALSA: hda - Add Conexant codecs CX20721, CX20722, CX20723 and CX20724 Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 051/148] ALSA: hda - Add headphone quirk for Lifebook E752 Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 052/148] ALSA: hda - Add headset mic quirk for Dell Inspiron 5548 Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 053/148] ALSA: hda/realtek - ALC292 dock fix for Thinkpad L450 Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 054/148] ALSA: usb-audio: Add quirk for MS LifeCam HD-3000 Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 056/148] ALSA: hda - Fix noise on AMD radeon 290x controller Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 057/148] ASoC: mc13783: Fix wrong mask value used in mc13xxx_reg_rmw() calls Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 058/148] ASoC: uda1380: Avoid accessing i2c bus when codec is disabled Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 059/148] ASoC: dapm: Modify widget stream name according to prefix Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 060/148] ASoC: wm8960: fix "RINPUT3" audio route error Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 061/148] ASoC: wm8994: correct BCLK DIV 348 to 384 Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 062/148] RDMA/core: Fix for parsing netlink string attribute Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 064/148] staging: vt6656: use ieee80211_tx_info to select packet type Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 065/148] staging: vt6655: device_free_tx_buf use only ieee80211_tx_status_irqsafe Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 066/148] staging: vt6655: implement IEEE80211_TX_STAT_NOACK_TRANSMITTED Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 067/148] staging: vt6655: Fix 80211 control and management status reporting Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 068/148] staging: vt6655: vnt_tx_packet Correct TX order of OWNED_BY_NIC Greg Kroah-Hartman
2015-06-03 12:08 ` [PATCH 4.0 069/148] staging: vt6655: lock MACvWriteBSSIDAddress Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 070/148] perf/x86/rapl: Enable Broadwell-U RAPL support Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 071/148] target/pscsi: Dont leak scsi_host if hba is VIRTUAL_HOST Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 072/148] xhci: fix isoc endpoint dequeue from advancing too far on transaction error Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 073/148] xhci: Solve full event ring by increasing TRBS_PER_SEGMENT to 256 Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 074/148] xhci: gracefully handle xhci_irq dead device Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 075/148] USB: visor: Match I330 phone more precisely Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 076/148] USB: pl2303: Remove support for Samsung I330 Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 077/148] USB: cp210x: add ID for KCF Technologies PRN device Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 078/148] usb-storage: Add NO_WP_DETECT quirk for Lacie 059f:0651 devices Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 079/148] usb: gadget: configfs: Fix interfaces array NULL-termination Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 080/148] powerpc/mce: fix off by one errors in mce event handling Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 081/148] powerpc: Align TOC to 256 bytes Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 082/148] mmc: atmel-mci: fix bad variable type for clkdiv Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 083/148] tty/n_gsm.c: fix a memory leak when gsmtty is removed Greg Kroah-Hartman
2015-06-03 12:09 ` Greg Kroah-Hartman [this message]
2015-06-03 12:09 ` [PATCH 4.0 085/148] ext4: fix lazytime optimization Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 086/148] ext4: fix NULL pointer dereference when journal restart fails Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 087/148] ext4: check for zero length extent explicitly Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 088/148] jbd2: fix r_count overflows leading to buffer overflow in journal recovery Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 089/148] ahci: avoton port-disable reset-quirk Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 090/148] libata: Add helper to determine when PHY events should be ignored Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 091/148] libata: Ignore spurious PHY event on LPM policy change Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 093/148] arm64: bpf: fix signedness bug in loading 64-bit immediate Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 094/148] rt2x00: add new rt2800usb device DWA 130 Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 095/148] ARM: 8325/1: exynos: move resume code to .text section Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 096/148] gpio: gpio-kempld: Fix get_direction return value Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 097/148] crypto: s390/ghash - Fix incorrect ghash icv buffer handling Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 098/148] mac80211: move WEP tailroom size check Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 099/148] mac80211: dont use napi_gro_receive() outside NAPI context Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 100/148] s390/mm: correct return value of pmd_pfn Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 101/148] sched: Handle priority boosted tasks proper in setscheduler() Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 102/148] sched: always use blk_schedule_flush_plug in io_schedule_out Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 103/148] ARM: 8356/1: mm: handle non-pmd-aligned end of RAM Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 104/148] ARM: EXYNOS: Fix dereference of ERR_PTR returned by of_genpd_get_from_provider Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 106/148] ARM: dts: fix imx27 dtb build rule Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 107/148] ARM: dts: set display clock correctly for exynos4412-trats2 Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 108/148] ARM: fix missing syscall trace exit Greg Kroah-Hartman
2015-06-03 20:07   ` Josh Stone
2015-06-03 12:09 ` [PATCH 4.0 109/148] parisc,metag: Fix crashes due to stack randomization on stack-grows-upwards architectures Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 110/148] gfp: add __GFP_NOACCOUNT Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 111/148] kernfs: do not account ino_ida allocations to memcg Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 112/148] tools/vm: fix page-flags build Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 113/148] mm, numa: really disable NUMA balancing by default on single node machines Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 114/148] nfsd/blocklayout: pretend we can send deviceid notifications Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 115/148] nfsd: fix the check for confirmed openowner in nfs4_preprocess_stateid_op Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 116/148] svcrpc: fix potential GSSX_ACCEPT_SEC_CONTEXT decoding failures Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 117/148] firmware: dmi_scan: Fix ordering of product_uuid Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 118/148] thermal: armada: Update Armada 380 thermal sensor coefficients Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 119/148] md/raid5: dont record new size if resize_stripes fails Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 120/148] md/raid0: fix restore to sector variable in raid0_make_request Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 121/148] Revert "HID: logitech-hidpp: support combo keyboard touchpad TK820" Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 122/148] MIPS: fix FP mode selection in lieu of .MIPS.abiflags data Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 123/148] rtlwifi: rtl8192cu: Fix kernel deadlock Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 124/148] Input: elantech - fix semi-mt protocol for v3 HW Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 125/148] storvsc: Set the SRB flags correctly when no data transfer is needed Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 126/148] sd: Disable support for 256 byte/sector disks Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 127/148] ACPI / init: Fix the ordering of acpi_reserve_resources() Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 128/148] iwlwifi: mvm: clean net-detect info if device was reset during suspend Greg Kroah-Hartman
2015-06-03 12:09 ` [PATCH 4.0 129/148] iwlwifi: mvm: Free fw_status after use to avoid memory leak Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 130/148] iwlwifi: pcie: prevent using unmapped memory in fw monitor Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 131/148] drm/radeon: add new bonaire pci id Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 133/148] drm/radeon: retry dcpd fetch Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 134/148] drm/plane-helper: Adapt cursor hack to transitional helpers Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 135/148] drm/radeon: dont share plls if monitors differ in audio support Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 136/148] drm/radeon/audio: make sure connector is valid in hotplug case Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 137/148] Revert "drm/radeon: only mark audio as connected if the monitor supports it (v3)" Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 139/148] dm: fix casting bug in dm_merge_bvec() Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 140/148] dm: fix reload failure of 0 path multipath mapping on blk-mq devices Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 141/148] drm/amdkfd: Dont report local memory size Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 142/148] vfs: read file_handle only once in handle_to_path Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 143/148] power/reset: at91: fix return value check in at91_reset_platform_probe() Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 144/148] ARC: unbork !LLSC build Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 145/148] UBI: block: Add missing cache flushes Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 146/148] pwm: img: Impose upper and lower timebase steps value Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 147/148] md: fix race when unfreezing sync_action Greg Kroah-Hartman
2015-06-03 12:10 ` [PATCH 4.0 148/148] fs/binfmt_elf.c:load_elf_binary(): return -EINVAL on zero-length mappings Greg Kroah-Hartman
2015-06-03 16:53 ` [PATCH 4.0 000/148] 4.0.5-stable review Shuah Khan
2015-06-04  6:17   ` Greg Kroah-Hartman
2015-06-03 18:16 ` Guenter Roeck
2015-06-04  6:17   ` Greg Kroah-Hartman

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=20150603114209.026664028@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=apw@canonical.com \
    --cc=hjl.tools@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peter@hurleysoftware.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox