diff options
Diffstat (limited to 'queue/Staging-comedi-fix-signal-handling-in-read-and-write.patch')
-rw-r--r-- | queue/Staging-comedi-fix-signal-handling-in-read-and-write.patch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/queue/Staging-comedi-fix-signal-handling-in-read-and-write.patch b/queue/Staging-comedi-fix-signal-handling-in-read-and-write.patch new file mode 100644 index 0000000..f9ac7e0 --- /dev/null +++ b/queue/Staging-comedi-fix-signal-handling-in-read-and-write.patch @@ -0,0 +1,51 @@ +From 15ae44b83e09f5200d30d3a7a3cb595824438fb5 Mon Sep 17 00:00:00 2001 +From: Federico Vaga <federico.vaga@gmail.com> +Date: Sat, 29 Oct 2011 09:47:39 +0200 +Subject: [PATCH 13/24] Staging: comedi: fix signal handling in read and write + +commit 6a9ce6b654e491981f6ef7e214cbd4f63e033848 upstream. + +After sleeping on a wait queue, signal_pending(current) should be +checked (not before sleeping). + +Acked-by: Alessandro Rubini <rubini@gnudd.com> +Signed-off-by: Federico Vaga <federico.vaga@gmail.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> +--- + drivers/staging/comedi/comedi_fops.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c +index 48ac52b..f6a0e76 100644 +--- a/drivers/staging/comedi/comedi_fops.c ++++ b/drivers/staging/comedi/comedi_fops.c +@@ -1594,11 +1594,11 @@ static ssize_t comedi_write(struct file *file, const char *buf, size_t nbytes, + retval = -EAGAIN; + break; + } ++ schedule(); + if (signal_pending(current)) { + retval = -ERESTARTSYS; + break; + } +- schedule(); + if (!s->busy) + break; + if (s->busy != file) { +@@ -1701,11 +1701,11 @@ static ssize_t comedi_read(struct file *file, char *buf, size_t nbytes, + retval = -EAGAIN; + break; + } ++ schedule(); + if (signal_pending(current)) { + retval = -ERESTARTSYS; + break; + } +- schedule(); + if (!s->busy) { + retval = 0; + break; +-- +1.7.12.1 + |