On Wed, Mar 27, 2024 at 04:03:09PM +0000, Allen Pais wrote: > The only generic interface to execute asynchronously in the BH context is > tasklet; however, it's marked deprecated and has some design flaws. To > replace tasklets, BH workqueue support was recently added. A BH workqueue > behaves similarly to regular workqueues except that the queued work items > are executed in the BH context. > > This patch converts drivers/infiniband/* from tasklet to BH workqueue. > > Based on the work done by Tejun Heo <tj@xxxxxxxxxx> > Branch: https://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git for-6.10 > > Signed-off-by: Allen Pais <allen.lkml@xxxxxxxxx> > --- > diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c > index c0e005670d67..88d8e1c366cd 100644 > --- a/drivers/usb/core/hcd.c > +++ b/drivers/usb/core/hcd.c > @@ -1662,10 +1663,9 @@ static void __usb_hcd_giveback_urb(struct urb *urb) > usb_put_urb(urb); > } > > -static void usb_giveback_urb_bh(struct work_struct *work) > +static void usb_giveback_urb_bh(struct work_struct *t) > { > - struct giveback_urb_bh *bh = > - container_of(work, struct giveback_urb_bh, bh); > + struct giveback_urb_bh *bh = from_work(bh, t, bh); > struct list_head local_list; > > spin_lock_irq(&bh->lock); Is there any reason for this apparently pointless change of a local variable's name? Alan Stern