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
Index: linux-2.6.14-rt13/include/linux/ide.h
===================================================================
--- linux-2.6.14-rt13.orig/include/linux/ide.h 2005-11-15 11:12:37.000000000 -0500
+++ linux-2.6.14-rt13/include/linux/ide.h 2005-11-16 10:09:10.000000000 -0500
@@ -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
On Wed, 2005-11-16 at 10:31 -0500, Steven Rostedt wrote:
> 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
>
> Index: linux-2.6.14-rt13/include/linux/ide.h
> ===================================================================
> --- linux-2.6.14-rt13.orig/include/linux/ide.h 2005-11-15 11:12:37.000000000 -0500
> +++ linux-2.6.14-rt13/include/linux/ide.h 2005-11-16 10:09:10.000000000 -0500
> @@ -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 */
>
>
* Steven Rostedt <[email protected]> wrote:
> 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 a compat_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
On Wed, 2005-11-16 at 10:34 -0500, Steven Rostedt wrote:
> 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
>
>
> On Wed, 2005-11-16 at 10:31 -0500, Steven Rostedt wrote:
> > 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
> >
> > Index: linux-2.6.14-rt13/include/linux/ide.h
> > ===================================================================
> > --- linux-2.6.14-rt13.orig/include/linux/ide.h 2005-11-15 11:12:37.000000000 -0500
> > +++ linux-2.6.14-rt13/include/linux/ide.h 2005-11-16 10:09:10.000000000 -0500
> > @@ -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/
On Thu, 2005-11-17 at 08:08 -0800, Daniel Walker wrote:
> 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