Commit d0d3e218 authored by Thomas Richter's avatar Thomas Richter Committed by Alexander Gordeev

s390/cpum_cf: open access to hwctr device for CAP_PERFMON privileged process

The device /dev/hwctr was introduced to access complete
CPU Measurement facility counter sets via an ioctl system call.
The access the to device is limited to privileged processes
running as root or superuser. The capability CAP_SYS_ADMIN
is required.  The device permissions are read/write for the
device owner root. There is no need for this restriction.

Make the device access permission read/write for all and
reduce the capabilities to CAP_PERFMON.
Any user space program with the CAP_PERFMON capability assigned to it
can now read and display the CPU Measurement facility counter sets.

For more details on perf tool usage and security, see linux
documentation in Documentation/admin-guide/perf-security.rst.
Signed-off-by: default avatarThomas Richter <tmricht@linux.ibm.com>
Acked-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Signed-off-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
parent 11458e2b
...@@ -1213,7 +1213,7 @@ static int cfset_release(struct inode *inode, struct file *file) ...@@ -1213,7 +1213,7 @@ static int cfset_release(struct inode *inode, struct file *file)
static int cfset_open(struct inode *inode, struct file *file) static int cfset_open(struct inode *inode, struct file *file)
{ {
if (!capable(CAP_SYS_ADMIN)) if (!perfmon_capable())
return -EPERM; return -EPERM;
mutex_lock(&cfset_ctrset_mutex); mutex_lock(&cfset_ctrset_mutex);
if (atomic_inc_return(&cfset_opencnt) == 1) if (atomic_inc_return(&cfset_opencnt) == 1)
...@@ -1502,6 +1502,7 @@ static struct miscdevice cfset_dev = { ...@@ -1502,6 +1502,7 @@ static struct miscdevice cfset_dev = {
.name = S390_HWCTR_DEVICE, .name = S390_HWCTR_DEVICE,
.minor = MISC_DYNAMIC_MINOR, .minor = MISC_DYNAMIC_MINOR,
.fops = &cfset_fops, .fops = &cfset_fops,
.mode = 0666,
}; };
/* Hotplug add of a CPU. Scan through all active processes and add /* Hotplug add of a CPU. Scan through all active processes and add
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment