| /* |
| * Copyright (C) 2016 IBM Corporation |
| * |
| * Authors: |
| * Thiago Jung Bauermann <bauerman@linux.vnet.ibm.com> |
| * Mimi Zohar <zohar@linux.vnet.ibm.com> |
| * |
| * 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; either version 2 of the License, or |
| * (at your option) any later version. |
| */ |
| #include "ima.h" |
| |
| /* |
| * Restore the measurement list from the previous kernel. |
| */ |
| void ima_load_kexec_buffer(void) |
| { |
| void *kexec_buffer = NULL; |
| size_t kexec_buffer_size = 0; |
| int rc; |
| |
| rc = ima_get_kexec_buffer(&kexec_buffer, &kexec_buffer_size); |
| switch (rc) { |
| case 0: |
| rc = ima_restore_measurement_list(kexec_buffer_size, |
| kexec_buffer); |
| if (rc != 0) |
| pr_err("Failed to restore the measurement list: %d\n", |
| rc); |
| |
| ima_free_kexec_buffer(); |
| break; |
| case -ENOTSUPP: |
| pr_debug("Restoring the measurement list not supported\n"); |
| break; |
| case -ENOENT: |
| pr_debug("No measurement list to restore\n"); |
| break; |
| default: |
| pr_debug("Error restoring the measurement list: %d\n", rc); |
| } |
| } |