Messages in this thread | | | Date | Tue, 11 Mar 2008 20:22:12 -0700 | From | Andrew Morton <> | Subject | Re: [2.6.25-rc5-mm1] BUG() at mnt_want_write(). |
| |
On Tue, 11 Mar 2008 20:03:30 -0700 Dave Hansen <haveblue@us.ibm.com> wrote:
> On Wed, 2008-03-12 at 10:37 +0900, penguin-kernel@i-love.sakura.ne.jp > ... > > checking TSC synchronization [CPU#0 -> CPU#1]: passed. > > Brought up 2 CPUs > > khelper used greatest stack depth: 2684 bytes left > > net_namespace: 320 bytes > > NET: Registered protocol family 16 > > INFO: trying to register non-static key. > > the code is fine but needs lockdep annotation. > > turning off the locking correctness validator. > > Pid: 1, comm: swapper Not tainted 2.6.25-rc5-mm1 #1 > > [<c013dd91>] __lock_acquire+0x194/0x6a3 > > [<c0167ded>] ? cache_free_debugcheck+0x1fd/0x219 > > [<c0168938>] ? kfree+0xdb/0xe5 > > [<c013e775>] lock_acquire+0x6a/0x87 > > [<c01368e4>] ? down+0xc/0x2f > > [<c03492b1>] _spin_lock_irqsave+0x25/0x55 > > [<c01368e4>] ? down+0xc/0x2f > > [<c01368e4>] down+0xc/0x2f > > [<c022caf3>] device_add+0x152/0x243 > > [<c022cbf6>] device_register+0x12/0x15 > > [<c022ce9b>] device_create+0x76/0x90 > > [<c04a1861>] vtconsole_class_init+0x72/0xb9 > > [<c048d8ae>] ? kernel_init+0x0/0x88 > > [<c048d784>] do_initcalls+0x59/0x134 > > [<c014bcb1>] ? register_irq_proc+0xb1/0xca > > [<c01a0000>] ? proc_symlink+0x5/0x73 > > [<c048d8ae>] ? kernel_init+0x0/0x88 > > [<c048d87b>] do_basic_setup+0x1c/0x1e > > [<c048d8fb>] kernel_init+0x4d/0x88 > > [<c01045b7>] kernel_thread_helper+0x7/0x10 > > ======================= > > What is that, btw?? ^^
gregstuff. There are changes to vt.c in -mm but afacit they aren't related to vtconsole_class_init().
static int __init vtconsole_class_init(void) { int i;
vtconsole_class = class_create(THIS_MODULE, "vtconsole"); if (IS_ERR(vtconsole_class)) { printk(KERN_WARNING "Unable to create vt console class; " "errno = %ld\n", PTR_ERR(vtconsole_class)); vtconsole_class = NULL; }
/* Add system drivers to sysfs */ for (i = 0; i < MAX_NR_CON_DRIVER; i++) { struct con_driver *con = ®istered_con_driver[i];
if (con->con && !con->dev) { con->dev = device_create(vtconsole_class, NULL, MKDEV(0, con->node), "vtcon%i", con->node);
if (IS_ERR(con->dev)) { printk(KERN_WARNING "Unable to create " "device for %s; errno = %ld\n", con->desc, PTR_ERR(con->dev)); con->dev = NULL; } else { vtconsole_init_device(con); } } }
return 0; } postcore_initcall(vtconsole_class_init);
These lockdep-internal things keep on popping up but they're always rather inscrutable and bound up in internal implementation minutiae and few know what they mean. Could this be improved in any way? Maybe some huge what-can-i-do-to-fix-this comments in lockdep.c?
| |