mirror of
https://git.yoctoproject.org/meta-arm
synced 2026-07-26 07:07:16 +00:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 150169d01f | |||
| 9a4ae38e84 | |||
| 12e80bade1 | |||
| 6bfd024269 | |||
| 7915779267 | |||
| 987d685ed0 | |||
| 79c52afe74 | |||
| 5afb0ce40e |
+18
-2
@@ -9,6 +9,8 @@ variables:
|
|||||||
# by default
|
# by default
|
||||||
FF_KUBERNETES_HONOR_ENTRYPOINT: 1
|
FF_KUBERNETES_HONOR_ENTRYPOINT: 1
|
||||||
FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY: 0
|
FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY: 0
|
||||||
|
ACS_TEST: 0
|
||||||
|
ACS_TAG: ""
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
- prep
|
- prep
|
||||||
@@ -67,8 +69,8 @@ stages:
|
|||||||
name: "logs"
|
name: "logs"
|
||||||
when: always
|
when: always
|
||||||
paths:
|
paths:
|
||||||
- $CI_PROJECT_DIR/work/build/tmp/work*/**/temp/log.do_*.*
|
- $CI_PROJECT_DIR/work/build/tmp*/work*/**/temp/log.do_*.*
|
||||||
- $CI_PROJECT_DIR/work/build/tmp/work*/**/testimage/*
|
- $CI_PROJECT_DIR/work/build/tmp*/work*/**/testimage/*
|
||||||
|
|
||||||
#
|
#
|
||||||
# Prep stage, update repositories once.
|
# Prep stage, update repositories once.
|
||||||
@@ -126,6 +128,20 @@ fvp-base:
|
|||||||
matrix:
|
matrix:
|
||||||
- TESTING: testimage
|
- TESTING: testimage
|
||||||
- FIRMWARE: edk2
|
- FIRMWARE: edk2
|
||||||
|
- SYSTEMREADY_FIRMWARE: arm-systemready-firmware
|
||||||
|
|
||||||
|
arm-systemready-ir-acs:
|
||||||
|
extends: .build
|
||||||
|
timeout: 12h
|
||||||
|
parallel:
|
||||||
|
matrix:
|
||||||
|
# arm-systemready-ir-acs must be specified after fvp-base for ordering
|
||||||
|
# purposes for the jobs-to-kas output. It is not enough to just have it
|
||||||
|
# in the job name because fvp-base.yml overwrites the target.
|
||||||
|
- PLATFORM: fvp-base
|
||||||
|
ARM_SYSTEMREADY_IR_ACS: arm-systemready-ir-acs
|
||||||
|
tags:
|
||||||
|
- ${ACS_TAG}
|
||||||
|
|
||||||
fvps:
|
fvps:
|
||||||
extends: .build
|
extends: .build
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
header:
|
||||||
|
version: 11
|
||||||
|
includes:
|
||||||
|
- kas/arm-systemready-firmware.yml
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
header:
|
||||||
|
version: 11
|
||||||
|
includes:
|
||||||
|
- kas/arm-systemready-ir-acs.yml
|
||||||
|
|
||||||
|
env:
|
||||||
|
ACS_TEST: "0"
|
||||||
|
|
||||||
|
local_conf_header:
|
||||||
|
testimage: |
|
||||||
|
TESTIMAGE_AUTO = "${ACS_TEST}"
|
||||||
|
|
||||||
|
target:
|
||||||
|
- arm-systemready-ir-acs
|
||||||
@@ -5,4 +5,4 @@ header:
|
|||||||
|
|
||||||
repos:
|
repos:
|
||||||
meta-virtualization:
|
meta-virtualization:
|
||||||
url: git://git.yoctoproject.org/meta-virtualization
|
url: https://git.yoctoproject.org/meta-virtualization
|
||||||
|
|||||||
@@ -8,10 +8,5 @@ env:
|
|||||||
# The full testimage run typically takes around 12-24h on fvp-base.
|
# The full testimage run typically takes around 12-24h on fvp-base.
|
||||||
TEST_OVERALL_TIMEOUT: "${@ 24*60*60}"
|
TEST_OVERALL_TIMEOUT: "${@ 24*60*60}"
|
||||||
|
|
||||||
local_conf_header:
|
|
||||||
systemready-ir-acs: |
|
|
||||||
IMAGE_CLASSES:append = " testimage"
|
|
||||||
|
|
||||||
|
|
||||||
target:
|
target:
|
||||||
- arm-systemready-ir-acs
|
- arm-systemready-ir-acs
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
jinja2==3.1.1
|
jinja2==3.1.1
|
||||||
|
|
||||||
# Required to build the documentation
|
# Required to build the documentation
|
||||||
sphinx==4.5.0
|
sphinx~=5.0
|
||||||
sphinx_rtd_theme==1.0.0
|
sphinx_rtd_theme~=2.0.0
|
||||||
sphinx-copybutton==0.5.0
|
|
||||||
docutils==0.17.1
|
docutils==0.17.1
|
||||||
|
|||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
From 27300daa2397c89e13aa648db30aa5c6acb06bcc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Harsimran Singh Tungal <harsimransingh.tungal@arm.com>
|
||||||
|
Date: Fri, 2 Feb 2024 11:58:33 +0000
|
||||||
|
Subject: [PATCH] corstone1000: skip tftf tests
|
||||||
|
|
||||||
|
Skip some tests for platform corstone1000 which make the tftf tests
|
||||||
|
hanged when use with optee v3.22
|
||||||
|
|
||||||
|
Upstream-Status: Pending
|
||||||
|
Signed-off-by: Harsimran Singh Tungal <harsimransingh.tungal@arm.com>
|
||||||
|
---
|
||||||
|
plat/arm/corstone1000/tests_to_skip.txt | 8 ++++++++
|
||||||
|
1 file changed, 8 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/plat/arm/corstone1000/tests_to_skip.txt b/plat/arm/corstone1000/tests_to_skip.txt
|
||||||
|
index fdab230..c5eaac0 100644
|
||||||
|
--- a/plat/arm/corstone1000/tests_to_skip.txt
|
||||||
|
+++ b/plat/arm/corstone1000/tests_to_skip.txt
|
||||||
|
@@ -13,3 +13,11 @@ Timer framework Validation/Verify the timer interrupt generation
|
||||||
|
CPU Hotplug/CPU hotplug
|
||||||
|
PSCI CPU Suspend
|
||||||
|
PSCI STAT/for valid composite state CPU suspend
|
||||||
|
+FF-A Direct messaging/FF-A Request SP-to-SP direct messaging
|
||||||
|
+FF-A Direct messaging/FF-A Request SP-to-SP direct messaging deadlock
|
||||||
|
+FF-A Memory Sharing/Share Memory with Secure World
|
||||||
|
+FF-A Memory Sharing/Request Donate Memory SP-to-SP
|
||||||
|
+FF-A Memory Sharing/Request Share Memory SP-to-VM
|
||||||
|
+SIMD,SVE Registers context/Check that SIMD registers context is preserved
|
||||||
|
+FF-A Interrupt/Test NS interrupts
|
||||||
|
+SMMUv3 tests
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
||||||
@@ -1,6 +1,14 @@
|
|||||||
# Machine specific TFAs
|
# Machine specific TFAs
|
||||||
|
|
||||||
|
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
|
||||||
|
|
||||||
COMPATIBLE_MACHINE:corstone1000 = "corstone1000"
|
COMPATIBLE_MACHINE:corstone1000 = "corstone1000"
|
||||||
SRCREV:corstone1000 = "5f591f67738a1bbe6b262c53d9dad46ed8bbcd67"
|
SRCREV:corstone1000 = "5f591f67738a1bbe6b262c53d9dad46ed8bbcd67"
|
||||||
|
EXTRA_OEMAKE:append:corstone1000 = " DEBUG=0"
|
||||||
|
EXTRA_OEMAKE:append:corstone1000 = " LOG_LEVEL=30"
|
||||||
|
TFTF_MODE:corstone1000 = "release"
|
||||||
|
SRC_URI:append:corstone1000 = " \
|
||||||
|
file://0001-corstone1000-skip-tftf-tests.patch \
|
||||||
|
"
|
||||||
|
|
||||||
COMPATIBLE_MACHINE:n1sdp = "n1sdp"
|
COMPATIBLE_MACHINE:n1sdp = "n1sdp"
|
||||||
|
|||||||
@@ -19,6 +19,9 @@ EXTRA_OEMAKE += "USE_NVM=0"
|
|||||||
EXTRA_OEMAKE += "SHELL_COLOR=1"
|
EXTRA_OEMAKE += "SHELL_COLOR=1"
|
||||||
EXTRA_OEMAKE += "DEBUG=1"
|
EXTRA_OEMAKE += "DEBUG=1"
|
||||||
|
|
||||||
|
# Modify mode based on debug or release mode
|
||||||
|
TFTF_MODE ?= "debug"
|
||||||
|
|
||||||
# Platform must be set for each machine
|
# Platform must be set for each machine
|
||||||
TFA_PLATFORM ?= "invalid"
|
TFA_PLATFORM ?= "invalid"
|
||||||
|
|
||||||
@@ -45,7 +48,7 @@ SYSROOT_DIRS += "/firmware"
|
|||||||
|
|
||||||
do_install() {
|
do_install() {
|
||||||
install -d -m 755 ${D}/firmware
|
install -d -m 755 ${D}/firmware
|
||||||
install -m 0644 ${B}/${TFA_PLATFORM}/debug/tftf.bin ${D}/firmware/tftf.bin
|
install -m 0644 ${B}/${TFA_PLATFORM}/${TFTF_MODE}/tftf.bin ${D}/firmware/tftf.bin
|
||||||
}
|
}
|
||||||
|
|
||||||
do_deploy() {
|
do_deploy() {
|
||||||
|
|||||||
+205
@@ -0,0 +1,205 @@
|
|||||||
|
From d75c42ff2847b090d5b1f11c49067cd41fcc2734 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Loic Poulain <loic.poulain@linaro.org>
|
||||||
|
Date: Tue, 31 Oct 2023 11:07:00 +0100
|
||||||
|
Subject: [PATCH] ta: pkcs11: Improve PIN counter handling robustness
|
||||||
|
|
||||||
|
Make sure PIN check attempt is saved persistently before continuing with
|
||||||
|
the actual PIN verification, improving counter and flags coherency in
|
||||||
|
case of subsequent failure with persistent saving.
|
||||||
|
|
||||||
|
Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
|
||||||
|
Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com>
|
||||||
|
Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
|
||||||
|
Upstream-Status: Backport [https://github.com/OP-TEE/optee_os/pull/6445/commits/0a74733d9437d94a5b4b2db6c40c5755cabc5393]
|
||||||
|
---
|
||||||
|
ta/pkcs11/src/pkcs11_token.c | 126 +++++++++++++++++------------------
|
||||||
|
1 file changed, 62 insertions(+), 64 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/ta/pkcs11/src/pkcs11_token.c b/ta/pkcs11/src/pkcs11_token.c
|
||||||
|
index ab0fc291e..c5271e449 100644
|
||||||
|
--- a/ta/pkcs11/src/pkcs11_token.c
|
||||||
|
+++ b/ta/pkcs11/src/pkcs11_token.c
|
||||||
|
@@ -1132,117 +1132,115 @@ static enum pkcs11_rc check_so_pin(struct pkcs11_session *session,
|
||||||
|
uint8_t *pin, size_t pin_size)
|
||||||
|
{
|
||||||
|
struct ck_token *token = session->token;
|
||||||
|
+ struct token_persistent_main *db = token->db_main;
|
||||||
|
enum pkcs11_rc rc = PKCS11_CKR_OK;
|
||||||
|
|
||||||
|
- assert(token->db_main->flags & PKCS11_CKFT_TOKEN_INITIALIZED);
|
||||||
|
+ assert(db->flags & PKCS11_CKFT_TOKEN_INITIALIZED);
|
||||||
|
|
||||||
|
if (IS_ENABLED(CFG_PKCS11_TA_AUTH_TEE_IDENTITY) &&
|
||||||
|
- token->db_main->flags & PKCS11_CKFT_PROTECTED_AUTHENTICATION_PATH)
|
||||||
|
+ db->flags & PKCS11_CKFT_PROTECTED_AUTHENTICATION_PATH)
|
||||||
|
return verify_identity_auth(token, PKCS11_CKU_SO);
|
||||||
|
|
||||||
|
- if (token->db_main->flags & PKCS11_CKFT_SO_PIN_LOCKED)
|
||||||
|
+ if (db->flags & PKCS11_CKFT_SO_PIN_LOCKED)
|
||||||
|
return PKCS11_CKR_PIN_LOCKED;
|
||||||
|
|
||||||
|
- rc = verify_pin(PKCS11_CKU_SO, pin, pin_size,
|
||||||
|
- token->db_main->so_pin_salt,
|
||||||
|
- token->db_main->so_pin_hash);
|
||||||
|
- if (rc) {
|
||||||
|
- unsigned int pin_count = 0;
|
||||||
|
+ /*
|
||||||
|
+ * Preset the counter and flags conservatively in the database so that
|
||||||
|
+ * the tentative is saved whatever happens next.
|
||||||
|
+ */
|
||||||
|
+ db->flags |= PKCS11_CKFT_SO_PIN_COUNT_LOW;
|
||||||
|
+ db->so_pin_count++;
|
||||||
|
|
||||||
|
- if (rc != PKCS11_CKR_PIN_INCORRECT)
|
||||||
|
- return rc;
|
||||||
|
+ if (db->so_pin_count == PKCS11_TOKEN_SO_PIN_COUNT_MAX - 1)
|
||||||
|
+ db->flags |= PKCS11_CKFT_SO_PIN_FINAL_TRY;
|
||||||
|
+ else if (db->so_pin_count == PKCS11_TOKEN_SO_PIN_COUNT_MAX)
|
||||||
|
+ db->flags |= PKCS11_CKFT_SO_PIN_LOCKED;
|
||||||
|
|
||||||
|
- token->db_main->flags |= PKCS11_CKFT_SO_PIN_COUNT_LOW;
|
||||||
|
- token->db_main->so_pin_count++;
|
||||||
|
-
|
||||||
|
- pin_count = token->db_main->so_pin_count;
|
||||||
|
- if (pin_count == PKCS11_TOKEN_SO_PIN_COUNT_MAX - 1)
|
||||||
|
- token->db_main->flags |= PKCS11_CKFT_SO_PIN_FINAL_TRY;
|
||||||
|
- if (pin_count == PKCS11_TOKEN_SO_PIN_COUNT_MAX)
|
||||||
|
- token->db_main->flags |= PKCS11_CKFT_SO_PIN_LOCKED;
|
||||||
|
-
|
||||||
|
- update_persistent_db(token);
|
||||||
|
+ update_persistent_db(token);
|
||||||
|
|
||||||
|
- if (token->db_main->flags & PKCS11_CKFT_SO_PIN_LOCKED)
|
||||||
|
+ rc = verify_pin(PKCS11_CKU_SO, pin, pin_size,
|
||||||
|
+ db->so_pin_salt,
|
||||||
|
+ db->so_pin_hash);
|
||||||
|
+ if (rc == PKCS11_CKR_PIN_INCORRECT) {
|
||||||
|
+ if (db->flags & PKCS11_CKFT_SO_PIN_LOCKED)
|
||||||
|
return PKCS11_CKR_PIN_LOCKED;
|
||||||
|
|
||||||
|
return PKCS11_CKR_PIN_INCORRECT;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (token->db_main->so_pin_count) {
|
||||||
|
- token->db_main->so_pin_count = 0;
|
||||||
|
+ if (rc)
|
||||||
|
+ db->so_pin_count--;
|
||||||
|
+ else
|
||||||
|
+ db->so_pin_count = 0;
|
||||||
|
|
||||||
|
- update_persistent_db(token);
|
||||||
|
+ db->flags &= ~PKCS11_CKFT_SO_PIN_LOCKED;
|
||||||
|
+ if (db->so_pin_count < PKCS11_TOKEN_SO_PIN_COUNT_MAX - 1) {
|
||||||
|
+ db->flags &= ~PKCS11_CKFT_SO_PIN_FINAL_TRY;
|
||||||
|
+ if (!db->so_pin_count)
|
||||||
|
+ db->flags &= ~PKCS11_CKFT_SO_PIN_COUNT_LOW;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (token->db_main->flags & (PKCS11_CKFT_SO_PIN_COUNT_LOW |
|
||||||
|
- PKCS11_CKFT_SO_PIN_FINAL_TRY)) {
|
||||||
|
- token->db_main->flags &= ~(PKCS11_CKFT_SO_PIN_COUNT_LOW |
|
||||||
|
- PKCS11_CKFT_SO_PIN_FINAL_TRY);
|
||||||
|
-
|
||||||
|
- update_persistent_db(token);
|
||||||
|
- }
|
||||||
|
+ update_persistent_db(token);
|
||||||
|
|
||||||
|
- return PKCS11_CKR_OK;
|
||||||
|
+ return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
static enum pkcs11_rc check_user_pin(struct pkcs11_session *session,
|
||||||
|
uint8_t *pin, size_t pin_size)
|
||||||
|
{
|
||||||
|
struct ck_token *token = session->token;
|
||||||
|
+ struct token_persistent_main *db = token->db_main;
|
||||||
|
enum pkcs11_rc rc = PKCS11_CKR_OK;
|
||||||
|
|
||||||
|
if (IS_ENABLED(CFG_PKCS11_TA_AUTH_TEE_IDENTITY) &&
|
||||||
|
- token->db_main->flags & PKCS11_CKFT_PROTECTED_AUTHENTICATION_PATH)
|
||||||
|
+ db->flags & PKCS11_CKFT_PROTECTED_AUTHENTICATION_PATH)
|
||||||
|
return verify_identity_auth(token, PKCS11_CKU_USER);
|
||||||
|
|
||||||
|
- if (!token->db_main->user_pin_salt)
|
||||||
|
+ if (!db->user_pin_salt)
|
||||||
|
return PKCS11_CKR_USER_PIN_NOT_INITIALIZED;
|
||||||
|
|
||||||
|
- if (token->db_main->flags & PKCS11_CKFT_USER_PIN_LOCKED)
|
||||||
|
+ if (db->flags & PKCS11_CKFT_USER_PIN_LOCKED)
|
||||||
|
return PKCS11_CKR_PIN_LOCKED;
|
||||||
|
|
||||||
|
- rc = verify_pin(PKCS11_CKU_USER, pin, pin_size,
|
||||||
|
- token->db_main->user_pin_salt,
|
||||||
|
- token->db_main->user_pin_hash);
|
||||||
|
- if (rc) {
|
||||||
|
- unsigned int pin_count = 0;
|
||||||
|
-
|
||||||
|
- if (rc != PKCS11_CKR_PIN_INCORRECT)
|
||||||
|
- return rc;
|
||||||
|
-
|
||||||
|
- token->db_main->flags |= PKCS11_CKFT_USER_PIN_COUNT_LOW;
|
||||||
|
- token->db_main->user_pin_count++;
|
||||||
|
+ /*
|
||||||
|
+ * Preset the counter and flags conservatively in the database so that
|
||||||
|
+ * the tentative is saved whatever happens next.
|
||||||
|
+ */
|
||||||
|
+ db->flags |= PKCS11_CKFT_USER_PIN_COUNT_LOW;
|
||||||
|
+ db->user_pin_count++;
|
||||||
|
|
||||||
|
- pin_count = token->db_main->user_pin_count;
|
||||||
|
- if (pin_count == PKCS11_TOKEN_USER_PIN_COUNT_MAX - 1)
|
||||||
|
- token->db_main->flags |= PKCS11_CKFT_USER_PIN_FINAL_TRY;
|
||||||
|
- if (pin_count == PKCS11_TOKEN_USER_PIN_COUNT_MAX)
|
||||||
|
- token->db_main->flags |= PKCS11_CKFT_USER_PIN_LOCKED;
|
||||||
|
+ if (db->user_pin_count == PKCS11_TOKEN_USER_PIN_COUNT_MAX - 1)
|
||||||
|
+ db->flags |= PKCS11_CKFT_USER_PIN_FINAL_TRY;
|
||||||
|
+ else if (db->user_pin_count == PKCS11_TOKEN_USER_PIN_COUNT_MAX)
|
||||||
|
+ db->flags |= PKCS11_CKFT_USER_PIN_LOCKED;
|
||||||
|
|
||||||
|
- update_persistent_db(token);
|
||||||
|
+ update_persistent_db(token);
|
||||||
|
|
||||||
|
- if (token->db_main->flags & PKCS11_CKFT_USER_PIN_LOCKED)
|
||||||
|
+ rc = verify_pin(PKCS11_CKU_USER, pin, pin_size,
|
||||||
|
+ db->user_pin_salt,
|
||||||
|
+ db->user_pin_hash);
|
||||||
|
+ if (rc == PKCS11_CKR_PIN_INCORRECT) {
|
||||||
|
+ if (db->flags & PKCS11_CKFT_USER_PIN_LOCKED)
|
||||||
|
return PKCS11_CKR_PIN_LOCKED;
|
||||||
|
|
||||||
|
return PKCS11_CKR_PIN_INCORRECT;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (token->db_main->user_pin_count) {
|
||||||
|
- token->db_main->user_pin_count = 0;
|
||||||
|
+ if (rc)
|
||||||
|
+ db->user_pin_count--;
|
||||||
|
+ else
|
||||||
|
+ db->user_pin_count = 0;
|
||||||
|
|
||||||
|
- update_persistent_db(token);
|
||||||
|
+ db->flags &= ~PKCS11_CKFT_USER_PIN_LOCKED;
|
||||||
|
+ if (db->user_pin_count < PKCS11_TOKEN_USER_PIN_COUNT_MAX - 1) {
|
||||||
|
+ db->flags &= ~PKCS11_CKFT_USER_PIN_FINAL_TRY;
|
||||||
|
+ if (!db->user_pin_count)
|
||||||
|
+ db->flags &= ~PKCS11_CKFT_USER_PIN_COUNT_LOW;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (token->db_main->flags & (PKCS11_CKFT_USER_PIN_COUNT_LOW |
|
||||||
|
- PKCS11_CKFT_USER_PIN_FINAL_TRY)) {
|
||||||
|
- token->db_main->flags &= ~(PKCS11_CKFT_USER_PIN_COUNT_LOW |
|
||||||
|
- PKCS11_CKFT_USER_PIN_FINAL_TRY);
|
||||||
|
-
|
||||||
|
- update_persistent_db(token);
|
||||||
|
- }
|
||||||
|
+ update_persistent_db(token);
|
||||||
|
|
||||||
|
- return PKCS11_CKR_OK;
|
||||||
|
+ return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum pkcs11_rc entry_ck_set_pin(struct pkcs11_client *client,
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
||||||
|
|
||||||
@@ -10,4 +10,5 @@ SRC_URI += " \
|
|||||||
file://0002-core-Define-section-attributes-for-clang.patch \
|
file://0002-core-Define-section-attributes-for-clang.patch \
|
||||||
file://0003-optee-enable-clang-support.patch \
|
file://0003-optee-enable-clang-support.patch \
|
||||||
file://0004-core-link-add-no-warn-rwx-segments.patch \
|
file://0004-core-link-add-no-warn-rwx-segments.patch \
|
||||||
|
file://0005-ta-pkcs11-Improve-PIN-counter-handling-robustness.patch \
|
||||||
"
|
"
|
||||||
|
|||||||
@@ -12,12 +12,11 @@
|
|||||||
INHIBIT_DEFAULT_DEPS = "1"
|
INHIBIT_DEFAULT_DEPS = "1"
|
||||||
COMPATIBLE_HOST = "aarch64-*"
|
COMPATIBLE_HOST = "aarch64-*"
|
||||||
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
||||||
inherit nopackages deploy rootfs-postcommands ${IMAGE_CLASSES} python3native
|
inherit nopackages deploy rootfs-postcommands ${IMAGE_CLASSES} python3native testimage
|
||||||
|
|
||||||
do_configure[noexec] = "1"
|
do_configure[noexec] = "1"
|
||||||
do_compile[noexec] = "1"
|
do_compile[noexec] = "1"
|
||||||
do_install[noexec] = "1"
|
do_install[noexec] = "1"
|
||||||
do_testimage[depends] += "mtools-native:do_populate_sysroot"
|
|
||||||
|
|
||||||
# Deploy with this suffix so it is picked up in the machine configuration
|
# Deploy with this suffix so it is picked up in the machine configuration
|
||||||
IMAGE_DEPLOY_SUFFIX ?= ".wic"
|
IMAGE_DEPLOY_SUFFIX ?= ".wic"
|
||||||
@@ -80,7 +79,9 @@ RM_WORK_EXCLUDE_ITEMS += "${@ os.path.basename(d.getVar('TEST_LOG_DIR')) }"
|
|||||||
|
|
||||||
do_testimage[postfuncs] += "acs_logs_handle"
|
do_testimage[postfuncs] += "acs_logs_handle"
|
||||||
do_testimage[depends] += "edk2-test-parser-native:do_populate_sysroot \
|
do_testimage[depends] += "edk2-test-parser-native:do_populate_sysroot \
|
||||||
arm-systemready-scripts-native:do_populate_sysroot"
|
arm-systemready-scripts-native:do_populate_sysroot \
|
||||||
|
mtools-native:do_populate_sysroot \
|
||||||
|
parted-native:do_populate_sysroot"
|
||||||
|
|
||||||
# Process the logs
|
# Process the logs
|
||||||
python acs_logs_handle() {
|
python acs_logs_handle() {
|
||||||
|
|||||||
+46
@@ -0,0 +1,46 @@
|
|||||||
|
From 45b3fae4675dc1d4ee2d7aefa19d85ee4f891377 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
|
||||||
|
Date: Sat, 25 Nov 2023 15:33:58 -0600
|
||||||
|
Subject: [PATCH] neighbour: Fix __randomize_layout crash in struct neighbour
|
||||||
|
|
||||||
|
Previously, one-element and zero-length arrays were treated as true
|
||||||
|
flexible arrays, even though they are actually "fake" flex arrays.
|
||||||
|
The __randomize_layout would leave them untouched at the end of the
|
||||||
|
struct, similarly to proper C99 flex-array members.
|
||||||
|
|
||||||
|
However, this approach changed with commit 1ee60356c2dc ("gcc-plugins:
|
||||||
|
randstruct: Only warn about true flexible arrays"). Now, only C99
|
||||||
|
flexible-array members will remain untouched at the end of the struct,
|
||||||
|
while one-element and zero-length arrays will be subject to randomization.
|
||||||
|
|
||||||
|
Fix a `__randomize_layout` crash in `struct neighbour` by transforming
|
||||||
|
zero-length array `primary_key` into a proper C99 flexible-array member.
|
||||||
|
|
||||||
|
Fixes: 1ee60356c2dc ("gcc-plugins: randstruct: Only warn about true flexible arrays")
|
||||||
|
Closes: https://lore.kernel.org/linux-hardening/20231124102458.GB1503258@e124191.cambridge.arm.com/
|
||||||
|
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
|
||||||
|
Reviewed-by: Kees Cook <keescook@chromium.org>
|
||||||
|
Tested-by: Joey Gouly <joey.gouly@arm.com>
|
||||||
|
Link: https://lore.kernel.org/r/ZWJoRsJGnCPdJ3+2@work
|
||||||
|
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||||
|
|
||||||
|
Upstream-Status: Backport
|
||||||
|
Signed-off-by: Jon Mason <jon.mason@arm.com>
|
||||||
|
|
||||||
|
---
|
||||||
|
include/net/neighbour.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/include/net/neighbour.h b/include/net/neighbour.h
|
||||||
|
index 07022bb0d44d..0d28172193fa 100644
|
||||||
|
--- a/include/net/neighbour.h
|
||||||
|
+++ b/include/net/neighbour.h
|
||||||
|
@@ -162,7 +162,7 @@ struct neighbour {
|
||||||
|
struct rcu_head rcu;
|
||||||
|
struct net_device *dev;
|
||||||
|
netdevice_tracker dev_tracker;
|
||||||
|
- u8 primary_key[0];
|
||||||
|
+ u8 primary_key[];
|
||||||
|
} __randomize_layout;
|
||||||
|
|
||||||
|
struct neigh_ops {
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
ARMFILESPATHS := "${THISDIR}/files:"
|
ARMFILESPATHS := "${THISDIR}/files:"
|
||||||
|
|
||||||
|
FILESEXTRAPATHS:prepend:aarch64 = "${ARMFILESPATHS}"
|
||||||
|
SRC_URI:append:aarch64 = " file://0001-neighbour-Fix-__randomize_layout-crash-in-struct-nei.patch"
|
||||||
|
|
||||||
COMPATIBLE_MACHINE:generic-arm64 = "generic-arm64"
|
COMPATIBLE_MACHINE:generic-arm64 = "generic-arm64"
|
||||||
FILESEXTRAPATHS:prepend:generic-arm64 = "${ARMFILESPATHS}"
|
FILESEXTRAPATHS:prepend:generic-arm64 = "${ARMFILESPATHS}"
|
||||||
SRC_URI:append:generic-arm64 = " \
|
SRC_URI:append:generic-arm64 = " \
|
||||||
|
|||||||
Reference in New Issue
Block a user