Hi, I'm trying to write a driver for a usb device that requires a firmware upload that is around 31Kb. This data is currently dealt with as a static array of unsigned char and a pointer to it is given as the urb transfer buffer when usb_submit_urb() is called. Then the usb core crashes. I'm working with the 2.4.18 kernel from Mandrake 8.2. Here is the error output: ------ Nov 8 10:34:15 cea02 kernel: Unable to handle kernel paging request at virtual address d0958000 Nov 8 10:34:15 cea02 kernel: printing eip: Nov 8 10:34:15 cea02 kernel: d09486e9 Nov 8 10:34:15 cea02 kernel: *pde = 0ff45067 Nov 8 10:34:15 cea02 kernel: *pte = 00000000 Nov 8 10:34:15 cea02 kernel: Oops: 0000 Nov 8 10:34:15 cea02 kernel: CPU: 0 Nov 8 10:34:15 cea02 kernel: EIP: 0010:[usbcore:usb_devfs_handle_Re9c5f87f+7 45589/241221047] Not tainted Nov 8 10:34:15 cea02 kernel: EIP: 0010:[<d09486e9>] Not tainted Nov 8 10:34:15 cea02 kernel: EFLAGS: 00010203 Nov 8 10:34:15 cea02 kernel: eax: d094f819 ebx: d094f8ca ecx: d0958000 ed x: 0000263e Nov 8 10:34:15 cea02 kernel: esi: cf545e7a edi: cf545e86 ebp: ce493600 es p: cf545e50 Nov 8 10:34:15 cea02 kernel: ds: 0018 es: 0018 ss: 0018 Nov 8 10:34:15 cea02 kernel: Process khubd (pid: 508, stackpage=cf545000) [root@cea02 log]# -------- Since this array is compiled in to the module I'm at a loss as to why I'm getting paging problems. Am I going to have to use vmalloc or kmalloc (and what exactly is the difference, anyway?) and copy the data to a new array? I'm kind of confused about kernel memory, and would appreciate any hints as to what's going on here. Steve -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/