make gendev_rel_sem a compat_semaphore
PATCH 1/1 make gendev_rel_sem a compat_semaphore
Hi Ingo,
I was getting the following:
BUG: nonzero lock count 10 at exit time?
modprobe: 2972 [ffff81007e1aaf70, 116]
Call Trace:<ffffffff8014e2db>{printk_task+43} <ffffffff8015040f>{check_no_held_locks+111}
<ffffffff80136d3c>{do_exit+3036} <ffffffff80136f5c>{do_group_exit+268}
<ffffffff80136f72>{sys_exit_group+18} <ffffffff8011e471>{ia32_sysret+0}---------------------------
| preempt count: 00000000 ]
| 0-level deep critical section nesting:
----------------------------------------
hdc: ATAPI 40X DVD-ROM DVD-R CD-R/RW drive, 2048kB Cache, UDMA(33) Uniform CD-ROM driver Revision: 3.20
BUG: modprobe/2972, lock held at task exit time!
[ffffffff8809fd00] {(struct semaphore *)(&hwif->gendev_rel_sem)}.. held by: modprobe: 2972 [ffff81007e1aaf70, 116]
... acquired at: init_hwif_data+0xaf/0x1a0 [ide_core]
[snipped to not be so annoying]
Looking into this I see that gendev_rel_sem, which is only used when the device is unregistered, is defined as a semaphore. This patch changes this to be a compat_semaphore.
-- Steve
include/linux/ide.h +1 -1
@@ -910,7 +910,7 @@ unsigned sg_mapped : 1; /* sg_table and sg_nents are ready */struct device gendev; -struct semaphore gendev_rel_sem;/* To deal with device release() */ +struct compat_semaphore gendev_rel_sem;/* To deal with device release() */ void *hwif_data;/* extra hwif data */
Crap! I sent this with my kihontech email. Please respond to this instead. I'm still in the process of moving to my new machine, and the email was messed up.
Thanks,
-- Steve
Quoted 45 lines · Steven Rostedt
Hi Ingo,
I was getting the following:
BUG: nonzero lock count 10 at exit time? modprobe: 2972 [ffff81007e1aaf70, 116] Call Trace:<ffffffff8014e2db>{printk_task+43} <ffffffff8015040f>{check_no_held_locks+111} <ffffffff80136d3c>{do_exit+3036} <ffffffff80136f5c>{do_group_exit+268} <ffffffff80136f72>{sys_exit_group+18} <ffffffff8011e471>{ia32_sysret+0}---------------------------
| preempt count: 00000000 ]
| 0-level deep critical section nesting:
----------------------------------------
hdc: ATAPI 40X DVD-ROM DVD-R CD-R/RW drive, 2048kB Cache, UDMA(33) Uniform CD-ROM driver Revision: 3.20BUG: modprobe/2972, lock held at task exit time! [ffffffff8809fd00] {(struct semaphore *)(&hwif->gendev_rel_sem)}.. held by: modprobe: 2972 [
ffff81007e1aaf70, 116]
... acquired at:init_hwif_data+0xaf/0x1a0[ide_core][snipped to not be so annoying]
Looking into this I see that
gendev_rel_sem, which is only used when the device is unregistered, is defined as a semaphore. This patch changes this to be acompat_semaphore.-- Steve
Index:
linux-2.6.14-rt13/include/linux/ide.h
===================================================================include/linux/ide.h +1
-1@@ -910,7 +910,7 @@ unsigned sg_mapped : 1; /* sg_table and sg_nents are ready */struct device gendev; -struct semaphore gendev_rel_sem;/* To deal with device release() */ +struct compat_semaphore gendev_rel_sem;/* To deal with device release() */ void *hwif_data;/* extra hwif data */
Ingo Molnar
AppliedQuoted 8 lines · Steven Rostedt
I was getting the following:
BUG: nonzero lock count 10 at exit time? modprobe: 2972 [ffff81007e1aaf70, 116]Looking into this I see that
gendev_rel_sem, which is only used when the device is unregistered, is defined as a semaphore. This patch changes this to be acompat_semaphore.
thanks, applied.
Ingo
How would you feel if we move this lock to a completion() . It's such a small lock, and completions are faster anyway .. It might be a good test bed for some other compat locks .
Daniel
Quoted 61 lines · Steven Rostedt
Crap! I sent this with my kihontech email. Please respond to this instead. I'm still in the process of moving to my new machine, and the email was messed up.
Thanks,
-- Steve
Quoted 37 lines · Steven Rostedt
Hi Ingo,
I was getting the following:
BUG: nonzero lock count 10 at exit time? modprobe: 2972 [ffff81007e1aaf70, 116] Call Trace:<ffffffff8014e2db>{printk_task+43} <ffffffff8015040f>{check_no_held_locks+111} <ffffffff80136d3c>{do_exit+3036} <ffffffff80136f5c>{do_group_exit+268} <ffffffff80136f72>{sys_exit_group+18} <ffffffff8011e471>{ia32_sysret+0}---------------------------
| preempt count: 00000000 ]
| 0-level deep critical section nesting:
----------------------------------------
hdc: ATAPI 40X DVD-ROM DVD-R CD-R/RW drive, 2048kB Cache, UDMA(33) Uniform CD-ROM driver Revision: 3.20BUG: modprobe/2972, lock held at task exit time! [ffffffff8809fd00] {(struct semaphore *)(&hwif->gendev_rel_sem)}.. held by: modprobe: 2972 [
ffff81007e1aaf70, 116]
... acquired at:init_hwif_data+0xaf/0x1a0[ide_core][snipped to not be so annoying]
Looking into this I see that
gendev_rel_sem, which is only used when the device is unregistered, is defined as a semaphore. This patch changes this to be acompat_semaphore.-- Steve
Index:
linux-2.6.14-rt13/include/linux/ide.h
===================================================================include/linux/ide.h line 916
Quoted 8 lines
include/linux/ide.h +1
-1@@ -910,7 +910,7 @@ unsigned sg_mapped : 1; /* sg_table and sg_nents are ready */struct device gendev; -struct semaphore gendev_rel_sem;/* To deal with device release() */ +struct compat_semaphore gendev_rel_sem;/* To deal with device release() */ void *hwif_data;/* extra hwif data */ -
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Quoted 3 lines · Daniel Walker
How would you feel if we move this lock to a
completion(). It's such a small lock, and completions are faster anyway .. It might be a good test bed for some other compat locks .
I feel fine with that. Looking at the code a little, this might be a change for mainline.
You want to do it, or do you want me?
-- Steve