@@ -27,6 +27,17 @@ struct module;
/* How and when do we show kallsyms values? */
extern bool kallsyms_show_value(const struct cred *cred);
+#if !defined(CONFIG_KALLSYMS) && defined(CONFIG_MODULES)
+extern int sprint_module_info(char *buf, unsigned long value,
+ int modbuildid, int backtrace, int symbol);
+#else
+static inline int sprint_module_info(char *buf, unsigned long value,
+ int modbuildid, int backtrace, int symbol)
+{
+ return 0;
+}
+#endif
+
static inline int is_kernel_text(unsigned long addr)
{
if (__is_kernel_text(addr))
@@ -49,3 +49,50 @@ bool kallsyms_show_value(const struct cred *cred)
return false;
}
}
+
+#if !defined(CONFIG_KALLSYMS) && defined(CONFIG_MODULES)
+int sprint_module_info(char *buf, unsigned long value,
+ int modbuildid, int backtrace, int symbol)
+{
+ struct module *mod;
+ unsigned long offset;
+ void *base;
+ char *modname;
+ int len;
+ const unsigned char *buildid = NULL;
+ bool add_offset;
+
+ if (is_ksym_addr(value))
+ return 0;
+
+ if (backtrace || symbol)
+ add_offset = true;
+ else
+ add_offset = false;
+
+ preempt_disable();
+ mod = __module_address(value);
+ if (mod) {
+ modname = mod->name;
+#if IS_ENABLED(CONFIG_STACKTRACE_BUILD_ID)
+ if (modbuildid)
+ buildid = mod->build_id;
+#endif
+ if (add_offset) {
+ base = mod->core_layout.base;
+ offset = value - (unsigned long)base;
+ }
+ }
+ preempt_enable();
+ if (!mod)
+ return 0;
+
+ /* address belongs to module */
+ if (add_offset)
+ len = sprintf(buf, "0x%p+0x%lx", base, offset);
+ else
+ len = sprintf(buf, "0x%lx", value);
+
+ return len + fill_name_build_id(buf, modname, modbuildid, buildid, len);
+}
+#endif
@@ -999,59 +999,6 @@ char *bdev_name(char *buf, char *end, struct block_device *bdev,
}
#endif
-#if !defined(CONFIG_KALLSYMS) && defined(CONFIG_MODULES)
-static int sprint_module_info(char *buf, unsigned long value,
- int modbuildid, int backtrace, int symbol)
-{
- struct module *mod;
- unsigned long offset;
- void *base;
- char *modname;
- int len;
- const unsigned char *buildid = NULL;
- bool add_offset;
-
- if (is_ksym_addr(value))
- return 0;
-
- if (backtrace || symbol)
- add_offset = true;
- else
- add_offset = false;
-
- preempt_disable();
- mod = __module_address(value);
- if (mod) {
- modname = mod->name;
-#if IS_ENABLED(CONFIG_STACKTRACE_BUILD_ID)
- if (modbuildid)
- buildid = mod->build_id;
-#endif
- if (add_offset) {
- base = mod->core_layout.base;
- offset = value - (unsigned long)base;
- }
- }
- preempt_enable();
- if (!mod)
- return 0;
-
- /* address belongs to module */
- if (add_offset)
- len = sprintf(buf, "0x%p+0x%lx", base, offset);
- else
- len = sprintf(buf, "0x%lx", value);
-
- return len + fill_name_build_id(buf, modname, modbuildid, buildid, len);
-}
-#else
-static inline int sprint_module_info(char *buf, unsigned long value,
- int modbuildid, int backtrace, int symbol)
-{
- return 0;
-}
-#endif
-
static noinline_for_stack
char *symbol_string(char *buf, char *end, void *ptr,
struct printf_spec spec, const char *fmt)