ACIL FM
Dark
Refresh
Current DIR:
/usr/src/kernels/5.14.0-427.31.1.el9_4.x86_64/arch/x86/purgatory
/
usr
src
kernels
5.14.0-427.31.1.el9_4.x86_64
arch
x86
purgatory
Upload
Zip Selected
Delete Selected
Pilih semua
Nama
Ukuran
Permission
Aksi
entry64.S
1.94 MB
chmod
View
DL
Edit
Rename
Delete
Makefile
2.58 MB
chmod
View
DL
Edit
Rename
Delete
purgatory.c
1.19 MB
chmod
View
DL
Edit
Rename
Delete
setup-x86_64.S
1.17 MB
chmod
View
DL
Edit
Rename
Delete
stack.S
350 B
chmod
View
DL
Edit
Rename
Delete
Edit file: /usr/src/kernels/5.14.0-427.31.1.el9_4.x86_64/arch/x86/purgatory/purgatory.c
// SPDX-License-Identifier: GPL-2.0-only /* * purgatory: Runs between two kernels * * Copyright (C) 2014 Red Hat Inc. * * Author: * Vivek Goyal <vgoyal@redhat.com> */ #include <linux/bug.h> #include <linux/kernel.h> #include <linux/types.h> #include <crypto/sha2.h> #include <asm/purgatory.h> #include "../boot/string.h" u8 purgatory_sha256_digest[SHA256_DIGEST_SIZE] __section(".kexec-purgatory"); struct kexec_sha_region purgatory_sha_regions[KEXEC_SEGMENT_MAX] __section(".kexec-purgatory"); static int verify_sha256_digest(void) { struct kexec_sha_region *ptr, *end; u8 digest[SHA256_DIGEST_SIZE]; struct sha256_state sctx; sha256_init(&sctx); end = purgatory_sha_regions + ARRAY_SIZE(purgatory_sha_regions); for (ptr = purgatory_sha_regions; ptr < end; ptr++) sha256_update(&sctx, (uint8_t *)(ptr->start), ptr->len); sha256_final(&sctx, digest); if (memcmp(digest, purgatory_sha256_digest, sizeof(digest))) return 1; return 0; } void purgatory(void) { int ret; ret = verify_sha256_digest(); if (ret) { /* loop forever */ for (;;) ; } } /* * Defined in order to reuse memcpy() and memset() from * arch/x86/boot/compressed/string.c */ void warn(const char *msg) {}
Simpan
Batal
Isi Zip:
Unzip
Create
Buat Folder
Buat File
Terminal / Execute
Run
Chmod Bulk
All File
All Folder
All File dan Folder
Apply