cregit-Linux how code gets into the kernel

Release 4.16 drivers/char/tpm/tpm_eventlog_efi.c

Directory: drivers/char/tpm
/*
 * Copyright (C) 2017 Google
 *
 * Authors:
 *      Thiebaud Weksteen <tweek@google.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 <linux/efi.h>
#include <linux/tpm_eventlog.h>

#include "tpm.h"

/* read binary bios log from EFI configuration table */

int tpm_read_log_efi(struct tpm_chip *chip) { struct linux_efi_tpm_eventlog *log_tbl; struct tpm_bios_log *log; u32 log_size; u8 tpm_log_version; if (!(chip->flags & TPM_CHIP_FLAG_TPM2)) return -ENODEV; if (efi.tpm_log == EFI_INVALID_TABLE_ADDR) return -ENODEV; log = &chip->log; log_tbl = memremap(efi.tpm_log, sizeof(*log_tbl), MEMREMAP_WB); if (!log_tbl) { pr_err("Could not map UEFI TPM log table !\n"); return -ENOMEM; } log_size = log_tbl->size; memunmap(log_tbl); log_tbl = memremap(efi.tpm_log, sizeof(*log_tbl) + log_size, MEMREMAP_WB); if (!log_tbl) { pr_err("Could not map UEFI TPM log table payload!\n"); return -ENOMEM; } /* malloc EventLog space */ log->bios_event_log = kmalloc(log_size, GFP_KERNEL); if (!log->bios_event_log) goto err_memunmap; memcpy(log->bios_event_log, log_tbl->log, log_size); log->bios_event_log_end = log->bios_event_log + log_size; tpm_log_version = log_tbl->version; memunmap(log_tbl); return tpm_log_version; err_memunmap: memunmap(log_tbl); return -ENOMEM; }

Contributors

PersonTokensPropCommitsCommitProp
Thiébaud Weksteen209100.00%1100.00%
Total209100.00%1100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Thiébaud Weksteen220100.00%1100.00%
Total220100.00%1100.00%
Directory: drivers/char/tpm
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.