From mboxrd@z Thu Jan 1 00:00:00 1970 From: alex@digriz.org.uk (Alexander Clouter) Date: Tue, 2 Apr 2013 00:42:07 +0100 Subject: [PATCH 2/6] rtc: rtc-m48t86: add hooks to support driver side memory mapping In-Reply-To: <515A1A0B.8040803@gmail.com> References: <1364858565-17192-1-git-send-email-alex@digriz.org.uk> <1364858565-17192-3-git-send-email-alex@digriz.org.uk> <515A1A0B.8040803@gmail.com> Message-ID: <20130401234207.GL1953@edkhil> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Tue, Apr 02, 2013 at 10:36:43AM +1100, Ryan Mallon wrote: >On 02/04/13 10:22, Alexander Clouter wrote: >> If platform_data is not defined (as before), then named memory io >> ranges need to be defined ("rtc_index" and "rtc_data"). The driver >> then maps those regions and uses them as the RTC index and data >> addresses. >> >> Does compile with the following warnings, I cannot see the codepath >> affected myself: >> ---- >> drivers/rtc/rtc-m48t86.c: In function ?m48t86_rtc_probe?: >> drivers/rtc/rtc-m48t86.c:180: warning: ?res_index? may be used uninitialized in this function >> drivers/rtc/rtc-m48t86.c:180: warning: ?res_data? may be used uninitialized in this function > >It is caused by the exit paths. If pdev->dev.platform_data is set, the >res_index and res_data are never initialised, but in the error case you >still for rtc_device_register you jump to out_io_data, which will then >dereference res_index/res_data. You need to make the exit paths >conditional on pdev->dev.platform_data (or init res_index/data to NULL >and make the release_mem_regions conditional on that). However, the 'goto out_io_data' in the 'IS_ERR(priv->rtc)' is wrapped in a 'if (!pdev->dev.platform_data)', else we jump to out_free. I suspect I am probably missing something *too* obvious here for it to click? Cheers >> + priv->rtc = rtc_device_register("m48t86", >> + &pdev->dev, &m48t86_rtc_ops, THIS_MODULE); >> + if (IS_ERR(priv->rtc)) { <-------------- >> + err = PTR_ERR(priv->rtc); >> + if (!pdev->dev.platform_data) <-------------- >> + goto out_io_data; >> + else >> + goto out_free; >> + } >> >> /* read battery status */ >> - reg = ops->readbyte(M48T86_REG_D); >> - dev_info(&dev->dev, "battery %s\n", >> + reg = m48t86_rtc_readbyte(&pdev->dev, M48T86_REG_D); >> + dev_info(&pdev->dev, "battery %s\n", >> (reg & M48T86_REG_D_VRT) ? "ok" : "exhausted"); >> >> return 0; >> + >> +out_io_data: >> + iounmap(priv->io_data); >> +out_io_index: >> + iounmap(priv->io_index); >> +out_release_data: >> + release_mem_region(res_data->start, resource_size(res_data)); >> +out_release_index: >> + release_mem_region(res_index->start, resource_size(res_index)); >> +out_free: >> + platform_set_drvdata(pdev, NULL); >> + kfree(priv); >> + return err; >> } -- Alexander Clouter .sigmonster says: Zeus gave Leda the bird. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Clouter Subject: Re: [PATCH 2/6] rtc: rtc-m48t86: add hooks to support driver side memory mapping Date: Tue, 2 Apr 2013 00:42:07 +0100 Message-ID: <20130401234207.GL1953@edkhil> References: <1364858565-17192-1-git-send-email-alex@digriz.org.uk> <1364858565-17192-3-git-send-email-alex@digriz.org.uk> <515A1A0B.8040803@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <515A1A0B.8040803-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: devicetree-discuss-bounces+gldd-devicetree-discuss=m.gmane.org-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org Sender: "devicetree-discuss" To: Ryan Mallon Cc: Alessandro Zummo , Jason Cooper , rtc-linux-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org, Andrew Lunn , devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, Rob Herring , Hartley Sweeten , linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org List-Id: devicetree@vger.kernel.org T24gVHVlLCBBcHIgMDIsIDIwMTMgYXQgMTA6MzY6NDNBTSArMTEwMCwgUnlhbiBNYWxsb24gd3Jv dGU6Cj5PbiAwMi8wNC8xMyAxMDoyMiwgQWxleGFuZGVyIENsb3V0ZXIgd3JvdGU6Cj4+IElmIHBs YXRmb3JtX2RhdGEgaXMgbm90IGRlZmluZWQgKGFzIGJlZm9yZSksIHRoZW4gbmFtZWQgbWVtb3J5 IGlvCj4+IHJhbmdlcyBuZWVkIHRvIGJlIGRlZmluZWQgKCJydGNfaW5kZXgiIGFuZCAicnRjX2Rh dGEiKS4gIFRoZSBkcml2ZXIKPj4gdGhlbiBtYXBzIHRob3NlIHJlZ2lvbnMgYW5kIHVzZXMgdGhl bSBhcyB0aGUgUlRDIGluZGV4IGFuZCBkYXRhCj4+IGFkZHJlc3Nlcy4KPj4KPj4gRG9lcyBjb21w aWxlIHdpdGggdGhlIGZvbGxvd2luZyB3YXJuaW5ncywgSSBjYW5ub3Qgc2VlIHRoZSBjb2RlcGF0 aAo+PiBhZmZlY3RlZCBteXNlbGY6Cj4+IC0tLS0KPj4gZHJpdmVycy9ydGMvcnRjLW00OHQ4Ni5j OiBJbiBmdW5jdGlvbiDigJhtNDh0ODZfcnRjX3Byb2Jl4oCZOgo+PiBkcml2ZXJzL3J0Yy9ydGMt bTQ4dDg2LmM6MTgwOiB3YXJuaW5nOiDigJhyZXNfaW5kZXjigJkgbWF5IGJlIHVzZWQgdW5pbml0 aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uCj4+IGRyaXZlcnMvcnRjL3J0Yy1tNDh0ODYuYzoxODA6 IHdhcm5pbmc6IOKAmHJlc19kYXRh4oCZIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhp cyBmdW5jdGlvbgo+Cj5JdCBpcyBjYXVzZWQgYnkgdGhlIGV4aXQgcGF0aHMuIElmIHBkZXYtPmRl di5wbGF0Zm9ybV9kYXRhIGlzIHNldCwgdGhlCj5yZXNfaW5kZXggYW5kIHJlc19kYXRhIGFyZSBu ZXZlciBpbml0aWFsaXNlZCwgYnV0IGluIHRoZSBlcnJvciBjYXNlIHlvdQo+c3RpbGwgZm9yIHJ0 Y19kZXZpY2VfcmVnaXN0ZXIgeW91IGp1bXAgdG8gb3V0X2lvX2RhdGEsIHdoaWNoIHdpbGwgdGhl bgo+ZGVyZWZlcmVuY2UgcmVzX2luZGV4L3Jlc19kYXRhLiBZb3UgbmVlZCB0byBtYWtlIHRoZSBl eGl0IHBhdGhzCj5jb25kaXRpb25hbCBvbiBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YSAob3IgaW5p dCByZXNfaW5kZXgvZGF0YSB0byBOVUxMCj5hbmQgbWFrZSB0aGUgcmVsZWFzZV9tZW1fcmVnaW9u cyBjb25kaXRpb25hbCBvbiB0aGF0KS4KCkhvd2V2ZXIsIHRoZSAnZ290byBvdXRfaW9fZGF0YScg aW4gdGhlICdJU19FUlIocHJpdi0+cnRjKScgaXMgd3JhcHBlZCBpbiBhICdpZiAKKCFwZGV2LT5k ZXYucGxhdGZvcm1fZGF0YSknLCBlbHNlIHdlIGp1bXAgdG8gb3V0X2ZyZWUuCgpJIHN1c3BlY3Qg SSBhbSBwcm9iYWJseSBtaXNzaW5nIHNvbWV0aGluZyAqdG9vKiBvYnZpb3VzIGhlcmUgZm9yIGl0 IHRvIGNsaWNrPwoKQ2hlZXJzCgo+PiArCXByaXYtPnJ0YyA9IHJ0Y19kZXZpY2VfcmVnaXN0ZXIo Im00OHQ4NiIsCj4+ICsJCQkJJnBkZXYtPmRldiwgJm00OHQ4Nl9ydGNfb3BzLCBUSElTX01PRFVM RSk7Cj4+ICsJaWYgKElTX0VSUihwcml2LT5ydGMpKSB7ICAgICAgICAgICAgICAgIDwtLS0tLS0t LS0tLS0tLQo+PiArCQllcnIgPSBQVFJfRVJSKHByaXYtPnJ0Yyk7Cj4+ICsJCWlmICghcGRldi0+ ZGV2LnBsYXRmb3JtX2RhdGEpICAgPC0tLS0tLS0tLS0tLS0tCj4+ICsJCQlnb3RvIG91dF9pb19k YXRhOwo+PiArCQllbHNlCj4+ICsJCQlnb3RvIG91dF9mcmVlOwo+PiArCX0KPj4KPj4gIAkvKiBy ZWFkIGJhdHRlcnkgc3RhdHVzICovCj4+IC0JcmVnID0gb3BzLT5yZWFkYnl0ZShNNDhUODZfUkVH X0QpOwo+PiAtCWRldl9pbmZvKCZkZXYtPmRldiwgImJhdHRlcnkgJXNcbiIsCj4+ICsJcmVnID0g bTQ4dDg2X3J0Y19yZWFkYnl0ZSgmcGRldi0+ZGV2LCBNNDhUODZfUkVHX0QpOwo+PiArCWRldl9p bmZvKCZwZGV2LT5kZXYsICJiYXR0ZXJ5ICVzXG4iLAo+PiAgCQkocmVnICYgTTQ4VDg2X1JFR19E X1ZSVCkgPyAib2siIDogImV4aGF1c3RlZCIpOwo+Pgo+PiAgCXJldHVybiAwOwo+PiArCj4+ICtv dXRfaW9fZGF0YToKPj4gKwlpb3VubWFwKHByaXYtPmlvX2RhdGEpOwo+PiArb3V0X2lvX2luZGV4 Ogo+PiArCWlvdW5tYXAocHJpdi0+aW9faW5kZXgpOwo+PiArb3V0X3JlbGVhc2VfZGF0YToKPj4g KwlyZWxlYXNlX21lbV9yZWdpb24ocmVzX2RhdGEtPnN0YXJ0LCByZXNvdXJjZV9zaXplKHJlc19k YXRhKSk7Cj4+ICtvdXRfcmVsZWFzZV9pbmRleDoKPj4gKwlyZWxlYXNlX21lbV9yZWdpb24ocmVz X2luZGV4LT5zdGFydCwgcmVzb3VyY2Vfc2l6ZShyZXNfaW5kZXgpKTsKPj4gK291dF9mcmVlOgo+ PiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpOwo+PiArCWtmcmVlKHByaXYpOwo+ PiArCXJldHVybiBlcnI7Cj4+ICB9CgotLSAKQWxleGFuZGVyIENsb3V0ZXIKLnNpZ21vbnN0ZXIg c2F5czogWmV1cyBnYXZlIExlZGEgdGhlIGJpcmQuCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRldmljZXRyZWUtZGlzY3VzcyBtYWlsaW5nIGxpc3QKZGV2 aWNldHJlZS1kaXNjdXNzQGxpc3RzLm96bGFicy5vcmcKaHR0cHM6Ly9saXN0cy5vemxhYnMub3Jn L2xpc3RpbmZvL2RldmljZXRyZWUtZGlzY3Vzcwo=