[sisyphus] Re: хрень:(

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Пт Июн 27 20:15:13 MSD 2003


On 26 Jun 2003 13:35:57 +0300
Andrey Khavryuchenko <akhavr на kds.com.ua> wrote:

> Jun 23 14:44:36 netmaster pppd[4261]: pppd 2.4.2b3 started by root, uid 0
> Jun 23 14:44:36 netmaster pppd[4261]: Using interface ppp0
> Jun 23 14:44:36 netmaster pppd[4261]: Connect: ppp0 <--> /dev/usb/ttyUSB0
> Jun 23 14:44:36 netmaster /etc/hotplug/net.agent: assuming ppp0 is already up
> Jun 23 14:44:39 netmaster kernel: usb.c: USB disconnect on device 00:07.2-2 address 3
> Jun 23 14:44:39 netmaster kernel: usbserial.c: Handspring Visor / Palm 4.0 / CliИ 4.x converter now disconnected from ttyUSB0
> Jun 23 14:44:39 netmaster kernel: usbserial.c: Handspring Visor / Palm 4.0 / CliИ 4.x converter now disconnected from ttyUSB1
> Jun 23 14:44:39 netmaster hotplug: killing pi-csd and pppd...
> Jun 23 14:44:39 netmaster hotplug: unloading visor and usbserial modules...
> Jun 23 14:44:39 netmaster kernel: usbserial.c: USB Serial deregistering driver Handspring Visor / Palm 4.0 / CliИ 4.x
> Jun 23 14:44:39 netmaster kernel: usbserial.c: USB Serial deregistering driver Sony CliИ 3.5
> Jun 23 14:44:39 netmaster kernel: usbserial.c: USB Serial deregistering driver Generic
> Jun 23 14:44:39 netmaster kernel: usb.c: deregistering driver serial
> Jun 23 14:45:00 netmaster crond[4304]: (root) CMD (/usr/bin/mrtg --user mrtg --group mrtg /etc/mrtg/mrtg.cfg) 
> Jun 23 14:45:00 netmaster crond[4305]: (mailman) CMD (/usr/bin/python -S /usr/share/mailman/cron/gate_news) 
> Jun 23 14:45:02 netmaster ucd-snmp[2365]: Connection from 10.0.2.2 
> Jun 23 14:45:02 netmaster ucd-snmp[2365]: Connection from 10.0.2.2 
> Jun 23 14:45:18 netmaster kernel: Unable to handle kernel paging request at virtual address 08337580

Я догадываюсь, что там происходит, но без устройства такие вещи тяжело
отловить и исправить...

Попробуйте в том скрипте, который обрабатывает в hotplug отключение
устройства, закомментировать выгрузку модулей visor и usbserial. Это
не устранит основную проблему (неверную обработку отключения), но по
крайней мере есть вероятность, что падать в этом месте перестанет. Ещё
можно попробовать завершать pppd до отключения устройства.

Там получается следующее: при выгрузке usbserial usb_serial_exit()
вызывает tty_unregister_driver(&serial_tty_driver), но этот вызов не
проходит, поскольку счётчик ссылок на этот драйвер ненулевой, поэтому
в списке tty_drivers остаётся указатель на несуществующую структуру,
из-за чего в дальнейшем всё и падает. А счётчик ссылок ненулевой из-за
того, что pppd ещё не успел завершиться, а терминал закрывается
принудительно и мимо подсчёта ссылок в drivers/char/tty_io.c. В общем,
всю обработку разъединения в usbserial (именно там - на верхнем
уровне) надо переписывать.

Если можете, попробуйте послать отчёт об этой ошибке в linux-usb-devel
(подписка на
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel, сейчас
туда без подписки не пускают - два дня вирусы откуда-то лезут;
впрочем, обещали опять открыть). Там, кстати, пролетал один патч по
поводу oops с pl2303 (тоже вариант usbserial), но эту ошибку он явно
не исправляет (да и автор признаёт, что это временная затычка).

В ядре 2.4.21, похоже, никаких изменений в этом районе нет.


Подробная информация о списке рассылки Sisyphus