static struct asyncppp *ap_get(struct tty_struct *tty)
{
- unsigned long flags;
struct asyncppp *ap;
- read_lock_irqsave(&disc_data_lock, flags);
+ read_lock(&disc_data_lock);
ap = tty->disc_data;
if (ap != NULL)
atomic_inc(&ap->refcnt);
- read_unlock_irqrestore(&disc_data_lock, flags);
-
+ read_unlock(&disc_data_lock);
return ap;
}
static void
ppp_asynctty_close(struct tty_struct *tty)
{
- unsigned long flags;
struct asyncppp *ap;
- write_lock_irqsave(&disc_data_lock, flags);
+ write_lock_irq(&disc_data_lock);
ap = tty->disc_data;
tty->disc_data = NULL;
- write_unlock_irqrestore(&disc_data_lock, flags);
+ write_unlock_irq(&disc_data_lock);
if (!ap)
return;
if (!skb_queue_empty(&ap->rqueue))
tasklet_schedule(&ap->tsk);
ap_put(ap);
+ tty_unthrottle(tty);
}
static void