All of lore.kernel.org
 help / color / mirror / Atom feed
From: Felipe Balbi <balbi@ti.com>
To: Paul Zimmerman <Paul.Zimmerman@synopsys.com>
Cc: "Ivan T. Ivanov" <iivanov@mm-sol.com>,
	"balbi@ti.com" <balbi@ti.com>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
	"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] usb: dwc3: core: modify IO memory resource after deferred probe completes
Date: Thu, 25 Jul 2013 23:52:24 +0300	[thread overview]
Message-ID: <20130725205224.GA12209@radagast> (raw)
In-Reply-To: <A2CA0424C0A6F04399FB9E1CD98E030458DE112E@US01WEMBX2.internal.synopsys.com>

[-- Attachment #1: Type: text/plain, Size: 2072 bytes --]

Hi,

On Thu, Jul 25, 2013 at 07:46:58PM +0000, Paul Zimmerman wrote:
> > diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> > index 607bef8..50c833f 100644
> > --- a/drivers/usb/dwc3/core.c
> > +++ b/drivers/usb/dwc3/core.c
> > @@ -384,21 +384,6 @@ static int dwc3_probe(struct platform_device *pdev)
> >  		dev_err(dev, "missing memory resource\n");
> >  		return -ENODEV;
> >  	}
> > -	dwc->xhci_resources[0].start = res->start;
> > -	dwc->xhci_resources[0].end = dwc->xhci_resources[0].start +
> > -					DWC3_XHCI_REGS_END;
> > -	dwc->xhci_resources[0].flags = res->flags;
> > -	dwc->xhci_resources[0].name = res->name;
> > -
> > -	res->start += DWC3_GLOBALS_REGS_START;
> > -
> > -	 /*
> > -	  * Request memory region but exclude xHCI regs,
> > -	  * since it will be requested by the xhci-plat driver.
> > -	  */
> > -	regs = devm_ioremap_resource(dev, res);
> > -	if (IS_ERR(regs))
> > -		return PTR_ERR(regs);
> > 
> >  	if (node) {
> >  		dwc->maximum_speed = of_usb_get_maximum_speed(node);
> > @@ -452,6 +437,22 @@ static int dwc3_probe(struct platform_device *pdev)
> >  		return -EPROBE_DEFER;
> >  	}
> > 
> > +	dwc->xhci_resources[0].start = res->start;
> > +	dwc->xhci_resources[0].end = dwc->xhci_resources[0].start +
> > +					DWC3_XHCI_REGS_END;
> > +	dwc->xhci_resources[0].flags = res->flags;
> > +	dwc->xhci_resources[0].name = res->name;
> > +
> > +	res->start += DWC3_GLOBALS_REGS_START;
> 
> Ick. The driver is modifying the struct resource passed to it by the

heh...

> platform code? That seems like a layering violation, and is fragile as
> hell. In addition to this bug, what would happen if the struct resource
> was declared 'const'?

nothing would happen if it was declared const since platform_add_device
makes a copy of what was declared, and that's always non-const.

Also, this is not *modifying* what was passed, just skipping the xHCI
address space so we don't request_mem_region() an area we won't really
handle and prevent xhci-hcd.ko from probing.

-- 
balbi

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

  reply	other threads:[~2013-07-25 20:52 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-25 16:26 [PATCH] usb: dwc3: core: modify IO memory resource after deferred probe completes Ivan T. Ivanov
2013-07-25 16:26 ` Ivan T. Ivanov
     [not found] ` <1374769590-14491-1-git-send-email-iivanov-NEYub+7Iv8PQT0dZR+AlfA@public.gmane.org>
2013-07-25 17:21   ` Sergei Shtylyov
2013-07-25 17:21     ` Sergei Shtylyov
2013-07-25 18:20     ` Ivan T. Ivanov
2013-07-25 19:46   ` Paul Zimmerman
2013-07-25 19:46     ` Paul Zimmerman
2013-07-25 20:52     ` Felipe Balbi [this message]
2013-07-26  2:06       ` Paul Zimmerman
2013-07-26  2:06         ` Paul Zimmerman
     [not found]         ` <A2CA0424C0A6F04399FB9E1CD98E030458DE12C9-Yu2iAY70zvrYN67daEjeMPufCSb+aD3WLzEdoUbNIic@public.gmane.org>
2013-07-26  6:48           ` Ivan T. Ivanov
2013-07-26  6:48             ` Ivan T. Ivanov
2013-07-26  9:53             ` Felipe Balbi
2013-07-26 18:44               ` Paul Zimmerman
2013-07-26 18:44                 ` Paul Zimmerman
     [not found]                 ` <A2CA0424C0A6F04399FB9E1CD98E030458DE178C-Yu2iAY70zvrYN67daEjeMPufCSb+aD3WLzEdoUbNIic@public.gmane.org>
2013-07-26 20:32                   ` Felipe Balbi
2013-07-26 20:32                     ` Felipe Balbi
2013-07-26 22:02                     ` Paul Zimmerman
2013-07-26 22:02                       ` Paul Zimmerman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130725205224.GA12209@radagast \
    --to=balbi@ti.com \
    --cc=Paul.Zimmerman@synopsys.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=iivanov@mm-sol.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.