aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntti Palosaari <crope@iki.fi>2012-06-05 20:37:46 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-08-04 07:56:26 -0300
commit0a8673569ff92d7dd6c07153696d1975d13a3b99 (patch)
treee4f3866ad401c4510fa968a2fc633d3c6d191451
parente48b2a68617cfb7881e1c5e420e1a992b1e60e89 (diff)
[media] dvb_usb_v2: ensure driver_info is not null
It could be null in case of driver does not set it properly, like missing dynamic ID handling. Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/dvb/dvb-usb/dvb_usb_init.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/media/dvb/dvb-usb/dvb_usb_init.c b/drivers/media/dvb/dvb-usb/dvb_usb_init.c
index a2beb60908d..3078371d626 100644
--- a/drivers/media/dvb/dvb-usb/dvb_usb_init.c
+++ b/drivers/media/dvb/dvb-usb/dvb_usb_init.c
@@ -258,10 +258,18 @@ int dvb_usbv2_device_init_(struct usb_interface *intf,
struct dvb_usb_device *d = NULL;
struct dvb_usb_driver_info *driver_info =
(struct dvb_usb_driver_info *) id->driver_info;
- const struct dvb_usb_device_properties *props = driver_info->props;
+ const struct dvb_usb_device_properties *props;
int ret = -ENOMEM;
bool cold = false;
+ if (!id->driver_info) {
+ pr_err("%s: driver_info is null", KBUILD_MODNAME);
+ ret = -ENODEV;
+ goto err;
+ }
+
+ props = driver_info->props;
+
d = kzalloc(sizeof(struct dvb_usb_device), GFP_KERNEL);
if (d == NULL) {
err("no memory for 'struct dvb_usb_device'");
@@ -326,7 +334,8 @@ int dvb_usbv2_device_init_(struct usb_interface *intf,
err_kfree:
kfree(d->priv);
kfree(d);
-
+err:
+ pr_debug("%s: failed=%d\n", __func__, ret);
return ret;
}