Page fault at USB attachment code

Hans Petter Selasky hps at selasky.org
Thu Dec 26 08:34:52 UTC 2019


On 2019-12-26 01:46, Farhan Khan wrote:
> Hi all,
> 
> I am writing a simple USB network device driver skeleton, just to learn the framework. What I think is fairly simple code is having a kernel panic when it hits the attachment code.
> 
> The code and kgdb output are below. I apologize, its been some time since I used kgdb, so I am not sure what the next step I should do to debug this.
> 
> ---------------------
> static int
> skel_usb_attach(device_t self)
> {
>   struct usb_attach_arg *uaa = device_get_ivars(self);
>   struct skel_usb_softc *uc = device_get_softc(self);
>   struct skel_softc *sc = uc->sc_sc;
>   struct ieee80211com *ic = &sc->sc_ic;
> 
>   device_set_usb_desc(self);
>   uc->uc_udev = uaa->device;
>   sc->sc_dev = self;
>   ic->ic_name = device_get_nameunit(self);
> 
>   return 0;
> }
> ---------------------
> 
> When I run kgdb, I get the following output.
> 
> ---------------------
> sudo kgdb -n last
> GNU gdb (GDB) 8.3.1 [GDB v8.3.1 for FreeBSD]
> Copyright (C) 2019 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
> Type "show copying" and "show warranty" for details.
> This GDB was configured as "x86_64-portbld-freebsd13.0".
> Type "show configuration" for configuration details.
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>.
> Find the GDB manual and other documentation resources online at:
>   <http://www.gnu.org/software/gdb/documentation/>.
> 
> For help, type "help".
> Type "apropos word" to search for commands related to "word"...
> Reading symbols from /usr/obj/usr/src/amd64.amd64/sys/GENERIC/kernel.full...
> 
> Unread portion of the kernel message buffer:
> Matched!
> skel0 on uhub0
> skel0: <ATHEROS USB2.0 WLAN, rev 1.10/ff.ff, addr 2> on usbus0
> 
> Fatal trap 12: page fault while in kernel mode
> cpuid = 0; apic id = 00
> fault virtual address = 0x7170
> fault code = supervisor write data, page not present
> instruction pointer = 0x20:0xffffffff8271f094
> stack pointer = 0x28:0xfffffe00036f5930
> frame pointer = 0x28:0xfffffe00036f5950
> code segment = base 0x0, limit 0xfffff, type 0x1b
> = DPL 0, pres 1, long 1, def32 0, gran 1
> processor eflags = interrupt enabled, resume, IOPL = 0
> current process = 15 (usbus0)
> trap number = 12
> panic: page fault
> cpuid = 0
> time = 1577299341
> KDB: stack backtrace:
> db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe00036f5590
> vpanic() at vpanic+0x17e/frame 0xfffffe00036f55f0
> panic() at panic+0x43/frame 0xfffffe00036f5650
> trap_fatal() at trap_fatal+0x386/frame 0xfffffe00036f56b0
> trap_pfault() at trap_pfault+0x99/frame 0xfffffe00036f5730
> trap() at trap+0x2a3/frame 0xfffffe00036f5860
> calltrap() at calltrap+0x8/frame 0xfffffe00036f5860
> --- trap 0xc, rip = 0xffffffff8271f094, rsp = 0xfffffe00036f5930, rbp = 0xfffffe00036f5950 ---
> skel_usb_attach() at skel_usb_attach+0x34/frame 0xfffffe00036f5950
> device_attach() at device_attach+0x3ca/frame 0xfffffe00036f5990
> device_probe_and_attach() at device_probe_and_attach+0x70/frame 0xfffffe00036f59c0
> usb_probe_and_attach_sub() at usb_probe_and_attach_sub+0x150/frame 0xfffffe00036f5a10
> usb_probe_and_attach() at usb_probe_and_attach+0x463/frame 0xfffffe00036f5ae0
> uhub_explore() at uhub_explore+0x753/frame 0xfffffe00036f5b50
> usb_bus_explore() at usb_bus_explore+0x11a/frame 0xfffffe00036f5b70
> usb_process() at usb_process+0x103/frame 0xfffffe00036f5bb0
> fork_exit() at fork_exit+0x80/frame 0xfffffe00036f5bf0
> fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe00036f5bf0
> --- trap 0, rip = 0, rsp = 0, rbp = 0 ---
> KDB: enter: panic
> 
> warning: Could not load shared library symbols for if_skel_usb.ko.
> Do you need "set solib-search-path" or "set sysroot"?
> ---------------------
> 
> Note: I am testing this with an Atheros USB device.
> 
> Thanks!
> 

Are you sure you specified sizeof the correct softc, in the driver 
declaration?

--HPS



More information about the freebsd-usb mailing list