• L
    firmware_loader: fix pre-allocated buf built-in firmware use · f7a07f7b
    Luis Chamberlain 提交于
    The firmware_loader can be used with a pre-allocated buffer
    through the use of the API calls:
    
      o request_firmware_into_buf()
      o request_partial_firmware_into_buf()
    
    If the firmware was built-in and present, our current check
    for if the built-in firmware fits into the pre-allocated buffer
    does not return any errors, and we proceed to tell the caller
    that everything worked fine. It's a lie and no firmware would
    end up being copied into the pre-allocated buffer. So if the
    caller trust the result it may end up writing a bunch of 0's
    to a device!
    
    Fix this by making the function that checks for the pre-allocated
    buffer return non-void. Since the typical use case is when no
    pre-allocated buffer is provided make this return successfully
    for that case. If the built-in firmware does *not* fit into the
    pre-allocated buffer size return a failure as we should have
    been doing before.
    
    I'm not aware of users of the built-in firmware using the API
    calls with a pre-allocated buffer, as such I doubt this fixes
    any real life issue. But you never know... perhaps some oddball
    private tree might use it.
    
    In so far as upstream is concerned this just fixes our code for
    correctness.
    Signed-off-by: NLuis Chamberlain <mcgrof@kernel.org>
    Link: https://lore.kernel.org/r/20210917182226.3532898-2-mcgrof@kernel.orgSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    f7a07f7b
main.c 38.2 KB