2022-01-26 20:58:08

by Neal Liu

[permalink] [raw]
Subject: [PATCH] usb: gadget: mass_storage: add READ_TOC cmd mask check

READ_TOC cmnd[2] specifies Format Field which is defined
in SCSI-3 spec. Add command mask to avoid marking this
sense data as invalid.

Signed-off-by: Neal Liu <[email protected]>
---
drivers/usb/gadget/function/f_mass_storage.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/gadget/function/f_mass_storage.c b/drivers/usb/gadget/function/f_mass_storage.c
index 46dd11dcb3a8..14d51695b8ae 100644
--- a/drivers/usb/gadget/function/f_mass_storage.c
+++ b/drivers/usb/gadget/function/f_mass_storage.c
@@ -1944,7 +1944,7 @@ static int do_scsi_command(struct fsg_common *common)
common->data_size_from_cmnd =
get_unaligned_be16(&common->cmnd[7]);
reply = check_command(common, 10, DATA_DIR_TO_HOST,
- (7<<6) | (1<<1), 1,
+ (7<<6) | (1<<1) | (1<<2), 1,
"READ TOC");
if (reply == 0)
reply = do_read_toc(common, bh);
--
2.25.1


2022-01-26 21:05:30

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] usb: gadget: mass_storage: add READ_TOC cmd mask check

On Wed, Jan 26, 2022 at 06:08:56PM +0800, Neal Liu wrote:
> READ_TOC cmnd[2] specifies Format Field which is defined
> in SCSI-3 spec. Add command mask to avoid marking this
> sense data as invalid.
>
> Signed-off-by: Neal Liu <[email protected]>
> ---
> drivers/usb/gadget/function/f_mass_storage.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/gadget/function/f_mass_storage.c b/drivers/usb/gadget/function/f_mass_storage.c
> index 46dd11dcb3a8..14d51695b8ae 100644
> --- a/drivers/usb/gadget/function/f_mass_storage.c
> +++ b/drivers/usb/gadget/function/f_mass_storage.c
> @@ -1944,7 +1944,7 @@ static int do_scsi_command(struct fsg_common *common)
> common->data_size_from_cmnd =
> get_unaligned_be16(&common->cmnd[7]);
> reply = check_command(common, 10, DATA_DIR_TO_HOST,
> - (7<<6) | (1<<1), 1,
> + (7<<6) | (1<<1) | (1<<2), 1,

Can we have real names here instead of magic numbers?

And what commit does this fix? Is it a regression or has it always
never worked properly?

thanks,

greg k-h

2022-01-26 22:11:28

by Alan Stern

[permalink] [raw]
Subject: Re: [PATCH] usb: gadget: mass_storage: add READ_TOC cmd mask check

On Wed, Jan 26, 2022 at 06:08:56PM +0800, Neal Liu wrote:
> READ_TOC cmnd[2] specifies Format Field which is defined
> in SCSI-3 spec. Add command mask to avoid marking this
> sense data as invalid.
>
> Signed-off-by: Neal Liu <[email protected]>
> ---
> drivers/usb/gadget/function/f_mass_storage.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/gadget/function/f_mass_storage.c b/drivers/usb/gadget/function/f_mass_storage.c
> index 46dd11dcb3a8..14d51695b8ae 100644
> --- a/drivers/usb/gadget/function/f_mass_storage.c
> +++ b/drivers/usb/gadget/function/f_mass_storage.c
> @@ -1944,7 +1944,7 @@ static int do_scsi_command(struct fsg_common *common)
> common->data_size_from_cmnd =
> get_unaligned_be16(&common->cmnd[7]);
> reply = check_command(common, 10, DATA_DIR_TO_HOST,
> - (7<<6) | (1<<1), 1,
> + (7<<6) | (1<<1) | (1<<2), 1,
> "READ TOC");
> if (reply == 0)
> reply = do_read_toc(common, bh);

You've been anticipated:

https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git/commit/?h=usb-testing&id=89ada0fe669a7abf8777b793b874202a0767a24f

Alan Stern

2022-01-27 09:14:03

by Neal Liu

[permalink] [raw]
Subject: RE: [PATCH] usb: gadget: mass_storage: add READ_TOC cmd mask check

> -----Original Message-----
> From: Greg Kroah-Hartman <[email protected]>
> Sent: Wednesday, January 26, 2022 6:51 PM
> To: Neal Liu <[email protected]>
> Cc: Felipe Balbi <[email protected]>; Alan Stern <[email protected]>;
> Chen Lin <[email protected]>; Wesley Cheng
> <[email protected]>; Nikita Yushchenko
> <[email protected]>; Cai Huoqing <[email protected]>;
> [email protected]; [email protected];
> [email protected]; BMC-SW <[email protected]>
> Subject: Re: [PATCH] usb: gadget: mass_storage: add READ_TOC cmd mask
> check
>
> On Wed, Jan 26, 2022 at 06:08:56PM +0800, Neal Liu wrote:
> > READ_TOC cmnd[2] specifies Format Field which is defined in SCSI-3
> > spec. Add command mask to avoid marking this sense data as invalid.
> >
> > Signed-off-by: Neal Liu <[email protected]>
> > ---
> > drivers/usb/gadget/function/f_mass_storage.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/usb/gadget/function/f_mass_storage.c
> > b/drivers/usb/gadget/function/f_mass_storage.c
> > index 46dd11dcb3a8..14d51695b8ae 100644
> > --- a/drivers/usb/gadget/function/f_mass_storage.c
> > +++ b/drivers/usb/gadget/function/f_mass_storage.c
> > @@ -1944,7 +1944,7 @@ static int do_scsi_command(struct fsg_common
> *common)
> > common->data_size_from_cmnd =
> > get_unaligned_be16(&common->cmnd[7]);
> > reply = check_command(common, 10, DATA_DIR_TO_HOST,
> > - (7<<6) | (1<<1), 1,
> > + (7<<6) | (1<<1) | (1<<2), 1,
>
> Can we have real names here instead of magic numbers?
>
> And what commit does this fix? Is it a regression or has it always never
> worked properly?
>
> thanks,
>
> greg k-h

This patch fix Windows Server OS installation failure problem.
Since @Roger already sent similar patch fixed, I'll try it.
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git/commit/?h=usb-testing&id=89ada0fe669a7abf8777b793b874202a0767a24f
Thanks

-Neal

2022-01-27 09:14:09

by Neal Liu

[permalink] [raw]
Subject: RE: [PATCH] usb: gadget: mass_storage: add READ_TOC cmd mask check

> -----Original Message-----
> From: Alan Stern <[email protected]>
> Sent: Thursday, January 27, 2022 12:01 AM
> To: Neal Liu <[email protected]>
> Cc: Felipe Balbi <[email protected]>; Greg Kroah-Hartman
> <[email protected]>; Chen Lin <[email protected]>; Wesley
> Cheng <[email protected]>; Nikita Yushchenko
> <[email protected]>; Cai Huoqing <[email protected]>;
> [email protected]; [email protected];
> [email protected]; BMC-SW <[email protected]>
> Subject: Re: [PATCH] usb: gadget: mass_storage: add READ_TOC cmd mask
> check
>
> On Wed, Jan 26, 2022 at 06:08:56PM +0800, Neal Liu wrote:
> > READ_TOC cmnd[2] specifies Format Field which is defined in SCSI-3
> > spec. Add command mask to avoid marking this sense data as invalid.
> >
> > Signed-off-by: Neal Liu <[email protected]>
> > ---
> > drivers/usb/gadget/function/f_mass_storage.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/usb/gadget/function/f_mass_storage.c
> > b/drivers/usb/gadget/function/f_mass_storage.c
> > index 46dd11dcb3a8..14d51695b8ae 100644
> > --- a/drivers/usb/gadget/function/f_mass_storage.c
> > +++ b/drivers/usb/gadget/function/f_mass_storage.c
> > @@ -1944,7 +1944,7 @@ static int do_scsi_command(struct fsg_common
> *common)
> > common->data_size_from_cmnd =
> > get_unaligned_be16(&common->cmnd[7]);
> > reply = check_command(common, 10, DATA_DIR_TO_HOST,
> > - (7<<6) | (1<<1), 1,
> > + (7<<6) | (1<<1) | (1<<2), 1,
> > "READ TOC");
> > if (reply == 0)
> > reply = do_read_toc(common, bh);
>
> You've been anticipated:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git/commit/?h=usb
> -testing&id=89ada0fe669a7abf8777b793b874202a0767a24f
>
> Alan Stern

Thanks for you info.

-Neal