ARM64: dts: rk3399-android: change i2s2 bclk to 128fs for hdmi
[firefly-linux-kernel-4.4.55.git] / security / apparmor / lib.c
index ce8d9a84ab2d1f3f8906b72324e688536fef7b1b..c1827e068454cf992c510fd7f6bc9cbbda67a500 100644 (file)
@@ -45,8 +45,10 @@ char *aa_split_fqname(char *fqname, char **ns_name)
                *ns_name = skip_spaces(&name[1]);
                if (split) {
                        /* overwrite ':' with \0 */
-                       *split = 0;
-                       name = skip_spaces(split + 1);
+                       *split++ = 0;
+                       if (strncmp(split, "//", 2) == 0)
+                               split += 2;
+                       name = skip_spaces(split);
                } else
                        /* a ns name without a following profile is allowed */
                        name = NULL;
@@ -75,15 +77,16 @@ void aa_info_message(const char *str)
 }
 
 /**
- * kvmalloc - do allocation preferring kmalloc but falling back to vmalloc
- * @size: size of allocation
+ * __aa_kvmalloc - do allocation preferring kmalloc but falling back to vmalloc
+ * @size: how many bytes of memory are required
+ * @flags: the type of memory to allocate (see kmalloc).
  *
  * Return: allocated buffer or NULL if failed
  *
  * It is possible that policy being loaded from the user is larger than
  * what can be allocated by kmalloc, in those cases fall back to vmalloc.
  */
-void *kvmalloc(size_t size)
+void *__aa_kvmalloc(size_t size, gfp_t flags)
 {
        void *buffer = NULL;
 
@@ -92,14 +95,12 @@ void *kvmalloc(size_t size)
 
        /* do not attempt kmalloc if we need more than 16 pages at once */
        if (size <= (16*PAGE_SIZE))
-               buffer = kmalloc(size, GFP_NOIO | __GFP_NOWARN);
+               buffer = kmalloc(size, flags | GFP_NOIO | __GFP_NOWARN);
        if (!buffer) {
-               /* see kvfree for why size must be at least work_struct size
-                * when allocated via vmalloc
-                */
-               if (size < sizeof(struct work_struct))
-                       size = sizeof(struct work_struct);
-               buffer = vmalloc(size);
+               if (flags & __GFP_ZERO)
+                       buffer = vzalloc(size);
+               else
+                       buffer = vmalloc(size);
        }
        return buffer;
 }