Skip to content
  • Douglas Anderson's avatar
    serial: core: Make sure compiler barfs for 16-byte earlycon names · 1d1a4095
    Douglas Anderson authored
    
    
    [ Upstream commit c1c734cb1f54b062f7e67ffc9656d82f5b412b9c ]
    
    As part of bringup I ended up wanting to call an earlycon driver by a
    name that was exactly 16-bytes big, specifically "qcom_geni_serial".
    
    Unfortunately, when I tried this I found that things compiled just
    fine.  They just didn't work.
    
    Specifically the compiler felt perfectly justified in initting the
    ".name" field of "struct earlycon_id" with the full 16-bytes and just
    skipping the '\0'.  Needless to say, that behavior didn't seem ideal,
    but I guess someone must have allowed it for a reason.
    
    One way to fix this is to shorten the name field to 15 bytes and then
    add an extra byte after that nobody touches.  This should always be
    initted to 0 and we're golden.
    
    There are, of course, other ways to fix this too.  We could audit all
    the users of the "name" field and make them stop at both null
    termination or at 16 bytes.  We could also just make the name field
    much bigger so that we're not likely to run into this.  ...but both
    seem like we'll just hit the bug again.
    
    Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: default avatarSasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    1d1a4095