mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-14 06:30:20 -04:00
Merge tag 'pstore-v4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux
Pull pstore update from Kees Cook: "Make pstore permissions more versatile by removing CAP_SYSLOG requirement and defining more restrictive root directory DAC permissions default (0750, which can be adjust after boot unlike the CAP_SYSLOG check). Suggested by Nick Kralevich" * tag 'pstore-v4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: Revert "pstore: Honor dmesg_restrict sysctl on dmesg dumps" pstore: Make default pstorefs root dir perms 0750
This commit is contained in:
@@ -36,7 +36,6 @@
|
||||
#include <linux/slab.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/syslog.h>
|
||||
|
||||
#include "internal.h"
|
||||
|
||||
@@ -132,18 +131,6 @@ static const struct seq_operations pstore_ftrace_seq_ops = {
|
||||
.show = pstore_ftrace_seq_show,
|
||||
};
|
||||
|
||||
static int pstore_check_syslog_permissions(struct pstore_private *ps)
|
||||
{
|
||||
switch (ps->record->type) {
|
||||
case PSTORE_TYPE_DMESG:
|
||||
case PSTORE_TYPE_CONSOLE:
|
||||
return check_syslog_permissions(SYSLOG_ACTION_READ_ALL,
|
||||
SYSLOG_FROM_READER);
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static ssize_t pstore_file_read(struct file *file, char __user *userbuf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
@@ -163,10 +150,6 @@ static int pstore_file_open(struct inode *inode, struct file *file)
|
||||
int err;
|
||||
const struct seq_operations *sops = NULL;
|
||||
|
||||
err = pstore_check_syslog_permissions(ps);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (ps->record->type == PSTORE_TYPE_FTRACE)
|
||||
sops = &pstore_ftrace_seq_ops;
|
||||
|
||||
@@ -204,11 +187,6 @@ static int pstore_unlink(struct inode *dir, struct dentry *dentry)
|
||||
{
|
||||
struct pstore_private *p = d_inode(dentry)->i_private;
|
||||
struct pstore_record *record = p->record;
|
||||
int err;
|
||||
|
||||
err = pstore_check_syslog_permissions(p);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (!record->psi->erase)
|
||||
return -EPERM;
|
||||
@@ -471,7 +449,7 @@ static int pstore_fill_super(struct super_block *sb, void *data, int silent)
|
||||
|
||||
inode = pstore_get_inode(sb);
|
||||
if (inode) {
|
||||
inode->i_mode = S_IFDIR | 0755;
|
||||
inode->i_mode = S_IFDIR | 0750;
|
||||
inode->i_op = &pstore_dir_inode_operations;
|
||||
inode->i_fop = &simple_dir_operations;
|
||||
inc_nlink(inode);
|
||||
|
||||
@@ -49,13 +49,4 @@
|
||||
|
||||
int do_syslog(int type, char __user *buf, int count, int source);
|
||||
|
||||
#ifdef CONFIG_PRINTK
|
||||
int check_syslog_permissions(int type, int source);
|
||||
#else
|
||||
static inline int check_syslog_permissions(int type, int source)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_SYSLOG_H */
|
||||
|
||||
@@ -649,7 +649,7 @@ static int syslog_action_restricted(int type)
|
||||
type != SYSLOG_ACTION_SIZE_BUFFER;
|
||||
}
|
||||
|
||||
int check_syslog_permissions(int type, int source)
|
||||
static int check_syslog_permissions(int type, int source)
|
||||
{
|
||||
/*
|
||||
* If this is from /proc/kmsg and we've already opened it, then we've
|
||||
@@ -677,7 +677,6 @@ int check_syslog_permissions(int type, int source)
|
||||
ok:
|
||||
return security_syslog(type);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(check_syslog_permissions);
|
||||
|
||||
static void append_char(char **pp, char *e, char c)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user