On Mon, Jun 22, 2026 at 7:00 AM Jakub Kicinski [off-list ref] wrote:
On Wed, 17 Jun 2026 08:34:43 -0400 Michael Bommarito wrote:
quoted
amt_update_handler() caches iph = ip_hdr(skb) and then calls
pskb_may_pull(). pskb_may_pull() can reallocate the skb head: the new
head is allocated and the old one is freed. The cached iph is not
refreshed, so the following tunnel lookup reads iph->saddr from the
freed head. On an AMT relay this lookup runs for every incoming
membership update, before the update's nonce and response MAC are
validated.
The sibling handlers amt_multicast_data_handler() and
amt_membership_query_handler() re-read ip_hdr() after the pull and are
not affected; only amt_update_handler() keeps the pre-pull pointer.
Sashikos point out a bunch more of these in AMT:
https://sashiko.dev/#/patchset/20260617123443.3586930-1-michael.bommarito@gmail.com
https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260617123443.3586930-1-michael.bommarito@gmail.com
Let's fix them all with one patch?
Agreed.
Michael, could you please fix the remaining ones Sashiko flagged?
Thanks a lot!
Taehee Yoo
--
pw-bot: cr