Commit f9da5b14 authored by John Johansen's avatar John Johansen

apparmor: Fix undefined reference to `zlib_deflate_workspacesize'

IF CONFIG_SECURITY_APPARMOR_EXPORT_BINARY is disabled, there remains
some unneed references to zlib, and can result in undefined symbol
references if ZLIB_INFLATE or ZLIB_DEFLATE are not defined.
Reported-by: default avatarkernel test robot <lkp@intel.com>
Fixes: abfb9c0725f2 ("apparmor: make export of raw binary profile to userspace optional")
Signed-off-by: default avatarJohn Johansen <john.johansen@canonical.com>
parent 3e2a3a08
...@@ -1296,16 +1296,11 @@ SEQ_RAWDATA_FOPS(compressed_size); ...@@ -1296,16 +1296,11 @@ SEQ_RAWDATA_FOPS(compressed_size);
static int deflate_decompress(char *src, size_t slen, char *dst, size_t dlen) static int deflate_decompress(char *src, size_t slen, char *dst, size_t dlen)
{ {
int error; #ifdef CONFIG_SECURITY_APPARMOR_EXPORT_BINARY
if (aa_g_rawdata_compression_level != 0) {
int error = 0;
struct z_stream_s strm; struct z_stream_s strm;
if (aa_g_rawdata_compression_level == 0) {
if (dlen < slen)
return -EINVAL;
memcpy(dst, src, slen);
return 0;
}
memset(&strm, 0, sizeof(strm)); memset(&strm, 0, sizeof(strm));
strm.workspace = kvzalloc(zlib_inflate_workspacesize(), GFP_KERNEL); strm.workspace = kvzalloc(zlib_inflate_workspacesize(), GFP_KERNEL);
...@@ -1333,7 +1328,15 @@ static int deflate_decompress(char *src, size_t slen, char *dst, size_t dlen) ...@@ -1333,7 +1328,15 @@ static int deflate_decompress(char *src, size_t slen, char *dst, size_t dlen)
zlib_inflateEnd(&strm); zlib_inflateEnd(&strm);
fail_inflate_init: fail_inflate_init:
kvfree(strm.workspace); kvfree(strm.workspace);
return error; return error;
}
#endif
if (dlen < slen)
return -EINVAL;
memcpy(dst, src, slen);
return 0;
} }
static ssize_t rawdata_read(struct file *file, char __user *buf, size_t size, static ssize_t rawdata_read(struct file *file, char __user *buf, size_t size,
......
...@@ -1056,6 +1056,7 @@ struct aa_load_ent *aa_load_ent_alloc(void) ...@@ -1056,6 +1056,7 @@ struct aa_load_ent *aa_load_ent_alloc(void)
static int deflate_compress(const char *src, size_t slen, char **dst, static int deflate_compress(const char *src, size_t slen, char **dst,
size_t *dlen) size_t *dlen)
{ {
#ifdef CONFIG_SECURITY_APPARMOR_EXPORT_BINARY
int error; int error;
struct z_stream_s strm; struct z_stream_s strm;
void *stgbuf, *dstbuf; void *stgbuf, *dstbuf;
...@@ -1127,6 +1128,10 @@ static int deflate_compress(const char *src, size_t slen, char **dst, ...@@ -1127,6 +1128,10 @@ static int deflate_compress(const char *src, size_t slen, char **dst,
fail_deflate: fail_deflate:
kvfree(stgbuf); kvfree(stgbuf);
goto fail_stg_alloc; goto fail_stg_alloc;
#else
*dlen = slen;
return 0;
#endif
} }
static int compress_loaddata(struct aa_loaddata *data) static int compress_loaddata(struct aa_loaddata *data)
...@@ -1145,6 +1150,7 @@ static int compress_loaddata(struct aa_loaddata *data) ...@@ -1145,6 +1150,7 @@ static int compress_loaddata(struct aa_loaddata *data)
if (error) if (error)
return error; return error;
if (udata != data->data)
kvfree(udata); kvfree(udata);
} else } else
data->compressed_size = data->size; data->compressed_size = data->size;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment