On Tue, 2009-01-06 at 21:01 +0100, Gregoire Favre wrote: > On Tue, Jan 06, 2009 at 05:09:26PM -0200, Mauro Carvalho Chehab wrote: > > Hello, > > > I've just commit a patch that should fix this and another reported issue when selecting parts of cx88 code as module and other parts as monolithic. > > > > Could you please test if the patch also fixed the OOPS and doesn't generate any regression? > > OoO not good : > > cx88[0]: wm8775' i2c attach [addr=0x1b,client=wm8775'] > cx88[0]/0: registered device video0 [v4l2] > cx88[0]/0: registered device vbi0 > cx88[0]/0: registered device radio0 > cx8800 0000:04:05.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20 > cx88[1]: subsystem: 14f1:0084, board: Geniatech DVB-S [card=52,autodetected], frontend(s): 1 > cx88[1]: TV tuner type 4, Radio tuner type -1 > cx88[1]: i2c register ok > cx88[1]/0: found at 0000:04:05.0, rev: 3, irq: 20, latency: 64, mmio: 0xd9000000 > cx88[1]/0: registered device video1 [v4l2] > cx88[1]/0: registered device vbi1 > cx2388x alsa driver version 0.0.6 loaded > cx88_audio 0000:04:02.1: PCI INT A -> GSI 23 (level, low) -> IRQ 23 > cx88[0]/1: CX88x/0: ALSA support for cx2388x boards > cx88/2: cx2388x MPEG-TS Driver Manager version 0.0.6 loaded > cx88[0]/2: cx2388x 8802 Driver Manager > cx88-mpeg driver manager 0000:04:02.2: PCI INT A -> GSI 23 (level, low) -> IRQ 23 > cx88[0]/2: found at 0000:04:02.2, rev: 5, irq: 23, latency: 64, mmio: 0xdd000000 > cx8802_probe() allocating 2 frontend(s) > cx88[1]/2: cx2388x 8802 Driver Manager > cx88-mpeg driver manager 0000:04:05.2: PCI INT A -> GSI 20 (level, low) -> IRQ 20 > cx88[1]/2: found at 0000:04:05.2, rev: 3, irq: 20, latency: 64, mmio: 0xda000000 > cx8802_probe() allocating 1 frontend(s) > cx88/2: cx2388x dvb driver version 0.0.6 loaded > cx88/2: registering cx8802 driver, type: dvb access: shared > cx88[0]/2: subsystem: 0070:6902, board: Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [card=68] > cx88[0]/2-dvb: cx8802_dvb_probe > cx88[0]/2-dvb: ->being probed by Card=68 Name=cx88[0], PCI 04:02 > BUG: unable to handle kernel NULL pointer dereference at 0000000000000000 > IP: [<ffffffffa090e15a>] vp3054_i2c_probe+0x1a/0x160 [cx88_vp3054_i2c] > PGD bfb9067 PUD bfb8067 PMD 0 > Oops: 0000 [#1] PREEMPT SMP > last sysfs file: /sys/devices/pci0000:00/0000:00:1e.0/0000:04:05.0/video4linux/vbi1/index > CPU 1 > Modules linked in: cx88_dvb(+) cx88_vp3054_i2c cx8802 videobuf_dvb cx88_alsa wm8775 tuner_simple tuner_types tda9887 tda8290 tuner cx8800 cx88xx i2c_algo_bit tveeprom v4l2_common videodev v4l1_compat v4l2_compat_ioctl32 btcx_risc videobuf_dma_sg videobuf_core stv0299 budget_ci budget_core dvb_core saa7146 ttpci_eeprom ir_common udf ipv6 coretemp w83627ehf w83791d hwmon_vid hwmon nfs lockd sunrpc firewire_ohci firewire_core crc_itu_t nvidia(P) ohci1394 i2c_i801 ieee1394 snd_hda_intel usb_storage [last unloaded: v4l1_compat] > Pid: 13797, comm: modprobe Tainted: P 2.6.28-gentoo #1 > RIP: 0010:[<ffffffffa090e15a>] [<ffffffffa090e15a>] vp3054_i2c_probe+0x1a/0x160 [cx88_vp3054_i2c] > RSP: 0018:ffff88001f1edd18 EFLAGS: 00010246 > RAX: 0000000000000045 RBX: 0000000000000000 RCX: 0000000000000007 > RDX: ffff8800a78b1000 RSI: 0000000000000046 RDI: 0000000000000000 > RBP: ffff880037bad000 R08: 0000000000000000 R09: 0000000000000001 > R10: ffff88001f1edc68 R11: 00000000807ca320 R12: 0000000000000000 > R13: 0000000000000000 R14: 000000000155d0e0 R15: 000000000155d0f8 > FS: 00007fd0a645f6f0(0000) GS:ffff88017f803780(0000) knlGS:0000000000000000 > CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b > CR2: 0000000000000000 CR3: 000000001f35c000 CR4: 00000000000006e0 > DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 > DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 > Process modprobe (pid: 13797, threadinfo ffff88001f1ec000, task ffff88017e4cc2c0) > Stack: > 0000000000000070 00000000ffffffed ffff880037bad000 0000000000000000 > 0000000000000000 ffffffffa0a168d8 0000000000000000 0000000000000000 > ffff88002dba7838 ffff88001f1edd78 0000000000000000 ffff88007f8e81e0 > Call Trace: > [<ffffffffa0a168d8>] ? cx8802_dvb_probe+0x78/0x1de0 [cx88_dvb] > [<ffffffff802f3019>] ? __sysfs_add_one+0x39/0xb0 > [<ffffffffa0a1038b>] ? cx8802_register_driver+0x1cb/0x250 [cx8802] > [<ffffffffa0a18700>] ? dvb_init+0x0/0x30 [cx88_dvb] > [<ffffffff80209042>] ? _stext+0x42/0x1b0 > [<ffffffff802670bc>] ? load_module+0x177c/0x19b0 > [<ffffffff80247c90>] ? msleep+0x0/0x40 > [<ffffffff802673a5>] ? sys_init_module+0xb5/0x1e0 > [<ffffffff8020bbcb>] ? system_call_fastpath+0x16/0x1b > Code: 98 df 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 48 83 ec 28 48 89 5c 24 08 48 89 6c 24 10 4c 89 64 24 18 4c 89 6c 24 20 31 db <4c> 8b 27 48 89 fd 41 83 bc 24 c0 06 00 00 2a 74 1b 89 d8 48 8b > RIP [<ffffffffa090e15a>] vp3054_i2c_probe+0x1a/0x160 [cx88_vp3054_i2c] > RSP <ffff88001f1edd18> > CR2: 0000000000000000 > ---[ end trace 00734a6876437fa0 ]--- > > ksymoops 2.4.11 on x86_64 2.6.28-gentoo. Options used > -V (default) > -k /proc/ksyms (default) > -l /proc/modules (default) > -o /lib/modules/2.6.28-gentoo/ (default) > -m /usr/src/linux/System.map (default) > > Warning: You did not tell me where to find symbol information. I will > assume that the log matches the kernel and modules that are running > right now and I'll use the default options above for symbol resolution. > If the current kernel and/or modules do not match the log, you can get > more accurate output by telling me the kernel version and where to find > map, modules, ksyms etc. ksymoops -h explains the options. > > Error (regular_file): read_ksyms stat /proc/ksyms failed > No modules in ksyms, skipping objects > No ksyms, skipping lsmod > BUG: unable to handle kernel NULL pointer dereference at 0000000000000000 > Oops: 0000 [#1] PREEMPT SMP > CPU 1 > Pid: 13797, comm: modprobe Tainted: P 2.6.28-gentoo #1 > RIP: 0010:[<ffffffffa090e15a>] [<ffffffffa090e15a>] vp3054_i2c_probe+0x1a/0x160 [cx88_vp3054_i2c] > Using defaults from ksymoops -t elf64-x86-64 -a i386:x86-64 > RSP: 0018:ffff88001f1edd18 EFLAGS: 00010246 > RAX: 0000000000000045 RBX: 0000000000000000 RCX: 0000000000000007 > RDX: ffff8800a78b1000 RSI: 0000000000000046 RDI: 0000000000000000 > RBP: ffff880037bad000 R08: 0000000000000000 R09: 0000000000000001 > R10: ffff88001f1edc68 R11: 00000000807ca320 R12: 0000000000000000 > R13: 0000000000000000 R14: 000000000155d0e0 R15: 000000000155d0f8 > FS: 00007fd0a645f6f0(0000) GS:ffff88017f803780(0000) knlGS:0000000000000000 > CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b > CR2: 0000000000000000 CR3: 000000001f35c000 CR4: 00000000000006e0 > 0000000000000070 00000000ffffffed ffff880037bad000 0000000000000000 > 0000000000000000 ffffffffa0a168d8 0000000000000000 0000000000000000 > ffff88002dba7838 ffff88001f1edd78 0000000000000000 ffff88007f8e81e0 > Call Trace: > [<ffffffffa0a168d8>] ? cx8802_dvb_probe+0x78/0x1de0 [cx88_dvb] > [<ffffffff802f3019>] ? __sysfs_add_one+0x39/0xb0 > [<ffffffffa0a1038b>] ? cx8802_register_driver+0x1cb/0x250 [cx8802] > [<ffffffffa0a18700>] ? dvb_init+0x0/0x30 [cx88_dvb] > [<ffffffff80209042>] ? _stext+0x42/0x1b0 > [<ffffffff802670bc>] ? load_module+0x177c/0x19b0 > [<ffffffff80247c90>] ? msleep+0x0/0x40 > [<ffffffff802673a5>] ? sys_init_module+0xb5/0x1e0 > [<ffffffff8020bbcb>] ? system_call_fastpath+0x16/0x1b > Code: 98 df 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 48 83 ec 28 48 89 5c 24 08 48 89 6c 24 10 4c 89 64 24 18 4c 89 6c 24 20 31 db <4c> 8b 27 48 89 fd 41 83 bc 24 c0 06 00 00 2a 74 1b 89 d8 48 8b > > > >>RIP; ffffffffa090e15a <_end+20126eea/7ee18d90> <===== > > >>RDX; ffff8800a78b1000 <phys_startup_64+ffff8800a76b1000/ffffffff80000000> > >>RBP; ffff880037bad000 <phys_startup_64+ffff8800379ad000/ffffffff80000000> > >>R10; ffff88001f1edc68 <phys_startup_64+ffff88001efedc68/ffffffff80000000> > >>R11; 00000000807ca320 <phys_startup_64+805ca320/ffffffff80000000> > >>R14; 000000000155d0e0 <phys_startup_64+135d0e0/ffffffff80000000> > >>R15; 000000000155d0f8 <phys_startup_64+135d0f8/ffffffff80000000> > > Trace; ffffffffa0a168d8 <_end+2022f668/7ee18d90> > Trace; ffffffff802f3019 <__sysfs_add_one+39/b0> > Trace; ffffffffa0a1038b <_end+2022911b/7ee18d90> > Trace; ffffffffa0a18700 <_end+20231490/7ee18d90> > Trace; ffffffff80209042 <do_one_initcall+42/1b0> > Trace; ffffffff802670bc <load_module+177c/19b0> > Trace; ffffffff80247c90 <msleep+0/40> > Trace; ffffffff802673a5 <sys_init_module+b5/1e0> > Trace; ffffffff8020bbcb <system_call_fastpath+16/1b> > > Code; ffffffffa090e12f <_end+20126ebf/7ee18d90> > 0000000000000000 <_RIP>: > Code; ffffffffa090e12f <_end+20126ebf/7ee18d90> > 0: 98 cwtl > Code; ffffffffa090e130 <_end+20126ec0/7ee18d90> > 1: df 66 66 fbld 0x66(%rsi) > Code; ffffffffa090e133 <_end+20126ec3/7ee18d90> > 4: 66 66 66 66 2e 0f 1f nopw %cs:0x0(%rax,%rax,1) > Code; ffffffffa090e13a <_end+20126eca/7ee18d90> > b: 84 00 00 00 00 00 > Code; ffffffffa090e140 <_end+20126ed0/7ee18d90> > 11: 48 83 ec 28 sub $0x28,%rsp > Code; ffffffffa090e144 <_end+20126ed4/7ee18d90> > 15: 48 89 5c 24 08 mov %rbx,0x8(%rsp) > Code; ffffffffa090e149 <_end+20126ed9/7ee18d90> > 1a: 48 89 6c 24 10 mov %rbp,0x10(%rsp) > Code; ffffffffa090e14e <_end+20126ede/7ee18d90> > 1f: 4c 89 64 24 18 mov %r12,0x18(%rsp) > Code; ffffffffa090e153 <_end+20126ee3/7ee18d90> > 24: 4c 89 6c 24 20 mov %r13,0x20(%rsp) > Code; ffffffffa090e158 <_end+20126ee8/7ee18d90> > 29: 31 db xor %ebx,%ebx > Code; ffffffffa090e15a <_end+20126eea/7ee18d90> <===== > 2b: 4c 8b 27 mov (%rdi),%r12 <===== > Code; ffffffffa090e15d <_end+20126eed/7ee18d90> > 2e: 48 89 fd mov %rdi,%rbp > Code; ffffffffa090e160 <_end+20126ef0/7ee18d90> > 31: 41 83 bc 24 c0 06 00 cmpl $0x2a,0x6c0(%r12) > Code; ffffffffa090e167 <_end+20126ef7/7ee18d90> > 38: 00 2a > Code; ffffffffa090e169 <_end+20126ef9/7ee18d90> > 3a: 74 1b je 57 <_RIP+0x57> > Code; ffffffffa090e16b <_end+20126efb/7ee18d90> > 3c: 89 d8 mov %ebx,%eax > Code; ffffffffa090e16d <_end+20126efd/7ee18d90> > 3e: 48 rex.W > Code; ffffffffa090e16e <_end+20126efe/7ee18d90> > 3f: 8b .byte 0x8b > > CR2: 0000000000000000 > > 1 warning and 1 error issued. Results may not be reliable. This appears very much the same as Gregoire's original oops that I looked at. Whatever Gregoire tested here, acted the same as the baseline case. int vp3054_i2c_probe(struct cx8802_dev *dev) { struct cx88_core *core = dev->core; "dev" is NULL in this call and the assignment causes the core dump. After a cursory glance at the changes, I'm not sure how this comes about. Sorry. Regards, Andy _______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb