diff mbox series

dyndbg: fix use before null check

Message ID 20201123184334.1777186-1-jim.cromie@gmail.com
State Superseded
Headers show
Series dyndbg: fix use before null check | expand

Commit Message

Jim Cromie Nov. 23, 2020, 6:43 p.m. UTC
commit a2d375eda771 ("dyndbg: refine export, rename to dynamic_debug_exec_queries()")

Above commit copies a string before checking for null pointer, fix
this, and add a pr_err.  Also trim comment, and add return val info.

Fixes: a2d375eda771
Cc: stable@vger.kernel.org
Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
---
 lib/dynamic_debug.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

Comments

Greg Kroah-Hartman Dec. 9, 2020, 2:54 p.m. UTC | #1
On Mon, Nov 23, 2020 at 11:43:34AM -0700, Jim Cromie wrote:
> commit a2d375eda771 ("dyndbg: refine export, rename to dynamic_debug_exec_queries()")

> 

> Above commit copies a string before checking for null pointer, fix

> this, and add a pr_err.  Also trim comment, and add return val info.


The way you list the above commit is very odd, and hard to read and
understand.  How about something like:

	In commit a2d375eda771 ("dyndbg: refine export, rename to
	dynamic_debug_exec_queries()"), a string is copied before
	checking....


Also, when you say "also" in a patch, that is a HUGE flag that the
commit needs to be broken up into multiple patches.  Put the bugfix
first, and then fix up the comment later, if it is not being changed for
this fix.

Also:

> Fixes: a2d375eda771


You need the full information here, please write:
	Fixes: a2d375eda771 ("dyndbg: refine export, rename to dynamic_debug_exec_queries()")


Can you fix all of that up and resend?

thanks,

greg k-h
diff mbox series

Patch

diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
index bd7b3aaa93c3..711a9def8c83 100644
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -553,17 +553,23 @@  static int ddebug_exec_queries(char *query, const char *modname)
  * @query: query-string described in admin-guide/dynamic-debug-howto
  * @modname: string containing module name, usually &module.mod_name
  *
- * This uses the >/proc/dynamic_debug/control reader, allowing module
- * authors to modify their dynamic-debug callsites. The modname is
- * canonically struct module.mod_name, but can also be null or a
- * module-wildcard, for example: "drm*".
+ * This uses the >control reader, allowing module authors to modify
+ * their dynamic-debug callsites. The modname is canonically struct
+ * module.mod_name, but can also be null or a module-wildcard, for
+ * example: "drm*".
+ * Returns <0 on error, >=0 for callsites changed
  */
 int dynamic_debug_exec_queries(const char *query, const char *modname)
 {
 	int rc;
-	char *qry = kstrndup(query, PAGE_SIZE, GFP_KERNEL);
+	char *qry; /* writable copy of query */
 
-	if (!query)
+	if (!query) {
+		pr_err("non-null query/command string expected\n");
+		return -EINVAL;
+	}
+	qry = kstrndup(query, PAGE_SIZE, GFP_KERNEL);
+	if (!qry)
 		return -ENOMEM;
 
 	rc = ddebug_exec_queries(qry, modname);