The pstore subsystem already had a private version of this function.
With the coming addition of the pstore/zone driver, this needs to be
shared. As it really should live with printk, move it there instead.

Signed-off-by: Kees Cook <[email protected]>
---
 fs/pstore/platform.c      | 22 +---------------------
 include/linux/kmsg_dump.h |  7 +++++++
 kernel/printk/printk.c    | 21 +++++++++++++++++++++
 3 files changed, 29 insertions(+), 21 deletions(-)

diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c
index 90d146fbc7d2..a9e297eefdff 100644
--- a/fs/pstore/platform.c
+++ b/fs/pstore/platform.c
@@ -135,26 +135,6 @@ enum pstore_type_id pstore_name_to_type(const char *name)
 }
 EXPORT_SYMBOL_GPL(pstore_name_to_type);
 
-static const char *get_reason_str(enum kmsg_dump_reason reason)
-{
-       switch (reason) {
-       case KMSG_DUMP_PANIC:
-               return "Panic";
-       case KMSG_DUMP_OOPS:
-               return "Oops";
-       case KMSG_DUMP_EMERG:
-               return "Emergency";
-       case KMSG_DUMP_RESTART:
-               return "Restart";
-       case KMSG_DUMP_HALT:
-               return "Halt";
-       case KMSG_DUMP_POWEROFF:
-               return "Poweroff";
-       default:
-               return "Unknown";
-       }
-}
-
 static void pstore_timer_kick(void)
 {
        if (pstore_update_ms < 0)
@@ -407,7 +387,7 @@ static void pstore_dump(struct kmsg_dumper *dumper,
        unsigned int    part = 1;
        int             ret;
 
-       why = get_reason_str(reason);
+       why = kmsg_dump_reason_str(reason);
 
        if (down_trylock(&psinfo->buf_lock)) {
                /* Failed to acquire lock: give up if we cannot wait. */
diff --git a/include/linux/kmsg_dump.h b/include/linux/kmsg_dump.h
index cfc042066be7..b3ddb0b2ee40 100644
--- a/include/linux/kmsg_dump.h
+++ b/include/linux/kmsg_dump.h
@@ -72,6 +72,8 @@ void kmsg_dump_rewind(struct kmsg_dumper *dumper);
 int kmsg_dump_register(struct kmsg_dumper *dumper);
 
 int kmsg_dump_unregister(struct kmsg_dumper *dumper);
+
+const char *kmsg_dump_reason_str(enum kmsg_dump_reason reason);
 #else
 static inline void kmsg_dump(enum kmsg_dump_reason reason)
 {
@@ -113,6 +115,11 @@ static inline int kmsg_dump_unregister(struct kmsg_dumper 
*dumper)
 {
        return -EINVAL;
 }
+
+static inline const char *kmsg_dump_reason_str(enum kmsg_dump_reason reason)
+{
+       return "Disabled";
+}
 #endif
 
 #endif /* _LINUX_KMSG_DUMP_H */
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index 1aab69a8a2bf..67a284830d74 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -3144,6 +3144,27 @@ EXPORT_SYMBOL_GPL(kmsg_dump_unregister);
 static bool always_kmsg_dump;
 module_param_named(always_kmsg_dump, always_kmsg_dump, bool, S_IRUGO | 
S_IWUSR);
 
+const char *kmsg_dump_reason_str(enum kmsg_dump_reason reason)
+{
+       switch (reason) {
+       case KMSG_DUMP_PANIC:
+               return "Panic";
+       case KMSG_DUMP_OOPS:
+               return "Oops";
+       case KMSG_DUMP_EMERG:
+               return "Emergency";
+       case KMSG_DUMP_RESTART:
+               return "Restart";
+       case KMSG_DUMP_HALT:
+               return "Halt";
+       case KMSG_DUMP_POWEROFF:
+               return "Poweroff";
+       default:
+               return "Unknown";
+       }
+}
+EXPORT_SYMBOL_GPL(kmsg_dump_reason_str);
+
 /**
  * kmsg_dump - dump kernel log to kernel message dumpers.
  * @reason: the reason (oops, panic etc) for dumping
-- 
2.20.1

Reply via email to