linux/drivers/staging/speakup
Ben Hutchings d750013580 Staging: speakup: Move pasting into a work item
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>
2014-05-24 02:25:10 +09:00
..
buffers.c
DefaultKeyAssignments
devsynth.c staging: speakup: fix warnings by adding __user annotations 2013-05-22 15:35:52 -07:00
fakekey.c
i18n.c staging: speakup: i18n: remove custom locking macros 2013-05-16 16:11:08 -07:00
i18n.h
Kconfig Staging: speakup: Add dependencies for ISA card drivers 2013-09-17 07:47:45 -07:00
keyhelp.c
kobjects.c staging: fix up speakup kobject mode 2014-04-01 14:20:26 +10:30
main.c Staging: speakup: Move pasting into a work item 2014-05-24 02:25:10 +09:00
Makefile
selection.c Staging: speakup: Move pasting into a work item 2014-05-24 02:25:10 +09:00
serialio.c staging: speakup: Prefer pr_err instead of printk(KERN_ERR) 2014-03-18 11:13:37 -07:00
serialio.h drivers: staging: speakup: serialio: only use platform specific SERIAL_PORT_DFNS. 2013-11-11 16:22:17 -08:00
speakup_acnt.h
speakup_acntpc.c staging: fix up speakup kobject mode 2014-04-01 14:20:26 +10:30
speakup_acntsa.c speakup: fix incorrect perms on speakup_acntsa.c 2014-05-24 01:31:35 +09:00
speakup_apollo.c staging: fix up speakup kobject mode 2014-04-01 14:20:26 +10:30
speakup_audptr.c staging: fix up speakup kobject mode 2014-04-01 14:20:26 +10:30
speakup_bns.c staging: fix up speakup kobject mode 2014-04-01 14:20:26 +10:30
speakup_decext.c staging: fix up speakup kobject mode 2014-04-01 14:20:26 +10:30
speakup_decpc.c staging: fix up speakup kobject mode 2014-04-01 14:20:26 +10:30
speakup_dectlk.c Nothing major: the stricter permissions checking for sysfs broke 2014-04-06 09:38:07 -07:00
speakup_dtlk.c staging: fix up speakup kobject mode 2014-04-01 14:20:26 +10:30
speakup_dtlk.h
speakup_dummy.c staging: fix up speakup kobject mode 2014-04-01 14:20:26 +10:30
speakup_keypc.c staging: fix up speakup kobject mode 2014-04-01 14:20:26 +10:30
speakup_ltlk.c staging: fix up speakup kobject mode 2014-04-01 14:20:26 +10:30
speakup_soft.c staging: fix up speakup kobject mode 2014-04-01 14:20:26 +10:30
speakup_spkout.c staging: fix up speakup kobject mode 2014-04-01 14:20:26 +10:30
speakup_txprt.c staging: fix up speakup kobject mode 2014-04-01 14:20:26 +10:30
speakup.h Staging: speakup: Move pasting into a work item 2014-05-24 02:25:10 +09:00
speakupmap.h
speakupmap.map
spk_priv_keyinfo.h
spk_priv.h staging: speakup: remove custom locking macro definitions 2013-05-16 16:14:50 -07:00
spk_types.h
spkguide.txt
synth.c Staging: speakup: Fix return value in synth.c 2013-05-16 16:17:30 -07:00
thread.c staging: speakup: thread: remove custom locking macros 2013-05-16 16:14:49 -07:00
TODO
varhandlers.c staging: speakup: remove unnecessary space before semicolon 2013-10-14 09:15:27 -07:00