diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/char/hvc_console.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/char/hvc_console.c b/drivers/char/hvc_console.c index fd64137b1ab9..f2e4caf70599 100644 --- a/drivers/char/hvc_console.c +++ b/drivers/char/hvc_console.c | |||
@@ -367,13 +367,13 @@ static void hvc_close(struct tty_struct *tty, struct file * filp) | |||
367 | spin_lock_irqsave(&hp->lock, flags); | 367 | spin_lock_irqsave(&hp->lock, flags); |
368 | 368 | ||
369 | if (--hp->count == 0) { | 369 | if (--hp->count == 0) { |
370 | if (hp->ops->notifier_del) | ||
371 | hp->ops->notifier_del(hp, hp->data); | ||
372 | |||
373 | /* We are done with the tty pointer now. */ | 370 | /* We are done with the tty pointer now. */ |
374 | hp->tty = NULL; | 371 | hp->tty = NULL; |
375 | spin_unlock_irqrestore(&hp->lock, flags); | 372 | spin_unlock_irqrestore(&hp->lock, flags); |
376 | 373 | ||
374 | if (hp->ops->notifier_del) | ||
375 | hp->ops->notifier_del(hp, hp->data); | ||
376 | |||
377 | /* | 377 | /* |
378 | * Chain calls chars_in_buffer() and returns immediately if | 378 | * Chain calls chars_in_buffer() and returns immediately if |
379 | * there is no buffered data otherwise sleeps on a wait queue | 379 | * there is no buffered data otherwise sleeps on a wait queue |
@@ -416,11 +416,11 @@ static void hvc_hangup(struct tty_struct *tty) | |||
416 | hp->n_outbuf = 0; | 416 | hp->n_outbuf = 0; |
417 | hp->tty = NULL; | 417 | hp->tty = NULL; |
418 | 418 | ||
419 | spin_unlock_irqrestore(&hp->lock, flags); | ||
420 | |||
419 | if (hp->ops->notifier_del) | 421 | if (hp->ops->notifier_del) |
420 | hp->ops->notifier_del(hp, hp->data); | 422 | hp->ops->notifier_del(hp, hp->data); |
421 | 423 | ||
422 | spin_unlock_irqrestore(&hp->lock, flags); | ||
423 | |||
424 | while(temp_open_count) { | 424 | while(temp_open_count) { |
425 | --temp_open_count; | 425 | --temp_open_count; |
426 | kref_put(&hp->kref, destroy_hvc_struct); | 426 | kref_put(&hp->kref, destroy_hvc_struct); |