[PATCH] nvme-pci: return -EINVAL when failing to parse quirk parameter

Sreeraj S Kurup <[email protected]>
Newsgroups org.infradead.lists.linux-nvme,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
In quirks_param_set(), if nvme_parse_quirk_entry() fails to parse an
entry from the user-provided quirks string, the function prints an
error message with pr_err() and jumps to out_free_qlist to free
resources.

However, the variable 'err' is not updated upon parse failure,
retaining the value '0' from the preceding call to
param_set_copystring(). As a result, quirks_param_set() frees the
allocated memory but returns 0 (success) to the kernel parameter
subsystem, silently masking the parsing failure and incorrectly
reporting success to the caller.

Fix this by explicitly setting 'err = -EINVAL;' before jumping to
out_free_qlist, ensuring that parse failures are correctly propagated
to the caller.

Signed-off-by: Sreeraj S Kurup <[email protected]>
---
 drivers/nvme/host/pci.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index 69932d640b53..560560268c05 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -213,6 +213,7 @@ static int quirks_param_set(const char *value, const struct kernel_param *kp)
 		if (nvme_parse_quirk_entry(field, &qlist[i])) {
 			pr_err("nvme: failed to parse quirk string %s\n",
 				value);
+			err = -EINVAL;
 			goto out_free_qlist;
 		}
 
-- 
2.54.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.