dynamic_debug: early return if _ddebug table is empty
authorJim Cromie <jim.cromie@gmail.com>
Mon, 19 Dec 2011 22:12:54 +0000 (17:12 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 24 Jan 2012 20:48:54 +0000 (12:48 -0800)
If _ddebug table is empty (in a CONFIG_DYNAMIC_DEBUG build this
shouldn't happen), then warn (error?) and return early.  This skips
empty table scan and parsing of setup-string, including the pr_info
call noting the parse.  By inspection, copy return-code handling from
1st ddebug_add_module() callsite to 2nd.

Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
Signed-off-by: Jason Baron <jbaron@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
lib/dynamic_debug.c

index 5a7bacc2e9015d11b97edd20e7cbb0b4fd0818eb..4be55d8d76b81326d3859679c31d4443f860ee7c 100644 (file)
@@ -871,23 +871,28 @@ static int __init dynamic_debug_init(void)
        int ret = 0;
        int n = 0;
 
-       if (__start___verbose != __stop___verbose) {
-               iter = __start___verbose;
-               modname = iter->modname;
-               iter_start = iter;
-               for (; iter < __stop___verbose; iter++) {
-                       if (strcmp(modname, iter->modname)) {
-                               ret = ddebug_add_module(iter_start, n, modname);
-                               if (ret)
-                                       goto out_free;
-                               n = 0;
-                               modname = iter->modname;
-                               iter_start = iter;
-                       }
-                       n++;
+       if (__start___verbose == __stop___verbose) {
+               pr_warn("_ddebug table is empty in a "
+                       "CONFIG_DYNAMIC_DEBUG build");
+               return 1;
+       }
+       iter = __start___verbose;
+       modname = iter->modname;
+       iter_start = iter;
+       for (; iter < __stop___verbose; iter++) {
+               if (strcmp(modname, iter->modname)) {
+                       ret = ddebug_add_module(iter_start, n, modname);
+                       if (ret)
+                               goto out_free;
+                       n = 0;
+                       modname = iter->modname;
+                       iter_start = iter;
                }
-               ret = ddebug_add_module(iter_start, n, modname);
+               n++;
        }
+       ret = ddebug_add_module(iter_start, n, modname);
+       if (ret)
+               goto out_free;
 
        /* ddebug_query boot param got passed -> set it up */
        if (ddebug_setup_string[0] != '\0') {