dmabuf: fix checking mmap flags
authorMichael Olbrich <m.olbrich@pengutronix.de>
Tue, 20 May 2014 10:28:15 +0000 (12:28 +0200)
committerNicolas Dufresne <nicolas.dufresne@collabora.co.uk>
Wed, 4 Jun 2014 14:01:27 +0000 (10:01 -0400)
A simple '&' is not sufficiant. With mmapping_flags == PROT_READ and
prot == PROT_READ|PROT_WRITE the check produces the wrong result.
Change the check to make sure that prot is a subset of mmapping_flags.

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

gst-libs/gst/allocators/gstdmabuf.c

index 046b38b..9cf05cb 100644 (file)
@@ -97,7 +97,7 @@ gst_dmabuf_mem_map (GstMemory * gmem, gsize maxsize, GstMapFlags flags)
   if (mem->data) {
     /* only return address if mapping flags are a subset
      * of the previous flags */
-    if (mem->mmapping_flags & prot) {
+    if ((mem->mmapping_flags & prot) == prot) {
       ret = mem->data;
       mem->mmap_count++;
     }