提交 058e698b 编写于 作者: J Julia Lawall 提交者: Greg Kroah-Hartman

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: NJulia Lawall <julia@diku.dk>
Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
上级 d12b85e7
...@@ -2378,7 +2378,6 @@ static irqreturn_t udc_data_in_isr(struct udc *dev, int ep_ix) ...@@ -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)) { if (!ep->cancel_transfer && !list_empty(&ep->queue)) {
req = list_entry(ep->queue.next, req = list_entry(ep->queue.next,
struct udc_request, queue); struct udc_request, queue);
if (req) {
/* /*
* length bytes transfered * length bytes transfered
* check dma done of last desc. in PPBDU mode * 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) ...@@ -2390,8 +2389,7 @@ static irqreturn_t udc_data_in_isr(struct udc *dev, int ep_ix)
AMD_GETBITS(td->status, AMD_GETBITS(td->status,
UDC_DMA_IN_STS_BS); UDC_DMA_IN_STS_BS);
/* don't care DMA done */ /* don't care DMA done */
req->req.actual = req->req.actual = req->req.length;
req->req.length;
} }
} else { } else {
/* assume all bytes transferred */ /* assume all bytes transferred */
...@@ -2405,13 +2403,9 @@ static irqreturn_t udc_data_in_isr(struct udc *dev, int ep_ix) ...@@ -2405,13 +2403,9 @@ static irqreturn_t udc_data_in_isr(struct udc *dev, int ep_ix)
/* further request available ? */ /* further request available ? */
if (list_empty(&ep->queue)) { if (list_empty(&ep->queue)) {
/* disable interrupt */ /* disable interrupt */
tmp = readl( tmp = readl(&dev->regs->ep_irqmsk);
&dev->regs->ep_irqmsk);
tmp |= AMD_BIT(ep->num); tmp |= AMD_BIT(ep->num);
writel(tmp, writel(tmp, &dev->regs->ep_irqmsk);
&dev->regs->ep_irqmsk);
}
} }
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册