Problems in tty_ioctl?

T Taneli Vahakangas (vahakang@cs.Helsinki.FI)
Mon, 29 Dec 1997 20:04:09 +0200 (EET)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

---696221431-1409687437-883418649=:27753
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hello, Kernel Hackers!

I am using kernel version 2.1.76. Today, I tried a program called
9term (it's a terminal emulator for X) and wondered why did it exit
right after pressing a key. To my amusement, the program died because
of an oops (attached, but looks weird). The kernel stumbled in
tty_ioctl().

The following patch cures the problem, but probably not the cause:

[cut here]
--- /usr/src/linux/drivers/char/tty_io.c- Sat Dec 27 19:29:29 1997
+++ /usr/src/linux/drivers/char/tty_io.c Sat Dec 27 19:52:54 1997
@@ -1548,13 +1548,17 @@
switch(cmd) {
case TIOCSBRK:
case TIOCCBRK:
- return tty->driver.ioctl(tty, file, cmd, arg);
+ if (tty->driver.ioctl)
+ return tty->driver.ioctl(tty, file, cmd, arg);
+ return -ENOIOCTLCMD;

/* These two ioctl's always return success; even if */
/* the driver doesn't support them. */
case TCSBRK:
- case TCSBRKP:
- retval = tty->driver.ioctl(tty, file, cmd, arg);
+ case TCSBRKP:
+ retval = 0;
+ if (tty->driver.ioctl)
+ retval = tty->driver.ioctl(tty, file, cmd, arg);
if (retval == -ENOIOCTLCMD)
retval = 0;
return retval;
[cut here]

The oops was triggered because tty->driver.ioctl was a NULL pointer
(the ptys don't have driver.ioctl?). This makes me wonder what would
be the right fix? Should ptys have ioctl()? A simple one would do
pretty well:

pty_driver_ioctl(...)
{
return -ENOIOCTLCMD;
}

Or some such... But clearly the current behavior is broken, since an
usermode program reproducibly triggers an oops...

(BTW, what use is 9term? Couldn't think of any...)

Taneli <vahakang@cs.helsinki.fi>

---696221431-1409687437-883418649=:27753
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=oops
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.971229200409.27753B@reipoo.cs.Helsinki.FI>
Content-Description:

T29wczogMDAwMCANCkNQVTogICAgMCANCkVJUDogICAgMDAxMDpbPDAwMDAw
MDAwPl0gDQpFRkxBR1M6IDAwMDEwMjQ2IA0KZWF4OiAwMDAwMDAwMCAgIGVi
eDogYzJlYzUwMDAgICBlY3g6IGMzMGE1OGEwICAgZWR4OiBjMDE3M2Y4NCAN
CmVzaTogMDAwMDAwMDEgICBlZGk6IGMyZWMxMDAwICAgZWJwOiAwMDAwNTQw
OSAgIGVzcDogYzI0MGRmNzggDQpkczogMDAxOCAgIGVzOiAwMDE4ICAgc3M6
IDAwMTggDQpQcm9jZXNzIDl0ZXJtIChwaWQ6IDE1NDQsIHByb2Nlc3MgbnI6
IDQyLCBzdGFja3BhZ2U9YzI0MGQwMDApIA0KU3RhY2s6IGMwMTc0MDZkIGMy
ZWM1MDAwIGMzMGE1OGEwIDAwMDA1NDA5IDAwMDAwMDAxIDAwMDA1NDA5IGMz
MGE1OGEwIDAwMDAwMDAxICANCiAgICAgICAwMDAwMDAwNCBjMDEyYzMxMiBj
MmRjOGI3MCBjMzBhNThhMCAwMDAwNTQwOSAwMDAwMDAwMSBjMjQwYzAwMCBi
ZmZmZmMwYyAgDQogICAgICAgYmZmZmZkYTggYmZmZmZiZjQgYzAxMDk5NTYg
MDAwMDAwMDQgMDAwMDU0MDkgMDAwMDAwMDEgYmZmZmZjMGMgYmZmZmZkYTgg
IA0KQ2FsbCBUcmFjZTogWzxjMDE3NDA2ZD5dIFs8YzAxMmMzMTI+XSBbPGMw
MTA5OTU2Pl0gIA0KQ29kZTogPDE+VW5hYmxlIHRvIGhhbmRsZSBrZXJuZWwg
TlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGF0IHZpcnR1YWwgYWRkcmVzcyAw
MDAwMDAwMCANCk9vcHM6IDAwMDAgDQpDUFU6ICAgIDAgDQpFSVA6ICAgIDAw
MTA6WzxjMDEwOWRjMj5dIA0KRUZMQUdTOiAwMDAxMDA4NiANCmVheDogMDAw
MDAwMTAgICBlYng6IDAwMDAwMDJiICAgZWN4OiAwMDAwMDAwMCAgIGVkeDog
MDAwMDAwMTAgDQplc2k6IDAwMDAwMDAwICAgZWRpOiBjMjQwZTAwMCAgIGVi
cDogYzI0MGRmNDQgICBlc3A6IGMyNDBkZWQwIA0KZHM6IDAwMTggICBlczog
MDAxOCAgIHNzOiAwMDE4IA0KUHJvY2VzcyA5dGVybSAocGlkOiAxNTQ0LCBw
cm9jZXNzIG5yOiA0Miwgc3RhY2twYWdlPWMyNDBkMDAwKSANClN0YWNrOiAw
MDAwMDAyYiBjMjQwZGY0NCAwMDAwMDAwMCAwMDAwMDAwMCBjMzU3YjU0MCBj
NDgwMDAwMCBjNTAwMDAwMCBjNDgwMDAwMCAgDQogICAgICAgYzAxYjAwMTgg
YzAxMDllM2MgYzI0MGRmNDQgYzAxODdjM2YgYzAxODg5MzcgMDAwMDAwMDAg
MDAwMDAwMDAgYzAxMGU2OTYgIA0KICAgICAgIGMwMTg4OTM3IGMyNDBkZjQ0
IDAwMDAwMDAwIGMyNDBjMDAwIDAwMDAwMDAxIGMyZWMxMDAwIDAwMDA1NDA5
IDA4MDQ4MDAwICANCkNhbGwgVHJhY2U6IFs8YzQ4MDAwMDA+XSBbPGM1MDAw
MDAwPl0gWzxjNDgwMDAwMD5dIFs8YzAxMDllM2M+XSBbPGMwMTg3YzNmPl0g
WzxjMDE4ODkzNz5dIFs8YzAxMGU2OTY+XSAgDQogICAgICAgWzxjMDE4ODkz
Nz5dIFs8YzAxMDlhOTI+XSBbPGMwMTczZjg0Pl0gWzxjMDE3NDA2ZD5dIFs8
YzAxMmMzMTI+XSBbPGMwMTA5OTU2Pl0gIA0KQ29kZTogNjQgOGEgMDQgMGUg
MGYgYTEgODggYzIgODEgZTIgZmYgMDAgMDAgMDAgODkgNTQgMjQgMTAgNTIg
NjggIA0KDQo=
---696221431-1409687437-883418649=:27753
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=oops-decode
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.971229200409.27753C@reipoo.cs.Helsinki.FI>
Content-Description:

VXNpbmcgYC91c3Ivc3JjL2xpbnV4L1N5c3RlbS5tYXAnIHRvIG1hcCBhZGRy
ZXNzZXMgdG8gc3ltYm9scy4NCg0KPj5FSVA6IDAgY2Fubm90IGJlIHJlc29s
dmVkDQpUcmFjZTogYzAxNzQwNmQgPHR0eV9pb2N0bCtlOS80Njg+DQpUcmFj
ZTogYzAxMmMzMTIgPHN5c19pb2N0bCsxNGUvMTY0Pg0KVHJhY2U6IGMwMTA5
OTU2IDxzeXN0ZW1fY2FsbCszYS80MD4NCkNvZGU6IA0KPj5FSVA6IGMwMTA5
ZGMyIDxzaG93X3JlZ2lzdGVycysyMWEvMjU4Pg0KVHJhY2U6IGM0ODAwMDAw
DQpUcmFjZTogYzUwMDAwMDANClRyYWNlOiBjNDgwMDAwMA0KVHJhY2U6IGMw
MTA5ZTNjIDxkaWVfaWZfa2VybmVsKzNjLzQ4Pg0KVHJhY2U6IGMwMTg3YzNm
IDxzcHJpbnRmKzIxZDMvMmM0OT4NClRyYWNlOiBjMDE4ODkzNyA8YmFkX3Bt
ZF9zdHJpbmcrMjgyLzMxNz4NClRyYWNlOiBjMDEwZTY5NiA8ZG9fcGFnZV9m
YXVsdCszMmEvMzNjPg0KVHJhY2U6IGMwMTg4OTM3IDxiYWRfcG1kX3N0cmlu
ZysyODIvMzE3Pg0KVHJhY2U6IGMwMTA5YTkyIDxlcnJvcl9jb2RlKzMyLzNj
Pg0KVHJhY2U6IGMwMTc0MDZkIDx0dHlfaW9jdGwrZTkvNDY4Pg0KVHJhY2U6
IGMwMTc0MDZkIDx0dHlfaW9jdGwrZTkvNDY4Pg0KVHJhY2U6IGMwMTJjMzEy
IDxzeXNfaW9jdGwrMTRlLzE2ND4NClRyYWNlOiBjMDEwOTk1NiA8c3lzdGVt
X2NhbGwrM2EvNDA+DQpDb2RlOiBjMDEwOWRjMiA8c2hvd19yZWdpc3RlcnMr
MjFhLzI1OD4gDQpDb2RlOiBjMDEwOWRjMiA8c2hvd19yZWdpc3RlcnMrMjFh
LzI1OD4gIDY0IDhhIDA0IDBlICAgIAltb3ZiICAgJWZzOiglZXNpLCVlY3gs
MSksJWFsDQpDb2RlOiBjMDEwOWRjNiA8c2hvd19yZWdpc3RlcnMrMjFlLzI1
OD4gIDBmIGExICAgICAgICAgIAlwb3BsICAgJWZzDQpDb2RlOiBjMDEwOWRj
OCA8c2hvd19yZWdpc3RlcnMrMjIwLzI1OD4gIDg4IGMyICAgICAgICAgIAlt
b3ZiICAgJWFsLCVkbA0KQ29kZTogYzAxMDlkY2EgPHNob3dfcmVnaXN0ZXJz
KzIyMi8yNTg+ICA4MSBlMiBmZiAwMCAwMCAJYW5kbCAgICQweGZmLCVlZHgN
CkNvZGU6IGMwMTA5ZGQ2IDxzaG93X3JlZ2lzdGVycysyMmUvMjU4PiAgODkg
NTQgMjQgMTAgICAgCW1vdmwgICAlZWR4LDB4MTAoJWVzcCwxKQ0KQ29kZTog
YzAxMDlkZGEgPHNob3dfcmVnaXN0ZXJzKzIzMi8yNTg+ICA1MiAgICAgICAg
ICAgICAJcHVzaGwgICVlZHgNCkNvZGU6IGMwMTA5ZGRiIDxzaG93X3JlZ2lz
dGVycysyMzMvMjU4PiAgNjggMDAgOTAgOTAgOTAgCXB1c2hsICAkMHg5MDkw
OTAwMA0K
---696221431-1409687437-883418649=:27753--