summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Christie <mchristi@redhat.com>2018-07-23 22:07:47 +0300
committerMartin K. Petersen <martin.petersen@oracle.com>2018-07-31 06:17:53 +0300
commita30b0473b62652f9b8ccb1e4f4a3a3c31d2b72b3 (patch)
tree9a45302ea322125bb5109a0c390931c1019ee600
parent63d5be0f6a8053ba0c084dd6e2d5538e9376e7da (diff)
downloadlinux-a30b0473b62652f9b8ccb1e4f4a3a3c31d2b72b3.tar.xz
scsi: tcmu: check if dev is configured before block/reset
Do not allow userspace to block or reset the ring until the device has been configured. This will prevent the bug where userspace can write to those files and access mb_addr before it has been setup. Signed-off-by: Mike Christie <mchristi@redhat.com> Reviewed-by: Xiubo Li <xiubli@redhat.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r--drivers/target/target_core_user.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/target/target_core_user.c b/drivers/target/target_core_user.c
index bc8121f97d65..d6b402203b20 100644
--- a/drivers/target/target_core_user.c
+++ b/drivers/target/target_core_user.c
@@ -2480,6 +2480,11 @@ static ssize_t tcmu_block_dev_store(struct config_item *item, const char *page,
u8 val;
int ret;
+ if (!target_dev_configured(&udev->se_dev)) {
+ pr_err("Device is not configured.\n");
+ return -EINVAL;
+ }
+
ret = kstrtou8(page, 0, &val);
if (ret < 0)
return ret;
@@ -2507,6 +2512,11 @@ static ssize_t tcmu_reset_ring_store(struct config_item *item, const char *page,
u8 val;
int ret;
+ if (!target_dev_configured(&udev->se_dev)) {
+ pr_err("Device is not configured.\n");
+ return -EINVAL;
+ }
+
ret = kstrtou8(page, 0, &val);
if (ret < 0)
return ret;