diff options
Diffstat (limited to 'drivers/media/v4l2-core/v4l2-event.c')
-rw-r--r-- | drivers/media/v4l2-core/v4l2-event.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/media/v4l2-core/v4l2-event.c b/drivers/media/v4l2-core/v4l2-event.c index a75df6cb141f..968c2eb08b5a 100644 --- a/drivers/media/v4l2-core/v4l2-event.c +++ b/drivers/media/v4l2-core/v4l2-event.c @@ -21,6 +21,7 @@ #include <media/v4l2-fh.h> #include <media/v4l2-event.h> +#include <linux/mm.h> #include <linux/sched.h> #include <linux/slab.h> #include <linux/export.h> @@ -214,7 +215,8 @@ int v4l2_event_subscribe(struct v4l2_fh *fh, if (elems < 1) elems = 1; - sev = kzalloc(sizeof(*sev) + sizeof(struct v4l2_kevent) * elems, GFP_KERNEL); + sev = kvzalloc(sizeof(*sev) + sizeof(struct v4l2_kevent) * elems, + GFP_KERNEL); if (!sev) return -ENOMEM; for (i = 0; i < elems; i++) @@ -232,7 +234,7 @@ int v4l2_event_subscribe(struct v4l2_fh *fh, spin_unlock_irqrestore(&fh->vdev->fh_lock, flags); if (found_ev) { - kfree(sev); + kvfree(sev); return 0; /* Already listening */ } @@ -304,7 +306,7 @@ int v4l2_event_unsubscribe(struct v4l2_fh *fh, if (sev && sev->ops && sev->ops->del) sev->ops->del(sev); - kfree(sev); + kvfree(sev); return 0; } |