Skip to contentSkip to conversation

Prevent vbd frontend from oopsing if the underlying device doesn't exist

PATCH Applied Horms 2 participants 2 messages Dec 26, 2005 – Dec 27, 2005

lore
Share & tools
lore

Horms

author
#0 lore raw

PATCH 1/1 Prevent vbd frontend from oopsing if the underlying device doesn't exist

Prevent vbd frontend from oopsing if the underlying device doesn't exist.

connect() in blkfront.c was not checking the return value of xlvbd_add(). In my case xlvbd_alloc_gendisk() was failing in xlvbd_add(), and the subsequent call to kick_pending_request_queues() barfed because info->rq was unitinialised.

linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c +6 -1
diff -r e3b95be182e2 -r 9c36c9568da0 linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c
@@ -338,7 +338,12 @@
 		return;
 	}
 
-        xlvbd_add(sectors, info->vdevice, binfo, sector_size, info);
+        err = xlvbd_add(sectors, info->vdevice, binfo, sector_size, info);
+	if (err) {
+		xenbus_dev_fatal(info->xbdev, err, "xlvbd_add at %s",
+				 info->xbdev->otherend);
+		return;
+	}
 
 	(void)xenbus_switch_state(info->xbdev, NULL, XenbusStateConnected); 
#1 lore raw
Quoted 6 lines · Horms

Prevent vbd frontend from oopsing if the underlying device doesn't exist.

connect() in blkfront.c was not checking the return value of xlvbd_add(). In my case xlvbd_alloc_gendisk() was failing in xlvbd_add(), and the subsequent call to kick_pending_request_queues() barfed because info->rq was unitinialised.

Thanks, applied.

Signature · 1 line
Vincent Hanquez