test_firmware: return ENOMEM instead of ENOSPC on failed memory allocation
In a couple of situations like name = kstrndup(buf, count, GFP_KERNEL); if (!name) return -ENOSPC; the error is not actually "No space left on device", but "Out of memory". It is semantically correct to return -ENOMEM in all failed kstrndup() and kzalloc() cases in this driver, as it is not a problem with disk space, but with kernel memory allocator failing allocation. The semantically correct should be: name = kstrndup(buf, count, GFP_KERNEL); if (!name) return -ENOMEM; Cc: Dan Carpenter <error27@gmail.com> Cc: Takashi Iwai <tiwai@suse.de> Cc: Kees Cook <keescook@chromium.org> Cc: "Luis R. Rodriguez" <mcgrof@ruslug.rutgers.edu> Cc: Scott Branden <sbranden@broadcom.com> Cc: Hans de Goede <hdegoede@redhat.com> Cc: Brian Norris <briannorris@chromium.org> Fixes:c92316bf8e
("test_firmware: add batched firmware tests") Fixes:0a8adf5847
("test: add firmware_class loader test") Fixes:548193cba2
("test_firmware: add support for firmware_request_platform") Fixes:eb910947c8
("test: firmware_class: add asynchronous request trigger") Fixes:061132d2b9
("test_firmware: add test custom fallback trigger") Fixes:7feebfa487
("test_firmware: add support for request_firmware_into_buf") Signed-off-by: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr> Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org> Message-ID: <20230606070808.9300-1-mirsad.todorovac@alu.unizg.hr> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
9f7b17c9cf
commit
7dae593cd2
@ -214,7 +214,7 @@ static int __kstrncpy(char **dst, const char *name, size_t count, gfp_t gfp)
|
|||||||
{
|
{
|
||||||
*dst = kstrndup(name, count, gfp);
|
*dst = kstrndup(name, count, gfp);
|
||||||
if (!*dst)
|
if (!*dst)
|
||||||
return -ENOSPC;
|
return -ENOMEM;
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -671,7 +671,7 @@ static ssize_t trigger_request_store(struct device *dev,
|
|||||||
|
|
||||||
name = kstrndup(buf, count, GFP_KERNEL);
|
name = kstrndup(buf, count, GFP_KERNEL);
|
||||||
if (!name)
|
if (!name)
|
||||||
return -ENOSPC;
|
return -ENOMEM;
|
||||||
|
|
||||||
pr_info("loading '%s'\n", name);
|
pr_info("loading '%s'\n", name);
|
||||||
|
|
||||||
@ -719,7 +719,7 @@ static ssize_t trigger_request_platform_store(struct device *dev,
|
|||||||
|
|
||||||
name = kstrndup(buf, count, GFP_KERNEL);
|
name = kstrndup(buf, count, GFP_KERNEL);
|
||||||
if (!name)
|
if (!name)
|
||||||
return -ENOSPC;
|
return -ENOMEM;
|
||||||
|
|
||||||
pr_info("inserting test platform fw '%s'\n", name);
|
pr_info("inserting test platform fw '%s'\n", name);
|
||||||
efi_embedded_fw.name = name;
|
efi_embedded_fw.name = name;
|
||||||
@ -772,7 +772,7 @@ static ssize_t trigger_async_request_store(struct device *dev,
|
|||||||
|
|
||||||
name = kstrndup(buf, count, GFP_KERNEL);
|
name = kstrndup(buf, count, GFP_KERNEL);
|
||||||
if (!name)
|
if (!name)
|
||||||
return -ENOSPC;
|
return -ENOMEM;
|
||||||
|
|
||||||
pr_info("loading '%s'\n", name);
|
pr_info("loading '%s'\n", name);
|
||||||
|
|
||||||
@ -817,7 +817,7 @@ static ssize_t trigger_custom_fallback_store(struct device *dev,
|
|||||||
|
|
||||||
name = kstrndup(buf, count, GFP_KERNEL);
|
name = kstrndup(buf, count, GFP_KERNEL);
|
||||||
if (!name)
|
if (!name)
|
||||||
return -ENOSPC;
|
return -ENOMEM;
|
||||||
|
|
||||||
pr_info("loading '%s' using custom fallback mechanism\n", name);
|
pr_info("loading '%s' using custom fallback mechanism\n", name);
|
||||||
|
|
||||||
@ -868,7 +868,7 @@ static int test_fw_run_batch_request(void *data)
|
|||||||
|
|
||||||
test_buf = kzalloc(TEST_FIRMWARE_BUF_SIZE, GFP_KERNEL);
|
test_buf = kzalloc(TEST_FIRMWARE_BUF_SIZE, GFP_KERNEL);
|
||||||
if (!test_buf)
|
if (!test_buf)
|
||||||
return -ENOSPC;
|
return -ENOMEM;
|
||||||
|
|
||||||
if (test_fw_config->partial)
|
if (test_fw_config->partial)
|
||||||
req->rc = request_partial_firmware_into_buf
|
req->rc = request_partial_firmware_into_buf
|
||||||
|
Loading…
Reference in New Issue
Block a user