• Gavin Shan's avatar
    drivers/of: Fix build warning in populate_node() · dddc33e5
    Gavin Shan authored
    Function populate_node() is used to unflatten FDT blob to device
    tree. It supports maximal 64 level of device nodes. There is one
    array @fpsizes[64] tracking the full name length of last unflattened
    device node in the corresponding level (index of element in the
    array - 1). Build warning is seen with CONFIG_FRAME_WARN=1024 like
    below on ARM64 as Geert reported. The issue can be reproduced on
    PPC64 as well.
    
      $ make drivers/of/fdt.o
      drivers/of/fdt.c:443:1: warning: the frame size of 1136 bytes is \
      larger than 1024 bytes [-Wframe-larger-than=]
    
    This changes the data type of @fpsizes[i] from "unsigned long" to
    "unsigned int" to avoid the build warning. The return value type
    of populate_node() and its @fpsize argument is adjusted accordingly.
    With this applied, 256 bytes saved from the stack frame on ARM64 and
    PPC64 platforms and the above warning isn't seen.
    
    Fixes: 50800082 ("drivers/of: Avoid recursively calling unflatten_dt_node()")
    Reported-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: default avatarGavin Shan <gwshan@linux.vnet.ibm.com>
    Signed-off-by: default avatarRob Herring <robh@kernel.org>
    dddc33e5
fdt.c 31.6 KB