Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 058e698b authored by Julia Lawall's avatar Julia Lawall Committed by Greg Kroah-Hartman
Browse files

USB: gadget: Drop NULL test on list_entry result

list_entry, which is an alias for container_of, cannot return NULL, as
there is no way to add a NULL value to a doubly linked list.

A simplified version of the semantic match that findds this problem is as
follows:
(http://www.emn.fr/x-info/coccinelle/

)

// <smpl>
@r@
expression x,E;
statement S1,S2;
position p,p1;
@@

*x = list_entry@p(...)
... when != x = E
*if@p1 (x == NULL) S1 else S2
// </smpl>

Signed-off-by: default avatarJulia Lawall <julia@diku.dk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent d12b85e7
Loading
Loading
Loading
Loading
+25 −31
Original line number Diff line number Diff line
@@ -2378,7 +2378,6 @@ static irqreturn_t udc_data_in_isr(struct udc *dev, int ep_ix)
		if (!ep->cancel_transfer && !list_empty(&ep->queue)) {
			req = list_entry(ep->queue.next,
					struct udc_request, queue);
			if (req) {
			/*
			 * length bytes transfered
			 * check dma done of last desc. in PPBDU mode
@@ -2390,8 +2389,7 @@ static irqreturn_t udc_data_in_isr(struct udc *dev, int ep_ix)
						AMD_GETBITS(td->status,
						UDC_DMA_IN_STS_BS);
					/* don't care DMA done */
						req->req.actual =
							req->req.length;
					req->req.actual = req->req.length;
				}
			} else {
				/* assume all bytes transferred */
@@ -2405,13 +2403,9 @@ static irqreturn_t udc_data_in_isr(struct udc *dev, int ep_ix)
				/* further request available ? */
				if (list_empty(&ep->queue)) {
					/* disable interrupt */
						tmp = readl(
							&dev->regs->ep_irqmsk);
					tmp = readl(&dev->regs->ep_irqmsk);
					tmp |= AMD_BIT(ep->num);
						writel(tmp,
							&dev->regs->ep_irqmsk);
					}

					writel(tmp, &dev->regs->ep_irqmsk);
				}
			}
		}