Hi,

I am using linux 2.6.27.5 with em28xx-new and I get some slab corruption. I
applied some debug patch to em28xx-new and to the linux tree also (attached).
I enabled the some debug options in the kernel, like:
 - CONFIG_DEBUG_OBJECTS_FREE=y,
 - CONFIG_DEBUG_OBJECTS_TIMERS=y,
 - CONFIG_DEBUG_SLAB=y,
 - CONFIG_DEBUG_SLAB_LEAK=y,
 - CONFIG_DEBUG_BUGVERBOSE=y

Steps to reproduce:
1. Plug Pinnacle Hybrid Pro Stick (320e)
2. Start kaffeine and start watching a digital channel
3. While kaffeine is running unplug the device
4. Now close kaffeine

Current result:

[  704.299771] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4213: checkpoint
[  704.299781] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4215: checkpoint
[  704.299789] /usr/src/mcentral.de/em28xx-new/xc3028/xc3028_module.c:48: 
checkpoint
[  704.299796] /usr/src/mcentral.de/em28xx-new/xc3028/xc3028_module.c:50: 
checkpoint
[  704.299803] /usr/src/mcentral.de/em28xx-new/xc3028/xc3028_module.c:52: 
checkpoint
[  704.299812] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4217: checkpoint
[  704.299825] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4221: checkpoint
[  704.299831] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4223: checkpoint
[  721.424069] usb 3-3: new high speed USB device using ehci_hcd and address 3
[  721.553121] usb 3-3: configuration #1 chosen from 1 choice
[  721.559380] em28xx: new video device (eb1a:2881): interface 0, class 255
[  721.559920] em28xx: device is attached to a USB 2.0 bus
[  721.560398] em28xx #0: Alternate settings: 8
[  721.560769] em28xx #0: Alternate setting 0, max size= 0
[  721.561185] em28xx #0: Alternate setting 1, max size= 0
[  721.561561] em28xx #0: Alternate setting 2, max size= 1448
[  721.561933] em28xx #0: Alternate setting 3, max size= 2048
[  721.562344] em28xx #0: Alternate setting 4, max size= 2304
[  721.562880] em28xx #0: Alternate setting 5, max size= 2580
[  721.563316] em28xx #0: Alternate setting 6, max size= 2892
[  721.563822] em28xx #0: Alternate setting 7, max size= 3072
[  721.793560] register disabled
[  721.994707] register disabled
[  722.018889] attach_inform: tvp5150 detected.
[  722.064552] tvp5150 1-005c: tvp5150am1 detected.
[  722.192701] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:3082: checkpoint
[  722.193379] /usr/src/mcentral.de/em28xx-new/xc3028/xc3028_module.c:23: 
checkpoint
[  722.193809] /usr/src/mcentral.de/em28xx-new/xc3028/xc3028_module.c:26: 
checkpoint
[  722.194203] /usr/src/mcentral.de/em28xx-new/xc3028/xc3028_module.c:29: 
checkpoint
[  722.194557] /usr/src/mcentral.de/em28xx-new/xc3028/xc3028_module.c:35: 
checkpoint
[  722.194906] /usr/src/mcentral.de/em28xx-new/xc3028/xc3028_module.c:39: 
checkpoint
[  723.673395] /usr/src/mcentral.de/em28xx-new/xc3028/xc3028_module.c:41: 
checkpoint
[  723.673705] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:3084: checkpoint
[  723.673890] successfully attached tuner
[  723.686130] em28xx #0: V4L2 VBI device registered as /dev/vbi0
[  723.714378] em28xx #0: V4L2 device registered as /dev/video0
[  723.714716] em2880-dvb.c: DVB Init
[  723.715875] register disabled
[  724.034002] DVB: registering new adapter (em2880 DVB-T)
[  724.034361] DVB: registering frontend 0 (Zarlink ZL10353 DVB-T)...
[  724.041633] input: em2880/em2870 remote control as /class/input/input11
[  724.061275] em28xx-input.c: remote control handler attached
[  724.061594] em28xx #0: Found Pinnacle Hybrid Pro
[  745.492855] register disabled
[  745.899090] em28xx_dvb_init
[  747.414564] drivers/media/dvb/dvb-core/dvb_frontend.c:1098: checkpoint
[  747.414574] drivers/media/dvb/dvb-core/dvb_frontend.c:1101: checkpoint
[  747.414578] drivers/media/dvb/dvb-core/dvb_frontend.c:1105: checkpoint
[  747.414581] drivers/media/dvb/dvb-core/dvb_frontend.c:1108: checkpoint
[  747.414584] drivers/media/dvb/dvb-core/dvb_frontend.c:1110: checkpoint
[  747.414587] drivers/media/dvb/dvb-core/dvb_frontend.c:1120: checkpoint
[  747.414591] drivers/media/dvb/dvb-core/dvb_frontend.c:1122: checkpoint
[  747.414595] drivers/media/dvb/dvb-core/dvb_frontend.c:1125: checkpoint
[  747.414598] drivers/media/dvb/dvb-core/dvb_frontend.c:1128: checkpoint
[  747.585823] drivers/media/dvb/dvb-core/dvb_frontend.c:1098: checkpoint
[  747.588825] drivers/media/dvb/dvb-core/dvb_frontend.c:1101: checkpoint
[  747.589157] drivers/media/dvb/dvb-core/dvb_frontend.c:1105: checkpoint
[  747.589348] drivers/media/dvb/dvb-core/dvb_frontend.c:1108: checkpoint
[  747.589529] drivers/media/dvb/dvb-core/dvb_frontend.c:1110: checkpoint
[  747.589708] drivers/media/dvb/dvb-core/dvb_frontend.c:1120: checkpoint
[  747.589888] drivers/media/dvb/dvb-core/dvb_frontend.c:1122: checkpoint
[  747.590190] drivers/media/dvb/dvb-core/dvb_frontend.c:1125: checkpoint
[  747.590447] drivers/media/dvb/dvb-core/dvb_frontend.c:1128: checkpoint
[  907.856327] usb 3-3: USB disconnect, address 3
[  907.894975] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4156: checkpoint
[  907.895351] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4161: checkpoint
[  907.895545] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4163: checkpoint
[  907.895732] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4171: checkpoint
[  907.895919] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4175: checkpoint
[  907.896139] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4178: checkpoint
[  907.904329] em28xx-input.c: remote control handler detached
[  907.904649] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4181: checkpoint
[  907.905145] zl10353: write to reg 62 failed (err = -19)!
[  907.943071] em28xx #0: reading key failed (error=-19=-ENODEV)
[  913.724522] Slab corruption: size-512 start=f5b548a0, len=512
[  913.724949] Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
[  913.725148] Last user: [<c02c74f8>](skb_release_data+0x68/0xa0)
[  913.725386] 100: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 00 6b 6b 6b 6b 6b
[  913.725849] Prev obj: start=f5b54688, len=512
[  913.725981] Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
[  913.726141] Last user: [<c02c74f8>](skb_release_data+0x68/0xa0)
[  913.726324] 000: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
[  913.726781] 010: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
[  913.727265] Next obj: start=f5b54ab8, len=512
[  913.727397] Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
[  913.727534] Last user: [<c02c74f8>](skb_release_data+0x68/0xa0)
[  913.727716] 000: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
[  913.728184] 010: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
[  914.643432] drivers/media/dvb/dvb-core/dvb_frontend.c:1098: checkpoint
[  914.645141] drivers/media/dvb/dvb-core/dvb_frontend.c:1101: checkpoint
[  914.645618] drivers/media/dvb/dvb-core/dvb_frontend.c:1105: checkpoint
[  914.645973] drivers/media/dvb/dvb-core/dvb_frontend.c:1108: checkpoint
[  914.646404] drivers/media/dvb/dvb-core/dvb_frontend.c:1110: checkpoint
[  914.646759] drivers/media/dvb/dvb-core/dvb_frontend.c:1112: checkpoint
[  914.647133] drivers/media/dvb/dvb-core/dvb_frontend.c:1114: checkpoint
[  914.647483] drivers/media/dvb/dvb-core/dvb_frontend.c:1116: checkpoint
[  914.655620] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4189: checkpoint
[  914.655642] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4192: checkpoint
[  914.655651] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4195: checkpoint
[  914.655659] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4211: checkpoint
[  914.655666] em28xx #0: disconnecting em28xx#0 video
[  914.655673] em28xx #0: V4L2 VIDEO devices /dev/video0 deregistered
[  914.656056] em28xx #0: V4L2 VBI devices /dev/vbi0 deregistered
[  914.656699] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4213: checkpoint
[  914.656709] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4215: checkpoint
[  914.656716] /usr/src/mcentral.de/em28xx-new/xc3028/xc3028_module.c:48: 
checkpoint
[  914.656724] /usr/src/mcentral.de/em28xx-new/xc3028/xc3028_module.c:50: 
checkpoint
[  914.656732] /usr/src/mcentral.de/em28xx-new/xc3028/xc3028_module.c:52: 
checkpoint
[  914.656743] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4217: checkpoint
[  914.656756] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4221: checkpoint
[  914.656763] /usr/src/mcentral.de/em28xx-new/em28xx-video.c:4223: checkpoint
[  914.665380] drivers/media/dvb/dvb-core/dvb_frontend.c:1118: checkpoint
[  914.665398] drivers/media/dvb/dvb-core/dvb_frontend.c:1120: checkpoint
[  914.665405] drivers/media/dvb/dvb-core/dvb_frontend.c:1122: checkpoint
[  914.665442] BUG: unable to handle kernel paging request at 6b6b6b6b
[  914.665453] IP: [<6b6b6b6b>]
[  914.665464] *pde = 00000000
[  914.665474] Oops: 0000 [#1] PREEMPT
[  914.665485] Modules linked in: em28xx_dvb drx3973d s921 mt2060 lgdt3304 
zl10353 lgdt330x dvb_core qt1010 tuner_xc3028 tvp5150 em28xx snd_usb_audio 
videodev
v4l1_compat snd_usb_lib snd_hwdep ppdev lp cpufreq_ondemand 
cpufreq_conservative ipv6 xt_tcpudp iptable_filter ip_tables x_tables 
leds_clevo_mail led_class via
via_agp drm agpgart eeprom snd_pcm_oss snd_mixer_oss cpufreq_userspace 
cpufreq_powersave powernow_k8 fan snd_via82xx snd_mpu401_uart pcmcia 
firmware_class
snd_seq_midi snd_via82xx_modem mousedev snd_seq_midi_event snd_ac97_codec 
snd_rawmidi ac97_bus snd_pcm snd_seq snd_timer snd_seq_device yenta_socket 
k8temp
8139too ide_cd_mod snd mii cdrom rsrc_nonstatic hwmon ehci_hcd i2c_viapro 
8250_pnp psmouse serio_raw uhci_hcd video 8250 pcmcia_core parport_pc pcspkr 
soundcore
snd_page_alloc backlight i2c_core usbcore bitrev crc32 output serial_core 
parport thermal battery ac button processor evdev
[  914.665667]
[  914.665674] Pid: 6938, comm: kaffeine Not tainted (2.6.27.5 #2)
[  914.665682] EIP: 0060:[<6b6b6b6b>] EFLAGS: 00010246 CPU: 0
[  914.665692] EIP is at 0x6b6b6b6b
[  914.665698] EAX: f4d5a71c EBX: f4f55f00 ECX: f4ed0000 EDX: 00000000
[  914.665705] ESI: f4ef4550 EDI: 00000000 EBP: f4ed1f50 ESP: f4ed1f2c
[  914.665711]  DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
[  914.665718] Process kaffeine (pid: 6938, ti=f4ed0000 task=f5864620 
task.ti=f4ed0000)
[  914.665724] Stack: f8d35c6e f8d3b322 f8d3bd58 00000462 f4d5a71c f68a82c0 
00000008 f4dd96c8
[  914.665745]        f4f55f00 f4ed1f78 c0188079 00000000 00000000 f52fdb40 
f780e128 f4dd96c8
[  914.665764]        f4f55f00 f5b356c0 00000000 f4ed1f80 c018817f f4ed1f98 
c0185087 f5b356e4
[  914.665783] Call Trace:
[  914.665789]  [<f8d35c6e>] ? dvb_frontend_release+0x24e/0x260 [dvb_core]
[  914.665825]  [<c0188079>] ? __fput+0xb9/0x1a0
[  914.665841]  [<c018817f>] ? fput+0x1f/0x30
[  914.665852]  [<c0185087>] ? filp_close+0x47/0x70
[  914.665863]  [<c018511f>] ? sys_close+0x6f/0xc0
[  914.665874]  [<c0103309>] ? sysenter_do_call+0x12/0x31
[  914.665886]  =======================
[  914.665890] Code:  Bad EIP value.
[  914.665898] EIP: [<6b6b6b6b>] 0x6b6b6b6b SS:ESP 0068:f4ed1f2c
[  914.665915] ---[ end trace 45eebe753ddcc7c5 ]---

I could reproduce this 3 times out of 5 tries.

What the debug messages tells me is that the last executed checkpoint
was right before the

        fe->ops.ts_bus_ctrl(fe, 0);

line in dvb_frontend_release() function. More I couldn't find out, yet.

Regards,

        Márton Németh

diff -r bc52a2f39c15 em28xx-video.c
--- a/em28xx-video.c	Wed Nov 12 08:57:03 2008 +0100
+++ b/em28xx-video.c	Thu Nov 13 21:42:27 2008 +0100
@@ -914,7 +914,9 @@
 		if (dev->state & DEV_DISCONNECTED) {
 			em28xx_release_resources(dev);
 			kfree(dev->alt_max_pkt_size);
+			printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 			tuner_chip_detach(dev->tuner);
+			printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 			kfree(dev);
 			kfree(fh);
 			return 0;
@@ -3077,7 +3079,9 @@
 			em28xx_gpio_control(dev, EM28XX_XC3028_SECAM, arg);
 #endif
 
+			printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 			dev->tuner = tuner_chip_attach(xc3028_tuner_attach, &config);
+			printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 			break;
 		}
 		case TUNER_XCEIVE_XC5000:
@@ -3093,7 +3097,9 @@
 			em28xx_gpio_control(dev, EM28XX_XC3028_SECAM, arg);
 #endif
 
+			printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 			dev->tuner = tuner_chip_attach(xc5000_tuner_attach, &config);
+			printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 			break;
 		}
 		}
@@ -4147,10 +4153,14 @@
 	struct list_head *pos;
 	struct em28xx_ops *ops = 0;
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
+
 	/* might be racy */
 	dev->state |= DEV_DISCONNECTED;
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	usb_set_intfdata(interface, NULL);
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 
 	/* TODO: kernel versions <=2.6.21 */
 #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 17)
@@ -4158,13 +4168,17 @@
 		cancel_rearming_delayed_work(&dev->request_module_wk);
 #endif
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	if (!dev)
 		return;
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	down_write(&em28xx_disconnect);
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	em28xx_card_disconnect(dev);
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	mutex_lock(&em28xx_extension_devlist_lock);
 	if (!list_empty(&em28xx_extension_devlist)) {
 		list_for_each(pos, &em28xx_extension_devlist) {
@@ -4172,27 +4186,41 @@
 			ops->fini(dev);
 		}
 	}
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	mutex_unlock(&em28xx_extension_devlist_lock);
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	wake_up_interruptible_all(&dev->open);
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	if (dev->users) {
+		printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 		dev->state |= DEV_MISCONFIGURED;
+		printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 		em28xx_uninit_isoc(dev);
+		printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 		wake_up_interruptible(&dev->wait_frame);
+		printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 		wake_up_interruptible(&dev->video_wait_stream);
+		printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 		if (dev->dev_modes&EM28XX_VBI) {
 			wake_up_interruptible(&dev->wait_vbi_frame);
 			wake_up_interruptible(&dev->vbi_wait_stream);
 		}
 	} else {
+		printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 		em28xx_release_resources(dev);
+		printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 		kfree(dev->alt_max_pkt_size);
+		printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 		tuner_chip_detach(dev->tuner);
+		printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 		kfree(dev);
 	}
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	up_write(&em28xx_disconnect);
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 }
 
 static struct usb_driver em28xx_usb_driver = {
diff -r bc52a2f39c15 xc3028/xc3028_module.c
--- a/xc3028/xc3028_module.c	Wed Nov 12 08:57:03 2008 +0100
+++ b/xc3028/xc3028_module.c	Thu Nov 13 21:42:27 2008 +0100
@@ -20,27 +20,36 @@
 	struct tuner_module *module;
 	struct xc3028_priv *priv;
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	module = kzalloc(sizeof(struct tuner_module), GFP_KERNEL);
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	priv = kzalloc(sizeof(struct xc3028_priv), GFP_KERNEL);
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	priv->callback = config->callback;
 	priv->dev = config->dev;
 	priv->i2c_address = config->i2c_address;
 	priv->adap = config->adap;
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	memcpy(module, &xc3028_tuner_module, sizeof(struct tuner_module));
 	module->priv = priv;
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
         xc3028_initialize(module, config->new_tv_mode_ptr, config->new_channel_map_ptr);
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 
         return module;
 }
 
 void xc3028_tuner_release(struct tuner_module *tuner)
 {
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	kfree(tuner->priv);
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	kfree(tuner);
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 }
 
 EXPORT_SYMBOL_GPL(xc3028_tuner_attach);
diff -upr linux-2.6.27.5.orig/drivers/media/dvb/dvb-core/dvb_frontend.c linux-2.6.27.5/drivers/media/dvb/dvb-core/dvb_frontend.c
--- linux-2.6.27.5.orig/drivers/media/dvb/dvb-core/dvb_frontend.c	2008-10-10 00:13:53.000000000 +0200
+++ linux-2.6.27.5/drivers/media/dvb/dvb-core/dvb_frontend.c	2008-11-13 08:35:45.000000000 +0100
@@ -1095,23 +1095,37 @@ static int dvb_frontend_release(struct i
 	struct dvb_frontend_private *fepriv = fe->frontend_priv;
 	int ret;
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	dprintk ("%s\n", __func__);
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	if ((file->f_flags & O_ACCMODE) != O_RDONLY)
 		fepriv->release_jiffies = jiffies;
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	ret = dvb_generic_release (inode, file);
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	if (dvbdev->users == -1) {
+		printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 		if (fepriv->exit == 1) {
+			printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 			fops_put(file->f_op);
+			printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 			file->f_op = NULL;
+			printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 			wake_up(&dvbdev->wait_queue);
+			printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 		}
-		if (fe->ops.ts_bus_ctrl)
+		printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
+		if (fe->ops.ts_bus_ctrl) {
+			printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 			fe->ops.ts_bus_ctrl(fe, 0);
+		}
+		printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	}
 
+	printk(KERN_ERR "%s:%u: checkpoint\n", __FILE__, __LINE__);
 	return ret;
 }
 
_______________________________________________
Em28xx mailing list
[email protected]
http://mcentral.de/mailman/listinfo/em28xx

Reply via email to