From 710a04f649c90bc83421db3c2b5a79d2babe00d9 Mon Sep 17 00:00:00 2001 From: Li Shuai Date: Wed, 1 Apr 2026 12:27:00 +0800 Subject: [PATCH] change(esp_hw_support): attribute assert check in module retention allocate and free --- components/esp_hw_support/sleep_retention.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/components/esp_hw_support/sleep_retention.c b/components/esp_hw_support/sleep_retention.c index eb80a41f9f3..5e729abfa93 100644 --- a/components/esp_hw_support/sleep_retention.c +++ b/components/esp_hw_support/sleep_retention.c @@ -894,8 +894,20 @@ static void module_action(sleep_retention_module_t module, sleep_retention_modul switch (action) { case 0: break; /* Nothing to do */ - case 1: set_reference(instance(dep_module), module); break; /* allocate */ - case 2: clr_reference(instance(dep_module), module); break; /* free */ + case 1: { /* allocate */ + set_reference(instance(dep_module), module); + if (module_is_passive(instance(dep_module)) && module_runtime_attach(instance(dep_module))) { + assert(module_runtime_attach(instance(module))); + } + } + break; + case 2: { /* free */ + clr_reference(instance(dep_module), module); + if (module_is_passive(instance(dep_module)) && module_runtime_attach(instance(dep_module))) { + assert(module_runtime_attach(instance(module))); + } + } + break; case 3: refarray_set_bit(instance(dep_module), 1, module); break; /* attach */ case 4: refarray_clr_bit(instance(dep_module), 1, module); break; /* detach */ default: break;