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