diff options
| author | Jim Cromie <jim.cromie@gmail.com> | 2011-12-19 17:12:54 -0500 | 
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2012-01-24 12:48:54 -0800 | 
| commit | b5b78f83854af15e04c63fdbc6efed9355afbe8f (patch) | |
| tree | c0f3a85ec25beace9288e6cc9d07723ffeb989fe /lib | |
| parent | 820874c75ea0d3a9c22d69d6eaad42a279d6756c (diff) | |
| download | olio-linux-3.10-b5b78f83854af15e04c63fdbc6efed9355afbe8f.tar.xz olio-linux-3.10-b5b78f83854af15e04c63fdbc6efed9355afbe8f.zip  | |
dynamic_debug: early return if _ddebug table is empty
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>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/dynamic_debug.c | 35 | 
1 files changed, 20 insertions, 15 deletions
diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 5a7bacc2e90..4be55d8d76b 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -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') {  |