From ec77bde6466da10eaaa1a314bdafdd445c2d9f8d Mon Sep 17 00:00:00 2001 From: Felipe Balbi Date: Sat, 15 Oct 2011 21:37:35 +0300 Subject: [PATCH] --- yaml --- r: 280813 b: refs/heads/master c: f96a6ec1db1ac730b5a031f2c2f7fcc6b07459d8 h: refs/heads/master i: 280811: 10a6349a40fbd231a1a8c5103521e3ae59bffbb0 v: v3 --- [refs] | 2 +- trunk/drivers/usb/dwc3/ep0.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 4072e7e99822..10e4a740ebba 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c4da177f1f5560dfaf2e057cbf85411cd65c5426 +refs/heads/master: f96a6ec1db1ac730b5a031f2c2f7fcc6b07459d8 diff --git a/trunk/drivers/usb/dwc3/ep0.c b/trunk/drivers/usb/dwc3/ep0.c index 69a4e43ddf59..24b447e40bc7 100644 --- a/trunk/drivers/usb/dwc3/ep0.c +++ b/trunk/drivers/usb/dwc3/ep0.c @@ -422,8 +422,15 @@ static int dwc3_ep0_set_address(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) u32 reg; addr = le16_to_cpu(ctrl->wValue); - if (addr > 127) + if (addr > 127) { + dev_dbg(dwc->dev, "invalid device address %d\n", addr); return -EINVAL; + } + + if (dwc->dev_state == DWC3_CONFIGURED_STATE) { + dev_dbg(dwc->dev, "trying to set address when configured\n"); + return -EINVAL; + } reg = dwc3_readl(dwc->regs, DWC3_DCFG); reg &= ~(DWC3_DCFG_DEVADDR_MASK);