hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/media/usb/dvb-usb-v2/ec168.c
....@@ -1,18 +1,8 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * E3C EC168 DVB USB driver
34 *
45 * Copyright (C) 2009 Antti Palosaari <crope@iki.fi>
5
- *
6
- * This program is free software; you can redistribute it and/or modify
7
- * it under the terms of the GNU General Public License as published by
8
- * the Free Software Foundation; either version 2 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * This program is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- * GNU General Public License for more details.
15
- *
166 */
177
188 #include "ec168.h"
....@@ -125,6 +115,10 @@
125115 while (i < num) {
126116 if (num > i + 1 && (msg[i+1].flags & I2C_M_RD)) {
127117 if (msg[i].addr == ec168_ec100_config.demod_address) {
118
+ if (msg[i].len < 1) {
119
+ i = -EOPNOTSUPP;
120
+ break;
121
+ }
128122 req.cmd = READ_DEMOD;
129123 req.value = 0;
130124 req.index = 0xff00 + msg[i].buf[0]; /* reg */
....@@ -141,6 +135,10 @@
141135 }
142136 } else {
143137 if (msg[i].addr == ec168_ec100_config.demod_address) {
138
+ if (msg[i].len < 1) {
139
+ i = -EOPNOTSUPP;
140
+ break;
141
+ }
144142 req.cmd = WRITE_DEMOD;
145143 req.value = msg[i].buf[1]; /* val */
146144 req.index = 0xff00 + msg[i].buf[0]; /* reg */
....@@ -149,6 +147,10 @@
149147 ret = ec168_ctrl_msg(d, &req);
150148 i += 1;
151149 } else {
150
+ if (msg[i].len < 1) {
151
+ i = -EOPNOTSUPP;
152
+ break;
153
+ }
152154 req.cmd = WRITE_I2C;
153155 req.value = msg[i].buf[0]; /* val */
154156 req.index = 0x0100 + msg[i].addr; /* I2C addr */
....@@ -319,7 +321,7 @@
319321 /* DVB USB Driver stuff */
320322 /* bInterfaceNumber 0 is HID
321323 * bInterfaceNumber 1 is DVB-T */
322
-static struct dvb_usb_device_properties ec168_props = {
324
+static const struct dvb_usb_device_properties ec168_props = {
323325 .driver_name = KBUILD_MODNAME,
324326 .owner = THIS_MODULE,
325327 .adapter_nr = adapter_nr,
....@@ -342,22 +344,17 @@
342344 },
343345 };
344346
345
-static const struct dvb_usb_driver_info ec168_driver_info = {
346
- .name = "E3C EC168 reference design",
347
- .props = &ec168_props,
348
-};
349
-
350347 static const struct usb_device_id ec168_id[] = {
351
- { USB_DEVICE(USB_VID_E3C, USB_PID_E3C_EC168),
352
- .driver_info = (kernel_ulong_t) &ec168_driver_info },
353
- { USB_DEVICE(USB_VID_E3C, USB_PID_E3C_EC168_2),
354
- .driver_info = (kernel_ulong_t) &ec168_driver_info },
355
- { USB_DEVICE(USB_VID_E3C, USB_PID_E3C_EC168_3),
356
- .driver_info = (kernel_ulong_t) &ec168_driver_info },
357
- { USB_DEVICE(USB_VID_E3C, USB_PID_E3C_EC168_4),
358
- .driver_info = (kernel_ulong_t) &ec168_driver_info },
359
- { USB_DEVICE(USB_VID_E3C, USB_PID_E3C_EC168_5),
360
- .driver_info = (kernel_ulong_t) &ec168_driver_info },
348
+ { DVB_USB_DEVICE(USB_VID_E3C, USB_PID_E3C_EC168,
349
+ &ec168_props, "E3C EC168 reference design", NULL)},
350
+ { DVB_USB_DEVICE(USB_VID_E3C, USB_PID_E3C_EC168_2,
351
+ &ec168_props, "E3C EC168 reference design", NULL)},
352
+ { DVB_USB_DEVICE(USB_VID_E3C, USB_PID_E3C_EC168_3,
353
+ &ec168_props, "E3C EC168 reference design", NULL)},
354
+ { DVB_USB_DEVICE(USB_VID_E3C, USB_PID_E3C_EC168_4,
355
+ &ec168_props, "E3C EC168 reference design", NULL)},
356
+ { DVB_USB_DEVICE(USB_VID_E3C, USB_PID_E3C_EC168_5,
357
+ &ec168_props, "E3C EC168 reference design", NULL)},
361358 {}
362359 };
363360 MODULE_DEVICE_TABLE(usb, ec168_id);