Hi! First, I am not a kernel drivers' developer. However in my country there is a very popular USB ADSL modem that has an old driver for Linux. Since to the 2.6.24 kernel release I and some my friends tried to 'patch' the driver to work with newer kernels. But this time, in the newest kernels it does not work. First, it doesn't want to compile - there were two errors. One of them was: /home/adrian/unicorn-neo/unicorn_usb/unicorn_usbdrv.c:210: error: 'struct urb' has no member named 'lock' So I had commented this line /* spin_lock_init(&urb->lock); */ and the next error was: /home/adrian/unicorn-neo/unicorn_usb/../unicorn_eth/unicorn_ethdrv.c:1398: error: implicit declaration of function 'SET_MODULE_OWNER' And I had found out that this is unusable in the newer kernels and I can remove this line, so I did this and then the module compiles, moreover it loads correctly if the modem is unplugged (when it is plugged,the system is hanging on boot). But if I plug it into a USB port nothing happens with modem. I get then this when I run dmesg: [ 300.699874] usbcore: registered new interface driver unicorn_usb [ 310.345981] usb 1-1: new full speed USB device using uhci_hcd and address 2 [ 310.557861] usb 1-1: configuration #1 chosen from 1 choice [ 310.560756] unicorn_usb: rapi init called [ 310.560790] BUG: unable to handle kernel NULL pointer dereference at virtual address 00000000 [ 310.560795] printing eip: f8ee39c4 *pde = 00000000 [ 310.560799] Oops: 0002 [#1] SMP [ 310.560803] Modules linked in: unicorn_usb_eth ieee80211_crypt_ccmp af_packet ipv6 ppdev cpufreq_powersave cpufreq_userspace cpufreq_ondemand cpufreq_stats freq_table cpufreq_conservative sbs container sbshc video output dock battery iptable_filter ip_tables x_tables aes_i586 dm_crypt dm_mod ac sbp2 lp snd_hda_intel snd_pcm_oss snd_mixer_oss snd_pcm snd_page_alloc snd_hwdep snd_seq_dummy snd_seq_oss snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq snd_timer snd_seq_device parport_pc zd1211rw parport ieee80211softmac snd ieee80211 ieee80211_crypt evdev soundcore nvidia(P) pcspkr button i2c_viapro i2c_core via_agp agpgart shpchp pci_hotplug ext3 jbd mbcache usbhid hid sg sr_mod cdrom sd_mod pata_acpi sata_via pata_via floppy ata_generic via_rhine ehci_hcd uhci_hcd mii libata usbcore scsi_mod ohci1394 ieee1394 thermal processor fan fbcon tileblit font bitblit softcursor fuse [ 310.560861] [ 310.560864] Pid: 1549, comm: khubd Tainted: P (2.6.24-16-generic #1) [ 310.560866] EIP: 0060:[<f8ee39c4>] EFLAGS: 00010246 CPU: 1 [ 310.560923] EIP is at xm_getmem+0x24/0x80 [unicorn_usb_eth] [ 310.560925] EAX: dfbf2750 EBX: 00000000 ECX: 00000282 EDX: 00000000 [ 310.560928] ESI: 00000004 EDI: f7647c00 EBP: dfb7dcf0 ESP: dfb7dcc0 [ 310.560930] DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 [ 310.560932] Process khubd (pid: 1549, ti=dfb7c000 task=f74ef0e0 task.ti=dfb7c000) [ 310.560934] Stack: 00000286 f7647d00 000000ff 00000000 f7600000 f8ee629c 00000004 dfb7dcec [ 310.560941] f7647d00 00000296 00000286 4811e151 dfb7dd00 f8ee2c65 00000004 00000000 [ 310.560947] f5d5f000 f8edda1e f8efb623 f7647c00 00000138 00004ece f8f383e0 f5d5f000 [ 310.560953] Call Trace: [ 310.560968] [<f8ee629c>] _Znwj+0x18/0x4c [unicorn_usb_eth] [ 310.561029] [<f8ee2c65>] createclassobject+0x13/0x34 [unicorn_usb_eth] [ 310.561091] [<f8edda1e>] probe_unicorn_usb+0x14e/0x680 [unicorn_usb_eth] [ 310.561153] [<f89005d9>] usb_probe_interface+0xb9/0x140 [usbcore] [ 310.561181] [<c027d988>] driver_probe_device+0x88/0x190 [ 310.561189] [<c0315065>] klist_next+0x55/0xb0 [ 310.561196] [<c027cc84>] bus_for_each_drv+0x44/0x70 [ 310.561203] [<c027db56>] device_attach+0x86/0x90 [ 310.561206] [<c027da90>] __device_attach+0x0/0x10 [ 310.561211] [<c027cbf5>] bus_attach_device+0x45/0x90 [ 310.561217] [<c027bc88>] device_add+0x418/0x510 [ 310.561225] [<f88fe522>] usb_set_configuration+0x392/0x5d0 [usbcore] [ 310.561254] [<f8906b06>] generic_probe+0x76/0xb0 [usbcore] [ 310.561280] [<f8900393>] usb_probe_device+0x33/0x40 [usbcore] [ 310.561295] [<c027d988>] driver_probe_device+0x88/0x190 [ 310.561306] [<c0315065>] klist_next+0x55/0xb0 [ 310.561313] [<c027cc84>] bus_for_each_drv+0x44/0x70 [ 310.561319] [<c027db56>] device_attach+0x86/0x90 [ 310.561322] [<c027da90>] __device_attach+0x0/0x10 [ 310.561327] [<c027cbf5>] bus_attach_device+0x45/0x90 [ 310.561333] [<c027bc88>] device_add+0x418/0x510 [ 310.561341] [<f88f92f6>] usb_new_device+0x56/0xa0 [usbcore] [ 310.561364] [<f88faa97>] hub_thread+0x687/0xcb0 [usbcore] [ 310.561393] [<c0140b70>] autoremove_wake_function+0x0/0x40 [ 310.561402] [<f88fa410>] hub_thread+0x0/0xcb0 [usbcore] [ 310.561421] [<c01408b2>] kthread+0x42/0x70 [ 310.561424] [<c0140870>] kthread+0x0/0x70 [ 310.561429] [<c0105677>] kernel_thread_helper+0x7/0x10 [ 310.561435] ======================= [ 310.561437] Code: 18 c3 90 8d 74 26 00 56 89 c6 53 89 d3 83 ec 0c ba c0 ab 00 00 8d 40 10 e8 2a fe ff ff ba 01 00 00 00 85 c0 74 10 83 c0 10 30 d2 <89> 03 83 3d 28 59 f4 f8 3f 77 08 83 c4 0c 89 d0 5b 5e c3 c7 44 [ 310.561468] EIP: [<f8ee39c4>] xm_getmem+0x24/0x80 [unicorn_usb_eth] SS:ESP 0068:dfb7dcc0 [ 310.561518] ---[ end trace 6916491f26b0396a ]--- And there is the driver that was working properly in Ubuntu 7.10 with kernel 2.6.22 (and older): http://ubudsl.com/unicorn-neo.tar If someone would help, many people from Poland (and not only) would be thankful :)