Skip to content

Commit

Permalink
usb: musb: be careful when using different fifo_modes
Browse files Browse the repository at this point in the history
if we have more endpoints configured than
enabled on fifo_mode, then we need to be
careful on save/restore context operations,
otherwise we will try to access uninitialized
__iomem pointer.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Felipe Balbi authored and Greg Kroah-Hartman committed Jul 1, 2011
1 parent fc0b721 commit e4e5b13
Showing 1 changed file with 20 additions and 2 deletions.
22 changes: 20 additions & 2 deletions drivers/usb/musb/musb_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -2214,7 +2214,16 @@ static void musb_save_context(struct musb *musb)
musb->context.devctl = musb_readb(musb_base, MUSB_DEVCTL);

for (i = 0; i < musb->config->num_eps; ++i) {
epio = musb->endpoints[i].regs;
struct musb_hw_ep *hw_ep;

hw_ep = &musb->endpoints[i];
if (!hw_ep)
continue;

epio = hw_ep->regs;
if (!epio)
continue;

musb->context.index_regs[i].txmaxp =
musb_readw(epio, MUSB_TXMAXP);
musb->context.index_regs[i].txcsr =
Expand Down Expand Up @@ -2280,7 +2289,16 @@ static void musb_restore_context(struct musb *musb)
musb_writeb(musb_base, MUSB_DEVCTL, musb->context.devctl);

for (i = 0; i < musb->config->num_eps; ++i) {
epio = musb->endpoints[i].regs;
struct musb_hw_ep *hw_ep;

hw_ep = &musb->endpoints[i];
if (!hw_ep)
continue;

epio = hw_ep->regs;
if (!epio)
continue;

musb_writew(epio, MUSB_TXMAXP,
musb->context.index_regs[i].txmaxp);
musb_writew(epio, MUSB_TXCSR,
Expand Down

0 comments on commit e4e5b13

Please sign in to comment.