|
@@ -367,13 +367,13 @@ static void hvc_close(struct tty_struct *tty, struct file * filp)
|
|
|
spin_lock_irqsave(&hp->lock, flags);
|
|
|
|
|
|
if (--hp->count == 0) {
|
|
|
- if (hp->ops->notifier_del)
|
|
|
- hp->ops->notifier_del(hp, hp->data);
|
|
|
-
|
|
|
/* We are done with the tty pointer now. */
|
|
|
hp->tty = NULL;
|
|
|
spin_unlock_irqrestore(&hp->lock, flags);
|
|
|
|
|
|
+ if (hp->ops->notifier_del)
|
|
|
+ hp->ops->notifier_del(hp, hp->data);
|
|
|
+
|
|
|
/*
|
|
|
* Chain calls chars_in_buffer() and returns immediately if
|
|
|
* there is no buffered data otherwise sleeps on a wait queue
|
|
@@ -416,11 +416,11 @@ static void hvc_hangup(struct tty_struct *tty)
|
|
|
hp->n_outbuf = 0;
|
|
|
hp->tty = NULL;
|
|
|
|
|
|
+ spin_unlock_irqrestore(&hp->lock, flags);
|
|
|
+
|
|
|
if (hp->ops->notifier_del)
|
|
|
hp->ops->notifier_del(hp, hp->data);
|
|
|
|
|
|
- spin_unlock_irqrestore(&hp->lock, flags);
|
|
|
-
|
|
|
while(temp_open_count) {
|
|
|
--temp_open_count;
|
|
|
kref_put(&hp->kref, destroy_hvc_struct);
|