hso. hso_serial_close oops.
Subsystems (2)
A message that is not in the archive (sent off-list or not yet received): [email protected]
[ +Jan Dumon, netdev ]
Forwarding oops report to maintainer.
Quoted 63 lines · Christian Melki
I'm using a ppc 8347 with a normal 3.16.1 kernel.
The software opens the driver tty in question and then sets it as stdin, stdout for chat-program and pppd. When I yank the modem while running, the software detects this and tries to close the open socket with a kernel crash as a result.Unable to handle kernel paging request for unknown fault Faulting instruction address: 0xc03a4420 Oops: Kernel access of bad area, sig: 11 [#1] PREEMPT ASP8347E Modules linked in: CPU: 0 PID: 1536 Comm: pppd Not tainted 3.16.1 #1 task: c31272e0 ti: c39e8000 task.ti: c39e8000 NIP: c03a4420 LR: c020752c CTR: c02074e0 REGS: c39e9d40 TRAP: 0600 Not tainted (3.16.1) MSR: 00009032 <EE,ME,IR,DR,RI> CR: 24004224 XER: 20000000 DAR: 0000004d DSISR: 00000000GPR00: 00000000
c39e9df0c31272e00000004dc323546000000000c39c193400000000
GPR08: 00000000 00000000c39c1964c39c180024004228 10047610 100400001003f6ec
GPR16:1003f6b41003f6181003f6b01003f6bc1003f7001003f7b4c39e9edc1003f6c8
GPR24:1003f6dcc03bd1a800000004c03bd2b400000000c323546000000000c38cca00NIP [c03a4420]mutex_lock+0x0/0x1c
LR [c020752c]hso_serial_close+0x4c/0x11cCall Trace:[
c39e9df0] [c3235460]0xc3235460(unreliable)
[c39e9e00] [c0188944]tty_release+0x134/0x560
[c39e9e90] [c00a1968]__fput+0x94/0x214
[c39e9eb0] [c0032854]task_work_run+0xcc/0xf4
[c39e9ed0] [c0019108]do_exit+0x208/0x874
[c39e9f20] [c00198c0]do_group_exit+0x44/0xd8
[c39e9f30] [c0019968]__wake_up_parent+0x0/0x34
[c39e9f40] [c000e60c]ret_from_syscall+0x0/0x38
--- Exception: c01 at0xfebd4ccLR = 0xff79a98 Instruction dump: 409e0014 801f003c 70090004 41820008 4bffe6ad 80010034 bb410018 38210030 7c0803a6 4e800020 4bffe695 4bffffc4 <7c001828> 3000ffff 7c00192d 40a2fff4 ---[ end trace bfebaf22f6f5795a ]---Fixing recursive fault but reboot is needed!
I have simulated the same error with a simple userland program without using pppd.
#include <
sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>int
main(int argc, char *argv[]) { int fd; fd = open(argv[1], O_RDWR); sleep(atoi(argv[2])); close(fd); return 0; }If I yank the modem while the program is sleeping, I get exactly the same kernel error as with pppd.
I have looked at thehso.c(hso_serial_close) driver but can't figure it out. The structs might not be intact at that time, but those are tty structs.. Im not sure what is going on. I tried to check the integrity of the structs but still get a crash. The tty layer is a mystery to me.regards,
Christian