]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
ima: fix freeing ongoing ahash_request
authorSascha Hauer <s.hauer@pengutronix.de>
Tue, 2 Jul 2019 08:00:41 +0000 (10:00 +0200)
committerMimi Zohar <zohar@linux.ibm.com>
Mon, 5 Aug 2019 22:40:28 +0000 (18:40 -0400)
integrity_kernel_read() can fail in which case we forward to call
ahash_request_free() on a currently running request. We have to wait
for its completion before we can free the request.

This was observed by interrupting a "find / -type f -xdev -print0 | xargs -0
cat 1>/dev/null" with ctrl-c on an IMA enabled filesystem.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
security/integrity/ima/ima_crypto.c

index 7532b062be5946e49d14a847f7f60366066176d1..73044fc6a9521fb7c6701eda083a5c23e3cda0e6 100644 (file)
@@ -271,6 +271,11 @@ static int ima_calc_file_hash_atfm(struct file *file,
                if (rc != rbuf_len) {
                        if (rc >= 0)
                                rc = -EINVAL;
+                       /*
+                        * Forward current rc, do not overwrite with return value
+                        * from ahash_wait()
+                        */
+                       ahash_wait(ahash_rc, &wait);
                        goto out3;
                }