The bridge subsystem was written with a ETH_BRIDGE_INITIALIZER that assumed it could initialize a k_mutex with a zero-filled initializer. That never worked. Unlike semaphores, mutexes have always required a runtime call to k_mutex_init(). What happened instead is that k_mutex_un/lock() returned error codes, which were ignored by the code here. So no locking was happening. This was discovered while migrating to zync, where an attempt to unlock an unlocked mutex is a panic condition (and where zero-filled initializers are legal, but represent an unfair semaphore and not a mutex, so deadlock correctly). Signed-off-by: Andy Ross <andyross@google.com> |
||
|---|---|---|
| .. | ||
| ip | ||
| l2 | ||
| lib | ||
| pkt_filter | ||
| buf.c | ||
| CMakeLists.txt | ||
| hostname.c | ||
| Kconfig | ||
| Kconfig.hostname | ||
| Kconfig.template.log_config.default.net | ||
| Kconfig.template.log_config.net | ||