mirror of
https://github.com/torvalds/linux.git
synced 2024-11-18 18:11:56 +00:00
firmware: add helper to copy built-in data to pre-alloc buffer
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@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
942e743b73
commit
5711ae6d30
@ -146,6 +146,14 @@ static struct firmware_cache fw_cache;
|
|||||||
extern struct builtin_fw __start_builtin_fw[];
|
extern struct builtin_fw __start_builtin_fw[];
|
||||||
extern struct builtin_fw __end_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;
|
||||||
|
memcpy(buf, fw->data, fw->size);
|
||||||
|
}
|
||||||
|
|
||||||
static bool fw_get_builtin_firmware(struct firmware *fw, const char *name,
|
static bool fw_get_builtin_firmware(struct firmware *fw, const char *name,
|
||||||
void *buf, size_t size)
|
void *buf, size_t size)
|
||||||
{
|
{
|
||||||
@ -155,9 +163,8 @@ static bool fw_get_builtin_firmware(struct firmware *fw, const char *name,
|
|||||||
if (strcmp(name, b_fw->name) == 0) {
|
if (strcmp(name, b_fw->name) == 0) {
|
||||||
fw->size = b_fw->size;
|
fw->size = b_fw->size;
|
||||||
fw->data = b_fw->data;
|
fw->data = b_fw->data;
|
||||||
|
fw_copy_to_prealloc_buf(fw, buf, size);
|
||||||
|
|
||||||
if (buf && fw->size <= size)
|
|
||||||
memcpy(buf, fw->data, fw->size);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user