From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeremy Fitzhardinge Subject: Re: [PATCH] xen/blkfront: allow xenbus state transition to Closing->Closed when not Connected. Date: Mon, 18 May 2009 10:23:01 -0700 Message-ID: <4A119975.4000501@goop.org> References: <1242650931.20731.41.camel@zakaz.uk.xensource.com> <1242650974-13056-2-git-send-email-ian.campbell@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1242650974-13056-2-git-send-email-ian.campbell@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Ian Campbell Cc: xen-devel@lists.xensource.com, Jens Axboe List-Id: xen-devel@lists.xenproject.org Ian Campbell wrote: > This situation can occur when attempting to attach a block device whose backend > is an empty physical CD-ROM driver. The backend in this case will go directly > from the Initialising state to Closing->Closed. Previously this would result in > a NULL pointer deref on info->gd (xenbus_dev_fatal does not return as a1a15ac5 > seems to expect) > > Signed-off-by: Ian Campbell > Cc: Jeremy Fitzhardinge > Jens, does this look OK to you? Acked-by: Jeremy Fitzhardinge Thanks, J > --- > drivers/block/xen-blkfront.c | 6 ++++-- > 1 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c > index aa0c94b..a6cbf7b 100644 > --- a/drivers/block/xen-blkfront.c > +++ b/drivers/block/xen-blkfront.c > @@ -977,8 +977,10 @@ static void backend_changed(struct xenbus_device *dev, > break; > > case XenbusStateClosing: > - if (info->gd == NULL) > - xenbus_dev_fatal(dev, -ENODEV, "gd is NULL"); > + if (info->gd == NULL) { > + xenbus_frontend_closed(dev); > + break; > + } > bd = bdget_disk(info->gd, 0); > if (bd == NULL) > xenbus_dev_fatal(dev, -ENODEV, "bdget failed"); >