[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <aEYrADEFcXYFPpud@gallifrey>
Date: Mon, 9 Jun 2025 00:29:52 +0000
From: "Dr. David Alan Gilbert" <linux@...blig.org>
To: Randy Dunlap <rdunlap@...radead.org>
Cc: gregkh@...uxfoundation.org, linux-usb@...r.kernel.org, corbet@....net,
linux-doc@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] usb: core: Remove unused usb_unlink_anchored_urbs
* Randy Dunlap (rdunlap@...radead.org) wrote:
>
>
> On 6/8/25 4:56 PM, linux@...blig.org wrote:
> > From: "Dr. David Alan Gilbert" <linux@...blig.org>
> >
> > usb_unlink_anchored_urbs() has been unused since it's last use was
>
> s/it's/its/ (same in previous patch's description)
Oops, I'm terrible for doing that.
> > removed in 2009 by
> > commit 9b9c5aaeedfd ("ar9170: xmit code revamp")
> >
> > Remove it.
> >
> > Signed-off-by: Dr. David Alan Gilbert <linux@...blig.org>
>
> Acked-by: Randy Dunlap <rdunlap@...radead.org>
Thanks for the fast ack's.
Dave
> Thanks.
>
> > ---
> > Documentation/driver-api/usb/anchors.rst | 11 ---------
> > drivers/usb/core/urb.c | 29 +++---------------------
> > include/linux/usb.h | 1 -
> > 3 files changed, 3 insertions(+), 38 deletions(-)
> >
> > diff --git a/Documentation/driver-api/usb/anchors.rst b/Documentation/driver-api/usb/anchors.rst
> > index 4b248e691bd6..5a93d171e76c 100644
> > --- a/Documentation/driver-api/usb/anchors.rst
> > +++ b/Documentation/driver-api/usb/anchors.rst
> > @@ -45,17 +45,6 @@ This function kills all URBs associated with an anchor. The URBs
> > are called in the reverse temporal order they were submitted.
> > This way no data can be reordered.
> >
> > -:c:func:`usb_unlink_anchored_urbs`
> > -----------------------------------
> > -
> > -
> > -This function unlinks all URBs associated with an anchor. The URBs
> > -are processed in the reverse temporal order they were submitted.
> > -This is similar to :c:func:`usb_kill_anchored_urbs`, but it will not sleep.
> > -Therefore no guarantee is made that the URBs have been unlinked when
> > -the call returns. They may be unlinked later but will be unlinked in
> > -finite time.
> > -
> > :c:func:`usb_scuttle_anchored_urbs`
> > -----------------------------------
> >
> > diff --git a/drivers/usb/core/urb.c b/drivers/usb/core/urb.c
> > index 5e52a35486af..0e58a8531d6e 100644
> > --- a/drivers/usb/core/urb.c
> > +++ b/drivers/usb/core/urb.c
> > @@ -597,10 +597,9 @@ EXPORT_SYMBOL_GPL(usb_submit_urb);
> > * code).
> > *
> > * Drivers should not call this routine or related routines, such as
> > - * usb_kill_urb() or usb_unlink_anchored_urbs(), after their disconnect
> > - * method has returned. The disconnect function should synchronize with
> > - * a driver's I/O routines to insure that all URB-related activity has
> > - * completed before it returns.
> > + * usb_kill_urb(), after their disconnect method has returned. The
> > + * disconnect function should synchronize with a driver's I/O routines
> > + * to insure that all URB-related activity has completed before it returns.
> > *
> > * This request is asynchronous, however the HCD might call the ->complete()
> > * callback during unlink. Therefore when drivers call usb_unlink_urb(), they
> > @@ -890,28 +889,6 @@ void usb_unpoison_anchored_urbs(struct usb_anchor *anchor)
> > spin_unlock_irqrestore(&anchor->lock, flags);
> > }
> > EXPORT_SYMBOL_GPL(usb_unpoison_anchored_urbs);
> > -/**
> > - * usb_unlink_anchored_urbs - asynchronously cancel transfer requests en masse
> > - * @anchor: anchor the requests are bound to
> > - *
> > - * this allows all outstanding URBs to be unlinked starting
> > - * from the back of the queue. This function is asynchronous.
> > - * The unlinking is just triggered. It may happen after this
> > - * function has returned.
> > - *
> > - * This routine should not be called by a driver after its disconnect
> > - * method has returned.
> > - */
> > -void usb_unlink_anchored_urbs(struct usb_anchor *anchor)
> > -{
> > - struct urb *victim;
> > -
> > - while ((victim = usb_get_from_anchor(anchor)) != NULL) {
> > - usb_unlink_urb(victim);
> > - usb_put_urb(victim);
> > - }
> > -}
> > -EXPORT_SYMBOL_GPL(usb_unlink_anchored_urbs);
> >
> > /**
> > * usb_anchor_suspend_wakeups
> > diff --git a/include/linux/usb.h b/include/linux/usb.h
> > index 1b2545b4363b..e8662843e68c 100644
> > --- a/include/linux/usb.h
> > +++ b/include/linux/usb.h
> > @@ -1780,7 +1780,6 @@ extern void usb_block_urb(struct urb *urb);
> > extern void usb_kill_anchored_urbs(struct usb_anchor *anchor);
> > extern void usb_poison_anchored_urbs(struct usb_anchor *anchor);
> > extern void usb_unpoison_anchored_urbs(struct usb_anchor *anchor);
> > -extern void usb_unlink_anchored_urbs(struct usb_anchor *anchor);
> > extern void usb_anchor_suspend_wakeups(struct usb_anchor *anchor);
> > extern void usb_anchor_resume_wakeups(struct usb_anchor *anchor);
> > extern void usb_anchor_urb(struct urb *urb, struct usb_anchor *anchor);
>
> --
> ~Randy
--
-----Open up your eyes, open up your mind, open up your code -------
/ Dr. David Alan Gilbert | Running GNU/Linux | Happy \
\ dave @ treblig.org | | In Hex /
\ _________________________|_____ http://www.treblig.org |_______/
Powered by blists - more mailing lists