Re: [PATCH v2 10/23] firmware: add helper to copy built-in data to pre-alloc buffer

From: Greg KH
Date: Wed Nov 29 2017 - 05:17:26 EST


On Mon, Nov 20, 2017 at 10:23:56AM -0800, Luis R. Rodriguez wrote:
> This makes it clearer that the parameters passed are only used for
> the preallocated buffer option, ie, when a caller uses:
>
> request_firmware_into_buf()
>
> Otherwise this code won't run. We flip the logic just so the actual
> prellocated buf code is not indented.
>
> Signed-off-by: Luis R. Rodriguez <mcgrof@xxxxxxxxxx>
> ---
> drivers/base/firmware_class.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
> index 4f64410fe7e6..aba3f2cbe2f4 100644
> --- a/drivers/base/firmware_class.c
> +++ b/drivers/base/firmware_class.c
> @@ -146,6 +146,14 @@ static struct firmware_cache fw_cache;
> extern struct builtin_fw __start_builtin_fw[];
> extern struct builtin_fw __end_builtin_fw[];
>
> +static void fw_copy_to_prealloc_buf(struct firmware *fw,
> + void *buf, size_t size)
> +{
> + if (!buf || size < fw->size)
> + return;

Shouldn't this return an error?

> + memcpy(buf, fw->data, fw->size);

I'll take this, but it feels really odd...