CAPI: Drop atomic ttyopencount
Not needed, tty->count keeps track of this information. At this chance, drop traces of ancient attempts to debug this logic via _DEBUG_REFCOUNT. Signed-off-by: Jan Kiszka <jan.kiszka@web.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3d5d30fe7a
commit
a84fdf41b2
@ -45,7 +45,6 @@ MODULE_DESCRIPTION("CAPI4Linux: Userspace /dev/capi20 interface");
|
|||||||
MODULE_AUTHOR("Carsten Paeth");
|
MODULE_AUTHOR("Carsten Paeth");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
|
||||||
#undef _DEBUG_REFCOUNT /* alloc/free and open/close debug */
|
|
||||||
#undef _DEBUG_TTYFUNCS /* call to tty_driver */
|
#undef _DEBUG_TTYFUNCS /* call to tty_driver */
|
||||||
#undef _DEBUG_DATAFLOW /* data flow */
|
#undef _DEBUG_DATAFLOW /* data flow */
|
||||||
|
|
||||||
@ -97,7 +96,6 @@ struct capiminor {
|
|||||||
int ttyinstop;
|
int ttyinstop;
|
||||||
int ttyoutstop;
|
int ttyoutstop;
|
||||||
struct sk_buff *ttyskb;
|
struct sk_buff *ttyskb;
|
||||||
atomic_t ttyopencount;
|
|
||||||
|
|
||||||
struct sk_buff_head inqueue;
|
struct sk_buff_head inqueue;
|
||||||
int inbytes;
|
int inbytes;
|
||||||
@ -230,7 +228,6 @@ static struct capiminor *capiminor_alloc(struct capi20_appl *ap, u32 ncci)
|
|||||||
mp->ap = ap;
|
mp->ap = ap;
|
||||||
mp->ncci = ncci;
|
mp->ncci = ncci;
|
||||||
mp->msgid = 0;
|
mp->msgid = 0;
|
||||||
atomic_set(&mp->ttyopencount,0);
|
|
||||||
INIT_LIST_HEAD(&mp->ackqueue);
|
INIT_LIST_HEAD(&mp->ackqueue);
|
||||||
spin_lock_init(&mp->ackqlock);
|
spin_lock_init(&mp->ackqlock);
|
||||||
|
|
||||||
@ -350,8 +347,17 @@ static void capincci_free_minor(struct capincci *np)
|
|||||||
static inline unsigned int capincci_minor_opencount(struct capincci *np)
|
static inline unsigned int capincci_minor_opencount(struct capincci *np)
|
||||||
{
|
{
|
||||||
struct capiminor *mp = np->minorp;
|
struct capiminor *mp = np->minorp;
|
||||||
|
unsigned int count = 0;
|
||||||
|
struct tty_struct *tty;
|
||||||
|
|
||||||
return mp ? atomic_read(&mp->ttyopencount) : 0;
|
if (mp) {
|
||||||
|
tty = tty_port_tty_get(&mp->port);
|
||||||
|
if (tty) {
|
||||||
|
count = tty->count;
|
||||||
|
tty_kref_put(tty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* !CONFIG_ISDN_CAPI_MIDDLEWARE */
|
#else /* !CONFIG_ISDN_CAPI_MIDDLEWARE */
|
||||||
@ -1054,10 +1060,6 @@ static int capinc_tty_open(struct tty_struct *tty, struct file *filp)
|
|||||||
return err;
|
return err;
|
||||||
|
|
||||||
spin_lock_irqsave(&workaround_lock, flags);
|
spin_lock_irqsave(&workaround_lock, flags);
|
||||||
atomic_inc(&mp->ttyopencount);
|
|
||||||
#ifdef _DEBUG_REFCOUNT
|
|
||||||
printk(KERN_DEBUG "capinc_tty_open ocount=%d\n", atomic_read(&mp->ttyopencount));
|
|
||||||
#endif
|
|
||||||
handle_minor_recv(mp);
|
handle_minor_recv(mp);
|
||||||
spin_unlock_irqrestore(&workaround_lock, flags);
|
spin_unlock_irqrestore(&workaround_lock, flags);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1067,18 +1069,6 @@ static void capinc_tty_close(struct tty_struct *tty, struct file *filp)
|
|||||||
{
|
{
|
||||||
struct capiminor *mp = tty->driver_data;
|
struct capiminor *mp = tty->driver_data;
|
||||||
|
|
||||||
if (atomic_dec_and_test(&mp->ttyopencount)) {
|
|
||||||
#ifdef _DEBUG_REFCOUNT
|
|
||||||
printk(KERN_DEBUG "capinc_tty_close lastclose\n");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#ifdef _DEBUG_REFCOUNT
|
|
||||||
printk(KERN_DEBUG "capinc_tty_close ocount=%d\n", atomic_read(&mp->ttyopencount));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _DEBUG_REFCOUNT
|
|
||||||
printk(KERN_DEBUG "capinc_tty_close\n");
|
|
||||||
#endif
|
|
||||||
tty_port_close(&mp->port, tty, filp);
|
tty_port_close(&mp->port, tty, filp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user