From: David Gibson <david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
To: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Devicetree Compiler
<devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH v2 1/3] checks: add phandle with arg property checks
Date: Fri, 25 Aug 2017 23:17:27 +1000 [thread overview]
Message-ID: <20170825131727.GJ2772@umbus.fritz.box> (raw)
In-Reply-To: <CAL_Jsq+NVBF6npai2_CRSVchGN_EQBSYnQcw3rHZcNFKpP7pDg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 2536 bytes --]
On Thu, Aug 24, 2017 at 02:19:27PM -0500, Rob Herring wrote:
> On Thu, Aug 24, 2017 at 12:23 PM, Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> wrote:
> > On Wed, Aug 23, 2017 at 9:03 PM, David Gibson
> > <david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org> wrote:
> >> On Tue, Aug 22, 2017 at 06:02:06PM -0500, Rob Herring wrote:
> >>> Many common bindings follow the same pattern of client properties
> >>> containing a phandle and N arg cells where N is defined in the provider
> >>> with a '#<specifier>-cells' property such as:
>
> [...]
>
> >>> + if (prop->val.len < ((cell + cellsize + 1) * sizeof(cell_t))) {
> >>> + FAIL(c, dti, "%s property size (%d) too small for cell size %d in %s",
> >>> + prop->name, prop->val.len, cellsize, node->fullpath);
> >>> + }
> >>
> >> How will this cope if the property is really badly formed - e.g. a 3
> >> byte property, so you can't even grab a whole first phandle? I think
> >> it will trip the assert() in propval_cell_n() which isn't great.
> >
> > At least for your example, we'd exit the loop (cell < 3/4). But I need
> > to a check for that because it would be silent currently. I'll add a
> > check that the size is a multiple of 4 and greater than 0.
> >
> > However, the check here is not perfect because we could have
> > "<&phandle1 1 2>" when really it should be "<&phandle1 &phandle2
> > &phandle3>". We don't fail until we're checking the 2nd phandle.
> > That's why I added the "or bad phandle" and the cell # in the message
> > above. In the opposite case, we'd be silent. One thing that could be
> > done is double check things against the markers if they are present.
>
> Here's what that looks like:
>
> /* If we have markers, verify the current cell is a phandle */
> if (prop->val.markers) {
> struct marker *m = prop->val.markers;
> for_each_marker_of_type(m, REF_PHANDLE) {
> if (m->offset == (cell * sizeof(cell_t)))
> break;
> }
> if (!m)
> FAIL(c, dti, "Property '%s', cell %d is not a valid phandle in %s",
> prop->name, cell, node->fullpath);
The logic seems sound, but I don't like the message. An integer
literal is no less a phandle than a reference, just usually not the
best way of entering one.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2017-08-25 13:17 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-22 23:02 [PATCH v2 0/3] dtc: checks for phandle with arg properties Rob Herring
[not found] ` <20170822230208.20987-1-robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-08-22 23:02 ` [PATCH v2 1/3] checks: add phandle with arg property checks Rob Herring
[not found] ` <20170822230208.20987-2-robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-08-24 2:03 ` David Gibson
[not found] ` <20170824020338.GV5379-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
2017-08-24 17:23 ` Rob Herring
[not found] ` <CAL_Jsq+0Njjs_PHBSD-B7W9YFzdfpB2ApBcBD=48+BoXQKv2pw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-08-24 19:19 ` Rob Herring
[not found] ` <CAL_Jsq+NVBF6npai2_CRSVchGN_EQBSYnQcw3rHZcNFKpP7pDg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-08-25 13:17 ` David Gibson [this message]
[not found] ` <20170825131727.GJ2772-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
2017-08-25 15:27 ` Rob Herring
[not found] ` <CAL_JsqKv=0Bu84Q0Mo9W9NhHqHE5VWCH_w38g=YMQ9ZCGqTFHw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-08-29 7:26 ` David Gibson
2017-08-25 0:49 ` David Gibson
2017-08-25 1:58 ` Rob Herring
2017-08-22 23:02 ` [PATCH v2 2/3] checks: add gpio binding properties check Rob Herring
[not found] ` <20170822230208.20987-3-robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-08-24 2:11 ` David Gibson
2017-08-22 23:02 ` [PATCH v2 3/3] checks: add interrupts property check Rob Herring
[not found] ` <20170822230208.20987-4-robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-08-24 2:15 ` David Gibson
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=20170825131727.GJ2772@umbus.fritz.box \
--to=david-xt8fgy+axnrb3ne2bgzf6laj5h9x9tb+@public.gmane.org \
--cc=devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.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.