Hello Sebastian

Thanks for checking this out,

    SA> I tried to figure out if the URB-completion handler uses any
    SA> locking and stumbled here.

    SA> i2400m_pm_notifier() is called from process context. This
    SA> function invokes i2400m_fw_cache() + i2400m_fw_uncache(). Both
    SA> functions do spin_lock(&i2400m->rx_lock); while in other
    SA> places (say i2400mu_rxd()) it does
    SA> spin_lock_irqsave(&i2400m->rx_lock, flags);

    SA> So what do I miss? Is this lock never used in interrupt
    SA> context and lockdep didn't complain or did nobody try suspend
    SA> with this driver before?  From what I can tell
    SA> i2400m_dev_bootstrap() has the same locking problem.

I don't remember ever getting to try suspend in the driver, so that
might be the case. That said, I haven't touched this code in years, or
the current locking best practices, so I'll let others chime in,
Thomas being prolly one of the key ones.

Reply via email to