On 20/06/18 04:49, Jia-Ju Bai wrote: > The driver may sleep with holding a spinlock. > The function call paths (from bottom to top) in Linux-4.16.7 are: > > [FUNC] mutex_lock_nested --> can sleep > drivers/xen/events/events_base.c, 839: mutex_lock_nested in > bind_evtchn_to_irq > drivers/xen/events/events_base.c, 1030: bind_evtchn_to_irq in > bind_evtchn_to_irqhandler > drivers/xen/pvcalls-front.c, 371: bind_evtchn_to_irqhandler in > create_active > drivers/xen/pvcalls-front.c, 417: create_active in pvcalls_front_connect > drivers/xen/pvcalls-front.c, 410: spin_lock in pvcalls_front_connect > > [FUNC] request_irq --> can sleep > drivers/xen/events/events_base.c, 1003: request_irq in > bind_evtchn_to_irqhandler > drivers/xen/pvcalls-front.c, 371: bind_evtchn_to_irqhandler in > create_active > drivers/xen/pvcalls-front.c, 417: create_active in pvcalls_front_connect > drivers/xen/pvcalls-front.c, 410: spin_lock in pvcalls_front_connect > > These bugs are found by my static analysis tool (DSAC-2) and checked by my > code review. > > I do not know how to correctly fix these bugs, so I just report them. > Maybe create_active() should not be called with holding a spinlock.
Right, I think calling create_active() should be done before taking the lock. Stefano, what do you think? Juergen