]> Git Repo - J-linux.git/commitdiff
scsi: sg: Fix get_user() in call sg_scsi_ioctl()
authorKirill A. Shutemov <[email protected]>
Thu, 17 Nov 2022 23:23:04 +0000 (02:23 +0300)
committerMartin K. Petersen <[email protected]>
Sat, 26 Nov 2022 03:13:22 +0000 (03:13 +0000)
get_user() expects the pointer to be pointer-to-simple-variable type, but
sic->data is array of 'unsigned char'. It violates get_user() contracts.

Explicitly take pointer to the first element of the array. It matches
current behaviour.

This is preparation for fixing sparse warnings caused by Linear Address
Masking patchset.

Signed-off-by: Kirill A. Shutemov <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Cc: "James E.J. Bottomley" <[email protected]>
Cc: "Martin K. Petersen" <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
drivers/scsi/scsi_ioctl.c

index 2d20da55fb64086ebc66d4702b37ac28c7cc1bea..fdd47565a3115daa33d0d1929108642e83f431c1 100644 (file)
@@ -519,7 +519,7 @@ static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode,
                return -EFAULT;
        if (in_len > PAGE_SIZE || out_len > PAGE_SIZE)
                return -EINVAL;
-       if (get_user(opcode, sic->data))
+       if (get_user(opcode, &sic->data[0]))
                return -EFAULT;
 
        bytes = max(in_len, out_len);
This page took 0.05664 seconds and 4 git commands to generate.