Should generate one log message per kernel run when the write()
system call is used with the sg interface version 3. Due to
security concerns suggest that they use ioctl(SG_SUBMIT_v3)
instead.

Sg interface version 1 or 2 based code may also be calling
write() in this context. There is no easy solution for them
(short of upgrading their interface to version 3 or 4), so
don't produce a warning suggesting the conversion will be
simple.

Signed-off-by: Douglas Gilbert <dgilb...@interlog.com>
---
 drivers/scsi/sg.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index 2620f4079474..9b320a46f024 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -619,6 +619,9 @@ sg_write(struct file *filp, const char __user *p, size_t 
count, loff_t *ppos)
                                     __func__);
                        return -EPERM;
                }
+               WARN_ONCE(true, "Please use %s instead of write(),\n%s\n",
+                         "ioctl(SG_SUBMIT_V3)",
+                         "  See: http://sg.danny.cz/sg/sg_v40.html";);
                memcpy(h3p, ohp, SZ_SG_HEADER);
                if (__copy_from_user(h3u8p + SZ_SG_HEADER, p + SZ_SG_HEADER,
                                     SZ_SG_IO_HDR - SZ_SG_HEADER))
-- 
2.23.0

Reply via email to