mpeg2dec: close meta-plane fd in finalize
authorPrasad, Ram <x0038811@ti.com>
Wed, 13 Sep 2017 13:50:42 +0000 (13:50 +0000)
committerKarthik Ramanan <a0393906@ti.com>
Thu, 14 Sep 2017 06:17:33 +0000 (11:47 +0530)
close file descriptor created for meta-plane buffer.

omap_bo_dmabuf creates a dup file descriptor for the caller to use
the buffers. The caller needs to explicitly close the dup fd to avoid
any fd leak. Adding the close of fd for the meta-plane buffer
and avoding explict call of dce_buf_lock for this fd.

Signed-off-by: Ramprasad N <x0038811@ti.com>
src/gstducatimpeg2dec.c
src/gstducatimpeg2dec.h

index d53e33009b6ce431616b2ab88e08d8c9bf3bbe47..b9e0f33457113e42c563ba31598eca1225701c25 100644 (file)
@@ -123,12 +123,10 @@ gst_ducati_mpeg2dec_allocate_params (GstDucatiVidDec * self, gint params_sz,
              OMAP_BO_WC);
       /* XDM_MemoryType required by drm to allcoate buffer */
      self->outBufs->descs[2].memType = XDM_MEMTYPE_RAW;
-     self->outBufs->descs[2].buf =
+     self->outBufs->descs[2].buf = mpeg2dec->mbinfo_fd =
           (XDAS_Int8 *) omap_bo_dmabuf (mpeg2dec->bo_mbinfo);
      self->outBufs->descs[2].bufSize.bytes = errBytes + ui32Size;
      self->params->metadataType[0] = IVIDEO_METADATAPLANE_MBINFO;
-      /* need to lock the buffer to get the page pinned */
-     dce_buf_lock (1, (size_t *) & self->outBufs->descs[2].buf);
   }
   return ret;
 }
@@ -224,6 +222,8 @@ static void
 gst_ducati_mpeg2dec_finalize (GObject * obj)
 {
   GstDucatiMpeg2Dec *self = GST_DUCATIMPEG2DEC (obj);
+  if(self->mbinfo_fd > 0)
+    close(self->mbinfo_fd);
   if (self->bo_mbinfo)
     omap_bo_del (self->bo_mbinfo);
   G_OBJECT_CLASS (parent_class)->finalize (obj);
index 307fddc70354f302d7365fcfebc981c1b6008331..bf7bbd03d41d3c4f515eb51cf0c175a2a696bdfc 100644 (file)
@@ -41,6 +41,7 @@ struct _GstDucatiMpeg2Dec
   GstDucatiVidDec parent;
 
   struct omap_bo *bo_mbinfo;
+  int mbinfo_fd;
   gboolean prepend_codec_data;
 };