diff options
Diffstat (limited to 'drivers/net/hamradio/6pack.c')
| -rw-r--r-- | drivers/net/hamradio/6pack.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/hamradio/6pack.c b/drivers/net/hamradio/6pack.c index 155160052c8b..913a56406594 100644 --- a/drivers/net/hamradio/6pack.c +++ b/drivers/net/hamradio/6pack.c | |||
| @@ -398,13 +398,14 @@ static DEFINE_RWLOCK(disc_data_lock); | |||
| 398 | 398 | ||
| 399 | static struct sixpack *sp_get(struct tty_struct *tty) | 399 | static struct sixpack *sp_get(struct tty_struct *tty) |
| 400 | { | 400 | { |
| 401 | unsigned long flags; | ||
| 401 | struct sixpack *sp; | 402 | struct sixpack *sp; |
| 402 | 403 | ||
| 403 | read_lock(&disc_data_lock); | 404 | read_lock_irqsave(&disc_data_lock, flags); |
| 404 | sp = tty->disc_data; | 405 | sp = tty->disc_data; |
| 405 | if (sp) | 406 | if (sp) |
| 406 | atomic_inc(&sp->refcnt); | 407 | atomic_inc(&sp->refcnt); |
| 407 | read_unlock(&disc_data_lock); | 408 | read_unlock_irqrestore(&disc_data_lock, flags); |
| 408 | 409 | ||
| 409 | return sp; | 410 | return sp; |
| 410 | } | 411 | } |
| @@ -688,12 +689,13 @@ out: | |||
| 688 | */ | 689 | */ |
| 689 | static void sixpack_close(struct tty_struct *tty) | 690 | static void sixpack_close(struct tty_struct *tty) |
| 690 | { | 691 | { |
| 692 | unsigned long flags; | ||
| 691 | struct sixpack *sp; | 693 | struct sixpack *sp; |
| 692 | 694 | ||
| 693 | write_lock(&disc_data_lock); | 695 | write_lock_irqsave(&disc_data_lock, flags); |
| 694 | sp = tty->disc_data; | 696 | sp = tty->disc_data; |
| 695 | tty->disc_data = NULL; | 697 | tty->disc_data = NULL; |
| 696 | write_unlock(&disc_data_lock); | 698 | write_unlock_irqrestore(&disc_data_lock, flags); |
| 697 | if (!sp) | 699 | if (!sp) |
| 698 | return; | 700 | return; |
| 699 | 701 | ||
