Kip Macy
2005-Apr-18 20:33 UTC
[Xen-devel] need more sanity checks in blkback when using grant tables
I''m upgrading FreeBSD to work against TOT in -unstable. I
haven''t
added grant table support to the blkfront yet. DOM0 can''t cope with
this:
[XEN] Netfront recovered tx=0 rxfree=0
[XEN] Initialising virtual block device driver
(XEN) (file=grant_table.c, line=347) Bad ref (8367) or flags (2).
Unable to handle kernel paging request at virtual address dfc00008
printing eip:
c029a01c
*pde = ma 2007d067 pa 0007d067
*pte = ma 00000000 pa 55555000
[<c02991d6>] dispatch_probe+0x106/0x120
[<c02990ab>] do_block_io_op+0xeb/0x110
[<c011c09f>] daemonize+0xef/0x100
[<c0298d57>] blkio_schedule+0x127/0x180
[<c0116b50>] default_wake_function+0x0/0x20
[<c01099e2>] ret_from_fork+0x6/0x1c
[<c0116b50>] default_wake_function+0x0/0x20
[<c0298c30>] blkio_schedule+0x0/0x180
[<c0107ad5>] kernel_thread_helper+0x5/0x10
Oops: 0002 [#1]
PREEMPT
Modules linked in:
CPU: 0
EIP: 0061:[<c029a01c>] Not tainted VLI
EFLAGS: 00010202 (2.6.11-xen0)
EIP is at vbd_probe_single+0xc/0x50
eax: 00000700 ebx: dfc00000 ecx: 00000155 edx: ddce2fc0
esi: 00000001 edi: daef0728 ebp: 00000155 esp: c175bef4
ds: 007b es: 007b ss: 0069
Process xenblkd (pid: 749, threadinfo=c175a000 task=c16900e0)
Stack: ddce2fcc c029a0b7 daef0728 dfc00000 ddce2fc0 c05f9a00 00000000 e080e008
daef0728 c02991d6 daef0728 dfc00000 00000155 c16900e0 00000000 00000000
ffffffff dfc00000 00000002 20af0004 fffd0002 c05f9a00 00002b0b bb9b6117
Call Trace:
[<c029a0b7>] vbd_probe+0x57/0xb0
[<c02991d6>] dispatch_probe+0x106/0x120
[<c02990ab>] do_block_io_op+0xeb/0x110
[<c011c09f>] daemonize+0xef/0x100
[<c0298d57>] blkio_schedule+0x127/0x180
[<c0116b50>] default_wake_function+0x0/0x20
[<c01099e2>] ret_from_fork+0x6/0x1c
[<c0116b50>] default_wake_function+0x0/0x20
[<c0298c30>] blkio_schedule+0x0/0x180
[<c0107ad5>] kernel_thread_helper+0x5/0x10
Code: 08 5b 5e 5f 5d e9 75 e2 13 00 e8 70 e2 13 00 eb b7 8d b4 26 00
00 00 00 8d bc 27 00 00 00 00 53 8b 54 24 10 8b 5c 24 0c 0f b7 02
<66> 89 43 08 0f b6 42 03 89 c1 83 c9 40 80 7a 02 00 0f 45 c1 66
<6>note: xenblkd[749] exited with preempt_count 1
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Christopher Clark
2005-Apr-19 00:04 UTC
Re: [Xen-devel] need more sanity checks in blkback when using grant tables
Thanks for the catch, Kip. Fix inline below.
Signed-off-by: Christopher Clark
===== linux-2.6.11-xen-sparse/drivers/xen/blkback/blkback.c 1.38 vs edited
====--- 1.38/linux-2.6.11-xen-sparse/drivers/xen/blkback/blkback.c
2005-04-05 05:28:05 -07:00
+++ edited/linux-2.6.11-xen-sparse/drivers/xen/blkback/blkback.c
2005-04-18 18:48:12 -07:00
@@ -397,7 +397,7 @@
GNTTABOP_map_grant_ref, &op, 1)))
BUG();
- if ( op.u.map_grant_ref.dev_bus_addr == 0 )
+ if ( op.u.map_grant_ref.handle < 0 )
goto out;
pending_handle(pending_idx, 0) = op.u.map_grant_ref.handle;
@@ -500,7 +500,7 @@
for ( i = 0; i < nseg; i++ )
{
- if ( unlikely(aop[i].u.map_grant_ref.dev_bus_addr == 0) )
+ if ( unlikely(aop[i].u.map_grant_ref.handle < 0) )
{
DPRINTK("invalid buffer -- could not remap it\n");
fast_flush_area(pending_idx, nseg);
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel