Commit 86b26007a37d81e7aca242bb5b649473f8f81297 (tty-next) "TTY: con3215, use tty from tty_port" removed the tty struct from the raw struct, causing: CC drivers/s390/char/con3215.o drivers/s390/char/con3215.c: In function 'raw3215_wakeup': drivers/s390/char/con3215.c:339:16: error: 'struct raw3215_info' has no member named 'tty' make[2]: *** [drivers/s390/char/con3215.o] Error 1 We can't simply add a tty to the args of raw3215_wakeup since it is registered as a tasklet. The flow is: raw3215_irq --> tty_port_tty_get --> raw3215_next_io --> tasklet_schedule --> tty_kref_put so it seems we'll need to do a get/put in the raw3215_wakeup tasklet as well. Cc: Jiri Slaby <jslaby@xxxxxxx> Cc: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> Cc: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Cc: linux390@xxxxxxxxxx Cc: linux-s390@xxxxxxxxxxxxxxx Signed-off-by: Paul Gortmaker <paul.gortmaker@xxxxxxxxxxxxx> diff --git a/drivers/s390/char/con3215.c b/drivers/s390/char/con3215.c index e928e04..759c43c 100644 --- a/drivers/s390/char/con3215.c +++ b/drivers/s390/char/con3215.c @@ -336,7 +336,13 @@ static inline void raw3215_try_io(struct raw3215_info *raw) static void raw3215_wakeup(unsigned long data) { struct raw3215_info *raw = (struct raw3215_info *) data; - tty_wakeup(raw->tty); + struct tty_struct *tty = tty_port_tty_get(&raw->port); + + if (tty == NULL) + return; + + tty_wakeup(tty); + tty_kref_put(tty); } /* -- 1.7.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html