[PATCH] scsi: a potential double-fetch bug when copying msg

From: Kangjie Lu
Date: Tue Dec 25 2018 - 16:29:19 EST


user_msg[0] is copied in twice from user space. It contains size and is
critical. The fix ensures it is not changed in the second copy.

Signed-off-by: Kangjie Lu <kjlu@xxxxxxx>
---
drivers/scsi/dpt_i2o.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c
index 93bd1d1bd5b5..2294520842e0 100644
--- a/drivers/scsi/dpt_i2o.c
+++ b/drivers/scsi/dpt_i2o.c
@@ -1850,6 +1850,8 @@ static int adpt_i2o_passthru(adpt_hba* pHba, u32 __user *arg)
rcode = -EFAULT;
goto cleanup;
}
+ /* Ensure it is not changed in the second copy */
+ msg[0] = size;
sg_count = (size - sg_offset*4) / sizeof(struct sg_simple_element);

// TODO add 64 bit API
--
2.17.2 (Apple Git-113)