usb: fixes for v5.0-rc2

Few minor bug fixes on dwc3: adding a missing synchronize_irq() to
 prevent a very rare spurious interrupt during suspend; clearing
 needs_extra_trb flag to prevent it from being left erroneously set and
 confusing the driver when the request is recycled; initializing
 link_to a sensible default during init.
 
 Apart from these, one minor fix on dwc2 and another on f_sourcesink.c
 -----BEGIN PGP SIGNATURE-----
 
 iQJRBAABCAA7FiEElLzh7wn96CXwjh2IzL64meEamQYFAlxBc/YdHGZlbGlwZS5i
 YWxiaUBsaW51eC5pbnRlbC5jb20ACgkQzL64meEamQb9WA//SfSbySwKTlEcY3Yj
 /m8H63djJfkSjK9DWWWOot8Lx2E48gfxEp/iy/Zg6gMJWVZffHWUEh4WRMcID/PV
 4f6JhMot/hY0pfMIC+6pj+UIMP4oX+DUEs3/FsSuY1xXJPKAXf5+jwojxno+CpQ2
 e0aCPgyYG0hrCfA2DjsqtFjqw5dJQs6F8IdtlSOPw8aKXSTykQgK6p0NplFN5QDT
 idvrAhlE6P+fbWGHoGr2pCdF38ANK7G5m2zZ2co0Mr6JmtwmooxnxBNpSfkXnD8G
 2RsYA6ckzTSQLEOodlEU/U18qTzKzViAZaEIVTFQKDpiYgeP9Xeix8dUg2i/gHP0
 wZ4LRuElc/0VKndNTAuGcItlq6gk967kxieH9ZiUcrLgjh61cA6fECzq8nQbc8QB
 Xm3TLDAKMh4afprxmfGgk+cPlaT55OzYyYgsjXfOe5VileFcH2FgY4fzfuAeRdUi
 +gWJjR41ZpFfs2GMzSlByQktNpeBDQD4Az2MXXyVHXH+uuocfY/U5MBpQjlJH8Sv
 2lPuEEZ9zErnw5HfDcgO9vFfcqNr4tTqtGoibTTDbHyP2zu9PPbKM2R9Fx6ZesUV
 UUc5twiPvx6yyvCXYbcqohxV3FOnw5WgrqqV88iUf+elzvTNJTrIHjq9Fk9V0S7t
 WfS1FZ2TdStnDzLBH2M8+lQDD7w=
 =d/vD
 -----END PGP SIGNATURE-----

Merge tag 'fixes-for-v5.0-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-linus

Felipe writes:

usb: fixes for v5.0-rc2

Few minor bug fixes on dwc3: adding a missing synchronize_irq() to
prevent a very rare spurious interrupt during suspend; clearing
needs_extra_trb flag to prevent it from being left erroneously set and
confusing the driver when the request is recycled; initializing
link_to a sensible default during init.

Apart from these, one minor fix on dwc2 and another on f_sourcesink.c

* tag 'fixes-for-v5.0-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb:
  usb: dwc2: gadget: Fix Remote Wakeup interrupt bit clearing
  usb: gadget: Potential NULL dereference on allocation error
  usb: dwc3: gadget: Fix the uninitialized link_state when udc starts
  usb: dwc3: gadget: Clear req->needs_extra_trb flag on cleanup
  usb: dwc3: gadget: synchronize_irq dwc irq in suspend
This commit is contained in:
Greg Kroah-Hartman 2019-01-18 09:32:26 +01:00
commit 575088f600
3 changed files with 6 additions and 2 deletions

View File

@ -261,7 +261,7 @@ static void dwc2_gadget_wkup_alert_handler(struct dwc2_hsotg *hsotg)
if (gintsts2 & GINTSTS2_WKUP_ALERT_INT) {
dev_dbg(hsotg->dev, "%s: Wkup_Alert_Int\n", __func__);
dwc2_clear_bit(hsotg, GINTSTS2, GINTSTS2_WKUP_ALERT_INT);
dwc2_set_bit(hsotg, GINTSTS2, GINTSTS2_WKUP_ALERT_INT);
dwc2_set_bit(hsotg, DCTL, DCTL_RMTWKUPSIG);
}
}

View File

@ -177,6 +177,7 @@ static void dwc3_gadget_del_and_unmap_request(struct dwc3_ep *dep,
req->started = false;
list_del(&req->list);
req->remaining = 0;
req->needs_extra_trb = false;
if (req->request.status == -EINPROGRESS)
req->request.status = status;
@ -1984,6 +1985,7 @@ static int __dwc3_gadget_start(struct dwc3 *dwc)
/* begin to receive SETUP packets */
dwc->ep0state = EP0_SETUP_PHASE;
dwc->link_state = DWC3_LINK_STATE_SS_DIS;
dwc3_ep0_out_start(dwc);
dwc3_gadget_enable_irq(dwc);
@ -3379,6 +3381,8 @@ int dwc3_gadget_suspend(struct dwc3 *dwc)
dwc3_disconnect_gadget(dwc);
__dwc3_gadget_stop(dwc);
synchronize_irq(dwc->irq_gadget);
return 0;
}

View File

@ -838,7 +838,7 @@ static struct usb_function *source_sink_alloc_func(
ss = kzalloc(sizeof(*ss), GFP_KERNEL);
if (!ss)
return NULL;
return ERR_PTR(-ENOMEM);
ss_opts = container_of(fi, struct f_ss_opts, func_inst);