Commit Graph
37795 Commits
Author SHA1 Message Date
Erhan Kurubas 6c6490d54c docs(esp_trace): restructure tracing docs with esp_trace as master
Reorganize the tracing documentation so esp_trace is the master
component, with app_trace, SystemView, and Gcov referenced from it.
2026-07-23 08:58:30 +03:00
Chen Chen 65f0b76eb0 Merge branch 'ci/i2s_enable_flash_enc_test' into 'master'
ci(i2s): test I2S driver on encrypted runner

Closes IDF-15062

See merge request espressif/esp-idf!49232
2026-07-23 12:01:18 +08:00
Island 9211373354 Merge branch 'idf/ble_audio_pts' into 'master'
feat(ble_audio): Miscellaneous update for verifying with PTS cases

See merge request espressif/esp-idf!50156
2026-07-23 11:14:35 +08:00
Wang Meng Yang a151bc553a Merge branch 'bugfix/low_spp_throughput' into 'master'
change(bt/bluedroid): increased port low watermark of RFCOMM

Closes BTQABR2023-815

See merge request espressif/esp-idf!51031
2026-07-23 10:50:57 +08:00
Wang Meng Yang e61ef3e4a4 Merge branch 'change/refactor_hidh_datapath' into 'master'
Change/refactor hidh datapath

Closes IDFGH-17363

See merge request espressif/esp-idf!49615
2026-07-23 10:47:19 +08:00
morris d9a0829c27 Merge branch 'fix/riscv_trace_rcc_atomic' into 'master'
fix(riscv_trace): protect shared RCC register access with PERIPH_RCC_ATOMIC

See merge request espressif/esp-idf!51072
2026-07-23 10:29:54 +08:00
Wang Meng Yang 1860ef6b7f Merge branch 'bugfix/bredr_acl_uflow_deadlock' into 'master'
fix(bt): Fixed blocking during LMP packet_type negotiation on ESP32-S31

Closes IDFGH-17903

See merge request espressif/esp-idf!51067
2026-07-23 10:08:03 +08:00
harshal.patil a7b29bfda9 change(security): disable Key Manager support on ESP32-C5/P4/S31
The Key Manager hardware peripheral in its current form needs further
design changes before it can be offered as a production feature.
Until a revised peripheral design is available, withdraw ESP-IDF
support for it on all Key Manager capable targets.
2026-07-22 19:58:23 +05:30
Liu Linyan 4362a3116f feat(ble_audio): Miscellaneous update for verifying with PTS cases 2026-07-22 20:38:57 +08:00
morris 49fba58f08 fix(riscv_trace): protect shared RCC register access with PERIPH_RCC_ATOMIC
riscv_trace_ll_enable_bus_clock and riscv_trace_ll_reset_register operate
on shared HP_SYS_CLKRST registers and were called concurrently from both
cores during SECONDARY init, creating RMW race conditions.

Move the clock/reset logic out of the HAL layer into
esp_riscv_trace_early_init, protected by PERIPH_RCC_ATOMIC() spinlock.
Wrap the LL functions with macros that enforce the caller must be inside
a PERIPH_RCC_ATOMIC() critical section at compile time.
2026-07-22 19:02:58 +08:00
Konstantin Kondrashov 217fc2b7e5 Merge branch 'fix/esp_timer_task_dispatch_wedge' into 'master'
fix(esp_timer): Fix esp_timer task dispatch stall

Closes IDFGH-17935

See merge request espressif/esp-idf!50788
2026-07-22 13:47:58 +03:00
Wang Mengyang 53b357790b fix(bt): Fixed blocking during LMP packet type negotiation on ESP32-S31
In the Bluetooth connections with some smartphones, communication can possibly be blocked
during packet type negotation, when ESP32-S31 attempts to finalize the ACL-U transmission
and waits for the last Tx ACL-U packet to be transmitted, but peer device rejects the
packet with FLOW=STOP in its packet, thus causing a deadlock.

Closes https://github.com/espressif/esp-idf/issues/18797
2026-07-22 16:41:08 +08:00
Jiang Jiang Jian ade59336b6 Merge branch 'bugfix/fix_crash_issue_on_esptouch_v2' into 'master'
fix(wifi): added validation for password and reserved data length in ESPTouch v2

Closes WIFI-7448, WIFI-7484, WIFI-7482, and WIFI-7444

See merge request espressif/esp-idf!50110
2026-07-22 16:27:15 +08:00
morris 44247cf304 Merge branch 'refactor/extract-esp_hal_debug_assist' into 'master'
refactor(hal): extract assist_debug, debug_probe and trace into esp_hal_debug_assist

See merge request espressif/esp-idf!50968
2026-07-22 16:15:13 +08:00
liqigan 0564b09e86 fix(bt/bluedroid): Fixed use after free issue on osi_event_delete 2026-07-22 14:41:20 +08:00
liqigan 39b4b3f329 fix(bt/bluedroid): Fixed HID host reconnection bug and enabled load HID devices
Closes https://github.com/espressif/esp-idf/issues/18335
2026-07-22 14:41:20 +08:00
liqigan 540a4216df change(bt/bluedroid): Refactored HCI ACL datapath 2026-07-22 14:41:20 +08:00
liqigan db12b3c279 change(bt/bluedroid): Refactored HID host datapath 2026-07-22 14:41:18 +08:00
Wang Meng Yang bc428c91d5 Merge branch 'bugfix/bredr_critical_bugs' into 'master'
bugfix: fix issues raised from AI review

See merge request espressif/esp-idf!49755
2026-07-22 14:31:28 +08:00
Island 904d960cd6 Merge branch 'fix/ble-log-store-access-fault' into 'master'
fix: Ensure BLE Log Global Variables in Internal RAM

See merge request espressif/esp-idf!51024
2026-07-22 14:02:23 +08:00
Konstantin Kondrashov 35e5def13c Merge branch 'fix/bootloader_log_format_drom_vaddr' into 'master'
fix(bootloader): use correct format specifier for MMU_LL_END_DROM_ENTRY_VADDR

Closes IDFGH-17999

See merge request espressif/esp-idf!50927
2026-07-22 08:59:12 +03:00
Konstantin Kondrashov 66b5056f23 fix(bootloader): use correct format specifier for MMU_LL_END_DROM_ENTRY_VADDR 2026-07-22 08:59:11 +03:00
Konstantin Kondrashov 10f8b195b0 Merge branch 'fix/log-unsigned-msec-format' into 'master'
fix(log): use unsigned format specifier for esp_log_system_timestamp msec

See merge request espressif/esp-idf!50989
2026-07-21 18:32:49 +03:00
Konstantin Kondrashov 95bba8e982 Merge branch 'fix/heap-trace-calloc' into 'master'
fix(heap): trace heap_caps_calloc allocations in standalone heap tracing

Closes IDF-15995

See merge request espressif/esp-idf!50990
2026-07-21 17:55:53 +03:00
Konstantin Kondrashov 268a9b071f Merge branch 'fix/esp-event-security-fixes' into 'master'
fix(esp_event): multiple security and stability fixes

Closes SEC-064, SEC-219, SEC-220, SEC-221, SEC-222, and IDFGH-17955

See merge request espressif/esp-idf!50442
2026-07-21 16:27:51 +03:00
Konstantin Kondrashov 82e6c831e7 fix(esp_event): free queued legacy cleanup ctx on loop delete
When a loop is deleted while an internal legacy "cleanup" event is still
queued (posted by a deferred self-unregistration from within a handler),
esp_event_loop_delete() drained the queue but only freed the post payload,
leaking the heap copy of the handler context allocated for the legacy path.

Free ctx->handler_ctx for queued legacy cleanup events while draining the
queue, mirroring the cleanup done in esp_event_loop_run().

Add a regression test that leaves a legacy cleanup event queued and asserts
no memory is leaked on loop deletion.
2026-07-21 15:33:47 +03:00
Konstantin Kondrashov e8ffb477a0 fix(esp_event): clear running_task before releasing mutex on tick timeout
When esp_event_loop_run() exited via the ticks-expired break path,
loop->running_task was left pointing to the current task handle.
Any subsequent trylock in esp_event_handler_unregister_with_internal()
would see a stale non-NULL running_task and take the wrong code path.
2026-07-21 15:25:58 +03:00
Konstantin Kondrashov 9d2d32524b fix(esp_event): prevent UAF race between post and loop delete (SEC-222)
esp_event_post_to() could access loop->queue / loop->mutex after
esp_event_loop_delete() freed them when both ran concurrently.

Introduce esp_event_loop_state_t with:
- posts_in_flight: reference-count incremented atomically (under
  state.lock spinlock) before touching any loop resources, decremented
  on every exit path via goto on_err.
- deleting: atomic_bool set by esp_event_loop_delete() to block new
  posts from entering the critical section.

esp_event_loop_delete() sets deleting=true, then busy-waits (releasing
and re-acquiring loop->mutex each tick) until posts_in_flight reaches
zero before proceeding with teardown.

esp_event_isr_post_to() performs a lock-free atomic_load of deleting as
a best-effort guard; ISR context cannot participate in the spinlock
protocol but the window is documented and accepted.
2026-07-21 15:25:58 +03:00
Konstantin Kondrashov 736275e562 fix(esp_event): skip dispatch for internal cleanup events (SEC-221)
After processing an esp_event_handler_cleanup sentinel, execution fell
through into the regular dispatch block. Every loop-level (ANY_BASE/
ANY_ID) handler was invoked with base="cleanup" and event_data pointing
at the internal esp_event_remove_handler_context_t struct.

Consequences:
- Information disclosure: internal handler addresses and loop instance
  pointer are exposed to every loop-level handler.
- UAF: if a handler stores event_data for later use, post_instance_delete
  frees the ctx, turning the stored pointer into a dangling reference.
- Logic corruption: handlers that switch on base with a default branch
  misbehave on every unregister anywhere in the system.

Fix: wrap the regular dispatch block in an else clause so it is skipped
entirely for cleanup events. post_instance_delete, ticks accounting, and
xSemaphoreGiveRecursive remain in the shared tail executed for both paths.

Closes SEC_221
2026-07-21 15:25:57 +03:00
Konstantin Kondrashov 4ab4d5b894 fix(esp_event): use recursive mutex API in handler unregister (SEC-220)
1) loop->mutex is created with xSemaphoreCreateRecursiveMutex(). FreeRTOS
requires that recursive mutexes are only acquired and released with
xSemaphoreTakeRecursive / xSemaphoreGiveRecursive.

esp_event_handler_unregister_with_internal() used the non-recursive
xSemaphoreTake(loop->mutex, 0) / xSemaphoreGive(loop->mutex) in the fast
path. The non-recursive Take bypasses uxRecursiveCallCount bookkeeping;
if the same task subsequently takes the mutex recursively (e.g. re-entry
from a handler or a follow-up register), the call count drifts. The
non-recursive Give then unconditionally drops the holder, allowing another
task to acquire the mutex while the original task still believes it holds
the lock — a full lock violation on the handler list leading to UAF and
potential RCE on attacker-driven event floods.

Fix: replace xSemaphoreTake/xSemaphoreGive with the Recursive variants in
the fast (try-take with timeout 0) path of unregister_with_internal.

2) avoid use-after-free when unregistering handler from a callback

The recursive try-lock introduced in SEC-220 succeeds re-entrantly when a
handler unregisters itself from within its own callback, causing the handler
node to be freed immediately while the dispatch loop still writes profiling
counters to it after the callback returns. Route the in-callback case to the
deferred cleanup path and only free directly once no dispatch is active.

Closes SEC_220
2026-07-21 15:25:57 +03:00
Konstantin Kondrashov 2c935ea861 fix(esp_event): protect is_handler_registered traversal with mutex (SEC-219)
esp_event_is_handler_registered() walked loop_nodes, base_nodes, id_nodes
and handler lists with no lock held, then released an unowned mutex at the
'out:' label via xSemaphoreGive().

Concurrent register/unregister/delete operations can free handler nodes
during the unlocked walk (SLIST UAF). The xSemaphoreGive on an unowned
recursive mutex corrupts the recursive call-count of any task that
legitimately holds the mutex.

Fix:
- Take loop->mutex with xSemaphoreTakeRecursive before the traversal.
- Replace xSemaphoreGive at the 'out:' label with xSemaphoreGiveRecursive
  so every exit path holds the mutex for exactly one balanced take/give.

Closes SEC_219
2026-07-21 15:25:57 +03:00
Adam Múdry 7961a7a65f fix(sdmmc): BDL calculate sectors cast fix
Closes https://github.com/espressif/esp-idf/issues/18875
2026-07-21 14:06:56 +02:00
Jin Cheng 1336f62653 change(bt/bluedroid): increased port low watermark of RFCOMM
When PORT_RX_BUF_LOW_WM is too low, RFCOMM replenishes credits only
after receiving a relatively large number of packets, which may cause
the peer to exhaust its credits and enter a stop-and-wait state.
Increase the low watermark to replenish credits more promptly and
reduce the likelihood of the peer stalling while waiting for additional
credits.
2026-07-21 19:29:08 +08:00
Zhou Xiao 2fa434eb50 fix(bt): keep BLE log ISR state in internal RAM 2026-07-21 16:27:39 +08:00
Chen Ji Chang 0bae8d1e27 Merge branch 'change/remove_lcd_restart_for_p4_s31' into 'master'
remove(lcd): remove restart support for p4 and s31

Closes IDF-15849 and IDF-15960

See merge request espressif/esp-idf!50892
2026-07-21 15:41:27 +08:00
Chen Jichang 294f35cb03 test(dma): add psram ecc test for supported targets 2026-07-21 14:50:23 +08:00
zhangyanjiao a3fa56db51 fix(wifi): fixed the buffer overflow issues
1. Added validation for password and reserved data length in ESPTouch v2
2. Added bound check for data index in ESPTouch v1 HT40
3. prevent buffer overflow when parsing MBSSID beacon
2026-07-21 14:09:35 +08:00
morris 26a22512eb refactor(hal): extract assist_debug, debug_probe and trace into esp_hal_debug_assist
Move the following modules from the hal component into a new dedicated
esp_hal_debug_assist component, following the esp_hal_timg pattern:

- assist_debug (hal + target-specific LL headers)
- debug_probe (types + target-specific LL headers)
- riscv_trace (hal + types + source + target-specific LL headers)
- trace_ll (esp32/esp32s2/esp32s3 target-specific LL headers)

Update the following components to depend on esp_hal_debug_assist:
esp_system, riscv, bootloader_support, esp_hw_support, esp_riscv_trace

Remove riscv_trace_hal.c from the hal component.
2026-07-21 11:28:11 +08:00
morris e8a5192a18 Merge branch 'ci/fix_the_parlio_rx_spi_test_case' into 'master'
ci(parlio_rx): fixed the parlio rx spi test case

Closes IDF-9806

See merge request espressif/esp-idf!43536
2026-07-21 10:54:05 +08:00
Jiang Jiang Jian e41650a966 Merge branch 'bugfix/remove_phy_lib_librfate' into 'master'
fix(phy): removed all librfate logic from cmake

Closes IDFCI-13345

See merge request espressif/esp-idf!50940
2026-07-21 10:49:48 +08:00
Island de98d9d4ad Merge branch 'feat/feat_support_phy_enable_using_regdma' into 'master'
Feat/feat support phy enable using regdma

Closes BLERP-2376, BLERP-2381, and PM-635

See merge request espressif/esp-idf!46356
2026-07-21 10:40:03 +08:00
Island c3083dfae5 Merge branch 'opt/bluedroid_trace_none_without_ble_log_host' into 'master'
change(ble/bluedroid): disable host trace logs when BLE Log host is off

See merge request espressif/esp-idf!50902
2026-07-21 10:39:36 +08:00
Island 30c632bebb Merge branch 'bugfix/fix_bluedroid_set_rand_addr_during_scan' into 'master'
fix(ble/bluedroid): report set rand addr result on HCI complete

Closes BLERP-2965

See merge request espressif/esp-idf!50663
2026-07-21 10:39:27 +08:00
Island bf05267d95 Merge branch 'fix/ble_hidd_remove_ccc_gating' into 'master'
fix(esp_hid/bluedroid): remove app-layer CCC gating in HID device

Closes BCI-601

See merge request espressif/esp-idf!50766
2026-07-21 10:39:23 +08:00
Konstantin Kondrashov 46fceb2490 fix(heap): trace heap_caps_calloc allocations in standalone heap tracing
heap_caps_calloc_base() calls heap_caps_malloc_base() from the same
translation unit (heap_caps_base.c). GNU ld --wrap only redirects
undefined references, so that intra-object call binds to the real
heap_caps_malloc_base and never enters __wrap_heap_caps_malloc_base.
As a result, allocations made through heap_caps_calloc() were never
recorded by heap tracing, silently hiding potentially large INTERNAL
leaks (e.g. mbedtls SSL buffers via MALLOC_CAP_INTERNAL).

Add heap_caps_calloc_base to the --wrap list and implement
__wrap_heap_caps_calloc_base, which records the allocation via a
noinline trace_calloc helper (mirroring trace_malloc so the recorded
call stack depth stays consistent) and calls __real_heap_caps_calloc_base.
The inner malloc_base call remains same-TU and unwrapped, so each
calloc produces exactly one trace record (no double counting).
2026-07-20 19:17:12 +03:00
Konstantin Kondrashov e4a2cf57e5 fix(log): use unsigned format specifier for esp_log_system_timestamp msec
Use the unsigned format specifier to match the millisecond value type.

This avoids format warnings under stricter compiler diagnostics.
2026-07-20 17:14:18 +03:00
Chen Jichang cf57711b09 ci(parlio_rx): fixed the parlio rx spi test case 2026-07-20 19:31:42 +08:00
Sudeep Mohanty 976a843ee9 test(esp_timer): Add regression test for esp_timer task dispatch stall 2026-07-20 14:27:46 +03:00
Sudeep Mohanty 958dc8afcf fix(esp_timer): Fix esp_timer task dispatch stall
The task dispatch method for the esp_timer could stall even if it is
armed if ther ISR dispatch alarm triggers close to the task dispatch.
This MR fixes a bug where the esp_timer cleared the incorrect cached
array timer index and subsequently the timer task is never woken up.

Closes https://github.com/espressif/esp-idf/issues/18808
2026-07-20 14:27:01 +03:00
Erhan Kurubas 2411f0f52d feat(hal): implement enable_debug/enable_record for ESP32-S31 CPU utility 2026-07-20 12:13:21 +02:00