[U-Boot] [PATCH] fdt: fix fdtdec_get_addr_size not to require any size cells

Simon Glass
2015-09-29T04:33:46Z

On 28 September 2015 at 04:41, Przemyslaw Marczak <p.marczak@samsung.com> wrote:
> Hello Stephen,
>
>
> On 09/25/2015 06:11 PM, Stephen Warren wrote:
>>
>> From: Stephen Warren <swarren@nvidia.com>
>>
>> fdtdec_get_addr_size() may be used in two cases:
>> a) With sizep supplied, in which case both an address and a size are
>> parsed from DT. In this case, the DT property must be large enough to
>> contain both values.
>> b) With sizep NULL, in which case only an address is parsed from DT.
>> In this case, the DT property only need be large enough to contain this
>> address value. Commit 02464e386bb5 "fdt: add new fdt address parsing
>> functions" broke this relaxed checking, and required the DT property to
>> contain both an address and a size value in all cases.
>>
>> Fix fdtdec_get_addr_size() to vary ns based on whether the size value
>> is being parsed from the DT or not. This is safe since the function only
>> parses the first entry in the property, so the overall value of (na + ns)
>> need not be accurate, since it is never used to step through the property
>> data to find other entries. Besides, this fixed behaviour essentially
>> matches the original behaviour before the patch this patch fixes. (The
>> original code validated that the property was exactly the length of
>> either na or (na + ns), whereas the current code only validates that the
>> property is at least that long. For non-failure cases, the two behaviours
>> are identical).
>>
>> Cc: Przemyslaw Marczak <p.marczak@samsung.com>
>> Cc: Simon Glass <sjg@chromium.org>
>> Cc: Thierry Reding <treding@nvidia.com>
>> Cc: Bin Meng <bmeng.cn@gmail.com>
>> Cc: Michal Suchanek <hramrach@gmail.com>
>> Fixes: 02464e386bb5 ("fdt: add new fdt address parsing functions")
>> Reported-by: Przemyslaw Marczak <p.marczak@samsung.com>
>> Signed-off-by: Stephen Warren <swarren@nvidia.com>
>> ---
>> lib/fdtdec.c | 5 +++--
>> 1 file changed, 3 insertions(+), 2 deletions(-)

Acked-by: Simon Glass <sjg@chromium.org>