mirror of
https://github.com/torvalds/linux.git
synced 2024-12-20 10:01:56 +00:00
d750013580
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> |
||
---|---|---|
.. | ||
buffers.c | ||
DefaultKeyAssignments | ||
devsynth.c | ||
fakekey.c | ||
i18n.c | ||
i18n.h | ||
Kconfig | ||
keyhelp.c | ||
kobjects.c | ||
main.c | ||
Makefile | ||
selection.c | ||
serialio.c | ||
serialio.h | ||
speakup_acnt.h | ||
speakup_acntpc.c | ||
speakup_acntsa.c | ||
speakup_apollo.c | ||
speakup_audptr.c | ||
speakup_bns.c | ||
speakup_decext.c | ||
speakup_decpc.c | ||
speakup_dectlk.c | ||
speakup_dtlk.c | ||
speakup_dtlk.h | ||
speakup_dummy.c | ||
speakup_keypc.c | ||
speakup_ltlk.c | ||
speakup_soft.c | ||
speakup_spkout.c | ||
speakup_txprt.c | ||
speakup.h | ||
speakupmap.h | ||
speakupmap.map | ||
spk_priv_keyinfo.h | ||
spk_priv.h | ||
spk_types.h | ||
spkguide.txt | ||
synth.c | ||
thread.c | ||
TODO | ||
varhandlers.c |