3.4.10 N_GSM tty_io WARNING and lockup

From: Krzysztof HaÅasa
Date: Wed Sep 05 2012 - 07:06:47 EST


Hi,

I'm trying to use GSM tty line discipline. Basically

echo AT+CMUX=0 > /dev/ttyS0

set termios (speed etc.)
int ldisc = N_GSM0710;
ioctl(fd, TIOCSETD, &ldisc);

...

The ioctl first fails with EIO (probably due to inactive DCD line) in
tty_set_ldisc():

if (test_bit(TTY_HUPPED, &tty->flags)) {
/* We were raced by the hangup method. It will have stomped
the ldisc data and closed the ldisc down */
clear_bit(TTY_LDISC_CHANGING, &tty->flags);
mutex_unlock(&tty->ldisc_mutex);
tty_ldisc_put(new_ldisc);
tty_unlock();
return -EIO; <<<<<< HERE
}


Now trying to run the program again:

------------[ cut here ]------------
WARNING: at /home/khalasa/src/linux-3.4/drivers/tty/tty_io.c:1368 tty_open+0x2e8/0x55c()
Modules linked in: m25p80 ag71xx
Call Trace:
[<8030a02c>] dump_stack+0x8/0x34
[<8007a35c>] warn_slowpath_common+0x78/0xa4
[<8007a3a0>] warn_slowpath_null+0x18/0x24
[<80193cac>] tty_open+0x2e8/0x55c
[<800f1500>] chrdev_open+0x120/0x164
[<800eb320>] __dentry_open.isra.12+0x1bc/0x318
[<800fae54>] do_last.isra.32+0x774/0x78c
[<800fb094>] path_openat+0xcc/0x3b4
[<800fb498>] do_filp_open+0x3c/0xa4
[<800ec3dc>] do_sys_open+0x13c/0x1ec
[<80068dc4>] stack_done+0x20/0x40

---[ end trace 5958cc366bfb54c4 ]---

then it locks up (task "D" state, though interruptible).

A known problem probably?
Any ideas? (I know about CLOCAL).
--
Krzysztof Halasa

Research Institute for Automation and Measurements PIAP
Al. Jerozolimskie 202, 02-486 Warsaw, Poland
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/