{"schema":"threatline.record/2","record":{"id":"CVE-2026-97959","aliases":[],"summary":"net/sched: cls_route: free emptied bucket on filter move","details":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet/sched: cls_route: free emptied bucket on filter move\n\nroute4_change can move an existing filter to a different top-level\nbucket: route4_set_parms recomputes the handle from TCA_ROUTE4_TO/\nFROM/IIF, and the handle-mismatch check is gated on the 'new' flag, so\nfor an existing filter the new handle may differ from the old one and\nland in a different bucket. When this happens, the filter is unlinked\nfrom the old bucket, but the bucket itself is never freed once it goes\nempty. The stale empty bucket remains in head->table[], causing\nroute4_delete to report *last=false even after the last live filter is\ngone. That pins the empty tcf_proto and causes a leak.\n\nFix this by refcounting the filters linked to a bucket and freeing the\nbucket when the count drops to zero. The existing scan in route4_delete\ngoes away with it.\n\nThe count is updated at all sites that link or unlink a filter during add,\nchange and delete, and the bucket is dropped from head->table[] as soon as\nit reaches zero.\n\nConditions to recreate the bug:\n  CONFIG_NET_CLS_ROUTE4=y, CONFIG_NET_SCH_INGRESS=y, CONFIG_NET_CLS_ACT=y.\n\n  tc qdisc replace dev lo clsact\n  tc filter add dev lo ingress protocol ip pref 100 route from 1 to 1\n  tc filter change dev lo ingress protocol ip pref 100 handle 0x10001 \\\n    route from 1 to 2\n  tc filter del dev lo ingress protocol ip pref 100 handle 0x10002 \\\n    route from 1 to 2\n  tc filter show dev lo ingress | grep -c 'pref 100 route chain 0 '","categories":["Operating systems"],"product":"Linux","vendor":"Linux","ecosystem":null,"affected_ranges":[{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-97959","source_modified_at":"2026-10-19T09:11:25.255Z","fetched_at":"2026-10-23T18:45:31.882637Z","product":"Linux","vendor":"Linux","versions":[{"version":"1e052be69d045c8d0f82ff1116fd3e5a79661745","lessThan":"9e7741b41a25b9d49df4d262fa314342e6f95c50","status":"affected","versionType":"git"},{"version":"1e052be69d045c8d0f82ff1116fd3e5a79661745","lessThan":"48d38bf8c22a05fde07ba1f885cde27b851649a2","status":"affected","versionType":"git"},{"version":"1e052be69d045c8d0f82ff1116fd3e5a79661745","lessThan":"cc99d26b12431e4e4d0e346ec32764eb42c0aed9","status":"affected","versionType":"git"},{"version":"1e052be69d045c8d0f82ff1116fd3e5a79661745","lessThan":"41e94079200aaf0cdbe4594b0af75710b33da124","status":"affected","versionType":"git"},{"version":"1e052be69d045c8d0f82ff1116fd3e5a79661745","lessThan":"2e2f130951d34871b0643bf700164d97cff4b427","status":"affected","versionType":"git"},{"version":"1e052be69d045c8d0f82ff1116fd3e5a79661745","lessThan":"f8495d67434e1cb7e511297687ca55fdb28e4c20","status":"affected","versionType":"git"},{"version":"1e052be69d045c8d0f82ff1116fd3e5a79661745","lessThan":"81dd117c04422c6d0c7974aba9fa6a0ba370959b","status":"affected","versionType":"git"},{"version":"1e052be69d045c8d0f82ff1116fd3e5a79661745","lessThan":"1853f30cf5c84971f99788a76207c6f745380896","status":"affected","versionType":"git"}],"defaultStatus":"unaffected"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-97959","source_modified_at":"2026-10-19T09:11:25.255Z","fetched_at":"2026-10-23T18:45:31.882637Z","product":"Linux","vendor":"Linux","versions":[{"version":"4.1","status":"affected"},{"version":"0","lessThan":"4.1","status":"unaffected","versionType":"semver"},{"version":"5.10.271","lessThanOrEqual":"5.10.*","status":"unaffected","versionType":"semver"},{"version":"5.15.222","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.189","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.158","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.12.111","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.18.53","lessThanOrEqual":"6.18.*","status":"unaffected","versionType":"semver"},{"version":"7.2.7","lessThanOrEqual":"7.2.*","status":"unaffected","versionType":"semver"},{"version":"7.3","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}],"defaultStatus":"affected"}],"fixed_versions":[{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-97959","source_modified_at":"2026-10-19T09:11:25.255Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"Linux","ecosystem":null},"version":"9e7741b41a25b9d49df4d262fa314342e6f95c50","basis":"first unaffected version stated in the CVE record"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-97959","source_modified_at":"2026-10-19T09:11:25.255Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"Linux","ecosystem":null},"version":"48d38bf8c22a05fde07ba1f885cde27b851649a2","basis":"first unaffected version stated in the CVE record"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-97959","source_modified_at":"2026-10-19T09:11:25.255Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"Linux","ecosystem":null},"version":"41e94079200aaf0cdbe4594b0af75710b33da124","basis":"first unaffected version stated in the CVE record"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-97959","source_modified_at":"2026-10-19T09:11:25.255Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"Linux","ecosystem":null},"version":"2e2f130951d34871b0643bf700164d97cff4b427","basis":"first unaffected version stated in the CVE record"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-97959","source_modified_at":"2026-10-19T09:11:25.255Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"Linux","ecosystem":null},"version":"81dd117c04422c6d0c7974aba9fa6a0ba370959b","basis":"first unaffected version stated in the CVE record"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-97959","source_modified_at":"2026-10-19T09:11:25.255Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"Linux","ecosystem":null},"version":"1853f30cf5c84971f99788a76207c6f745380896","basis":"first unaffected version stated in the CVE record"}],"cvss":null,"severity":null,"kev":{"listed":false},"epss":{"probability":0.00176,"percentile":0.06843,"score_date":"2026-10-23"},"published_at":"2026-09-25T10:23:04.348Z","modified_at":"2026-10-19T09:11:25.255Z","provenance":[{"source":"CVE List","url":"https://www.cve.org/CVERecord?id=CVE-2026-97959","fetched_at":"2026-10-23T18:45:31.882637Z","source_modified_at":"2026-10-19T09:11:25.255Z"},{"source":"EPSS","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-97959","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-23"}],"sources":["CVE List","EPSS"],"references":[{"source":"CVE List","url":"https://git.kernel.org/stable/c/9e7741b41a25b9d49df4d262fa314342e6f95c50"},{"source":"CVE List","url":"https://git.kernel.org/stable/c/48d38bf8c22a05fde07ba1f885cde27b851649a2"},{"source":"CVE List","url":"https://git.kernel.org/stable/c/cc99d26b12431e4e4d0e346ec32764eb42c0aed9"},{"source":"CVE List","url":"https://git.kernel.org/stable/c/41e94079200aaf0cdbe4594b0af75710b33da124"},{"source":"CVE List","url":"https://git.kernel.org/stable/c/2e2f130951d34871b0643bf700164d97cff4b427"},{"source":"CVE List","url":"https://git.kernel.org/stable/c/f8495d67434e1cb7e511297687ca55fdb28e4c20"},{"source":"CVE List","url":"https://git.kernel.org/stable/c/81dd117c04422c6d0c7974aba9fa6a0ba370959b"},{"source":"CVE List","url":"https://git.kernel.org/stable/c/1853f30cf5c84971f99788a76207c6f745380896"}],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"cve_state":"PUBLISHED","classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":"product","confidence":"heuristic","reviewed":false},"change_timestamp":"2026-10-19T09:11:25.255Z","content_hash":"fa7b37552ceeda871402cc4ad59d938dc85be1b7ac88d17af2d2b24f2dfad01f"}}
