aboutsummaryrefslogtreecommitdiff
path: root/drivers/staging/speakup/speakup.h
diff options
context:
space:
mode:
authorBen Hutchings <ben@decadent.org.uk>2014-05-19 00:56:22 +0100
committerShow Liu <show.liu@linaro.org>2014-06-18 12:05:26 +0800
commit2e5d43de98c5a3d92aa038ae7ac23ab50d0de244 (patch)
tree92d6b16aafdf65f08d1cc4ca64bf60b2d49d083b /drivers/staging/speakup/speakup.h
parent4d471eeec0beb010e2278c70bcfed91818c5e055 (diff)
Staging: speakup: Move pasting into a work item
commit d7500135802ca55b3f4e01a16544e8b34082f8c3 upstream. 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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/speakup/speakup.h')
-rw-r--r--drivers/staging/speakup/speakup.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/staging/speakup/speakup.h b/drivers/staging/speakup/speakup.h
index 0126f714821..74fe72429b2 100644
--- 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);