diff options
author | Mike Isely <isely@pobox.com> | 2008-08-30 17:11:40 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2008-10-12 07:36:57 -0400 |
commit | fe15f13679bf52bb5c8acb8b4847e6d73ba62c17 (patch) | |
tree | 2b64c12e10c0ca892e3cf9307059e5e682780316 /drivers/media/video/pvrusb2 | |
parent | 157afbc0de7d99cde39a5525b4c43acd4e02ef82 (diff) |
V4L/DVB (8895): pvrusb2: Fail gracefully if an alien USB ID is used
The driver includes an internal table specifying additional
information on a per device-type basis. This works great until
somebody tries to run-time associate another USB ID with the driver.
This change should hopefully allow the driver to fail gracefully under
such a circumstance.
Signed-off-by: Mike Isely <isely@pobox.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/pvrusb2')
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-hdw.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c index c8dedbab6e39..a7d636f3f9b6 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c +++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c | |||
@@ -1915,7 +1915,7 @@ struct pvr2_hdw *pvr2_hdw_create(struct usb_interface *intf, | |||
1915 | const struct usb_device_id *devid) | 1915 | const struct usb_device_id *devid) |
1916 | { | 1916 | { |
1917 | unsigned int idx,cnt1,cnt2,m; | 1917 | unsigned int idx,cnt1,cnt2,m; |
1918 | struct pvr2_hdw *hdw; | 1918 | struct pvr2_hdw *hdw = NULL; |
1919 | int valid_std_mask; | 1919 | int valid_std_mask; |
1920 | struct pvr2_ctrl *cptr; | 1920 | struct pvr2_ctrl *cptr; |
1921 | const struct pvr2_device_desc *hdw_desc; | 1921 | const struct pvr2_device_desc *hdw_desc; |
@@ -1925,6 +1925,16 @@ struct pvr2_hdw *pvr2_hdw_create(struct usb_interface *intf, | |||
1925 | 1925 | ||
1926 | hdw_desc = (const struct pvr2_device_desc *)(devid->driver_info); | 1926 | hdw_desc = (const struct pvr2_device_desc *)(devid->driver_info); |
1927 | 1927 | ||
1928 | if (hdw_desc == NULL) { | ||
1929 | pvr2_trace(PVR2_TRACE_INIT, "pvr2_hdw_create:" | ||
1930 | " No device description pointer," | ||
1931 | " unable to continue."); | ||
1932 | pvr2_trace(PVR2_TRACE_INIT, "If you have a new device type," | ||
1933 | " please contact Mike Isely <isely@pobox.com>" | ||
1934 | " to get it included in the driver\n"); | ||
1935 | goto fail; | ||
1936 | } | ||
1937 | |||
1928 | hdw = kzalloc(sizeof(*hdw),GFP_KERNEL); | 1938 | hdw = kzalloc(sizeof(*hdw),GFP_KERNEL); |
1929 | pvr2_trace(PVR2_TRACE_INIT,"pvr2_hdw_create: hdw=%p, type \"%s\"", | 1939 | pvr2_trace(PVR2_TRACE_INIT,"pvr2_hdw_create: hdw=%p, type \"%s\"", |
1930 | hdw,hdw_desc->description); | 1940 | hdw,hdw_desc->description); |