mirror of https://gitee.com/openkylin/linux.git
usb: musb: avoid NULL pointer dereference
instead of relying on the otg pointer, which can be NULL in certain cases, we can use the gadget and host pointers we already hold inside struct musb. Cc: <stable@vger.kernel.org> Tested-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
40f099e32c
commit
eee3f15d5f
|
@ -438,7 +438,6 @@ void musb_hnp_stop(struct musb *musb)
|
|||
static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb,
|
||||
u8 devctl)
|
||||
{
|
||||
struct usb_otg *otg = musb->xceiv->otg;
|
||||
irqreturn_t handled = IRQ_NONE;
|
||||
|
||||
dev_dbg(musb->controller, "<== DevCtl=%02x, int_usb=0x%x\n", devctl,
|
||||
|
@ -653,7 +652,7 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb,
|
|||
break;
|
||||
case OTG_STATE_B_PERIPHERAL:
|
||||
musb_g_suspend(musb);
|
||||
musb->is_active = otg->gadget->b_hnp_enable;
|
||||
musb->is_active = musb->g.b_hnp_enable;
|
||||
if (musb->is_active) {
|
||||
musb->xceiv->state = OTG_STATE_B_WAIT_ACON;
|
||||
dev_dbg(musb->controller, "HNP: Setting timer for b_ase0_brst\n");
|
||||
|
@ -669,7 +668,7 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb,
|
|||
break;
|
||||
case OTG_STATE_A_HOST:
|
||||
musb->xceiv->state = OTG_STATE_A_SUSPEND;
|
||||
musb->is_active = otg->host->b_hnp_enable;
|
||||
musb->is_active = musb->hcd->self.b_hnp_enable;
|
||||
break;
|
||||
case OTG_STATE_B_HOST:
|
||||
/* Transition to B_PERIPHERAL, see 6.8.2.6 p 44 */
|
||||
|
|
Loading…
Reference in New Issue