[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Prevent an oops in Dom0 that occurs when a CD device, specified as one
# HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxx # Node ID df1521633fb519727adb80f15ea1f2e5b69dc3df # Parent c5551469f00e7e4dd79fe81d544c551f256da94b Prevent an oops in Dom0 that occurs when a CD device, specified as one of the 'hardrives' in the 'disk=' line of a para-virtualized guest's def file, has no media when the guest is started. The oops occurs in vbd.c when vbd_size() is called from connect() (in xenbus.c) and the vbd pointer is really an error code that comes from the failed open that occurred in vbd_create(). Based on a patch from Ross Maxfield at Novell. Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> --- linux-2.6-xen-sparse/drivers/xen/blkback/vbd.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) diff -r c5551469f00e -r df1521633fb5 linux-2.6-xen-sparse/drivers/xen/blkback/vbd.c --- a/linux-2.6-xen-sparse/drivers/xen/blkback/vbd.c Tue May 16 09:21:33 2006 +0100 +++ b/linux-2.6-xen-sparse/drivers/xen/blkback/vbd.c Tue May 16 09:40:38 2006 +0100 @@ -55,6 +55,7 @@ int vbd_create(blkif_t *blkif, blkif_vde unsigned minor, int readonly) { struct vbd *vbd; + struct block_device *bdev; vbd = &blkif->vbd; vbd->handle = handle; @@ -63,14 +64,16 @@ int vbd_create(blkif_t *blkif, blkif_vde vbd->pdevice = MKDEV(major, minor); - vbd->bdev = open_by_devnum( - vbd->pdevice, - vbd->readonly ? FMODE_READ : FMODE_WRITE); - if (IS_ERR(vbd->bdev)) { - DPRINTK("vbd_creat: device %08x doesn't exist.\n", + bdev = open_by_devnum(vbd->pdevice, + vbd->readonly ? FMODE_READ : FMODE_WRITE); + + if (IS_ERR(bdev)) { + DPRINTK("vbd_creat: device %08x could not be opened.\n", vbd->pdevice); return -ENOENT; } + + vbd->bdev = bdev; if (vbd->bdev->bd_disk == NULL) { DPRINTK("vbd_creat: device %08x doesn't exist.\n", _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |