diff -r 1a2756a11b6d -r 3951f76667d4 linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c --- a/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c Mon Nov 7 10:53:53 2005 +++ b/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c Mon Nov 7 11:08:33 2005 @@ -114,9 +114,9 @@ handle = pending_handle(idx, i); if (handle == BLKBACK_INVALID_HANDLE) continue; - unmap[i].host_addr = MMAP_VADDR(idx, i); - unmap[i].dev_bus_addr = 0; - unmap[i].handle = handle; + unmap[invcount].host_addr = MMAP_VADDR(idx, i); + unmap[invcount].dev_bus_addr = 0; + unmap[invcount].handle = handle; pending_handle(idx, i) = BLKBACK_INVALID_HANDLE; invcount++; } @@ -516,9 +516,9 @@ ret = kernel_thread(blkio_schedule, 0, CLONE_FS | CLONE_FILES); BUG_ON(ret < 0); + memset(pending_grant_handles, BLKBACK_INVALID_HANDLE, MMAP_PAGES); + blkif_xenbus_init(); - - memset(pending_grant_handles, BLKBACK_INVALID_HANDLE, MMAP_PAGES); return 0; }