Merge tag 'pstore-v6.2-rc1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 23 Dec 2022 19:55:54 +0000 (11:55 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 23 Dec 2022 19:55:54 +0000 (11:55 -0800)
Pull pstore fixes from Kees Cook:

 - Switch pmsg_lock to an rt_mutex to avoid priority inversion (John
   Stultz)

 - Correctly assign mem_type property (Luca Stefani)

* tag 'pstore-v6.2-rc1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
  pstore: Properly assign mem_type property
  pstore: Make sure CONFIG_PSTORE_PMSG selects CONFIG_RT_MUTEXES
  pstore: Switch pmsg_lock to an rt_mutex to avoid priority inversion

fs/pstore/Kconfig
fs/pstore/pmsg.c
fs/pstore/ram.c

index 8adabde685f132f2375114bef345e27db85a9265..c49d554cc9ae9f80aa07a19ae8c4a83b19135b6b 100644 (file)
@@ -126,6 +126,7 @@ config PSTORE_CONSOLE
 config PSTORE_PMSG
        bool "Log user space messages"
        depends on PSTORE
+       select RT_MUTEXES
        help
          When the option is enabled, pstore will export a character
          interface /dev/pmsg0 to log user space messages. On reboot
index b31c9c72d90b4b639207fba3b24c6e977fe42aec..ab82e5f05346413eea55a94b10db40ceaa1d1490 100644 (file)
@@ -7,9 +7,10 @@
 #include <linux/device.h>
 #include <linux/fs.h>
 #include <linux/uaccess.h>
+#include <linux/rtmutex.h>
 #include "internal.h"
 
-static DEFINE_MUTEX(pmsg_lock);
+static DEFINE_RT_MUTEX(pmsg_lock);
 
 static ssize_t write_pmsg(struct file *file, const char __user *buf,
                          size_t count, loff_t *ppos)
@@ -28,9 +29,9 @@ static ssize_t write_pmsg(struct file *file, const char __user *buf,
        if (!access_ok(buf, count))
                return -EFAULT;
 
-       mutex_lock(&pmsg_lock);
+       rt_mutex_lock(&pmsg_lock);
        ret = psinfo->write_user(&record, buf);
-       mutex_unlock(&pmsg_lock);
+       rt_mutex_unlock(&pmsg_lock);
        return ret ? ret : count;
 }
 
index 9a5052431fd36be23190cc9e109dddb441f443d0..ade66dbe5f396cf2ffd8e54a2e3f4b358f1bc28e 100644 (file)
@@ -680,7 +680,7 @@ static int ramoops_parse_dt(struct platform_device *pdev,
                field = value;                                          \
        }
 
-       parse_u32("mem-type", pdata->record_size, pdata->mem_type);
+       parse_u32("mem-type", pdata->mem_type, pdata->mem_type);
        parse_u32("record-size", pdata->record_size, 0);
        parse_u32("console-size", pdata->console_size, 0);
        parse_u32("ftrace-size", pdata->ftrace_size, 0);