|
@@ -44,7 +44,6 @@
|
|
|
#define RAW3215_NR_CCWS 3
|
|
|
#define RAW3215_TIMEOUT HZ/10 /* time for delayed output */
|
|
|
|
|
|
-#define RAW3215_FIXED 1 /* 3215 console device is not be freed */
|
|
|
#define RAW3215_WORKING 4 /* set if a request is being worked on */
|
|
|
#define RAW3215_THROTTLED 8 /* set if reading is disabled */
|
|
|
#define RAW3215_STOPPED 16 /* set if writing is disabled */
|
|
@@ -339,8 +338,10 @@ static void raw3215_wakeup(unsigned long data)
|
|
|
struct tty_struct *tty;
|
|
|
|
|
|
tty = tty_port_tty_get(&raw->port);
|
|
|
- tty_wakeup(tty);
|
|
|
- tty_kref_put(tty);
|
|
|
+ if (tty) {
|
|
|
+ tty_wakeup(tty);
|
|
|
+ tty_kref_put(tty);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -629,8 +630,7 @@ static void raw3215_shutdown(struct raw3215_info *raw)
|
|
|
DECLARE_WAITQUEUE(wait, current);
|
|
|
unsigned long flags;
|
|
|
|
|
|
- if (!(raw->port.flags & ASYNC_INITIALIZED) ||
|
|
|
- (raw->flags & RAW3215_FIXED))
|
|
|
+ if (!(raw->port.flags & ASYNC_INITIALIZED))
|
|
|
return;
|
|
|
/* Wait for outstanding requests, then free irq */
|
|
|
spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags);
|
|
@@ -926,8 +926,6 @@ static int __init con3215_init(void)
|
|
|
dev_set_drvdata(&cdev->dev, raw);
|
|
|
cdev->handler = raw3215_irq;
|
|
|
|
|
|
- raw->flags |= RAW3215_FIXED;
|
|
|
-
|
|
|
/* Request the console irq */
|
|
|
if (raw3215_startup(raw) != 0) {
|
|
|
raw3215_free_info(raw);
|