From: Kamal Mostafa <kamal@canonical.com>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org,
kernel-team@lists.ubuntu.com
Cc: Peter Hurley <peter@hurleysoftware.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Kamal Mostafa <kamal@canonical.com>
Subject: [PATCH 3.19.y-ckt 052/146] pty: Fix input race when closing
Date: Wed, 17 Jun 2015 15:22:37 -0700 [thread overview]
Message-ID: <1434579851-1719-53-git-send-email-kamal@canonical.com> (raw)
In-Reply-To: <1434579851-1719-1-git-send-email-kamal@canonical.com>
3.19.8-ckt2 -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>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
---
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(-)
diff --git a/Documentation/serial/tty.txt b/Documentation/serial/tty.txt
index 1e52d67..dbe6623 100644
--- a/Documentation/serial/tty.txt
+++ b/Documentation/serial/tty.txt
@@ -198,6 +198,9 @@ TTY_IO_ERROR If set, causes all subsequent userspace read/write
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.
diff --git a/drivers/tty/n_hdlc.c b/drivers/tty/n_hdlc.c
index 644ddb8..bbc4ce6 100644
--- a/drivers/tty/n_hdlc.c
+++ b/drivers/tty/n_hdlc.c
@@ -600,7 +600,7 @@ static ssize_t n_hdlc_tty_read(struct tty_struct *tty, struct file *file,
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(struct tty_struct *tty, struct file *filp,
/* 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;
diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c
index 6f8cf3a..f9d9ed3 100644
--- a/drivers/tty/n_tty.c
+++ b/drivers/tty/n_tty.c
@@ -1960,6 +1960,18 @@ static inline int input_available_p(struct tty_struct *tty, int poll)
return read_cnt(ldata) >= 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
@@ -2177,7 +2189,7 @@ static ssize_t n_tty_read(struct tty_struct *tty, struct file *file,
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;
@@ -2243,8 +2255,10 @@ static ssize_t n_tty_read(struct tty_struct *tty, struct file *file,
((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;
}
@@ -2451,12 +2465,12 @@ static unsigned int n_tty_poll(struct tty_struct *tty, struct file *file,
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))) {
diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c
index 6e1f150..ca7b689 100644
--- a/drivers/tty/pty.c
+++ b/drivers/tty/pty.c
@@ -53,9 +53,8 @@ static void pty_close(struct tty_struct *tty, struct file *filp)
/* 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);
@@ -250,7 +249,9 @@ static int pty_open(struct tty_struct *tty, struct file *filp)
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;
diff --git a/drivers/tty/tty_buffer.c b/drivers/tty/tty_buffer.c
index 3605103..79bcdf9 100644
--- 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 *tty, struct tty_ldisc *ld)
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_struct *work)
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_struct *work)
}
/**
- * 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
*
diff --git a/include/linux/tty.h b/include/linux/tty.h
index 7d66ae5..8716524 100644
--- a/include/linux/tty.h
+++ b/include/linux/tty.h
@@ -316,6 +316,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 */
@@ -439,7 +440,6 @@ extern int tty_hung_up_p(struct file *filp);
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);
--
1.9.1
next prev parent reply other threads:[~2015-06-17 22:25 UTC|newest]
Thread overview: 149+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-17 22:21 [3.19.y-ckt stable] Linux 3.19.8-ckt2 stable review Kamal Mostafa
2015-06-17 22:21 ` [PATCH 3.19.y-ckt 001/146] ozwpan: Use unsigned ints to prevent heap overflow Kamal Mostafa
2015-06-17 22:21 ` [PATCH 3.19.y-ckt 002/146] ozwpan: divide-by-zero leading to panic Kamal Mostafa
2015-06-17 22:21 ` [PATCH 3.19.y-ckt 003/146] ozwpan: Use proper check to prevent heap overflow Kamal Mostafa
2015-06-17 22:21 ` [PATCH 3.19.y-ckt 004/146] ozwpan: unchecked signed subtraction leads to DoS Kamal Mostafa
2015-06-17 22:21 ` [PATCH 3.19.y-ckt 005/146] x86: kvm: Revert "remove sched notifier for cross-cpu migrations" Kamal Mostafa
2015-06-17 22:21 ` [PATCH 3.19.y-ckt 006/146] HID: add ALWAYS_POLL quirk for a Logitech 0xc007 Kamal Mostafa
2015-06-17 22:21 ` [PATCH 3.19.y-ckt 007/146] HID: add HP OEM mouse to quirk ALWAYS_POLL Kamal Mostafa
2015-06-17 22:21 ` [PATCH 3.19.y-ckt 008/146] HID: add quirk for PIXART OEM mouse used by HP Kamal Mostafa
2015-06-17 22:21 ` [PATCH 3.19.y-ckt 009/146] Revert "usb: dwc2: add bus suspend/resume for dwc2" Kamal Mostafa
2015-06-17 22:21 ` [PATCH 3.19.y-ckt 010/146] usb: dwc2: hcd: use new USB_RESUME_TIMEOUT Kamal Mostafa
2015-06-17 22:21 ` [PATCH 3.19.y-ckt 011/146] usb: isp1760: " Kamal Mostafa
2015-06-17 22:21 ` [PATCH 3.19.y-ckt 012/146] x86: vdso: fix pvclock races with task migration Kamal Mostafa
2015-06-17 22:21 ` [PATCH 3.19.y-ckt 013/146] nfsd: fix nsfd startup race triggering BUG_ON Kamal Mostafa
2015-06-17 22:21 ` [PATCH 3.19.y-ckt 014/146] jhash: Update jhash_[321]words functions to use correct initval Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 015/146] firmware/ihex2fw.c: restore missing default in switch statement Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 016/146] bridge/mdb: remove wrong use of NLM_F_MULTI Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 017/146] iio/axp288_adc: add missing channel info mask Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 018/146] iio: light: hid-sensor-prox: Fix modifier Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 019/146] iio: pressure: hid-sensor-press: " Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 020/146] iio: adc: xilinx: Fix register addresses Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 021/146] iio: adc: xilinx: Fix "vccaux" channel .address Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 022/146] iio: adc: xilinx: Fix VREFP scale Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 023/146] iio: adc: xilinx: Fix VREFN sign Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 024/146] libata: Add helper to determine when PHY events should be ignored Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 025/146] libata: Ignore spurious PHY event on LPM policy change Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 026/146] iio:st_sensors: Fix oops when probing SPI devices Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 027/146] usb: gadget: configfs: Fix interfaces array NULL-termination Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 028/146] rtlwifi: rtl8192cu: Fix kernel deadlock Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 029/146] USB: cp210x: add ID for KCF Technologies PRN device Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 030/146] USB: pl2303: Remove support for Samsung I330 Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 031/146] USB: visor: Match I330 phone more precisely Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 032/146] net: can: xilinx_can: fix extended frame handling Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 033/146] nfsd: fix the check for confirmed openowner in nfs4_preprocess_stateid_op Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 034/146] svcrpc: fix potential GSSX_ACCEPT_SEC_CONTEXT decoding failures Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 035/146] libata: Blacklist queued TRIM on all Samsung 800-series Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 036/146] ACPI / init: Fix the ordering of acpi_reserve_resources() Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 037/146] md/raid5: don't record new size if resize_stripes fails Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 038/146] sched: Handle priority boosted tasks proper in setscheduler() Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 039/146] staging: vt6656: use ieee80211_tx_info to select packet type Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 040/146] staging: vt6655: device_free_tx_buf use only ieee80211_tx_status_irqsafe Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 041/146] staging: vt6655: Fix 80211 control and management status reporting Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 042/146] staging: vt6655: lock MACvWriteBSSIDAddress Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 043/146] arm64: bpf: fix signedness bug in loading 64-bit immediate Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 044/146] xhci: fix isoc endpoint dequeue from advancing too far on transaction error Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 045/146] xhci: Solve full event ring by increasing TRBS_PER_SEGMENT to 256 Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 046/146] xhci: gracefully handle xhci_irq dead device Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 047/146] ARC: unbork !LLSC build Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 048/146] staging: gdm724x: Correction of variable usage after applying ALIGN() Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 049/146] usb-storage: Add NO_WP_DETECT quirk for Lacie 059f:0651 devices Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 050/146] ahci: avoton port-disable reset-quirk Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 051/146] tty/n_gsm.c: fix a memory leak when gsmtty is removed Kamal Mostafa
2015-06-17 22:22 ` Kamal Mostafa [this message]
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 053/146] ARM: net fix emit_udiv() for BPF_ALU | BPF_DIV | BPF_K intruction Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 054/146] x86/vdso: Fix the x86 vdso2c tool includes Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 055/146] x86/vdso: Fix 'make bzImage' on older distros Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 056/146] perf/x86/rapl: Enable Broadwell-U RAPL support Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 057/146] net: qca_spi: Fix possible race during probe Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 058/146] drm/radeon: fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling Kamal Mostafa
2015-06-18 7:58 ` Christian König
2015-06-18 16:22 ` Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 059/146] RDMA/core: Fix for parsing netlink string attribute Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 060/146] drm/radeon: add new bonaire pci id Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 061/146] parisc,metag: Fix crashes due to stack randomization on stack-grows-upwards architectures Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 062/146] net: phy: micrel: Fix regression in kszphy_probe Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 063/146] firmware: dmi_scan: Fix ordering of product_uuid Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 064/146] ext4: fix NULL pointer dereference when journal restart fails Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 065/146] ext4: check for zero length extent explicitly Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 066/146] jbd2: fix r_count overflows leading to buffer overflow in journal recovery Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 067/146] tools/vm: fix page-flags build Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 068/146] mm, numa: really disable NUMA balancing by default on single node machines Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 069/146] igb: Fix oops on changing number of rings Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 070/146] power/reset: at91: fix return value check in at91_reset_platform_probe() Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 071/146] spi: bitbang: Make setup_transfer() callback optional Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 072/146] iwlwifi: pcie: prevent using unmapped memory in fw monitor Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 073/146] x86: bpf_jit: fix FROM_BE16 and FROM_LE16/32 instructions Kamal Mostafa
2015-06-17 22:22 ` [PATCH 3.19.y-ckt 074/146] igb: Fix NULL assignment to incorrect variable in igb_reset_q_vector Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 075/146] thermal: rockchip: fix an error code Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 076/146] ARM: net: delegate filter to kernel interpreter when imm_offset() return value can't fit into 12bits Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 077/146] ALSA: hda - Add headphone quirk for Lifebook E752 Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 078/146] ASoC: mc13783: Fix wrong mask value used in mc13xxx_reg_rmw() calls Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 079/146] ASoC: uda1380: Avoid accessing i2c bus when codec is disabled Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 080/146] clk: exynos5420: Restore GATE_BUS_TOP on suspend Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 081/146] Revert "HID: logitech-hidpp: support combo keyboard touchpad TK820" Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 082/146] thermal: armada: Update Armada 380 thermal sensor coefficients Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 083/146] ALSA: hda/realtek - Support Dell headset mode for ALC256 Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 084/146] ALSA: hda - fix headset mic detection problem for one more machine Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 085/146] ALSA: hda - Add headset mic quirk for Dell Inspiron 5548 Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 086/146] mac80211: move WEP tailroom size check Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 087/146] KVM: MMU: fix smap permission check Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 088/146] KVM: MMU: fix CR4.SMEP=1, CR0.WP=0 with shadow pages Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 089/146] KVM: MMU: fix SMAP virtualization Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 090/146] storvsc: Set the SRB flags correctly when no data transfer is needed Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 091/146] powerpc/mce: fix off by one errors in mce event handling Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 092/146] ASoC: dapm: Modify widget stream name according to prefix Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 093/146] ASoC: wm8960: fix "RINPUT3" audio route error Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 094/146] ASoC: wm8994: correct BCLK DIV 348 to 384 Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 095/146] ktime: Optimize ktime_divns for constant divisors Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 096/146] ktime: Fix ktime_divns to do signed division Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 097/146] Input: elantech - fix semi-mt protocol for v3 HW Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 098/146] powerpc: Align TOC to 256 bytes Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 099/146] ALSA: hda - Add Conexant codecs CX20721, CX20722, CX20723 and CX20724 Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 100/146] ALSA: hda/realtek - ALC292 dock fix for Thinkpad L450 Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 101/146] mmc: atmel-mci: fix bad variable type for clkdiv Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 102/146] sd: Disable support for 256 byte/sector disks Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 103/146] s390/mm: correct return value of pmd_pfn Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 104/146] xen/events: don't bind non-percpu VIRQs with percpu chip Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 105/146] kvm: fix crash in kvm_vcpu_reload_apic_access_page Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 106/146] Revert "KVM: x86: drop fpu_activate hook" Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 107/146] kvm/fpu: Enable eager restore kvm FPU for MPX Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 108/146] libceph: request a new osdmap if lingering request maps to no osd Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 109/146] Revert "libceph: clear r_req_lru_item in __unregister_linger_request()" Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 110/146] drm/radeon: retry dcpd fetch Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 111/146] crypto: s390/ghash - Fix incorrect ghash icv buffer handling Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 112/146] ipvs: fix memory leak in ip_vs_ctl.c Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 113/146] rtnl/bond: don't send rtnl msg for unregistered iface Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 114/146] net: sched: fix call_rcu() race on classifier module unloads Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 115/146] conntrack: RFC5961 challenge ACK confuse conntrack LAST-ACK transition Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 116/146] net: phy: Allow EEE for all RGMII variants Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 117/146] bridge: fix parsing of MLDv2 reports Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 118/146] cdc_ncm: Fix tx_bytes statistics Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 119/146] ipv4: Avoid crashing in ip_error Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 120/146] ipv6: do not delete previously existing ECMP routes if add fails Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 121/146] net/ipv6/udp: Fix ipv6 multicast socket filter regression Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 122/146] ipv6: fix ECMP route replacement Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 123/146] tcp/ipv6: fix flow label setting in TIME_WAIT state Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 124/146] staging: vt6655: move setting of PSTxDesc->buff_addr to vnt_tx_packet Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 125/146] staging: vt6655: Fix TD_FLAGS_NETIF_SKB only on TYPE_AC0DMA Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 126/146] staging: vt6655: vnt_tx_packet fix dma_idx selection Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 127/146] staging: vt6655: vnt_tx_packet Correct TX order of OWNED_BY_NIC Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 128/146] staging: vt6655: [BUG] Protect MACvSelectPage1 with lock Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 129/146] Drivers: hv: vmbus: Add support for VMBus panic notifier handler Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 130/146] Drivers: hv: vmbus: Correcting truncation error for constant HV_CRASH_CTL_CRASH_NOTIFY Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 131/146] net: core: Correct an over-stringent device loop detection Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 132/146] x86: bpf_jit: fix compilation of large bpf programs Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 133/146] net: dp83640: fix broken calibration routine Kamal Mostafa
2015-06-17 22:23 ` [PATCH 3.19.y-ckt 134/146] net: dp83640: reinforce locking rules Kamal Mostafa
2015-06-17 22:24 ` [PATCH 3.19.y-ckt 135/146] net: dp83640: fix improper double spin locking Kamal Mostafa
2015-06-17 22:24 ` [PATCH 3.19.y-ckt 136/146] unix/caif: sk_socket can disappear when state is unlocked Kamal Mostafa
2015-06-17 22:24 ` [PATCH 3.19.y-ckt 137/146] xen/netback: Properly initialize credit_bytes Kamal Mostafa
2015-06-17 22:24 ` [PATCH 3.19.y-ckt 138/146] net_sched: invoke ->attach() after setting dev->qdisc Kamal Mostafa
2015-06-17 22:24 ` [PATCH 3.19.y-ckt 139/146] sctp: Fix mangled IPv4 addresses on a IPv6 listening socket Kamal Mostafa
2015-06-17 22:24 ` [PATCH 3.19.y-ckt 140/146] bridge: fix br_multicast_query_expired() bug Kamal Mostafa
2015-06-17 22:24 ` [PATCH 3.19.y-ckt 141/146] udp: fix behavior of wrong checksums Kamal Mostafa
2015-06-17 22:24 ` [PATCH 3.19.y-ckt 142/146] xen: netback: read hotplug script once at start of day Kamal Mostafa
2015-06-17 22:24 ` [PATCH 3.19.y-ckt 143/146] ipv4/udp: Verify multicast group is ours in upd_v4_early_demux() Kamal Mostafa
2015-06-17 22:24 ` [PATCH 3.19.y-ckt 144/146] bridge: disable softirqs around br_fdb_update to avoid lockup Kamal Mostafa
2015-06-17 22:24 ` [PATCH 3.19.y-ckt 145/146] tcp: fix child sockets to use system default congestion control if not set Kamal Mostafa
2015-06-17 22:24 ` [PATCH 3.19.y-ckt 146/146] be2net: Replace dma/pci_alloc_coherent() calls with dma_zalloc_coherent() Kamal Mostafa
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=1434579851-1719-53-git-send-email-kamal@canonical.com \
--to=kamal@canonical.com \
--cc=gregkh@linuxfoundation.org \
--cc=kernel-team@lists.ubuntu.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
all inboxes | Powered by JetHome®