diff options
author | Julia Lawall <Julia.Lawall@lip6.fr> | 2012-07-24 11:06:09 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-07-30 21:05:45 -0300 |
commit | e53a99eb154d1ab6a7ddcaa960b4bddc701c7c2d (patch) | |
tree | de7a0c4cc71c99f243e72a326f97684b47397a0d /drivers/staging | |
parent | 5a7a570bf4205d2cc36c5abb5498df601dd828e3 (diff) | |
download | linux-e53a99eb154d1ab6a7ddcaa960b4bddc701c7c2d.tar.bz2 |
[media] drivers/staging/media/easycap/easycap_main.c: add missing usb_free_urb
Add missing usb_free_urb on failure path after usb_alloc_urb.
A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)
// <smpl>
@km exists@
local idexpression e;
expression e1,e2,e3;
type T,T1;
identifier f;
@@
* e = usb_alloc_urb(...)
... when any
when != e = e1
when != e1 = (T)e
when != e1(...,(T)e,...)
when != &e->f
if(...) { ... when != e2(...,(T1)e,...)
when != e3 = e
when forall
(
return <+...e...+>;
|
* return ...;
) }
// </smpl>
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/staging')
-rw-r--r-- | drivers/staging/media/easycap/easycap_main.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/staging/media/easycap/easycap_main.c b/drivers/staging/media/easycap/easycap_main.c index aed953751a90..19d2d9d64236 100644 --- a/drivers/staging/media/easycap/easycap_main.c +++ b/drivers/staging/media/easycap/easycap_main.c @@ -3083,6 +3083,7 @@ static int create_video_urbs(struct easycap *peasycap) peasycap->allocation_video_urb += 1; pdata_urb = kzalloc(sizeof(struct data_urb), GFP_KERNEL); if (!pdata_urb) { + usb_free_urb(purb); SAM("ERROR: Could not allocate struct data_urb.\n"); return -ENOMEM; } |