On Fri, Nov 30, 2012 at 04:23:46PM +0000, David Woodhouse wrote: > > +static void br2684_release_cb(struct atm_vcc *atmvcc) > +{ > + struct br2684_vcc *brvcc = BR2684_VCC(atmvcc); > + > + /* > + * A race with br2684_xmit_vcc() might cause a spurious wakeup just > + * after that function *stops* the queue, and qspace might actually > + * go negative before the queue stops again. We cope with that. > + */
We cannot race with br2684_xmit_vcc() because both br2684_xmit_vcc() and br2684_release_cb() are called with locked sk->sk_lock.slock. > + if (atomic_read(&brvcc->qspace) > 0) > + netif_wake_queue(brvcc->device); > + > + if (brvcc->old_release_cb) > + brvcc->old_release_cb(atmvcc); > +} Except that comment, the patch looks good: Acked-by: Krzysztof Mazur <krzys...@podlesie.net> Krzysiek -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/