[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [bug report] xen: add the Xenbus sysfs and virtual device hotplug driver
Hello Jeremy Fitzhardinge, The patch 4bac07c993d0: "xen: add the Xenbus sysfs and virtual device hotplug driver" from Jul 17, 2007, leads to the following static checker warning: drivers/xen/xenbus/xenbus_xs.c:125 xs_request_enter() warn: sleeping in atomic context drivers/xen/xenbus/xenbus_client.c 413 /** 414 * Allocate an event channel for the given xenbus_device, assigning the newly 415 * created local port to *port. Return 0 on success, or -errno on error. On 416 * error, the device will switch to XenbusStateClosing, and the error will be 417 * saved in the store. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The documentation is very clear how it's supposed to handle the error. 418 */ 419 int xenbus_alloc_evtchn(struct xenbus_device *dev, evtchn_port_t *port) 420 { 421 struct evtchn_alloc_unbound alloc_unbound; 422 int err; 423 424 alloc_unbound.dom = DOMID_SELF; 425 alloc_unbound.remote_dom = dev->otherend_id; 426 427 err = HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, 428 &alloc_unbound); 429 if (err) 430 xenbus_dev_fatal(dev, err, "allocating event channel"); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The xenbus_dev_fatal() has a bunch of sleeping functions like xenbus_write() and we could be holding a spinlock here. pvcalls_front_connect() <-- holds &bedata->socket_lock --> create_active() --> xenbus_alloc_evtchn() 431 else 432 *port = alloc_unbound.port; 433 434 return err; 435 } regards, dan carpenter
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |