Messages in this thread | | | Date | Fri, 3 Mar 2000 16:56:45 -0500 | From | James Manning <> | Subject | Re: nbd problems under 2.3.48 |
| |
[ Friday, March 3, 2000 ] James Manning wrote: > I tried stripping out all other block devices not needed for booting > and built-in nbd instead of a module, and still got a very similar > oops (same place, same process, etc). raw and ksymoops out attached.
The oops is being caused by the following check in nbd_clear_que:
if (lo != &nbd_dev[MINOR(req->rq_dev)]) {
Adding a printk to print out various pointer values right before the change for things involved (all with %p)
printk(KERN_ALERT "NBD: pointers " "lo/&queue_head/(&queue_head)->next/req/nbd_dev" " = %p/%p/%p/%p/%p\n", lo,&lo->queue_head,(&lo->queue_head)->next,req,nbd_dev);
and then I got the following:
NBD: pointers lo/&queue_head/(&queue_head)->next/req/nbd_dev = c02edb00/c02edb18/00000000/00000000/c02edb00
since ->next is null and &queue_head isn't (queue_head looks totally zeroed, actually, which explains ->prev == req also being NULL), list_empty returns false...
is this a list_empty() bug, then? or could the above pointers actually be part of a non-empty list? should list_empty be checking head->prev vs. head->next?
James
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |