[linux-dvb] Oops in dvb_frontend_release (USB DVB-T Medion MD95700)

Joerg Schneider js-dvb at joergschneider.com
Sun Mar 5 22:57:44 CET 2006


Hi,

up to kernel 2.6.13.5 my USB attached DVB-T Medion MD95700 device (Conexant CX22702) worked fine. Starting with 2.6.14 
I'm getting a NULL pointer dereference in dvb_frontend_release.

Here is the kernel log (2.6.15.5 #21 PREEMPT Sun Mar 5 15:15:51 CET 2006 i686 GNU/Linux) immediately after a re-boot:
----------------------------------
Mar  5 20:51:44 pillilz kernel: dvb-usb: found a 'Medion MD95700 (MDUSBTV-HYBRID)' in warm state.
Mar  5 20:51:44 pillilz kernel: dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
Mar  5 20:51:44 pillilz kernel: DVB: registering new adapter (Medion MD95700 (MDUSBTV-HYBRID)).
Mar  5 20:51:44 pillilz kernel: dvb_register_frontend
Mar  5 20:51:44 pillilz kernel: DVB: registering frontend 0 (Conexant CX22702 DVB-T)...
Mar  5 20:51:44 pillilz kernel: dvb-usb: Medion MD95700 (MDUSBTV-HYBRID) successfully initialized and connected.
Mar  5 20:51:44 pillilz kernel: usbcore: registered new driver dvb_usb_cxusb
Mar  5 20:51:56 pillilz kernel: dvb_frontend_open
Mar  5 20:51:56 pillilz kernel: dvb_frontend_start
Mar  5 20:51:56 pillilz kernel: dvb_frontend_ioctl
Mar  5 20:51:56 pillilz kernel: dvb_frontend_thread
Mar  5 20:51:56 pillilz kernel: DVB: initialising frontend 0 (Conexant CX22702 DVB-T)...
Mar  5 20:51:57 pillilz kernel: dvb_frontend_ioctl
Mar  5 20:51:57 pillilz kernel: dvb_frontend_add_event
Mar  5 20:51:57 pillilz kernel: dvb_frontend_autotune: drift:0 inversion:0 auto_step:0 auto_sub_step:0 started_auto_step:0
Mar  5 20:51:57 pillilz kernel: dvb_frontend_ioctl
Mar  5 20:51:57 pillilz kernel: dvb_frontend_ioctl
Mar  5 20:51:57 pillilz kernel: dvb_frontend_ioctl
Mar  5 20:51:57 pillilz kernel: dvb_frontend_ioctl
Mar  5 20:51:57 pillilz kernel: dvb_frontend_ioctl
Mar  5 20:51:58 pillilz kernel: dvb_frontend_add_event
Mar  5 20:51:58 pillilz kernel: update_delay
Mar  5 20:51:59 pillilz kernel: update_delay
Mar  5 20:52:00 pillilz kernel: usb 5-3.1: USB disconnect, address 3
Mar  5 20:52:00 pillilz kernel: dvb_unregister_frontend
Mar  5 20:52:00 pillilz kernel: dvb_frontend_stop
Mar  5 20:52:00 pillilz kernel: dvb-usb: bulk message failed: -22 (2/-16)
Mar  5 20:52:00 pillilz kernel: dvb-usb: Medion MD95700 (MDUSBTV-HYBRID) successfully deinitialized and disconnected.
Mar  5 20:52:00 pillilz kernel: usb 5-3.1: new high speed USB device using ehci_hcd and address 5
Mar  5 20:52:00 pillilz kernel: dvb-usb: found a 'Medion MD95700 (MDUSBTV-HYBRID)' in warm state.
Mar  5 20:52:00 pillilz kernel: dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
Mar  5 20:52:00 pillilz kernel: DVB: registering new adapter (Medion MD95700 (MDUSBTV-HYBRID)).
Mar  5 20:52:00 pillilz kernel: dvb_register_frontend
Mar  5 20:52:00 pillilz kernel: DVB: registering frontend 0 (Conexant CX22702 DVB-T)...
Mar  5 20:52:00 pillilz kernel: dvb-usb: Medion MD95700 (MDUSBTV-HYBRID) successfully initialized and connected.
Mar  5 20:52:23 pillilz kernel: dvb_frontend_release
Mar  5 20:52:23 pillilz kernel: XXXX fe->frontend_priv=0
Mar  5 20:52:23 pillilz kernel: Unable to handle kernel NULL pointer dereference at virtual address 000001b0
Mar  5 20:52:23 pillilz kernel: printing eip:
Mar  5 20:52:23 pillilz kernel: e09ee8d4
Mar  5 20:52:23 pillilz kernel: *pde = 00000000
Mar  5 20:52:23 pillilz kernel: Oops: 0002 [#1]
Mar  5 20:52:23 pillilz kernel: PREEMPT
Mar  5 20:52:23 pillilz kernel: Modules linked in: lp ne2k_pci 8390 ide_scsi hisax isdn slhc dvb_usb_cxusb dvb_usb 
dvb_core cx22702 dvb_pll ati_remote sym53c8xx scsi_transport_spi tuner snd_via82xx tvaudio msp3400 snd_ac97_codec 
snd_ac97_bus via686a hwmon snd_mpu401_uart i2c_isa snd_rawmidi bttv video_buf firmware_class i2c_algo_bit psmouse 
ehci_hcd snd_bt87x evdev uhci_hcd btcx_risc tveeprom via_agp agpgart parport_pc parport
Mar  5 20:52:23 pillilz kernel: CPU:    0
Mar  5 20:52:23 pillilz kernel: EIP:    0060:[<e09ee8d4>]    Not tainted VLI
Mar  5 20:52:23 pillilz kernel: EFLAGS: 00010202   (2.6.15.5)
Mar  5 20:52:23 pillilz kernel: EIP is at dvb_frontend_release+0x34/0x90 [dvb_core]
Mar  5 20:52:23 pillilz kernel: eax: ffff1df8   ebx: debd8ee0   ecx: 00000001   edx: c057854c
Mar  5 20:52:23 pillilz kernel: esi: 00000000   edi: dec5444c   ebp: dfb62aa8   esp: dc1a3f48
Mar  5 20:52:23 pillilz kernel: ds: 007b   es: 007b   ss: 0068
Mar  5 20:52:23 pillilz kernel: Process mythbackend (pid: 5639, threadinfo=dc1a2000 task=dfba0590)
Mar  5 20:52:23 pillilz kernel: Stack: e09f20d0 00000000 00000008 debd8ee0 dec5444c c01678d3 dec5444c debd8ee0
Mar  5 20:52:23 pillilz kernel: 00000000 00000000 dffe4c20 debd8ee0 00000000 c15d7ac0 debd8ee0 c0165c62
Mar  5 20:52:23 pillilz kernel: debd8ee0 c15d7ac0 dc1a2000 00000007 c15d7ac0 c0165d15 debd8ee0 c15d7ac0
Mar  5 20:52:23 pillilz kernel: Call Trace:
Mar  5 20:52:23 pillilz kernel: [<c01678d3>] __fput+0xa3/0x190
Mar  5 20:52:23 pillilz kernel: [<c0165c62>] filp_close+0x52/0x90
Mar  5 20:52:23 pillilz kernel: [<c0165d15>] sys_close+0x75/0xd0
Mar  5 20:52:23 pillilz kernel: [<c0103251>] syscall_call+0x7/0xb
Mar  5 20:52:23 pillilz kernel: Code: 24 1c 89 7c 24 10 89 74 24 0c 8b 7c 24 18 8b 43 74 8b 40 28 8b 70 0c a1 10 a4 9f 
e0 85 c0 75 2d f6 43 18 03 74 0b a1 78 96 57 c0 <89> 86 b0 01 00 00 89 5c 24 1c 89 7c 24 18 8b 5c 24 08 8b 74 24
----------------------------------

The problem occurs in (1) below, I added (2) to verify that fe->frontend_priv is NULL.
----------------------------------
static int dvb_frontend_release(struct inode *inode, struct file *file)
{
	struct dvb_device *dvbdev = file->private_data;
	struct dvb_frontend *fe = dvbdev->priv;
	struct dvb_frontend_private *fepriv = fe->frontend_priv;

	dprintk ("%s\n", __FUNCTION__);
(2)	dprintk ("XXXX fe->frontend_priv=%x\n", fepriv);

	if ((file->f_flags & O_ACCMODE) != O_RDONLY)
(1)		fepriv->release_jiffies = jiffies;

	return dvb_generic_release (inode, file);
}
----------------------------------


The problem seems to depend on the timing, as I sometimes get the following Oops (also immediately after re-boot):
----------------------------------
Mar  5 20:48:17 pillilz kernel: dvb-usb: found a 'Medion MD95700 (MDUSBTV-HYBRID)' in warm state.
Mar  5 20:48:17 pillilz kernel: dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
Mar  5 20:48:17 pillilz kernel: DVB: registering new adapter (Medion MD95700 (MDUSBTV-HYBRID)).
Mar  5 20:48:17 pillilz kernel: dvb_register_frontend
Mar  5 20:48:17 pillilz kernel: DVB: registering frontend 0 (Conexant CX22702 DVB-T)...
Mar  5 20:48:17 pillilz kernel: dvb-usb: Medion MD95700 (MDUSBTV-HYBRID) successfully initialized and connected.
Mar  5 20:48:17 pillilz kernel: usbcore: registered new driver dvb_usb_cxusb
Mar  5 20:48:29 pillilz kernel: dvb_frontend_open
Mar  5 20:48:29 pillilz kernel: dvb_frontend_start
Mar  5 20:48:29 pillilz kernel: dvb_frontend_ioctl
Mar  5 20:48:29 pillilz kernel: dvb_frontend_thread
Mar  5 20:48:29 pillilz kernel: DVB: initialising frontend 0 (Conexant CX22702 DVB-T)...
Mar  5 20:48:29 pillilz kernel: dvb_frontend_ioctl
Mar  5 20:48:29 pillilz kernel: dvb_frontend_add_event
Mar  5 20:48:29 pillilz kernel: dvb_frontend_autotune: drift:0 inversion:0 auto_step:0 auto_sub_step:0 started_auto_step:0
Mar  5 20:48:30 pillilz kernel: dvb_frontend_ioctl
Mar  5 20:48:30 pillilz kernel: dvb_frontend_ioctl
Mar  5 20:48:30 pillilz kernel: dvb_frontend_ioctl
Mar  5 20:48:30 pillilz kernel: dvb_frontend_ioctl
Mar  5 20:48:30 pillilz kernel: dvb_frontend_ioctl
Mar  5 20:48:30 pillilz kernel: dvb_frontend_add_event
Mar  5 20:48:30 pillilz kernel: update_delay
Mar  5 20:48:32 pillilz kernel: hub 5-3:1.0: port 1 disabled by hub (EMI?), re-enabling...
Mar  5 20:48:32 pillilz kernel: usb 5-3.1: USB disconnect, address 3
Mar  5 20:48:32 pillilz kernel: dvb_unregister_frontend
Mar  5 20:48:32 pillilz kernel: dvb_frontend_stop
Mar  5 20:48:32 pillilz kernel: dvb-usb: bulk message failed: -22 (2/-16)
Mar  5 20:48:32 pillilz kernel: dvb-usb: Medion MD95700 (MDUSBTV-HYBRID) successfully deinitialized and disconnected.
Mar  5 20:48:32 pillilz kernel: usb 5-3.1: new high speed USB device using ehci_hcd and address 5
Mar  5 20:48:32 pillilz kernel: dvb-usb: found a 'Medion MD95700 (MDUSBTV-HYBRID)' in warm state.
Mar  5 20:48:32 pillilz kernel: dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
Mar  5 20:48:32 pillilz kernel: DVB: registering new adapter (Medion MD95700 (MDUSBTV-HYBRID)).
Mar  5 20:48:32 pillilz kernel: dvb_register_frontend
Mar  5 20:48:32 pillilz kernel: DVB: registering frontend 0 (Conexant CX22702 DVB-T)...
Mar  5 20:48:32 pillilz kernel: dvb-usb: Medion MD95700 (MDUSBTV-HYBRID) successfully initialized and connected.
Mar  5 20:48:55 pillilz kernel: dvb_frontend_release
Mar  5 20:48:55 pillilz kernel: XXXX fe->frontend_priv=e0952000
Mar  5 20:48:56 pillilz kernel: Unable to handle kernel NULL pointer dereference at virtual address 00000000
Mar  5 20:48:56 pillilz kernel: printing eip:
Mar  5 20:48:56 pillilz kernel: c04cae25
Mar  5 20:48:56 pillilz kernel: *pde = 00000000
Mar  5 20:48:56 pillilz kernel: Oops: 0002 [#1]
Mar  5 20:48:56 pillilz kernel: PREEMPT
Mar  5 20:48:56 pillilz kernel: Modules linked in: lp ne2k_pci 8390 ide_scsi hisax isdn slhc ati_remote dvb_usb_cxusb 
dvb_usb dvb_core cx22702 dvb_pll tuner tvaudio ehci_hcd snd_via82xx snd_ac97_codec snd_ac97_bus snd_bt87x msp3400 bttv 
video_buf firmware_class sym53c8xx i2c_algo_bit via686a hwmon scsi_transport_spi psmouse snd_mpu401_uart i2c_isa 
btcx_risc tveeprom evdev uhci_hcd snd_rawmidi parport_pc parport via_agp agpgart
Mar  5 20:48:56 pillilz kernel: CPU:    0
Mar  5 20:48:56 pillilz kernel: EIP:    0060:[<c04cae25>]    Not tainted VLI
Mar  5 20:48:56 pillilz kernel: EFLAGS: 00010002   (2.6.15.5)
Mar  5 20:48:56 pillilz kernel: EIP is at __down_interruptible+0x65/0x132
Mar  5 20:48:56 pillilz kernel: eax: dc1bc000   ebx: e0b0c070   ecx: 00000000   edx: dc1bdf24
Mar  5 20:48:56 pillilz kernel: esi: dc1bc000   edi: 00000286   ebp: dec42090   esp: dc1bdf14
Mar  5 20:48:56 pillilz kernel: ds: 007b   es: 007b   ss: 0068
Mar  5 20:48:56 pillilz kernel: Process mythbackend (pid: 5648, threadinfo=dc1bc000 task=dec42090)
Mar  5 20:48:56 pillilz kernel: Stack: e0b0c078 00000001 dec42090 c011c4d0 e0b0c078 00000000 e0b0c000 da1c9320
Mar  5 20:48:56 pillilz kernel: daf77794 df3faa20 c04c96db df3faa20 fffffe00 e09e3b4c 00000008 00000008
Mar  5 20:48:56 pillilz kernel: da1c9320 ded98994 c01678d3 daf77794 e0b0c000 00000000 00000000 dffe4c20
Mar  5 20:48:56 pillilz kernel: Call Trace:
Mar  5 20:48:56 pillilz kernel: [<c011c4d0>] default_wake_function+0x0/0x20
Mar  5 20:48:56 pillilz kernel: [<c04c96db>] __down_failed_interruptible+0x7/0xc
Mar  5 20:48:56 pillilz kernel: [<e09e3b4c>] .text.lock.dmxdev+0xbb/0x1cf [dvb_core]
Mar  5 20:48:56 pillilz kernel: [<c01678d3>] __fput+0xa3/0x190
Mar  5 20:48:56 pillilz kernel: [<c0165c62>] filp_close+0x52/0x90
Mar  5 20:48:56 pillilz kernel: [<c0165d15>] sys_close+0x75/0xd0
Mar  5 20:48:56 pillilz kernel: [<c0103251>] syscall_call+0x7/0xb
Mar  5 20:48:56 pillilz kernel: Code: 00 00 00 9c 5f fa ff 40 14 8d 53 08 83 4c 24 04 01 89 14 24 8b 4a 04 8d 54 24 10 
8b 34 24 89 56 04 89 74 24 10 89 c6 89 4c 24 14 <89> 11 8b 53 04 42 89 53 04 eb 2c c7 43 04 01 00 00 00 57 9d ff
----------------------------------


As I'm not a kernel developer I don't have a clue what might cause the problem.

Please let me know if there is anything I can do to help solving it.

Cheers,

Joerg



More information about the linux-dvb mailing list