gstfdmemory: log with GST_INFO instead of GST_ERROR on permission denied
authorJulien Isorce <j.isorce@samsung.com>
Fri, 7 Oct 2016 14:08:37 +0000 (15:08 +0100)
committerJulien Isorce <j.isorce@samsung.com>
Mon, 21 Nov 2016 21:22:47 +0000 (21:22 +0000)
For example mmap can fail with EACCES if the the fd has been open
with read only mode. And mapping the memory might be the only way
to check that. So no need to print out an error.

Ex: ioctl(dev, DRM_IOCTL_PRIME_HANDLE_TO_FD, flags & ~DRM_RDWR)

https://bugzilla.gnome.org/show_bug.cgi?id=765600

gst-libs/gst/allocators/gstfdmemory.c

index a15859a8a5bec0d24e5d0ac82a6c03ce43017fa9..f09da9e4e7e1b683f425398d1ce2fc64a834424d 100644 (file)
@@ -110,9 +110,20 @@ gst_fd_mem_map (GstMemory * gmem, gsize maxsize, GstMapFlags flags)
 
     mem->data = mmap (0, gmem->maxsize, prot, flags, mem->fd, 0);
     if (mem->data == MAP_FAILED) {
+      GstDebugLevel level;
       mem->data = NULL;
-      GST_ERROR ("%p: fd %d: mmap failed: %s", mem, mem->fd,
-          g_strerror (errno));
+
+      switch (errno) {
+        case EACCES:
+          level = GST_LEVEL_INFO;
+          break;
+        default:
+          level = GST_LEVEL_ERROR;
+          break;
+      }
+
+      GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, level, NULL,
+          "%p: fd %d: mmap failed: %s", mem, mem->fd, g_strerror (errno));
       goto out;
     }
   }