CVE-2026-89789: gtp: add synchronize_net() in gtp_newlink() error path to prevent use-after-free

Published Sep 16, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

gtp: add synchronizenet() in gtpnewlink() error path to prevent use-after-free

gtpnewlink()'s error path frees tidhash and addrhash without waiting for an RCU grace period after clearing skuserdata. A concurrent gtpencaprecv() in softirq may still hold the gtpdev pointer obtained via rcudereferenceskuserdata() and access the freed memory.

BUG: KASAN: slab-use-after-free in gtp0pdpfind+0x1f6/0x200 (gtp.c:152) Call Trace: <IRQ> gtp0pdpfind+0x1f6/0x200 gtpencaprecv+0x527/0x24b0 udpqueuercvoneskb+0x75f/0xc10

Add synchronizenet() before the kfree calls in outhashtable, which covers all error paths from both gtpencapenable() and gtpcreatesockets().

Affected Software

1 affected component
Linux Linux kernel

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    In gtp.c, add synchronize_net() before the kfree calls in out_hashtable (and gtp_newlink() error path) to prevent KASAN slab-use-after-free involving gtp0_pdp_find.

    Linux kernel gtp (gtp.c) Insert synchronize_net() before kfree calls in out_hashtable/gtp_newlink() error path = Add synchronize_net() before the kfree calls
  2. Operational

    Ensure the patch is applied so the gtp_newlink() error path waits for an RCU grace period by clearing sk_user_data and using synchronize_net() before freeing tid_hash and addr_hash.

Event History

Sep 16, 2026
CVE Published
via MITRE·08:48 AM
Data Sourced
via MITRE·08:48 AM
Description

Frequently Asked Questions

1

When can this race be triggered?

It requires concurrent packet reception in gtp_encap_recv() while gtp_newlink() is taking an error path after clearing sk_user_data and freeing the GTP hash tables. The receive path runs in softirq context and may retain a GTP device pointer obtained through RCU.

2

Which setup or operations are implicated?

The affected cleanup path covers errors originating from both gtp_encap_enable() and gtp_create_sockets(). The issue is therefore associated with GTP device creation that fails while GTP encapsulation receive processing can run concurrently.

3

What does the fix change?

The fix adds synchronize_net() before freeing tid_hash and addr_hash in the out_hashtable cleanup path. This waits for the relevant network RCU grace period so concurrent receive processing cannot access the freed GTP device data.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203