From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: dmaengine: rcar-dmac: Make rcar_dmac_of_xlate() more robust From: Laurent Pinchart Message-Id: <1565818.ujc0qXmH5O@avalon> Date: Fri, 27 Jul 2018 11:53:17 +0300 To: Geert Uytterhoeven Cc: Dan Williams , Vinod Koul , Yoshihiro Shimoda , dmaengine@vger.kernel.org, linux-renesas-soc@vger.kernel.org List-ID: SGkgR2VlcnQsCgpUaGFuayB5b3UgZm9yIHRoZSBwYXRjaC4KCk9uIEZyaWRheSwgMjcgSnVseSAy MDE4IDExOjQ0OjQ3IEVFU1QgR2VlcnQgVXl0dGVyaG9ldmVuIHdyb3RlOgo+IEFkZCBhbiB1cHBl ciBib3VuZCBjaGVjayBmb3IgdGhlIE1JRC9SSUQgdmFsdWUgcGFzc2VkIGZyb20gRFQgdmlhIHRo ZQo+IERNQSBzcGVjLgo+IAo+IFRoaXMgYXZvaWRzIHdyaXRpbmcgdG8gcmVzZXJ2ZWQgYml0cyBp biB0aGUgRE1BUlMgcmVnaXN0ZXJzIGluIGNhc2Ugb2YKPiBhbiBvdXQtb2YtcmFuZ2UgdmFsdWUg aW4gRFQuCgpJcyB0aGlzIHJlYWxseSB1c2VmdWwgPyBJbiB0aGUgbm9ybWFsIGNhc2UsIHdoZW4g aW5mb3JtYXRpb24gaW4gRFQgaXMgY29ycmVjdCwgCnRoaXMgd2lsbCBqdXN0IGFkZCBvdmVyaGVh ZC4gV2hhdCBkbyB3ZSByZWFsbHkgd2FudCB0byBndWFyZCBhZ2FpbnN0ID8gSWYgd2UgCm1lcmdl IHRoaXMgY2hhbmdlLCBob3cgbXVjaCBmdXJ0aGVyIGRvIHdlIG5lZWQgdG8gZ28gPyBXaGF0IG90 aGVyIHZhbHVlcyAKcHJvdmlkZWQgaW4gRFQsIHN1Y2ggYXMgcmVnIGFkZHJlc3NlcywgZG8gd2Ug bmVlZCB0byB2YWxpZGF0ZSB0aGVtIHRvbyA/IApGdW5jdGlvbmFsbHkgc3BlYWtpbmcgdGhpcyBj aGFuZ2UgZG9lcyBubyBoYXJtLCBidXQgaXQgaW5jcmVhc2VzIHRoZSBrZXJuZWwgCnNpemUsIGFk ZCBvdmVyaGVhZCBhdCBydW50aW1lLCBhbmQgb25seSBhZGRyZXNzZXMgYSB2ZXJ5IGxpbWl0ZWQg cmFuZ2Ugb2YgCmludmFsaWQgRFQgaXNzdWVzLgoKPiBTdWdnZXN0ZWQtYnk6IFJlbmVzYXMgQlNQ IHRlYW0gdmlhIFlvc2hpaGlybyBTaGltb2RhCj4gPHlvc2hpaGlyby5zaGltb2RhLnVoQHJlbmVz YXMuY29tPiBTaWduZWQtb2ZmLWJ5OiBHZWVydCBVeXR0ZXJob2V2ZW4KPiA8Z2VlcnQrcmVuZXNh c0BnbGlkZXIuYmU+Cj4gLS0tCj4gIGRyaXZlcnMvZG1hL3NoL3JjYXItZG1hYy5jIHwgNSArKysr LQo+ICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL3NoL3JjYXItZG1hYy5jIGIvZHJpdmVycy9kbWEvc2gv cmNhci1kbWFjLmMKPiBpbmRleCA3MjU3MjMyMDIwOGRiYjlhLi43M2NmMTA1M2JlZDkwMjQ0IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZG1hL3NoL3JjYXItZG1hYy5jCj4gKysrIGIvZHJpdmVycy9k bWEvc2gvcmNhci1kbWFjLmMKPiBAQCAtMTY0NCw4ICsxNjQ0LDExIEBAIHN0YXRpYyBzdHJ1Y3Qg ZG1hX2NoYW4gKnJjYXJfZG1hY19vZl94bGF0ZShzdHJ1Y3QKPiBvZl9waGFuZGxlX2FyZ3MgKmRt YV9zcGVjLCBzdHJ1Y3QgZG1hX2NoYW4gKmNoYW47Cj4gIAlkbWFfY2FwX21hc2tfdCBtYXNrOwo+ IAo+IC0JaWYgKGRtYV9zcGVjLT5hcmdzX2NvdW50ICE9IDEpCj4gKwlpZiAoZG1hX3NwZWMtPmFy Z3NfY291bnQgIT0gMSB8fCBkbWFfc3BlYy0+YXJnc1swXSA+IDB4ZmYpIHsKPiArCQlwcl9pbmZv KCIlczogaW52YWxpZCBNSUQvUklEIDB4JXguLi4gZm9yICVwT0ZcbiIsIF9fZnVuY19fLAo+ICsJ CQlkbWFfc3BlYy0+YXJnc1swXSwgZG1hX3NwZWMtPm5wKTsKPiAgCQlyZXR1cm4gTlVMTDsKPiAr CX0KPiAKPiAgCS8qIE9ubHkgc2xhdmUgRE1BIGNoYW5uZWxzIGNhbiBiZSBhbGxvY2F0ZWQgdmlh IERUICovCj4gIAlkbWFfY2FwX3plcm8obWFzayk7Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from perceval.ideasonboard.com ([213.167.242.64]:49816 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729445AbeG0KNh (ORCPT ); Fri, 27 Jul 2018 06:13:37 -0400 From: Laurent Pinchart To: Geert Uytterhoeven Cc: Dan Williams , Vinod Koul , Yoshihiro Shimoda , dmaengine@vger.kernel.org, linux-renesas-soc@vger.kernel.org Subject: Re: [PATCH] dmaengine: rcar-dmac: Make rcar_dmac_of_xlate() more robust Date: Fri, 27 Jul 2018 11:53:17 +0300 Message-ID: <1565818.ujc0qXmH5O@avalon> In-Reply-To: <20180727084447.13984-1-geert+renesas@glider.be> References: <20180727084447.13984-1-geert+renesas@glider.be> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-renesas-soc-owner@vger.kernel.org List-ID: Hi Geert, Thank you for the patch. On Friday, 27 July 2018 11:44:47 EEST Geert Uytterhoeven wrote: > Add an upper bound check for the MID/RID value passed from DT via the > DMA spec. > > This avoids writing to reserved bits in the DMARS registers in case of > an out-of-range value in DT. Is this really useful ? In the normal case, when information in DT is correct, this will just add overhead. What do we really want to guard against ? If we merge this change, how much further do we need to go ? What other values provided in DT, such as reg addresses, do we need to validate them too ? Functionally speaking this change does no harm, but it increases the kernel size, add overhead at runtime, and only addresses a very limited range of invalid DT issues. > Suggested-by: Renesas BSP team via Yoshihiro Shimoda > Signed-off-by: Geert Uytterhoeven > > --- > drivers/dma/sh/rcar-dmac.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/dma/sh/rcar-dmac.c b/drivers/dma/sh/rcar-dmac.c > index 72572320208dbb9a..73cf1053bed90244 100644 > --- a/drivers/dma/sh/rcar-dmac.c > +++ b/drivers/dma/sh/rcar-dmac.c > @@ -1644,8 +1644,11 @@ static struct dma_chan *rcar_dmac_of_xlate(struct > of_phandle_args *dma_spec, struct dma_chan *chan; > dma_cap_mask_t mask; > > - if (dma_spec->args_count != 1) > + if (dma_spec->args_count != 1 || dma_spec->args[0] > 0xff) { > + pr_info("%s: invalid MID/RID 0x%x... for %pOF\n", __func__, > + dma_spec->args[0], dma_spec->np); > return NULL; > + } > > /* Only slave DMA channels can be allocated via DT */ > dma_cap_zero(mask); -- Regards, Laurent Pinchart