Thread (1 message) 1 message, 1 author, 2021-02-11

Re: [PATCH] usb: video: fix descriptor structures macros

From: Greg KH <gregkh@linuxfoundation.org>
Date: 2021-02-11 13:08:40

On Thu, Feb 11, 2021 at 01:55:21PM +0100, Sylvain Pelissier wrote:
Le jeu. 11 févr. 2021 à 13:48, Greg KH [off-list ref] a
écrit :
quoted
On Tue, Feb 09, 2021 at 05:16:45PM +0100, Sylvain Pelissier wrote:
quoted
On Thu, 28 Jan 2021 at 18:17, Sylvain Pelissier
[off-list ref] wrote:
quoted
On Thu, 28 Jan 2021 at 09:22, Greg KH [off-list ref]
wrote:
quoted
quoted
quoted
On Thu, Jan 28, 2021 at 09:12:59AM +0100, Sylvain Pelissier wrote:
quoted
The macros defining structures for descriptors use token
pasting incorrectly. For example, the macro
UVC_EXTENSION_UNIT_DESCRIPTOR(1, 2) defines a structure named
uvc_extension_unit_descriptor_p_2 which should be
uvc_extension_unit_descriptor_1_2 instead.

Signed-off-by: Sylvain Pelissier <redacted>
---
 include/uapi/linux/usb/video.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/uapi/linux/usb/video.h
b/include/uapi/linux/usb/video.h
quoted
quoted
quoted
quoted
index d854cb19c42c..1eb982df87a0 100644
--- a/include/uapi/linux/usb/video.h
+++ b/include/uapi/linux/usb/video.h
@@ -324,7 +324,7 @@ struct uvc_extension_unit_descriptor {
 #define UVC_DT_EXTENSION_UNIT_SIZE(p, n)             (24+(p)+(n))

 #define UVC_EXTENSION_UNIT_DESCRIPTOR(p, n) \
-     uvc_extension_unit_descriptor_##p_##n
+     uvc_extension_unit_descriptor_##p##_##n

 #define DECLARE_UVC_EXTENSION_UNIT_DESCRIPTOR(p, n)  \
 struct UVC_EXTENSION_UNIT_DESCRIPTOR(p, n) {         \
@@ -371,7 +371,7 @@ struct uvc_input_header_descriptor {
 #define UVC_DT_INPUT_HEADER_SIZE(n, p)
 (13+(n*p))
quoted
quoted
quoted
quoted
 #define UVC_INPUT_HEADER_DESCRIPTOR(n, p) \
-     uvc_input_header_descriptor_##n_##p
+     uvc_input_header_descriptor_##n##_##p

 #define DECLARE_UVC_INPUT_HEADER_DESCRIPTOR(n, p)    \
 struct UVC_INPUT_HEADER_DESCRIPTOR(n, p) {           \
@@ -406,7 +406,7 @@ struct uvc_output_header_descriptor {
 #define UVC_DT_OUTPUT_HEADER_SIZE(n, p)
(9+(n*p))
quoted
quoted
quoted
quoted
 #define UVC_OUTPUT_HEADER_DESCRIPTOR(n, p) \
-     uvc_output_header_descriptor_##n_##p
+     uvc_output_header_descriptor_##n##_##p

 #define DECLARE_UVC_OUTPUT_HEADER_DESCRIPTOR(n, p)   \
 struct UVC_OUTPUT_HEADER_DESCRIPTOR(n, p) {          \
--
2.25.1
And no one noticed this?  If not, then why do we have these defines
at
quoted
quoted
quoted
all, as obviously they are not used :)
The problem is not detected if you have descriptors with the second
argument different each time since the structure name will change. It
is maybe why it was not noticed. Nevertheless, the extension unit, the
input header and the output header descriptors are part of the USB
video class specification and are often used by devices. We have
detected the problem while implementing a usb gadget having such
descriptors.
Hi,
Do I need to change something for this patch ?
I need an ack from the v4l maintainers before I can take it...
Do I need to add someone in cc in particular?
I think Laurent is the proper one here as he's the maintainer for the
usb v4l driver, right?

thanks,

greg k-h
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help