From f083fbcfe6f4fddf54fbb8b135568d50890a38b3 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Fri, 13 Jun 2014 02:15:33 +0000 Subject: [PATCH] Update to 3.14.7 Drop the speakup patches which were included in this. svn path=/dists/sid/linux/; revision=21432 --- debian/changelog | 49 ++++++- ...peakup-Move-pasting-into-a-work-item.patch | 121 ------------------ ...Update-__speakup_paste_selection-tty.patch | 89 ------------- debian/patches/series | 2 - 4 files changed, 48 insertions(+), 213 deletions(-) delete mode 100644 debian/patches/bugfix/all/0001-Staging-speakup-Move-pasting-into-a-work-item.patch delete mode 100644 debian/patches/bugfix/all/0002-Staging-speakup-Update-__speakup_paste_selection-tty.patch diff --git a/debian/changelog b/debian/changelog index 359024c7e..011909992 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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) diff --git a/debian/patches/bugfix/all/0001-Staging-speakup-Move-pasting-into-a-work-item.patch b/debian/patches/bugfix/all/0001-Staging-speakup-Move-pasting-into-a-work-item.patch deleted file mode 100644 index 73f4d4ca1..000000000 --- a/debian/patches/bugfix/all/0001-Staging-speakup-Move-pasting-into-a-work-item.patch +++ /dev/null @@ -1,121 +0,0 @@ -From: Ben Hutchings -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 -Reported-and-tested-by: Jarek Czekalski -Signed-off-by: Ben Hutchings -Cc: stable@vger.kernel.org -Signed-off-by: Greg Kroah-Hartman ---- - 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 - #include /* for dev_warn */ - #include -+#include -+#include - - #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); diff --git a/debian/patches/bugfix/all/0002-Staging-speakup-Update-__speakup_paste_selection-tty.patch b/debian/patches/bugfix/all/0002-Staging-speakup-Update-__speakup_paste_selection-tty.patch deleted file mode 100644 index 64f661f99..000000000 --- a/debian/patches/bugfix/all/0002-Staging-speakup-Update-__speakup_paste_selection-tty.patch +++ /dev/null @@ -1,89 +0,0 @@ -From: Ben Hutchings -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 -Reported-and-tested-by: Jarek Czekalski -Signed-off-by: Ben Hutchings -Cc: # v3.8 but needs backporting for < 3.12 -Signed-off-by: Greg Kroah-Hartman ---- - 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 /* for dev_warn */ - #include - #include -+#include -+#include - #include - - #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 diff --git a/debian/patches/series b/debian/patches/series index 0c7a0e9dd..d027f081a 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -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