* [PATCH] usb: f_fs: Drop check on Reserved1 field on OS_DESC_EXT_COMPAT
@ 2017-11-09 16:34 John Keeping
2017-11-10 10:40 ` Felipe Balbi
0 siblings, 1 reply; 4+ messages in thread
From: John Keeping @ 2017-11-09 16:34 UTC (permalink / raw)
To: Felipe Balbi
Cc: linux-usb, linux-kernel, Greg Kroah-Hartman, Vincent Pelletier,
Jim Lin, Janusz Dziedzic, John Keeping, stable
This check has gone through several incompatible variations in commits
53642399aa71 ("usb: gadget: f_fs: Fix wrong check on reserved1 of
OS_DESC_EXT_COMPAT"), 354bc45bf329 ("usb: gadget: f_fs: Fix ExtCompat
descriptor validation") and 3ba534df815f ("Revert "usb: gadget: f_fs:
Fix ExtCompat descriptor validation"") after initially being introduced
in commit f0175ab51993 ("usb: gadget: f_fs: OS descriptors support").
The various changes make it impossible for a single userspace
implementation to work with different kernel versions, so let's just
drop the condition to avoid breaking userspace.
Fixes: 53642399aa71 ("usb: gadget: f_fs: Fix wrong check on reserved1 of OS_DESC_EXT_COMPAT")
Cc: stable@vger.kernel.org # v4.7+
Signed-off-by: John Keeping <john@metanate.com>
---
drivers/usb/gadget/function/f_fs.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
index 652397eda6d6..0d9962834345 100644
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -2282,8 +2282,7 @@ static int __ffs_data_do_os_desc(enum ffs_os_desc_type type,
int i;
if (len < sizeof(*d) ||
- d->bFirstInterfaceNumber >= ffs->interfaces_count ||
- !d->Reserved1)
+ d->bFirstInterfaceNumber >= ffs->interfaces_count)
return -EINVAL;
for (i = 0; i < ARRAY_SIZE(d->Reserved2); ++i)
if (d->Reserved2[i])
--
2.15.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] usb: f_fs: Drop check on Reserved1 field on OS_DESC_EXT_COMPAT
2017-11-09 16:34 [PATCH] usb: f_fs: Drop check on Reserved1 field on OS_DESC_EXT_COMPAT John Keeping
@ 2017-11-10 10:40 ` Felipe Balbi
2017-11-10 18:34 ` John Keeping
0 siblings, 1 reply; 4+ messages in thread
From: Felipe Balbi @ 2017-11-10 10:40 UTC (permalink / raw)
To: John Keeping
Cc: linux-usb, linux-kernel, Greg Kroah-Hartman, Vincent Pelletier,
Jim Lin, Janusz Dziedzic, John Keeping, stable
[-- Attachment #1: Type: text/plain, Size: 1824 bytes --]
Hi,
John Keeping <john@metanate.com> writes:
> This check has gone through several incompatible variations in commits
> 53642399aa71 ("usb: gadget: f_fs: Fix wrong check on reserved1 of
> OS_DESC_EXT_COMPAT"), 354bc45bf329 ("usb: gadget: f_fs: Fix ExtCompat
> descriptor validation") and 3ba534df815f ("Revert "usb: gadget: f_fs:
> Fix ExtCompat descriptor validation"") after initially being introduced
> in commit f0175ab51993 ("usb: gadget: f_fs: OS descriptors support").
>
> The various changes make it impossible for a single userspace
> implementation to work with different kernel versions, so let's just
> drop the condition to avoid breaking userspace.
>
> Fixes: 53642399aa71 ("usb: gadget: f_fs: Fix wrong check on reserved1 of OS_DESC_EXT_COMPAT")
> Cc: stable@vger.kernel.org # v4.7+
> Signed-off-by: John Keeping <john@metanate.com>
> ---
> drivers/usb/gadget/function/f_fs.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
> index 652397eda6d6..0d9962834345 100644
> --- a/drivers/usb/gadget/function/f_fs.c
> +++ b/drivers/usb/gadget/function/f_fs.c
> @@ -2282,8 +2282,7 @@ static int __ffs_data_do_os_desc(enum ffs_os_desc_type type,
> int i;
>
> if (len < sizeof(*d) ||
> - d->bFirstInterfaceNumber >= ffs->interfaces_count ||
> - !d->Reserved1)
> + d->bFirstInterfaceNumber >= ffs->interfaces_count)
> return -EINVAL;
> for (i = 0; i < ARRAY_SIZE(d->Reserved2); ++i)
> if (d->Reserved2[i])
Sorry, but no. We want to be compliant with the specification. If there
are older still-maintained stable trees which are not working, we need
to backport a fix to them, but we're not allowing uncompliant
implementations.
--
balbi
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] usb: f_fs: Drop check on Reserved1 field on OS_DESC_EXT_COMPAT
2017-11-10 10:40 ` Felipe Balbi
@ 2017-11-10 18:34 ` John Keeping
2017-11-13 10:57 ` Felipe Balbi
0 siblings, 1 reply; 4+ messages in thread
From: John Keeping @ 2017-11-10 18:34 UTC (permalink / raw)
To: Felipe Balbi
Cc: linux-usb, linux-kernel, Greg Kroah-Hartman, Vincent Pelletier,
Jim Lin, Janusz Dziedzic, stable
On Fri, 10 Nov 2017 12:40:39 +0200, Felipe Balbi wrote:
> John Keeping <john@metanate.com> writes:
> > This check has gone through several incompatible variations in commits
> > 53642399aa71 ("usb: gadget: f_fs: Fix wrong check on reserved1 of
> > OS_DESC_EXT_COMPAT"), 354bc45bf329 ("usb: gadget: f_fs: Fix ExtCompat
> > descriptor validation") and 3ba534df815f ("Revert "usb: gadget: f_fs:
> > Fix ExtCompat descriptor validation"") after initially being introduced
> > in commit f0175ab51993 ("usb: gadget: f_fs: OS descriptors support").
> >
> > The various changes make it impossible for a single userspace
> > implementation to work with different kernel versions, so let's just
> > drop the condition to avoid breaking userspace.
> >
> > Fixes: 53642399aa71 ("usb: gadget: f_fs: Fix wrong check on reserved1 of OS_DESC_EXT_COMPAT")
> > Cc: stable@vger.kernel.org # v4.7+
> > Signed-off-by: John Keeping <john@metanate.com>
> > ---
> > drivers/usb/gadget/function/f_fs.c | 3 +--
> > 1 file changed, 1 insertion(+), 2 deletions(-)
> >
> > diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
> > index 652397eda6d6..0d9962834345 100644
> > --- a/drivers/usb/gadget/function/f_fs.c
> > +++ b/drivers/usb/gadget/function/f_fs.c
> > @@ -2282,8 +2282,7 @@ static int __ffs_data_do_os_desc(enum ffs_os_desc_type type,
> > int i;
> >
> > if (len < sizeof(*d) ||
> > - d->bFirstInterfaceNumber >= ffs->interfaces_count ||
> > - !d->Reserved1)
> > + d->bFirstInterfaceNumber >= ffs->interfaces_count)
> > return -EINVAL;
> > for (i = 0; i < ARRAY_SIZE(d->Reserved2); ++i)
> > if (d->Reserved2[i])
>
> Sorry, but no. We want to be compliant with the specification. If there
> are older still-maintained stable trees which are not working, we need
> to backport a fix to them, but we're not allowing uncompliant
> implementations.
Aren't we allowing non-compliant implementations now? The spec says the
value must be 1 but since v4.7 this code has allowed all non-zero
values.
At this point I don't think the kernel can disallow any values of
Reserved1 without breaking someone's userspace.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] usb: f_fs: Drop check on Reserved1 field on OS_DESC_EXT_COMPAT
2017-11-10 18:34 ` John Keeping
@ 2017-11-13 10:57 ` Felipe Balbi
0 siblings, 0 replies; 4+ messages in thread
From: Felipe Balbi @ 2017-11-13 10:57 UTC (permalink / raw)
To: John Keeping
Cc: linux-usb, linux-kernel, Greg Kroah-Hartman, Vincent Pelletier,
Jim Lin, Janusz Dziedzic, stable
[-- Attachment #1: Type: text/plain, Size: 2295 bytes --]
Hi,
John Keeping <john@metanate.com> writes:
> On Fri, 10 Nov 2017 12:40:39 +0200, Felipe Balbi wrote:
>
>> John Keeping <john@metanate.com> writes:
>> > This check has gone through several incompatible variations in commits
>> > 53642399aa71 ("usb: gadget: f_fs: Fix wrong check on reserved1 of
>> > OS_DESC_EXT_COMPAT"), 354bc45bf329 ("usb: gadget: f_fs: Fix ExtCompat
>> > descriptor validation") and 3ba534df815f ("Revert "usb: gadget: f_fs:
>> > Fix ExtCompat descriptor validation"") after initially being introduced
>> > in commit f0175ab51993 ("usb: gadget: f_fs: OS descriptors support").
>> >
>> > The various changes make it impossible for a single userspace
>> > implementation to work with different kernel versions, so let's just
>> > drop the condition to avoid breaking userspace.
>> >
>> > Fixes: 53642399aa71 ("usb: gadget: f_fs: Fix wrong check on reserved1 of OS_DESC_EXT_COMPAT")
>> > Cc: stable@vger.kernel.org # v4.7+
>> > Signed-off-by: John Keeping <john@metanate.com>
>> > ---
>> > drivers/usb/gadget/function/f_fs.c | 3 +--
>> > 1 file changed, 1 insertion(+), 2 deletions(-)
>> >
>> > diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
>> > index 652397eda6d6..0d9962834345 100644
>> > --- a/drivers/usb/gadget/function/f_fs.c
>> > +++ b/drivers/usb/gadget/function/f_fs.c
>> > @@ -2282,8 +2282,7 @@ static int __ffs_data_do_os_desc(enum ffs_os_desc_type type,
>> > int i;
>> >
>> > if (len < sizeof(*d) ||
>> > - d->bFirstInterfaceNumber >= ffs->interfaces_count ||
>> > - !d->Reserved1)
>> > + d->bFirstInterfaceNumber >= ffs->interfaces_count)
>> > return -EINVAL;
>> > for (i = 0; i < ARRAY_SIZE(d->Reserved2); ++i)
>> > if (d->Reserved2[i])
>>
>> Sorry, but no. We want to be compliant with the specification. If there
>> are older still-maintained stable trees which are not working, we need
>> to backport a fix to them, but we're not allowing uncompliant
>> implementations.
>
> Aren't we allowing non-compliant implementations now? The spec says the
> value must be 1 but since v4.7 this code has allowed all non-zero
> values.
Good point. Then how about we just force the value to 1 in f_fs.c and
remove the check?
--
balbi
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-11-13 10:57 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-11-09 16:34 [PATCH] usb: f_fs: Drop check on Reserved1 field on OS_DESC_EXT_COMPAT John Keeping
2017-11-10 10:40 ` Felipe Balbi
2017-11-10 18:34 ` John Keeping
2017-11-13 10:57 ` Felipe Balbi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).