linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/26] usb: gadget: remove usage of list iterator past the loop
@ 2022-03-06 17:50 Jakob Koschel
  2022-03-06 17:50 ` [PATCH 01/26] usb: gadget: fsl: remove usage of list iterator past the loop body Jakob Koschel
                   ` (25 more replies)
  0 siblings, 26 replies; 32+ messages in thread
From: Jakob Koschel @ 2022-03-06 17:50 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Jakob Koschel, linux-kernel, Linus Torvalds, Felipe Balbi,
	Joel Stanley, Andrew Jeffery, Nicolas Ferre, Alexandre Belloni,
	Claudiu Beznea, Cristian Birsan, Al Cooper, Li Yang,
	Vladimir Zapolskiy, Daniel Mack, Haojian Zhuang, Robert Jarzmik,
	Krzysztof Kozlowski, Alim Akhtar, Thierry Reding,
	Jonathan Hunter, Michal Simek,
	open list:USB GADGET/PERIPHERAL SUBSYSTEM, Mike Rapoport,
	Brian Johannesmeyer, Cristiano Giuffrida, Bos, H.J.

ok, let's start here.

This patch set removes any use of the list iterator variable past
the list body. This will allow defining the list iterator variable
within the list_for_each_entry_*() macros to avoid any (invalid)
use after the loop. If no break/goto was hit during list traversal
the list iterator variable would otherwise be a bogus pointer
since it is computed on something that is not actually an element
of the list.

I've basically followed what we discussed in:
https://lore.kernel.org/all/YhdfEIwI4EdtHdym@kroah.com/

There are some cases where it might be possible to 'ditch' the tmp
variable and refactor the code past the loop into the loop body.
For the sake of keeping the *_dequeue() functions more similar, I've
decided against doing it for some and leaving it in others.

In general there are four use cases after the loop body here:

1) using &req->req in a comparision after the loop
2) using the iterator as a pointer in a comparision after the loop
3) use the &iterator->list to compare with the head to see if the
	loop exits early
4) using the iterator past the loop but using the rc variable to see if the
	loop exits early

Jakob Koschel (26):
  usb: gadget: fsl: remove usage of list iterator past the loop body
  usb: gadget: bdc: remove usage of list iterator past the loop body
  usb: gadget: udc: atmel: remove usage of list iterator past the loop
    body
  usb: gadget: udc: pxa25x: remove usage of list iterator past the loop
    body
  usb: gadget: udc: at91: remove usage of list iterator past the loop
    body
  usb: gadget: goku_udc: remove usage of list iterator past the loop
    body
  usb: gadget: udc: gr_udc: remove usage of list iterator past the loop
    body
  usb: gadget: lpc32xx_udc: remove usage of list iterator past the loop
    body
  usb: gadget: mv_u3d: remove usage of list iterator past the loop body
  usb: gadget: udc: mv_udc_core: remove usage of list iterator past the
    loop body
  usb: gadget: net2272: remove usage of list iterator past the loop body
  usb: gadget: udc: net2280: remove usage of list iterator past the loop
    body
  usb: gadget: omap_udc: remove usage of list iterator past the loop
    body
  usb: gadget: s3c-hsudc: remove usage of list iterator past the loop
    body
  usb: gadget: udc-xilinx: remove usage of list iterator past the loop
    body
  usb: gadget: aspeed: remove usage of list iterator past the loop body
  usb: gadget: configfs: remove using list iterator after loop body as a
    ptr
  usb: gadget: legacy: remove using list iterator after loop body as a
    ptr
  usb: gadget: udc: max3420_udc: remove using list iterator after loop
    body as a ptr
  usb: gadget: tegra-xudc: remove using list iterator after loop body as
    a ptr
  usb: gadget: composite: remove check of list iterator against head
    past the loop body
  usb: gadget: pxa27x_udc: replace usage of rc to check if a list
    element was found
  usb: gadget: udc: s3c2410: replace usage of rc to check if a list
    element was found
  usb: gadget: udc: core: replace usage of rc to check if a list element
    was found
  usb: gadget: dummy_hcd: replace usage of rc to check if a list element
    was found
  usb: gadget: udc: s3c2410: replace usage of rc to check if a list
    element was found

 drivers/usb/gadget/composite.c           | 18 ++++++++++--------
 drivers/usb/gadget/configfs.c            | 20 ++++++++++++--------
 drivers/usb/gadget/legacy/hid.c          | 23 ++++++++++++-----------
 drivers/usb/gadget/udc/aspeed-vhub/epn.c | 10 ++++++----
 drivers/usb/gadget/udc/at91_udc.c        | 10 ++++++----
 drivers/usb/gadget/udc/atmel_usba_udc.c  | 11 +++++++----
 drivers/usb/gadget/udc/bdc/bdc_ep.c      | 11 ++++++++---
 drivers/usb/gadget/udc/core.c            | 16 ++++++++++------
 drivers/usb/gadget/udc/dummy_hcd.c       | 11 ++++++-----
 drivers/usb/gadget/udc/fsl_qe_udc.c      | 11 +++++++----
 drivers/usb/gadget/udc/fsl_udc_core.c    | 11 +++++++----
 drivers/usb/gadget/udc/goku_udc.c        | 10 ++++++----
 drivers/usb/gadget/udc/gr_udc.c          | 10 ++++++----
 drivers/usb/gadget/udc/lpc32xx_udc.c     | 10 ++++++----
 drivers/usb/gadget/udc/max3420_udc.c     | 11 +++++++----
 drivers/usb/gadget/udc/mv_u3d_core.c     | 10 ++++++----
 drivers/usb/gadget/udc/mv_udc_core.c     | 10 ++++++----
 drivers/usb/gadget/udc/net2272.c         | 11 ++++++-----
 drivers/usb/gadget/udc/net2280.c         | 11 +++++++----
 drivers/usb/gadget/udc/omap_udc.c        | 10 ++++++----
 drivers/usb/gadget/udc/pxa25x_udc.c      | 11 +++++++----
 drivers/usb/gadget/udc/pxa27x_udc.c      |  9 +++++----
 drivers/usb/gadget/udc/s3c-hsudc.c       | 10 ++++++----
 drivers/usb/gadget/udc/s3c2410_udc.c     | 11 ++++++-----
 drivers/usb/gadget/udc/tegra-xudc.c      | 10 ++++++----
 drivers/usb/gadget/udc/udc-xilinx.c      | 11 +++++++----
 26 files changed, 184 insertions(+), 123 deletions(-)


base-commit: 719fce7539cd3e186598e2aed36325fe892150cf
--
2.25.1


^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2022-03-07 12:13 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-06 17:50 [PATCH 00/26] usb: gadget: remove usage of list iterator past the loop Jakob Koschel
2022-03-06 17:50 ` [PATCH 01/26] usb: gadget: fsl: remove usage of list iterator past the loop body Jakob Koschel
2022-03-06 18:39   ` Linus Torvalds
2022-03-06 19:19     ` Jakob Koschel
2022-03-06 17:50 ` [PATCH 02/26] usb: gadget: bdc: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 03/26] usb: gadget: udc: atmel: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 04/26] usb: gadget: udc: pxa25x: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 05/26] usb: gadget: udc: at91: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 06/26] usb: gadget: goku_udc: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 07/26] usb: gadget: udc: gr_udc: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 08/26] usb: gadget: lpc32xx_udc: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 09/26] usb: gadget: mv_u3d: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 10/26] usb: gadget: udc: mv_udc_core: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 11/26] usb: gadget: net2272: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 12/26] usb: gadget: udc: net2280: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 13/26] usb: gadget: omap_udc: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 14/26] usb: gadget: s3c-hsudc: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 15/26] usb: gadget: udc-xilinx: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 16/26] usb: gadget: aspeed: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 17/26] usb: gadget: configfs: remove using list iterator after loop body as a ptr Jakob Koschel
2022-03-06 17:50 ` [PATCH 18/26] usb: gadget: legacy: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 19/26] usb: gadget: udc: max3420_udc: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 20/26] usb: gadget: tegra-xudc: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 21/26] usb: gadget: composite: remove check of list iterator against head past the loop body Jakob Koschel
2022-03-06 17:50 ` [PATCH 22/26] usb: gadget: pxa27x_udc: replace usage of rc to check if a list element was found Jakob Koschel
2022-03-06 17:50 ` [PATCH 23/26] usb: gadget: udc: s3c2410: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 24/26] usb: gadget: udc: core: " Jakob Koschel
2022-03-06 17:50 ` [PATCH 25/26] usb: gadget: dummy_hcd: " Jakob Koschel
2022-03-06 18:00   ` Greg KH
2022-03-06 19:16     ` Jakob Koschel
2022-03-06 17:50 ` [PATCH 26/26] usb: gadget: udc: s3c2410: " Jakob Koschel
2022-03-07 12:13   ` Krzysztof Kozlowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).