mirror of https://gitee.com/openkylin/linux.git
media: radio-ma901: return ENODEV in probe if usb_device doesn't match
Masterkit MA901 usb radio device shares USB ID with Atmel V-USB devices. This patch adds additional checks in usb_ma901radio_probe() and if product or manufacturer doesn't match we return -ENODEV and don't continue. This allows hid drivers to handle not MA901 device. Signed-off-by: Alexey Klimov <klimov.linux@gmail.com> Acked-by: Mauro Carvalho Chehab <mchehab@redhat.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
5b4617d820
commit
30b29537bc
|
@ -347,9 +347,20 @@ static void usb_ma901radio_release(struct v4l2_device *v4l2_dev)
|
||||||
static int usb_ma901radio_probe(struct usb_interface *intf,
|
static int usb_ma901radio_probe(struct usb_interface *intf,
|
||||||
const struct usb_device_id *id)
|
const struct usb_device_id *id)
|
||||||
{
|
{
|
||||||
|
struct usb_device *dev = interface_to_usbdev(intf);
|
||||||
struct ma901radio_device *radio;
|
struct ma901radio_device *radio;
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
|
|
||||||
|
/* Masterkit MA901 usb radio has the same USB ID as many others
|
||||||
|
* Atmel V-USB devices. Let's make additional checks to be sure
|
||||||
|
* that this is our device.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (dev->product && dev->manufacturer &&
|
||||||
|
(strncmp(dev->product, "MA901", 5) != 0
|
||||||
|
|| strncmp(dev->manufacturer, "www.masterkit.ru", 16) != 0))
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
radio = kzalloc(sizeof(struct ma901radio_device), GFP_KERNEL);
|
radio = kzalloc(sizeof(struct ma901radio_device), GFP_KERNEL);
|
||||||
if (!radio) {
|
if (!radio) {
|
||||||
dev_err(&intf->dev, "kzalloc for ma901radio_device failed\n");
|
dev_err(&intf->dev, "kzalloc for ma901radio_device failed\n");
|
||||||
|
|
Loading…
Reference in New Issue