diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2015-11-10 11:20:19 +0100 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@osg.samsung.com> | 2015-11-19 14:15:20 +0100 |
commit | b446631c5acfec93df643bdf2d142020ae328ced (patch) | |
tree | 93fa71aec7f36afe3106a3ca4a9649112efb01e8 /drivers/media/platform/omap | |
parent | [media] media: omap4iss: Make module stop timeout print a warning message (diff) | |
download | linux-b446631c5acfec93df643bdf2d142020ae328ced.tar.xz linux-b446631c5acfec93df643bdf2d142020ae328ced.zip |
[media] v4l: omap_vout: Don't free buffers if they haven't been allocated
The VRFB buffers are freed when the device is closed even if they
haven't been allocated by a call to VIDIOC_REQBUFS, resulting in a
crash. Fix it by not trying to free buffers that are not allocated.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Diffstat (limited to 'drivers/media/platform/omap')
-rw-r--r-- | drivers/media/platform/omap/omap_vout_vrfb.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/media/platform/omap/omap_vout_vrfb.c b/drivers/media/platform/omap/omap_vout_vrfb.c index c6e252760c62..b8638e4e1627 100644 --- a/drivers/media/platform/omap/omap_vout_vrfb.c +++ b/drivers/media/platform/omap/omap_vout_vrfb.c @@ -79,10 +79,12 @@ void omap_vout_free_vrfb_buffers(struct omap_vout_device *vout) int j; for (j = 0; j < VRFB_NUM_BUFS; j++) { - omap_vout_free_buffer(vout->smsshado_virt_addr[j], - vout->smsshado_size); - vout->smsshado_virt_addr[j] = 0; - vout->smsshado_phy_addr[j] = 0; + if (vout->smsshado_virt_addr[j]) { + omap_vout_free_buffer(vout->smsshado_virt_addr[j], + vout->smsshado_size); + vout->smsshado_virt_addr[j] = 0; + vout->smsshado_phy_addr[j] = 0; + } } } |