2021-12-12 17:17:41

by Xiaoke Wang

[permalink] [raw]
Subject: [PATCH] pstore/platform: check the return value of kstrdup()

kstrdup() returns NULL when some internal memory errors happen, it is
better to check the return value of it. Otherwise, some memory errors
will not be catched in time and may also further result in wrong memory
access.

Signed-off-by: xkernel <[email protected]>
---
fs/pstore/platform.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c
index b9614db..f7c8732 100644
--- a/fs/pstore/platform.c
+++ b/fs/pstore/platform.c
@@ -620,6 +620,11 @@ int pstore_register(struct pstore_info *psi)
* through /sys/module/pstore/parameters/backend
*/
backend = kstrdup(psi->name, GFP_KERNEL);
+ if (!backend) {
+ pr_err("out of memory duplicating '%s'\n", psi->name);
+ mutex_unlock(&psinfo_lock);
+ return -ENOMEM;
+ }

pr_info("Registered %s as persistent store backend\n", psi->name);

--


2021-12-13 08:17:06

by Xiaoke Wang

[permalink] [raw]
Subject: Re: [PATCH] pstore/platform: check the return value of kstrdup()

Note: Compare with the last email, this one is using my full name.
kstrdup() returns NULL when some internal memory errors happen, it is
better to checkk the return value of it. Otherwise, some memory errors
will not be catched in time and may also further result in wrong memory
access.

Signed-off-by: Xiaoke Wang <[email protected]>
---
fs/pstore/platform.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c
index b9614db..f7c8732 100644
--- a/fs/pstore/platform.c
+++ b/fs/pstore/platform.c
@@ -620,6 +620,11 @@ int pstore_register(struct pstore_info *psi)
* through /sys/module/pstore/parameters/backend
*/
backend = kstrdup(psi->name, GFP_KERNEL);
+ if (!backend) {
+ pr_err("out of memory duplicating '%s'\n", psi->name);
+ mutex_unlock(&psinfo_lock);
+ return -ENOMEM;
+ }

pr_info("Registered %s as persistent store backend\n", psi->name);

--