[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [linux-2.6.18-xen] usbfront: fix some bugs
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1268659221 0 # Node ID 505690874cd9d5220b7864f2a3c8e1b28b8add79 # Parent f66d155ce457dab7a191bc199e878c07c2d2aead usbfront: fix some bugs Signed-off-by: K. Y. Srinivasan <ksrinivasan@xxxxxxxxxx> --- drivers/xen/usbfront/xenbus.c | 24 ++++++++++++++---------- 1 files changed, 14 insertions(+), 10 deletions(-) diff -r f66d155ce457 -r 505690874cd9 drivers/xen/usbfront/xenbus.c --- a/drivers/xen/usbfront/xenbus.c Mon Mar 01 10:19:41 2010 +0000 +++ b/drivers/xen/usbfront/xenbus.c Mon Mar 15 13:20:21 2010 +0000 @@ -192,11 +192,23 @@ static int connect(struct xenbus_device usbif_conn_request_t *req; int i, idx, err; int notify; + char name[TASK_COMM_LEN]; + struct usb_hcd *hcd; + + hcd = info_to_hcd(info); + snprintf(name, TASK_COMM_LEN, "xenhcd.%d", hcd->self.busnum); err = talk_to_backend(dev, info); if (err) return err; + info->kthread = kthread_run(xenhcd_schedule, info, name); + if (IS_ERR(info->kthread)) { + err = PTR_ERR(info->kthread); + info->kthread = NULL; + xenbus_dev_fatal(dev, err, "Error creating thread"); + return err; + } /* prepare ring for hotplug notification */ for (idx = 0, i = 0; i < USB_CONN_RING_SIZE; i++) { req = RING_GET_REQUEST(&info->conn_ring, idx); @@ -274,7 +286,6 @@ static int usbfront_probe(struct xenbus_ int err; struct usb_hcd *hcd; struct usbfront_info *info; - char name[TASK_COMM_LEN]; if (usb_disabled()) return -ENODEV; @@ -298,13 +309,6 @@ static int usbfront_probe(struct xenbus_ } init_waitqueue_head(&info->wq); - snprintf(name, TASK_COMM_LEN, "xenhcd.%d", hcd->self.busnum); - info->kthread = kthread_run(xenhcd_schedule, info, name); - if (IS_ERR(info->kthread)) { - err = PTR_ERR(info->kthread); - info->kthread = NULL; - goto fail; - } return 0; @@ -343,8 +347,8 @@ static void backend_changed(struct xenbu case XenbusStateInitWait: if (dev->state != XenbusStateInitialising) break; - connect(dev); - xenbus_switch_state(dev, XenbusStateConnected); + if (!connect(dev)) + xenbus_switch_state(dev, XenbusStateConnected); break; case XenbusStateClosing: _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |