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\ +"