Skip to content
Snippets Groups Projects
Select Git revision
  • 26b7899510ae243e392960704ebdba52d05fbb13
  • master default
  • android-container
  • nanopc-t4
  • for-kernelci
  • WIP-syscall
  • v4.16-rc5
  • v4.16-rc4
  • v4.16-rc3
  • v4.16-rc2
  • v4.16-rc1
  • v4.15
  • v4.15-rc9
  • v4.15-rc8
  • v4.15-rc7
  • v4.15-rc6
  • v4.15-rc5
  • v4.15-rc4
  • v4.15-rc3
  • v4.15-rc2
  • v4.15-rc1
  • v4.14
  • v4.14-rc8
  • v4.14-rc7
  • v4.14-rc6
  • v4.14-rc5
26 results

label.h

Blame
  • label.h 12.24 KiB
    /*
     * AppArmor security module
     *
     * This file contains AppArmor label definitions
     *
     * Copyright 2017 Canonical Ltd.
     *
     * This program is free software; you can redistribute it and/or
     * modify it under the terms of the GNU General Public License as
     * published by the Free Software Foundation, version 2 of the
     * License.
     */
    
    #ifndef __AA_LABEL_H
    #define __AA_LABEL_H
    
    #include <linux/atomic.h>
    #include <linux/audit.h>
    #include <linux/rbtree.h>
    #include <linux/rcupdate.h>
    
    #include "apparmor.h"
    #include "lib.h"
    
    struct aa_ns;
    
    #define LOCAL_VEC_ENTRIES 8
    #define DEFINE_VEC(T, V)						\
    	struct aa_ ## T *(_ ## V ## _localtmp)[LOCAL_VEC_ENTRIES];	\
    	struct aa_ ## T **(V)
    
    #define vec_setup(T, V, N, GFP)						\
    ({									\
    	if ((N) <= LOCAL_VEC_ENTRIES) {					\
    		typeof(N) i;						\
    		(V) = (_ ## V ## _localtmp);				\
    		for (i = 0; i < (N); i++)				\
    			(V)[i] = NULL;					\
    	} else								\
    		(V) = kzalloc(sizeof(struct aa_ ## T *) * (N), (GFP));	\
    	(V) ? 0 : -ENOMEM;						\
    })
    
    #define vec_cleanup(T, V, N)						\
    do {									\
    	int i;								\
    	for (i = 0; i < (N); i++) {					\
    		if (!IS_ERR_OR_NULL((V)[i]))				\
    			aa_put_ ## T((V)[i]);				\
    	}								\
    	if ((V) != _ ## V ## _localtmp)					\
    		kfree(V);						\
    } while (0)
    
    #define vec_last(VEC, SIZE) ((VEC)[(SIZE) - 1])
    #define vec_ns(VEC, SIZE) (vec_last((VEC), (SIZE))->ns)
    #define vec_labelset(VEC, SIZE) (&vec_ns((VEC), (SIZE))->labels)
    #define cleanup_domain_vec(V, L) cleanup_label_vec((V), (L)->size)
    
    struct aa_profile;
    #define VEC_FLAG_TERMINATE 1
    int aa_vec_unique(struct aa_profile **vec, int n, int flags);
    struct aa_label *aa_vec_find_or_create_label(struct aa_profile **vec, int len,
    					     gfp_t gfp);
    #define aa_sort_and_merge_vec(N, V) \
    	aa_sort_and_merge_profiles((N), (struct aa_profile **)(V))
    
    
    /* struct aa_labelset - set of labels for a namespace
     *