summaryrefslogtreecommitdiffstats
path: root/arch/um/drivers/chan.h
diff options
context:
space:
mode:
authorAl Viro2011-09-10 14:17:04 +0200
committerRichard Weinberger2012-03-25 00:29:54 +0100
commit0fcd719934cd3521ae4a977f454e75e2be60b7ff (patch)
treef6679910030fa0361ab52603987b72bc5e7ef314 /arch/um/drivers/chan.h
parentum: line->have_irq is never checked... (diff)
downloadkernel-qcow2-linux-0fcd719934cd3521ae4a977f454e75e2be60b7ff.tar.gz
kernel-qcow2-linux-0fcd719934cd3521ae4a977f454e75e2be60b7ff.tar.xz
kernel-qcow2-linux-0fcd719934cd3521ae4a977f454e75e2be60b7ff.zip
um: race fix: initialize delayed_work *before* registering IRQ
... since chan_interrupt() might schedule it if there's too much incoming data. Kill task argument of chan_interrupt(), while we are at it - it's always &line->task. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/um/drivers/chan.h')
-rw-r--r--arch/um/drivers/chan.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/um/drivers/chan.h b/arch/um/drivers/chan.h
index 5078ec701c61..d3974a91aa48 100644
--- a/arch/um/drivers/chan.h
+++ b/arch/um/drivers/chan.h
@@ -27,7 +27,7 @@ struct chan {
void *data;
};
-extern void chan_interrupt(struct line *line, struct delayed_work *task,
+extern void chan_interrupt(struct line *line,
struct tty_struct *tty, int irq);
extern int parse_chan_pair(char *str, struct line *line, int device,
const struct chan_opts *opts, char **error_out);