From 8089dd48df63e763a7229a51eaa7d53c6d52c982 Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Mon, 27 Jan 2025 14:54:56 +0100 Subject: [PATCH] stm-st-stm32mp: gcnano: Fix Kernel NULL pointer on forced system shutdown This commit adds a patch to the gcnano-driver-stm32mp recipe to address a Kernel NULL pointer issue that occurs during uncontrolled shutdown sequences. This issue causes an unexpected Kernel NULL pointer exception, preventing the system from powering off. https://onedigi.atlassian.net/browse/DEL-9449 Signed-off-by: Arturo Buzarra --- ...mmand-fix-Kernel-NULL-pointer-on-gck.patch | 49 +++++++++++++++++++ .../drivers/gcnano-driver-stm32mp_%.bbappend | 7 +++ 2 files changed, 56 insertions(+) create mode 100644 meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-bsp/drivers/gcnano-driver-stm32mp/0001-gc_hal_kernel_command-fix-Kernel-NULL-pointer-on-gck.patch create mode 100644 meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-bsp/drivers/gcnano-driver-stm32mp_%.bbappend diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-bsp/drivers/gcnano-driver-stm32mp/0001-gc_hal_kernel_command-fix-Kernel-NULL-pointer-on-gck.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-bsp/drivers/gcnano-driver-stm32mp/0001-gc_hal_kernel_command-fix-Kernel-NULL-pointer-on-gck.patch new file mode 100644 index 000000000..9ac37eeab --- /dev/null +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-bsp/drivers/gcnano-driver-stm32mp/0001-gc_hal_kernel_command-fix-Kernel-NULL-pointer-on-gck.patch @@ -0,0 +1,49 @@ +From: Arturo Buzarra +Date: Mon, 27 Jan 2025 14:15:48 +0100 +Subject: [PATCH] gc_hal_kernel_command: fix Kernel NULL pointer on + gckCOMMAND_Detach() + +During uncontrolled shutdown sequences, detaching a user process might leave it +uninitialized, causing the gckCOMMAND pointer to be NULL. This results in an +unexpected Kernel NULL pointer exception, which prevents the system from +powering off. + +https://onedigi.atlassian.net/browse/DEL-9449 + +Signed-off-by: Arturo Buzarra +--- + .../hal/kernel/gc_hal_kernel_command.c | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +diff --git a/hal/kernel/gc_hal_kernel_command.c b/hal/kernel/gc_hal_kernel_command.c +index 995947a..cd9907b 100644 +--- a/hal/kernel/gc_hal_kernel_command.c ++++ b/hal/kernel/gc_hal_kernel_command.c +@@ -3885,15 +3885,16 @@ OnError: + gceSTATUS + gckCOMMAND_Detach(gckCOMMAND Command, gckCONTEXT Context) + { +- if (Command->feType == gcvHW_FE_WAIT_LINK || Command->feType == gcvHW_FE_END) { +- return _DetachWaitLinkFECommand(Command, Context); +- } else if (Command->feType == gcvHW_FE_MULTI_CHANNEL) { +- gcmkOS_SAFE_FREE(Context->os, Context); +- return gcvSTATUS_OK; +- } else { +- /* Nothing to do. */ +- return gcvSTATUS_OK; ++ if (Command != gcvNULL) { ++ if (Command->feType == gcvHW_FE_WAIT_LINK || Command->feType == gcvHW_FE_END) { ++ return _DetachWaitLinkFECommand(Command, Context); ++ } else if (Command->feType == gcvHW_FE_MULTI_CHANNEL) { ++ gcmkOS_SAFE_FREE(Context->os, Context); ++ return gcvSTATUS_OK; ++ } + } ++ /* Nothing to do. */ ++ return gcvSTATUS_OK; + } + + static void +-- +2.48.1 + diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-bsp/drivers/gcnano-driver-stm32mp_%.bbappend b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-bsp/drivers/gcnano-driver-stm32mp_%.bbappend new file mode 100644 index 000000000..761673bdd --- /dev/null +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-bsp/drivers/gcnano-driver-stm32mp_%.bbappend @@ -0,0 +1,7 @@ +# Copyright (C) 2025, Digi International Inc. + +FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:" + +SRC_URI:append = " \ + file://0001-gc_hal_kernel_command-fix-Kernel-NULL-pointer-on-gck.patch\ +"