|
Daniel Wagner |
b7ea8f |
From: Keith Busch <kbusch@kernel.org>
|
|
Daniel Wagner |
b7ea8f |
Date: Thu, 22 Sep 2022 07:54:06 -0700
|
|
Daniel Wagner |
b7ea8f |
Subject: [PATCH] nvme: restrict management ioctls to admin
|
|
Oscar Salvador |
32aee9 |
Patch-mainline: v6.0-rc2
|
|
Daniel Wagner |
b7ea8f |
Git-commit: 23e085b2dead13b51fe86d27069895b740f749c0
|
|
Daniel Wagner |
b7ea8f |
References: bsc#1203290 CVE-2022-3169
|
|
Daniel Wagner |
b7ea8f |
|
|
Daniel Wagner |
b7ea8f |
The passthrough commands already have this restriction, but the other
|
|
Daniel Wagner |
b7ea8f |
operations do not. Require the same capabilities for all users as all of
|
|
Daniel Wagner |
b7ea8f |
these operations, which include resets and rescans, can be disruptive.
|
|
Daniel Wagner |
b7ea8f |
|
|
Daniel Wagner |
b7ea8f |
Signed-off-by: Keith Busch <kbusch@kernel.org>
|
|
Daniel Wagner |
b7ea8f |
Signed-off-by: Christoph Hellwig <hch@lst.de>
|
|
Daniel Wagner |
b7ea8f |
[dwagner: updated context]
|
|
Daniel Wagner |
b7ea8f |
Acked-by: Daniel Wagner <dwagner@suse.de>
|
|
Daniel Wagner |
b7ea8f |
---
|
|
Daniel Wagner |
b7ea8f |
drivers/nvme/host/core.c | 6 ++++++
|
|
Daniel Wagner |
b7ea8f |
1 file changed, 6 insertions(+)
|
|
Daniel Wagner |
b7ea8f |
|
|
Daniel Wagner |
b7ea8f |
--- a/drivers/nvme/host/core.c
|
|
Daniel Wagner |
b7ea8f |
+++ b/drivers/nvme/host/core.c
|
|
Daniel Wagner |
b7ea8f |
@@ -3106,11 +3106,17 @@ static long nvme_dev_ioctl(struct file *
|
|
Daniel Wagner |
b7ea8f |
case NVME_IOCTL_IO_CMD:
|
|
Daniel Wagner |
b7ea8f |
return nvme_dev_user_cmd(ctrl, argp);
|
|
Daniel Wagner |
b7ea8f |
case NVME_IOCTL_RESET:
|
|
Daniel Wagner |
b7ea8f |
+ if (!capable(CAP_SYS_ADMIN))
|
|
Daniel Wagner |
b7ea8f |
+ return -EACCES;
|
|
Daniel Wagner |
b7ea8f |
dev_warn(ctrl->device, "resetting controller\n");
|
|
Daniel Wagner |
b7ea8f |
return nvme_reset_ctrl_sync(ctrl);
|
|
Daniel Wagner |
b7ea8f |
case NVME_IOCTL_SUBSYS_RESET:
|
|
Daniel Wagner |
b7ea8f |
+ if (!capable(CAP_SYS_ADMIN))
|
|
Daniel Wagner |
b7ea8f |
+ return -EACCES;
|
|
Daniel Wagner |
b7ea8f |
return nvme_reset_subsystem(ctrl);
|
|
Daniel Wagner |
b7ea8f |
case NVME_IOCTL_RESCAN:
|
|
Daniel Wagner |
b7ea8f |
+ if (!capable(CAP_SYS_ADMIN))
|
|
Daniel Wagner |
b7ea8f |
+ return -EACCES;
|
|
Daniel Wagner |
b7ea8f |
nvme_queue_scan(ctrl);
|
|
Daniel Wagner |
b7ea8f |
return 0;
|
|
Daniel Wagner |
b7ea8f |
default:
|