[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4F8DDABA.2070208@antcom.de>
Date: Tue, 17 Apr 2012 23:03:54 +0200
From: Roland Stigge <stigge@...com.de>
To: Arnd Bergmann <arnd@...db.de>
CC: arm@...nel.org, linux-arm-kernel@...ts.infradead.org,
thierry.reding@...onic-design.de, gregkh@...uxfoundation.org,
linux-usb@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-input@...r.kernel.org, dmitry.torokhov@...il.com,
axel.lin@...il.com, broonie@...nsource.wolfsonmicro.com,
marek.vasut@...il.com, devel@...verdev.osuosl.org,
kevin.wells@....com, srinivas.bakki@....com
Subject: Re: [PATCH v2 1/8] ohci-nxp: Driver cleanup
Hi,
On 17/04/12 22:36, Arnd Bergmann wrote:
>> + hcd->regs = devm_request_and_ioremap(&pdev->dev, res);
>> + if (!hcd->regs) {
>> + err("Failed to devm_request_and_ioremap");
>> ret = -ENOMEM;
>> goto out4;
>> }
>> - hcd->regs = (void __iomem *)pdev->resource[0].start;
>> + hcd->rsrc_start = (u64)(u32)hcd->regs;
>> + hcd->rsrc_len = resource_size(res);
>
> This is wrong in multiple ways:
>
> * rsrc_start is a physical address, not an __iomem token.
> * you cannot cast a pointer to u32 in general, only to unsigned long.
>
> The fact that you need an ugly type cast like above could have told
> you that you are doing something wrong here. I guess it should
> be
>
> hcd->rsrc_start = res->start;
Right. Thanks for the hint!
Technically, I ported the bug, didn't introduce it ;-)
(pdev->resource[0].start was previously provided via resource already in
IO_ADDRESS (mapped) format). Nevertheless, it's a bug, of course, and it
didn't show up since the driver seems to not use hcd->rsrc_start anyway
(but hcd->regs).
Will post an update after making sure it's tested well.
Roland
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists