Update to 3.14.7
Drop the speakup patches which were included in this. svn path=/dists/sid/linux/; revision=21432
This commit is contained in:
parent
a405ef41f3
commit
f083fbcfe6
|
@ -1,4 +1,4 @@
|
|||
linux (3.14.6-1) UNRELEASED; urgency=medium
|
||||
linux (3.14.7-1) UNRELEASED; urgency=medium
|
||||
|
||||
* New upstream stable update:
|
||||
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.6
|
||||
|
@ -151,6 +151,53 @@ linux (3.14.6-1) UNRELEASED; urgency=medium
|
|||
- libceph: fix corruption when using page_count 0 page in rbd
|
||||
- media: V4L2: ov7670: fix a wrong index, potentially Oopsing the kernel
|
||||
from user-space
|
||||
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.7
|
||||
- perf: Limit perf_event_attr::sample_period to 63 bits
|
||||
- perf: Fix race in removing an event
|
||||
- SCSI: scsi_transport_sas: move bsg destructor into sas_rphy_remove
|
||||
(regression in 3.13)
|
||||
- [arm] 8051/1: put_user: fix possible data corruption in put_user
|
||||
- [arm] 8064/1: fix v7-M signal return (regression in 3.11)
|
||||
- cpufreq: remove race while accessing cur_policy
|
||||
- firewire: revert to 4 GB RDMA, fix protocols using Memory Space
|
||||
(regression in 3.14)
|
||||
- [mips] Fix typo when reporting cache and ftlb errors for ImgTec cores
|
||||
(regression in 3.14)
|
||||
- dm cache: always split discards on cache block boundaries
|
||||
- virtio_blk: fix race between start and stop queue
|
||||
- sched/deadline: Restrict user params max value to 2^63 ns
|
||||
- sched/dl: Fix race in dl_task_timer()
|
||||
- drm/radeon: avoid crash if VM command submission isn't available
|
||||
- [x86] drm/i915: Only copy back the modified fields to userspace from
|
||||
execbuffer
|
||||
- drm/radeon/dpm: resume fixes for some systems (regression in 3.14)
|
||||
- libata: Blacklist queued trim for Crucial M500 (regression in 3.14.4)
|
||||
- md: always set MD_RECOVERY_INTR when aborting a reshape or other
|
||||
"resync".
|
||||
- md: always set MD_RECOVERY_INTR when interrupting a reshape thread.
|
||||
(regression in 3.12.9, 3.13)
|
||||
- xhci: delete endpoints from bandwidth list before freeing whole device
|
||||
- staging: comedi: ni_daq_700: add mux settling delay
|
||||
- staging: r8192e_pci: fix htons error (regression in 3.14)
|
||||
- ALSA: hda/analog - Fix silent output on ASUS A8JN (regression in 3.12)
|
||||
- USB: io_ti: fix firmware download on big-endian machines (part 2)
|
||||
- usb: pci-quirks: Prevent Sony VAIO t-series from switching usb ports
|
||||
(regression in 3.12)
|
||||
- percpu-refcount: fix usage of this_cpu_ops
|
||||
- [x86] intel_pstate: Remove C0 tracking (regression in 3.14)
|
||||
- [x86] intel_pstate: Correct rounding in busy calculation
|
||||
(regression in 3.14)
|
||||
- [x86] intel_pstate: add sample time scaling
|
||||
- [x86] intel_pstate: Improve initial busy calculation
|
||||
- mm: add !pte_present() check on existing hugetlb_entry callbacks
|
||||
- mm: rmap: fix use-after-free in __put_anon_vma
|
||||
- iser-target: Add missing target_put_sess_cmd for ImmedateData failure
|
||||
- iscsi-target: Fix wrong buffer / buffer overrun in
|
||||
iscsi_change_param_value()
|
||||
- target: Fix alua_access_state attribute OOPs for un-configured devices
|
||||
- netfilter: Fix potential use after free in ip6_route_me_harder()
|
||||
- netfilter: nfnetlink: Fix use after free when it fails to process batch
|
||||
- [x86] iommu/vt-d: Fix missing IOTLB flush in intel_iommu_unmap()
|
||||
|
||||
[ Ian Campbell ]
|
||||
* [armhf] Enable VIRTIO_BALLOON and VIRTIO_PCI (Closes: #750742)
|
||||
|
|
|
@ -1,121 +0,0 @@
|
|||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Mon, 19 May 2014 00:56:22 +0100
|
||||
Subject: Staging: speakup: Move pasting into a work item
|
||||
Origin: https://git.kernel.org/cgit/linux/kernel/git/gregkh/staging.git/commit?id=d7500135802ca55b3f4e01a16544e8b34082f8c3
|
||||
Bug-Debian: https://bugs.debian.org/735202
|
||||
Bug-Debian: https://bugs.debian.org/744015
|
||||
|
||||
Input is handled in softirq context, but when pasting we may
|
||||
need to sleep. speakup_paste_selection() currently tries to
|
||||
bodge this by busy-waiting if in_atomic(), but that doesn't
|
||||
help because the ldisc may also sleep.
|
||||
|
||||
For bonus breakage, speakup_paste_selection() changes the
|
||||
state of current, even though it's not running in process
|
||||
context.
|
||||
|
||||
Move it into a work item and make sure to cancel it on exit.
|
||||
|
||||
References: https://bugs.debian.org/735202
|
||||
References: https://bugs.debian.org/744015
|
||||
Reported-by: Paul Gevers <elbrus@debian.org>
|
||||
Reported-and-tested-by: Jarek Czekalski <jarekczek@poczta.onet.pl>
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/speakup/main.c | 1 +
|
||||
drivers/staging/speakup/selection.c | 38 +++++++++++++++++++++++++++++++------
|
||||
drivers/staging/speakup/speakup.h | 1 +
|
||||
3 files changed, 34 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/staging/speakup/main.c
|
||||
+++ b/drivers/staging/speakup/main.c
|
||||
@@ -2218,6 +2218,7 @@ static void __exit speakup_exit(void)
|
||||
unregister_keyboard_notifier(&keyboard_notifier_block);
|
||||
unregister_vt_notifier(&vt_notifier_block);
|
||||
speakup_unregister_devsynth();
|
||||
+ speakup_cancel_paste();
|
||||
del_timer(&cursor_timer);
|
||||
kthread_stop(speakup_task);
|
||||
speakup_task = NULL;
|
||||
--- a/drivers/staging/speakup/selection.c
|
||||
+++ b/drivers/staging/speakup/selection.c
|
||||
@@ -4,6 +4,8 @@
|
||||
#include <linux/sched.h>
|
||||
#include <linux/device.h> /* for dev_warn */
|
||||
#include <linux/selection.h>
|
||||
+#include <linux/workqueue.h>
|
||||
+#include <asm/cmpxchg.h>
|
||||
|
||||
#include "speakup.h"
|
||||
|
||||
@@ -121,20 +123,24 @@ int speakup_set_selection(struct tty_str
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/* TODO: move to some helper thread, probably. That'd fix having to check for
|
||||
- * in_atomic(). */
|
||||
-int speakup_paste_selection(struct tty_struct *tty)
|
||||
-{
|
||||
+struct speakup_paste_work {
|
||||
+ struct work_struct work;
|
||||
+ struct tty_struct *tty;
|
||||
+};
|
||||
+
|
||||
+static void __speakup_paste_selection(struct work_struct *work)
|
||||
+{
|
||||
+ struct speakup_paste_work *spw =
|
||||
+ container_of(work, struct speakup_paste_work, work);
|
||||
+ struct tty_struct *tty = xchg(&spw->tty, NULL);
|
||||
struct vc_data *vc = (struct vc_data *) tty->driver_data;
|
||||
int pasted = 0, count;
|
||||
DECLARE_WAITQUEUE(wait, current);
|
||||
+
|
||||
add_wait_queue(&vc->paste_wait, &wait);
|
||||
while (sel_buffer && sel_buffer_lth > pasted) {
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
if (test_bit(TTY_THROTTLED, &tty->flags)) {
|
||||
- if (in_atomic())
|
||||
- /* if we are in an interrupt handler, abort */
|
||||
- break;
|
||||
schedule();
|
||||
continue;
|
||||
}
|
||||
@@ -146,6 +152,26 @@ int speakup_paste_selection(struct tty_s
|
||||
}
|
||||
remove_wait_queue(&vc->paste_wait, &wait);
|
||||
current->state = TASK_RUNNING;
|
||||
+ tty_kref_put(tty);
|
||||
+}
|
||||
+
|
||||
+static struct speakup_paste_work speakup_paste_work = {
|
||||
+ .work = __WORK_INITIALIZER(speakup_paste_work.work,
|
||||
+ __speakup_paste_selection)
|
||||
+};
|
||||
+
|
||||
+int speakup_paste_selection(struct tty_struct *tty)
|
||||
+{
|
||||
+ if (cmpxchg(&speakup_paste_work.tty, NULL, tty) != NULL)
|
||||
+ return -EBUSY;
|
||||
+
|
||||
+ tty_kref_get(tty);
|
||||
+ schedule_work_on(WORK_CPU_UNBOUND, &speakup_paste_work.work);
|
||||
return 0;
|
||||
}
|
||||
|
||||
+void speakup_cancel_paste(void)
|
||||
+{
|
||||
+ cancel_work_sync(&speakup_paste_work.work);
|
||||
+ tty_kref_put(speakup_paste_work.tty);
|
||||
+}
|
||||
--- a/drivers/staging/speakup/speakup.h
|
||||
+++ b/drivers/staging/speakup/speakup.h
|
||||
@@ -77,6 +77,7 @@ extern void synth_buffer_clear(void);
|
||||
extern void speakup_clear_selection(void);
|
||||
extern int speakup_set_selection(struct tty_struct *tty);
|
||||
extern int speakup_paste_selection(struct tty_struct *tty);
|
||||
+extern void speakup_cancel_paste(void);
|
||||
extern void speakup_register_devsynth(void);
|
||||
extern void speakup_unregister_devsynth(void);
|
||||
extern void synth_write(const char *buf, size_t count);
|
|
@ -1,89 +0,0 @@
|
|||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Mon, 19 May 2014 01:03:06 +0100
|
||||
Subject: Staging: speakup: Update __speakup_paste_selection() tty (ab)usage to
|
||||
match vt
|
||||
Origin: https://git.kernel.org/cgit/linux/kernel/git/gregkh/staging.git/commit?id=28a821c306889b9f2c3fff49abedc9b2c743eb73
|
||||
Bug-Debian: https://bugs.debian.org/735202
|
||||
Bug-Debian: https://bugs.debian.org/744015
|
||||
|
||||
This function is largely a duplicate of paste_selection() in
|
||||
drivers/tty/vt/selection.c, but with its own selection state. The
|
||||
speakup selection mechanism should really be merged with vt.
|
||||
|
||||
For now, apply the changes from 'TTY: vt, fix paste_selection ldisc
|
||||
handling', 'tty: Make ldisc input flow control concurrency-friendly',
|
||||
and 'tty: Fix unsafe vt paste_selection()'.
|
||||
|
||||
References: https://bugs.debian.org/735202
|
||||
References: https://bugs.debian.org/744015
|
||||
Reported-by: Paul Gevers <elbrus@debian.org>
|
||||
Reported-and-tested-by: Jarek Czekalski <jarekczek@poczta.onet.pl>
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
Cc: <stable@vger.kernel.org> # v3.8 but needs backporting for < 3.12
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/speakup/selection.c | 14 +++++++++++---
|
||||
drivers/tty/tty_buffer.c | 2 ++
|
||||
2 files changed, 13 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/staging/speakup/selection.c
|
||||
+++ b/drivers/staging/speakup/selection.c
|
||||
@@ -5,6 +5,8 @@
|
||||
#include <linux/device.h> /* for dev_warn */
|
||||
#include <linux/selection.h>
|
||||
#include <linux/workqueue.h>
|
||||
+#include <linux/tty.h>
|
||||
+#include <linux/tty_flip.h>
|
||||
#include <asm/cmpxchg.h>
|
||||
|
||||
#include "speakup.h"
|
||||
@@ -135,8 +137,12 @@ static void __speakup_paste_selection(st
|
||||
struct tty_struct *tty = xchg(&spw->tty, NULL);
|
||||
struct vc_data *vc = (struct vc_data *) tty->driver_data;
|
||||
int pasted = 0, count;
|
||||
+ struct tty_ldisc *ld;
|
||||
DECLARE_WAITQUEUE(wait, current);
|
||||
|
||||
+ ld = tty_ldisc_ref_wait(tty);
|
||||
+ tty_buffer_lock_exclusive(&vc->port);
|
||||
+
|
||||
add_wait_queue(&vc->paste_wait, &wait);
|
||||
while (sel_buffer && sel_buffer_lth > pasted) {
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
@@ -145,13 +151,15 @@ static void __speakup_paste_selection(st
|
||||
continue;
|
||||
}
|
||||
count = sel_buffer_lth - pasted;
|
||||
- count = min_t(int, count, tty->receive_room);
|
||||
- tty->ldisc->ops->receive_buf(tty, sel_buffer + pasted,
|
||||
- NULL, count);
|
||||
+ count = tty_ldisc_receive_buf(ld, sel_buffer + pasted, NULL,
|
||||
+ count);
|
||||
pasted += count;
|
||||
}
|
||||
remove_wait_queue(&vc->paste_wait, &wait);
|
||||
current->state = TASK_RUNNING;
|
||||
+
|
||||
+ tty_buffer_unlock_exclusive(&vc->port);
|
||||
+ tty_ldisc_deref(ld);
|
||||
tty_kref_put(tty);
|
||||
}
|
||||
|
||||
--- a/drivers/tty/tty_buffer.c
|
||||
+++ b/drivers/tty/tty_buffer.c
|
||||
@@ -60,6 +60,7 @@ void tty_buffer_lock_exclusive(struct tt
|
||||
atomic_inc(&buf->priority);
|
||||
mutex_lock(&buf->lock);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(tty_buffer_lock_exclusive);
|
||||
|
||||
void tty_buffer_unlock_exclusive(struct tty_port *port)
|
||||
{
|
||||
@@ -73,6 +74,7 @@ void tty_buffer_unlock_exclusive(struct
|
||||
if (restart)
|
||||
queue_work(system_unbound_wq, &buf->work);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(tty_buffer_unlock_exclusive);
|
||||
|
||||
/**
|
||||
* tty_buffer_space_avail - return unused buffer space
|
|
@ -66,8 +66,6 @@ bugfix/all/misc-bmp085-Enable-building-as-a-module.patch
|
|||
bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch
|
||||
bugfix/all/disable-some-marvell-phys.patch
|
||||
bugfix/all/bluetooth-allocate-static-minor-for-vhci.patch
|
||||
bugfix/all/0001-Staging-speakup-Move-pasting-into-a-work-item.patch
|
||||
bugfix/all/0002-Staging-speakup-Update-__speakup_paste_selection-tty.patch
|
||||
|
||||
# Miscellaneous features
|
||||
features/all/x86-memtest-WARN-if-bad-RAM-found.patch
|
||||
|
|
Loading…
Reference in New Issue