summaryrefslogtreecommitdiffstats
path: root/security/apparmor/include/policy_unpack.h
diff options
context:
space:
mode:
authorChris Coulson <chris.coulson@canonical.com>2019-01-23 20:17:09 +0100
committerJohn Johansen <john.johansen@canonical.com>2019-04-11 23:56:29 +0200
commit63c16c3a7608558a8e5ced96b8b6b06c490fd513 (patch)
tree4239b02c0e77ee73cb3c4462a79d5a55f1c9219d /security/apparmor/include/policy_unpack.h
parentMerge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma (diff)
downloadlinux-63c16c3a7608558a8e5ced96b8b6b06c490fd513.tar.xz
linux-63c16c3a7608558a8e5ced96b8b6b06c490fd513.zip
apparmor: Initial implementation of raw policy blob compression
This adds an initial implementation of raw policy blob compression, using deflate. Compression level can be controlled via a new sysctl, "apparmor.rawdata_compression_level", which can be set to a value between 0 (no compression) and 9 (highest compression). Signed-off-by: Chris Coulson <chris.coulson@canonical.com> Signed-off-by: John Johansen <john.johansen@canonical.com>
Diffstat (limited to 'security/apparmor/include/policy_unpack.h')
-rw-r--r--security/apparmor/include/policy_unpack.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/security/apparmor/include/policy_unpack.h b/security/apparmor/include/policy_unpack.h
index 8db4ab759e80..0739867bb87c 100644
--- a/security/apparmor/include/policy_unpack.h
+++ b/security/apparmor/include/policy_unpack.h
@@ -45,6 +45,7 @@ enum {
AAFS_LOADDATA_REVISION,
AAFS_LOADDATA_HASH,
AAFS_LOADDATA_DATA,
+ AAFS_LOADDATA_COMPRESSED_SIZE,
AAFS_LOADDATA_DIR, /* must be last actual entry */
AAFS_LOADDATA_NDENTS /* count of entries */
};
@@ -65,11 +66,16 @@ struct aa_loaddata {
struct dentry *dents[AAFS_LOADDATA_NDENTS];
struct aa_ns *ns;
char *name;
- size_t size;
+ size_t size; /* the original size of the payload */
+ size_t compressed_size; /* the compressed size of the payload */
long revision; /* the ns policy revision this caused */
int abi;
unsigned char *hash;
+ /* Pointer to payload. If @compressed_size > 0, then this is the
+ * compressed version of the payload, else it is the uncompressed
+ * version (with the size indicated by @size).
+ */
char *data;
};