Re: [PATCH RESEND] usb: gadget: f_mass_storage: Make CD-ROM emulation works with Windows OS

From: Alan Stern
Date: Thu Jun 23 2022 - 10:48:43 EST


On Thu, Jun 23, 2022 at 11:04:05AM +0800, Neal Liu wrote:
> Add read TOC with format 2 to support CD-ROM emulation with
> Windows OS.
> This patch is tested on Windows OS Server 2019.

This description says "format 2", but the patch actually adds code for
the case where format is 1. This sort of mistake is not acceptable.

> Signed-off-by: Neal Liu <neal_liu@xxxxxxxxxxxxxx>
> ---
> drivers/usb/gadget/function/f_mass_storage.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/usb/gadget/function/f_mass_storage.c b/drivers/usb/gadget/function/f_mass_storage.c
> index 3a77bca0ebe1..3c2a5f1e8b66 100644
> --- a/drivers/usb/gadget/function/f_mass_storage.c
> +++ b/drivers/usb/gadget/function/f_mass_storage.c
> @@ -1209,6 +1209,7 @@ static int do_read_toc(struct fsg_common *common, struct fsg_buffhd *bh)
>
> switch (format) {
> case 0:
> + case 1:
> /* Formatted TOC */
> len = 4 + 2*8; /* 4 byte header + 2 descriptors */
> memset(buf, 0, len);

When format is 1, the driver is supposed to ignore the start_track
value. Your patch does not do this.

The default case in this switch statement has a comment saying that
Mutil-session is not supported. As a result of this change, it now _is_
supported. The patch needs to update that comment.

Alan Stern