Bug 492485 - Possible recursive locking with Hauppauge Nova-T USB tv tuner
Possible recursive locking with Hauppauge Nova-T USB tv tuner
Status: CLOSED WONTFIX
Product: Fedora
Classification: Fedora
Component: kernel (Show other bugs)
11
All Linux
low Severity medium
: ---
: ---
Assigned To: Mauro Carvalho Chehab
Fedora Extras Quality Assurance
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2009-03-26 18:26 EDT by Jon Levell
Modified: 2013-07-04 18:53 EDT (History)
3 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2010-06-28 07:34:54 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
ops with 2040:7070 Hauppauge Nova-T Stick 3 (7.97 KB, text/plain)
2009-10-06 16:54 EDT, Andreas Bierfert
no flags Details

  None (edit)
Description Jon Levell 2009-03-26 18:26:29 EDT
Description of problem:
I boot with the liveCD available for the nouveau test day:
https://fedoraproject.org/wiki/QA/Test_Days/2009-03-26
with a Hauppauge Nova-T USB tv tuner plugged in.

In /var/log/messages during boot I see an error reproduce at the bottom of this description.

The kernel version is 2.6.29-0.279.rc8.git6.fc11.i586.

Mar 26 21:37:39 localhost kernel: dib0700: loaded with support for 9 different device-types
Mar 26 21:37:39 localhost kernel: dvb-usb: found a 'Hauppauge Nova-T Stick' in warm state.
Mar 26 21:37:39 localhost kernel: dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
Mar 26 21:37:39 localhost kernel: DVB: registering new adapter (Hauppauge Nova-T Stick)
Mar 26 21:37:39 localhost kernel: DVB: registering adapter 0 frontend 0 (DiBcom 7000PC)...
Mar 26 21:37:39 localhost kernel: HDA Intel 0000:00:1b.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19
Mar 26 21:37:39 localhost kernel:
Mar 26 21:37:39 localhost kernel: =============================================
Mar 26 21:37:39 localhost kernel: [ INFO: possible recursive locking detected ]
Mar 26 21:37:39 localhost kernel: 2.6.29-0.279.rc8.git6.fc11.i586 #1
Mar 26 21:37:39 localhost kernel: ---------------------------------------------
Mar 26 21:37:39 localhost kernel: modprobe/1889 is trying to acquire lock:
Mar 26 21:37:39 localhost kernel: (&adap->bus_lock){--..}, at: [<f7c47455>] i2c_transfer+0x60/0x7e [i2c_core]
Mar 26 21:37:39 localhost kernel:
Mar 26 21:37:39 localhost kernel: but task is already holding lock:
Mar 26 21:37:39 localhost kernel: (&adap->bus_lock){--..}, at: [<f7c47455>] i2c_transfer+0x60/0x7e [i2c_core]
Mar 26 21:37:39 localhost kernel:
Mar 26 21:37:39 localhost kernel: other info that might help us debug this:
Mar 26 21:37:39 localhost kernel: 1 lock held by modprobe/1889:
Mar 26 21:37:39 localhost kernel: #0:  (&adap->bus_lock){--..}, at: [<f7c47455>] i2c_transfer+0x60/0x7e [i2c_core]
Mar 26 21:37:39 localhost kernel:
Mar 26 21:37:39 localhost kernel: stack backtrace:
Mar 26 21:37:39 localhost kernel: Pid: 1889, comm: modprobe Not tainted 2.6.29-0.279.rc8.git6.fc11.i586 #1
Mar 26 21:37:39 localhost kernel: Call Trace:
Mar 26 21:37:39 localhost kernel: [<c06ee3cd>] ? printk+0x14/0x17
Mar 26 21:37:39 localhost kernel: [<c0450f94>] __lock_acquire+0x770/0xad1
Mar 26 21:37:39 localhost kernel: [<c0547700>] ? free_object+0x27/0x92
Mar 26 21:37:39 localhost kernel: [<f7c47455>] ? i2c_transfer+0x60/0x7e [i2c_core]
Mar 26 21:37:39 localhost kernel: [<c0451350>] lock_acquire+0x5b/0x81
Mar 26 21:37:39 localhost kernel: [<f7c47455>] ? i2c_transfer+0x60/0x7e [i2c_core]
Mar 26 21:37:39 localhost kernel: [<c06ef547>] __mutex_lock_common+0xdd/0x338
Mar 26 21:37:39 localhost kernel: [<f7c47455>] ? i2c_transfer+0x60/0x7e [i2c_core]
Mar 26 21:37:39 localhost kernel: [<c06ef849>] mutex_lock_nested+0x33/0x3b
Mar 26 21:37:39 localhost kernel: [<f7c47455>] ? i2c_transfer+0x60/0x7e [i2c_core]
Mar 26 21:37:39 localhost kernel: [<f7c47455>] i2c_transfer+0x60/0x7e [i2c_core]
Mar 26 21:37:39 localhost kernel: [<f7d741e5>] dibx000_i2c_gated_tuner_xfer+0x19e/0x1b5 [dibx000_common]
Mar 26 21:37:39 localhost kernel: [<f7c47461>] i2c_transfer+0x6c/0x7e [i2c_core]
Mar 26 21:37:39 localhost kernel: [<f7c5c1f9>] mt2060_readreg+0x4d/0x6b [mt2060]
Mar 26 21:37:39 localhost kernel: [<f7c5c51a>] mt2060_attach+0x62/0x21c [mt2060]
Mar 26 21:37:39 localhost kernel: [<f7c5c4b8>] ? mt2060_attach+0x0/0x21c [mt2060]
Mar 26 21:37:39 localhost kernel: [<f9fcfe3b>] stk7700p_tuner_attach+0xe7/0x12a [dvb_usb_dib0700]
Mar 26 21:37:39 localhost kernel: [<f8db441c>] ? dvb_register_frontend+0xf0/0xfd [dvb_core]
Mar 26 21:37:39 localhost kernel: [<f7c63bef>] dvb_usb_adapter_frontend_init+0xc1/0xe2 [dvb_usb]
Mar 26 21:37:39 localhost kernel: [<f7c63750>] dvb_usb_device_init+0x3c2/0x49e [dvb_usb]
Mar 26 21:37:39 localhost kernel: [<f9fce69a>] dib0700_probe+0x30/0x5e [dvb_usb_dib0700]
Mar 26 21:37:39 localhost kernel: [<c060bf63>] usb_probe_interface+0xe8/0x12e
Mar 26 21:37:39 localhost kernel: [<c05c6b4a>] driver_probe_device+0xa7/0x122
Mar 26 21:37:39 localhost kernel: [<c05c6c16>] __driver_attach+0x51/0x70
Mar 26 21:37:39 localhost kernel: [<c05c6516>] bus_for_each_dev+0x3f/0x67
Mar 26 21:37:39 localhost kernel: [<c05c69dc>] driver_attach+0x19/0x1b
Mar 26 21:37:39 localhost kernel: [<c05c6bc5>] ? __driver_attach+0x0/0x70
Mar 26 21:37:39 localhost kernel: [<c05c5f7b>] bus_add_driver+0x9d/0x1b3
Mar 26 21:37:39 localhost kernel: [<c05c6dd7>] driver_register+0x74/0xd8
Mar 26 21:37:39 localhost kernel: [<c054700d>] ? __spin_lock_init+0x28/0x4b
Mar 26 21:37:39 localhost kernel: [<c060bd3f>] usb_register_driver+0x79/0xd6
Mar 26 21:37:39 localhost kernel: [<f9fa7000>] ? dib0700_module_init+0x0/0x44 [dvb_usb_dib0700]
Mar 26 21:37:39 localhost kernel: [<f9fa7028>] dib0700_module_init+0x28/0x44 [dvb_usb_dib0700]
Mar 26 21:37:39 localhost kernel: [<c040115a>] _stext+0x6a/0x17f
Mar 26 21:37:39 localhost kernel: [<c04501e9>] ? trace_hardirqs_on_caller+0x121/0x145
Mar 26 21:37:39 localhost kernel: [<c0450218>] ? trace_hardirqs_on+0xb/0xd
Mar 26 21:37:39 localhost kernel: [<c044ef6f>] ? register_lock_class+0x17/0x291
Mar 26 21:37:39 localhost kernel: [<c042b951>] ? finish_task_switch+0x4e/0xb4
Mar 26 21:37:39 localhost kernel: [<c044ef6f>] ? register_lock_class+0x17/0x291
Mar 26 21:37:39 localhost kernel: [<c044ef6f>] ? register_lock_class+0x17/0x291
Mar 26 21:37:39 localhost kernel: [<c044fcdc>] ? mark_lock+0x1e/0x30b
Mar 26 21:37:39 localhost kernel: [<c05477d6>] ? debug_check_no_obj_freed+0x6b/0x153
Mar 26 21:37:39 localhost kernel: [<c054786b>] ? debug_check_no_obj_freed+0x100/0x153
Mar 26 21:37:39 localhost kernel: [<c044fcdc>] ? mark_lock+0x1e/0x30b
Mar 26 21:37:39 localhost kernel: [<c0476655>] ? marker_update_probe_range+0x1f/0x1fe
Mar 26 21:37:39 localhost kernel: [<c0477593>] ? tracepoint_update_probe_range+0x1f/0x8d
Mar 26 21:37:39 localhost kernel: [<c044fcdc>] ? mark_lock+0x1e/0x30b
Mar 26 21:37:39 localhost kernel: [<c045001c>] ? mark_held_locks+0x53/0x6a
Mar 26 21:37:39 localhost kernel: [<c06ef74b>] ? __mutex_lock_common+0x2e1/0x338
Mar 26 21:37:39 localhost kernel: [<c044fcdc>] ? mark_lock+0x1e/0x30b
Mar 26 21:37:39 localhost kernel: [<c045001c>] ? mark_held_locks+0x53/0x6a
Mar 26 21:37:39 localhost kernel: [<c06ef313>] ? __mutex_unlock_slowpath+0x113/0x128
Mar 26 21:37:39 localhost kernel: [<c04501e9>] ? trace_hardirqs_on_caller+0x121/0x145
Mar 26 21:37:39 localhost kernel: [<c0450218>] ? trace_hardirqs_on+0xb/0xd
Mar 26 21:37:39 localhost kernel: [<c0446520>] ? __blocking_notifier_call_chain+0x45/0x51
Mar 26 21:37:39 localhost kernel: [<c0408509>] ? sched_clock+0x9/0xd
Mar 26 21:37:39 localhost kernel: [<c044eb7a>] ? lock_release_holdtime+0x2b/0x123
Mar 26 21:37:39 localhost kernel: [<c0446520>] ? __blocking_notifier_call_chain+0x45/0x51
Mar 26 21:37:39 localhost kernel: [<c0445c88>] ? up_read+0x1b/0x2f
Mar 26 21:37:39 localhost kernel: [<c0446520>] ? __blocking_notifier_call_chain+0x45/0x51
Mar 26 21:37:39 localhost kernel: [<c045914d>] sys_init_module+0x8d/0x190
Mar 26 21:37:39 localhost kernel: [<c0403f92>] syscall_call+0x7/0xb
Mar 26 21:37:39 localhost kernel: MT2060: successfully identified (IF1 = 1220)
Mar 26 21:37:39 localhost kernel: input: IR-receiver inside an USB DVB receiver as /devices/pci0000:00/0000:00:1d.7/usb1/1-4/input/input6
Mar 26 21:37:39 localhost kernel: dvb-usb: schedule remote query interval to 50 msecs.
Mar 26 21:37:39 localhost kernel: dvb-usb: Hauppauge Nova-T Stick successfully initialized and connected.
Mar 26 21:37:39 localhost kernel: usbcore: registered new interface driver dvb_usb_dib0700
Mar 26 21:37:39 localhost kernel: modprobe used greatest stack depth: 5528 bytes left
Comment 1 Mauro Carvalho Chehab 2009-03-28 06:52:15 EDT
The circular locking detection is rising on i2c_core. 
The only place where the lock is used is on this code (at i2c-core.c):

                if (in_atomic() || irqs_disabled()) {
                        ret = mutex_trylock(&adap->bus_lock);
                        if (!ret)
                                /* I2C activity is ongoing. */
                                return -EAGAIN;
                } else {
                        mutex_lock_nested(&adap->bus_lock, adap->level);
                }

                ret = adap->algo->master_xfer(adap,msgs,num);
                mutex_unlock(&adap->bus_lock);

What's weird is that the circular locking detection didn't get any info about the first lock usage:

Mar 26 21:37:39 localhost kernel: #0:  (&adap->bus_lock){--..}, at:
[<f7c47455>] i2c_transfer+0x60/0x7e [i2c_core]
Mar 26 21:37:39 localhost kernel:
Mar 26 21:37:39 localhost kernel: stack backtrace:
Mar 26 21:37:39 localhost kernel: Pid: 1889, comm: modprobe Not tainted

The second lock call is happening on this part of dib0700 driver:

        if (st->is_dib7000pc)
                tun_i2c = dib7000p_get_i2c_master(adap->fe, DIBX000_I2C_INTERFACE_TUNER, 1);

        else
                tun_i2c = dib7000m_get_i2c_master(adap->fe, DIBX000_I2C_INTERFACE_TUNER, 1);


        return dvb_attach(mt2060_attach, adap->fe, tun_i2c, &stk7700p_mt2060_config,
                if1) == NULL ? -ENODEV : 0;

Without the first locking stack, it is hard to address this issue.

I'll see if the i2c maintainer or if the dib driver author has some ideas about what's going here. Maybe this is just a false alarm.
Comment 2 Bug Zapper 2009-06-09 08:42:57 EDT
This bug appears to have been reported against 'rawhide' during the Fedora 11 development cycle.
Changing version to '11'.

More information and reason for this action is here:
http://fedoraproject.org/wiki/BugZappers/HouseKeeping
Comment 3 Andreas Bierfert 2009-10-06 16:53:06 EDT
I did not see this on F11 but I see this now on latest F12/rawhide with kernel kernel-2.6.31.1-56.fc12.x86_64... any news?
Comment 4 Andreas Bierfert 2009-10-06 16:54:12 EDT
Created attachment 363898 [details]
ops with 2040:7070 Hauppauge Nova-T Stick 3
Comment 5 Bug Zapper 2010-04-27 09:20:36 EDT
This message is a reminder that Fedora 11 is nearing its end of life.
Approximately 30 (thirty) days from now Fedora will stop maintaining
and issuing updates for Fedora 11.  It is Fedora's policy to close all
bug reports from releases that are no longer maintained.  At that time
this bug will be closed as WONTFIX if it remains open with a Fedora 
'version' of '11'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version prior to Fedora 11's end of life.

Bug Reporter: Thank you for reporting this issue and we are sorry that 
we may not be able to fix it before Fedora 11 is end of life.  If you 
would still like to see this bug fixed and are able to reproduce it 
against a later version of Fedora please change the 'version' of this 
bug to the applicable version.  If you are unable to change the version, 
please add a comment here and someone will do it for you.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events.  Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

The process we are following is described here: 
http://fedoraproject.org/wiki/BugZappers/HouseKeeping
Comment 6 Bug Zapper 2010-06-28 07:34:54 EDT
Fedora 11 changed to end-of-life (EOL) status on 2010-06-25. Fedora 11 is 
no longer maintained, which means that it will not receive any further 
security or bug fix updates. As a result we are closing this bug.

If you can reproduce this bug against a currently maintained version of 
Fedora please feel free to reopen this bug against that version.

Thank you for reporting this bug and we are sorry it could not be fixed.

Note You need to log in before you can comment on or make changes to this bug.