From mboxrd@z Thu Jan 1 00:00:00 1970 From: Horms Subject: [PATCH] Prevent vbd frontend from oopsing if the underlying device doesn't exist Date: Mon, 26 Dec 2005 08:55:45 +0000 (UTC) Message-ID: Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org 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. Signed-Off-By: Horms diff -r e3b95be182e2 -r 9c36c9568da0 linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c --- a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c Thu Dec 22 03:30:14 2005 +++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c Mon Dec 26 08:52:20 2005 @@ -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);