Skip to content

Commit f9c56cd

Browse files
Ido ShayevitzFelipe Balbi
Ido Shayevitz
authored and
Felipe Balbi
committed
usb: gadget: Clear usb_endpoint_descriptor inside the struct usb_ep on disable
This fix a bug in f_serial, which expect the ep->desc to be NULL after disabling an endpoint. Cc: [email protected] Signed-off-by: Ido Shayevitz <[email protected]> Signed-off-by: Felipe Balbi <[email protected]>
1 parent a003c18 commit f9c56cd

15 files changed

+18
-0
lines changed

drivers/usb/dwc3/gadget.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,7 @@ static int __dwc3_gadget_ep_disable(struct dwc3_ep *dep)
440440

441441
dep->stream_capable = false;
442442
dep->desc = NULL;
443+
dep->endpoint.desc = NULL;
443444
dep->comp_desc = NULL;
444445
dep->type = 0;
445446
dep->flags = 0;

drivers/usb/gadget/amd5536udc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,7 @@ static void ep_init(struct udc_regs __iomem *regs, struct udc_ep *ep)
445445

446446
VDBG(ep->dev, "ep-%d reset\n", ep->num);
447447
ep->desc = NULL;
448+
ep->ep.desc = NULL;
448449
ep->ep.ops = &udc_ep_ops;
449450
INIT_LIST_HEAD(&ep->queue);
450451

drivers/usb/gadget/at91_udc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,7 @@ static int at91_ep_disable (struct usb_ep * _ep)
557557

558558
/* restore the endpoint's pristine config */
559559
ep->desc = NULL;
560+
ep->ep.desc = NULL;
560561
ep->ep.maxpacket = ep->maxpacket;
561562

562563
/* reset fifos and endpoint */

drivers/usb/gadget/atmel_usba_udc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,7 @@ static int usba_ep_disable(struct usb_ep *_ep)
659659
return -EINVAL;
660660
}
661661
ep->desc = NULL;
662+
ep->ep.desc = NULL;
662663

663664
list_splice_init(&ep->queue, &req_list);
664665
if (ep->can_dma) {

drivers/usb/gadget/ci13xxx_udc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2181,6 +2181,7 @@ static int ep_disable(struct usb_ep *ep)
21812181
} while (mEp->dir != direction);
21822182

21832183
mEp->desc = NULL;
2184+
mEp->ep.desc = NULL;
21842185

21852186
spin_unlock_irqrestore(mEp->lock, flags);
21862187
return retval;

drivers/usb/gadget/fsl_qe_udc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1638,6 +1638,7 @@ static int qe_ep_disable(struct usb_ep *_ep)
16381638
/* Nuke all pending requests (does flush) */
16391639
nuke(ep, -ESHUTDOWN);
16401640
ep->desc = NULL;
1641+
ep->ep.desc = NULL;
16411642
ep->stopped = 1;
16421643
ep->tx_req = NULL;
16431644
qe_ep_reset(udc, ep->epnum);

drivers/usb/gadget/fsl_udc_core.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,7 @@ static int fsl_ep_disable(struct usb_ep *_ep)
659659
nuke(ep, -ESHUTDOWN);
660660

661661
ep->desc = NULL;
662+
ep->ep.desc = NULL;
662663
ep->stopped = 1;
663664
spin_unlock_irqrestore(&udc->lock, flags);
664665

drivers/usb/gadget/goku_udc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ static void ep_reset(struct goku_udc_regs __iomem *regs, struct goku_ep *ep)
235235

236236
ep->ep.maxpacket = MAX_FIFO_SIZE;
237237
ep->desc = NULL;
238+
ep->ep.desc = NULL;
238239
ep->stopped = 1;
239240
ep->irqs = 0;
240241
ep->dma = 0;

drivers/usb/gadget/langwell_udc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,7 @@ static int langwell_ep_disable(struct usb_ep *_ep)
492492
nuke(ep, -ESHUTDOWN);
493493

494494
ep->desc = NULL;
495+
ep->ep.desc = NULL;
495496
ep->stopped = 1;
496497

497498
spin_unlock_irqrestore(&dev->lock, flags);

drivers/usb/gadget/mv_udc_core.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -608,6 +608,7 @@ static int mv_ep_disable(struct usb_ep *_ep)
608608
nuke(ep, -ESHUTDOWN);
609609

610610
ep->desc = NULL;
611+
ep->ep.desc = NULL;
611612
ep->stopped = 1;
612613

613614
spin_unlock_irqrestore(&udc->lock, flags);

drivers/usb/gadget/omap_udc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,7 @@ static int omap_ep_disable(struct usb_ep *_ep)
251251

252252
spin_lock_irqsave(&ep->udc->lock, flags);
253253
ep->desc = NULL;
254+
ep->ep.desc = NULL;
254255
nuke (ep, -ESHUTDOWN);
255256
ep->ep.maxpacket = ep->maxpacket;
256257
ep->has_dma = 0;

drivers/usb/gadget/pch_udc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1742,6 +1742,7 @@ static int pch_udc_pcd_ep_disable(struct usb_ep *usbep)
17421742
pch_udc_ep_disable(ep);
17431743
pch_udc_disable_ep_interrupts(ep->dev, PCH_UDC_EPINT(ep->in, ep->num));
17441744
ep->desc = NULL;
1745+
ep->ep.desc = NULL;
17451746
INIT_LIST_HEAD(&ep->queue);
17461747
spin_unlock_irqrestore(&ep->dev->lock, iflags);
17471748
return 0;

drivers/usb/gadget/pxa25x_udc.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,7 @@ static int pxa25x_ep_disable (struct usb_ep *_ep)
283283
pxa25x_ep_fifo_flush (_ep);
284284

285285
ep->desc = NULL;
286+
ep->ep.desc = NULL;
286287
ep->stopped = 1;
287288

288289
local_irq_restore(flags);
@@ -1192,6 +1193,7 @@ static void udc_reinit(struct pxa25x_udc *dev)
11921193
list_add_tail (&ep->ep.ep_list, &dev->gadget.ep_list);
11931194

11941195
ep->desc = NULL;
1196+
ep->ep.desc = NULL;
11951197
ep->stopped = 0;
11961198
INIT_LIST_HEAD (&ep->queue);
11971199
ep->pio_irqs = 0;

drivers/usb/gadget/s3c-hsudc.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,7 @@ static int s3c_hsudc_ep_disable(struct usb_ep *_ep)
817817
s3c_hsudc_nuke_ep(hsep, -ESHUTDOWN);
818818

819819
hsep->desc = 0;
820+
hsep->ep.desc = NULL;
820821
hsep->stopped = 1;
821822

822823
spin_unlock_irqrestore(&hsudc->lock, flags);
@@ -1006,6 +1007,7 @@ static void s3c_hsudc_initep(struct s3c_hsudc *hsudc,
10061007
hsep->ep.ops = &s3c_hsudc_ep_ops;
10071008
hsep->fifo = hsudc->regs + S3C_BR(epnum);
10081009
hsep->desc = 0;
1010+
hsep->ep.desc = NULL;
10091011
hsep->stopped = 0;
10101012
hsep->wedge = 0;
10111013

drivers/usb/gadget/s3c2410_udc.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1148,6 +1148,7 @@ static int s3c2410_udc_ep_disable(struct usb_ep *_ep)
11481148
dprintk(DEBUG_NORMAL, "ep_disable: %s\n", _ep->name);
11491149

11501150
ep->desc = NULL;
1151+
ep->ep.desc = NULL;
11511152
ep->halted = 1;
11521153

11531154
s3c2410_udc_nuke (ep->dev, ep, -ESHUTDOWN);
@@ -1630,6 +1631,7 @@ static void s3c2410_udc_reinit(struct s3c2410_udc *dev)
16301631

16311632
ep->dev = dev;
16321633
ep->desc = NULL;
1634+
ep->ep.desc = NULL;
16331635
ep->halted = 0;
16341636
INIT_LIST_HEAD (&ep->queue);
16351637
}

0 commit comments

Comments
 (0)