All of lore.kernel.org
 help / color / mirror / Atom feed
From: "kirill@shutemov.name" <kirill@shutemov.name>
To: David Laight <David.Laight@ACULAB.COM>
Cc: "'Kirill A. Shutemov'" <kirill.shutemov@linux.intel.com>,
	"dave.hansen@intel.com" <dave.hansen@intel.com>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
	"jejb@linux.ibm.com" <jejb@linux.ibm.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"lkp@intel.com" <lkp@intel.com>,
	"martin.petersen@oracle.com" <martin.petersen@oracle.com>,
	"oe-kbuild-all@lists.linux.dev" <oe-kbuild-all@lists.linux.dev>,
	"x86@kernel.org" <x86@kernel.org>
Subject: Re: [PATCH 1/2] scsi: Fix get_user() in call sg_scsi_ioctl()
Date: Thu, 17 Nov 2022 03:03:30 +0300	[thread overview]
Message-ID: <20221117000330.up7qwxjnrtb3u2ll@box.shutemov.name> (raw)
In-Reply-To: <9d59ec367e0445028775d304bcf64704@AcuMS.aculab.com>

On Wed, Nov 16, 2022 at 10:40:09PM +0000, David Laight wrote:
> From: Kirill A. Shutemov
> > Sent: 16 November 2022 00:44
> > 
> > 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.
> > 
> > Cast it explicitly to 'unsigned char __user *'. It matches current
> > behaviour.
> > 
> > This is preparation for fixing sparse warnings caused by Linear Address
> > Masking patchset.
> > 
> > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
> > Cc: "James E.J. Bottomley" <jejb@linux.ibm.com>
> > Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
> > ---
> >  drivers/scsi/scsi_ioctl.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/scsi/scsi_ioctl.c b/drivers/scsi/scsi_ioctl.c
> > index 2d20da55fb64..72b3ab5137b8 100644
> > --- a/drivers/scsi/scsi_ioctl.c
> > +++ b/drivers/scsi/scsi_ioctl.c
> > @@ -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, (unsigned char __user *)sic->data))
> 
> Using &sic->data[0] should work and is much nicer than the cast.

Okay. Fair enough. Adjusted patch is below.

From 86baed963c9295c067940479ab0f844c3644e1c9 Mon Sep 17 00:00:00 2001
From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Date: Wed, 16 Nov 2022 03:22:28 +0300
Subject: [PATCHv2 1/2] scsi: Fix get_user() in call sg_scsi_ioctl()

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 <kirill.shutemov@linux.intel.com>
Cc: "James E.J. Bottomley" <jejb@linux.ibm.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
---
 drivers/scsi/scsi_ioctl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/scsi_ioctl.c b/drivers/scsi/scsi_ioctl.c
index 2d20da55fb64..fdd47565a311 100644
--- a/drivers/scsi/scsi_ioctl.c
+++ b/drivers/scsi/scsi_ioctl.c
@@ -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);
-- 
  Kiryl Shutsemau / Kirill A. Shutemov

  reply	other threads:[~2022-11-17  0:03 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-14 21:41 [tip:x86/mm 5/16] sound/core/hwdep.c:243:24: sparse: sparse: incorrect type in assignment (different address spaces) kernel test robot
2022-11-14 22:55 ` Dave Hansen
2022-11-15  3:40   ` Kirill A. Shutemov
2022-11-15 15:58     ` Kirill A. Shutemov
2022-11-16  0:43       ` [PATCH 0/2] x86/mm: Fix sparse warning due to LAM patchset Kirill A. Shutemov
2022-11-16  0:43         ` [PATCH 1/2] scsi: Fix get_user() in call sg_scsi_ioctl() Kirill A. Shutemov
2022-11-16  0:48           ` Dave Hansen
2022-11-16  0:55             ` kirill
2022-11-16 22:40           ` David Laight
2022-11-17  0:03             ` kirill [this message]
2022-11-16  0:43         ` [PATCH 2/2] x86/mm: Fix sparse warnings in untagged_ptr() Kirill A. Shutemov
2022-11-24 19:36           ` Andy Shevchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221117000330.up7qwxjnrtb3u2ll@box.shutemov.name \
    --to=kirill@shutemov.name \
    --cc=David.Laight@ACULAB.COM \
    --cc=dave.hansen@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=jejb@linux.ibm.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=martin.petersen@oracle.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.