mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
dyndbg: refine export, rename to dynamic_debug_exec_queries()
commit4c0d77828d
("dyndbg: export ddebug_exec_queries") had a few problems: - broken non DYNAMIC_DEBUG_CORE configs, sparse warning - the exported function modifies query string, breaks on RO strings. - func name follows internal convention, shouldn't be exposed as is. 1st is fixed in header with ifdefd function prototype or stub defn. Also remove an obsolete HAVE-symbol ifdef-comment, and add others. Fix others by wrapping existing internal function with a new one, named in accordance with module-prefix naming convention, before export hits v5.9.0. In new function, copy query string to a local buffer, so users can pass hard-coded/RO queries, and internal function can be used unchanged. Fixes:4c0d77828d
("dyndbg: export ddebug_exec_queries") Signed-off-by: Jim Cromie <jim.cromie@gmail.com> Link: https://lore.kernel.org/r/20200831182210.850852-3-jim.cromie@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
b52a95eac1
commit
a2d375eda7
@@ -525,7 +525,7 @@ static int ddebug_exec_query(char *query_string, const char *modname)
|
||||
last error or number of matching callsites. Module name is either
|
||||
in param (for boot arg) or perhaps in query string.
|
||||
*/
|
||||
int ddebug_exec_queries(char *query, const char *modname)
|
||||
static int ddebug_exec_queries(char *query, const char *modname)
|
||||
{
|
||||
char *split;
|
||||
int i, errs = 0, exitcode = 0, rc, nfound = 0;
|
||||
@@ -557,7 +557,30 @@ int ddebug_exec_queries(char *query, const char *modname)
|
||||
return exitcode;
|
||||
return nfound;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ddebug_exec_queries);
|
||||
|
||||
/**
|
||||
* dynamic_debug_exec_queries - select and change dynamic-debug prints
|
||||
* @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*".
|
||||
*/
|
||||
int dynamic_debug_exec_queries(const char *query, const char *modname)
|
||||
{
|
||||
int rc;
|
||||
char *qry = kstrndup(query, PAGE_SIZE, GFP_KERNEL);
|
||||
|
||||
if (!query)
|
||||
return -ENOMEM;
|
||||
|
||||
rc = ddebug_exec_queries(qry, modname);
|
||||
kfree(qry);
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dynamic_debug_exec_queries);
|
||||
|
||||
#define PREFIX_SIZE 64
|
||||
|
||||
|
Reference in New Issue
Block a user