[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#619827: linux-source-2.6.38: [linux-dvb] cx88-blackbird broken (since 2.6.37)



Package: linux-source-2.6.38
Version: 2.6.38-1
Severity: important
Tags: upstream


[Symptom]
Processes that try to open a cx88-blackbird driven MPEG device will hang up.

[Cause]
Nestet mutex_locks (which are not allowed) result in a deadlock.

[Details]
There has been resent work on removing BKL (BigKernelLock) calls from kernel code. (see http://kernelnewbies.org/BigKernelLock) This was not properly done for the cx88-blackbird driver:

Source-File: drivers/media/video/cx88/cx88-blackbird.c
Function: int mpeg_open(struct file *file)
Problem: the calls to  drv->request_acquire(drv); and drv->request_release(drv); will hang because they try to lock a mutex that has already been locked by a previouse call to mutex_lock(&dev->core->lock) ...

1050 static int mpeg_open(struct file *file)
1051 {
[...]
1060         mutex_lock(&dev->core->lock);         // MUTEX LOCKED !!!!!!!!!!!!!!!!
1061
1062         /* Make sure we can acquire the hardware */
1063         drv = cx8802_get_driver(dev, CX88_MPEG_BLACKBIRD);
1064         if (drv) {
1065                 err = drv->request_acquire(drv);  // HANGS !!!!!!!!!!!!!!!!!!!
1066                 if(err != 0) {
1067                         dprintk(1,"%s: Unable to acquire hardware, %d\n", __func__, err);
1068                         mutex_unlock(&dev->core->lock);;
1069                         return err;
1070                 }
1071         }
[...]

Here's the relevant kernel log extract (Linux version 2.6.38-1-amd64 (Debian 2.6.38-1)) ...

Mar 24 21:25:10 xen kernel: [  241.472067] INFO: task v4l_id:1000 blocked for more than 120 seconds.
Mar 24 21:25:10 xen kernel: [  241.478845] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Mar 24 21:25:10 xen kernel: [  241.482412] v4l_id          D ffff88006bcb6540     0  1000      1 0x00000000
Mar 24 21:25:10 xen kernel: [  241.486031]  ffff88006bcb6540 0000000000000086 ffff880000000001 ffff88006981c380
Mar 24 21:25:10 xen kernel: [  241.489694]  0000000000013700 ffff88006be5bfd8 ffff88006be5bfd8 0000000000013700
Mar 24 21:25:10 xen kernel: [  241.493301]  ffff88006bcb6540 ffff88006be5a010 ffff88006bcb6540 000000016be5a000
Mar 24 21:25:10 xen kernel: [  241.496766] Call Trace:
Mar 24 21:25:10 xen kernel: [  241.500145]  [<ffffffff81321c4a>] ? __mutex_lock_common+0x127/0x193
Mar 24 21:25:10 xen kernel: [  241.503630]  [<ffffffff81321d82>] ? mutex_lock+0x1a/0x33
Mar 24 21:25:10 xen kernel: [  241.507145]  [<ffffffffa09dd155>] ? cx8802_request_acquire+0x66/0xc6 [cx8802]
Mar 24 21:25:10 xen kernel: [  241.510699]  [<ffffffffa0aab7f2>] ? mpeg_open+0x7a/0x1fc [cx88_blackbird]
Mar 24 21:25:10 xen kernel: [  241.514279]  [<ffffffff8123bfb6>] ? kobj_lookup+0x139/0x173
Mar 24 21:25:10 xen kernel: [  241.517856]  [<ffffffffa062d5fd>] ? v4l2_open+0xb3/0xdf [videodev]


regards
Andi Huber

-- System Information:
Debian Release: wheezy/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.36-trunk-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.ISO-8859-15, LC_CTYPE=en_US.ISO-8859-15 (charmap=ISO-8859-15)
Shell: /bin/sh linked to /bin/dash

Versions of packages linux-source-2.6.38 depends on:
ii  binutils                      2.20.1-16  The GNU assembler, linker and bina
ii  bzip2                         1.0.5-6    high-quality block-sorting file co

Versions of packages linux-source-2.6.38 recommends:
ii  gcc                           4:4.4.5-1  The GNU C compiler
ii  libc6-dev [libc-dev]          2.11.2-10  Embedded GNU C Library: Developmen
ii  make                          3.81-8     An utility for Directing compilati

Versions of packages linux-source-2.6.38 suggests:
pn  kernel-package            <none>         (no description available)
ii  libncurses5-dev [ncurses- 5.8+20110307-1 developer's libraries for ncurses
pn  libqt3-mt-dev             <none>         (no description available)

-- no debconf information



Reply to: