Description
In the Linux kernel, the following vulnerability has been resolved: net: bridge: use a stable FDB dst snapshot in RCU readers Local FDB entries can be rewritten in place by `fdb_delete_local()`, which updates `f->dst` to another port or to `NULL` while keeping the entry alive. Several bridge RCU readers inspect `f->dst`, including `br_fdb_fillbuf()` through the `brforward_read()` sysfs path. These readers currently load `f->dst` multiple times and can therefore observe inconsistent values across the check and later dereference. In `br_fdb_fillbuf()`, this means a concurrent local-FDB update can change `f->dst` after the NULL check and before the `port_no` dereference, leading to a NULL-ptr-deref. Fix this by taking a single `READ_ONCE()` snapshot of `f->dst` in each affected RCU reader and using that snapshot for the rest of the access sequence. Also publish the in-place `f->dst` updates in `fdb_delete_local()` with `WRITE_ONCE()` so the readers and writer use matching access patterns.
Product status
960b589f86c74ce582922fcb996103271081f4de (git) before 0b9e4bbfb7c949151e3acd44ed4aa33614d2e110
960b589f86c74ce582922fcb996103271081f4de (git) before 81af4137a30c4c2dc694dea8cacb180bd66000ef
960b589f86c74ce582922fcb996103271081f4de (git) before 5424e678f9b304e148cf5dcc047cffc7a56a3bb5
960b589f86c74ce582922fcb996103271081f4de (git) before 9a2d9d4e657b23dc21f24cf139e3aeff0b61341f
960b589f86c74ce582922fcb996103271081f4de (git) before df4601653201de21b487c3e7fffd464790cab808
3.14
Any version before 3.14
6.6.140 (semver)
6.12.86 (semver)
6.18.27 (semver)
7.0.4 (semver)
7.1-rc1 (original_commit_for_fix)
References
git.kernel.org/...c/0b9e4bbfb7c949151e3acd44ed4aa33614d2e110
git.kernel.org/...c/81af4137a30c4c2dc694dea8cacb180bd66000ef
git.kernel.org/...c/5424e678f9b304e148cf5dcc047cffc7a56a3bb5
git.kernel.org/...c/9a2d9d4e657b23dc21f24cf139e3aeff0b61341f
git.kernel.org/...c/df4601653201de21b487c3e7fffd464790cab808