{"id":"CVE-2022-48976","summary":"netfilter: flowtable_offload: fix using __this_cpu_add in preemptible","details":"In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: flowtable_offload: fix using __this_cpu_add in preemptible\n\nflow_offload_queue_work() can be called in workqueue without\nbh disabled, like the call trace showed in my act_ct testing,\ncalling NF_FLOW_TABLE_STAT_INC() there would cause a call\ntrace:\n\n  BUG: using __this_cpu_add() in preemptible [00000000] code: kworker/u4:0/138560\n  caller is flow_offload_queue_work+0xec/0x1b0 [nf_flow_table]\n  Workqueue: act_ct_workqueue tcf_ct_flow_table_cleanup_work [act_ct]\n  Call Trace:\n   \u003cTASK\u003e\n   dump_stack_lvl+0x33/0x46\n   check_preemption_disabled+0xc3/0xf0\n   flow_offload_queue_work+0xec/0x1b0 [nf_flow_table]\n   nf_flow_table_iterate+0x138/0x170 [nf_flow_table]\n   nf_flow_table_free+0x140/0x1a0 [nf_flow_table]\n   tcf_ct_flow_table_cleanup_work+0x2f/0x2b0 [act_ct]\n   process_one_work+0x6a3/0x1030\n   worker_thread+0x8a/0xdf0\n\nThis patch fixes it by using NF_FLOW_TABLE_STAT_INC_ATOMIC()\ninstead in flow_offload_queue_work().\n\nNote that for FLOW_CLS_REPLACE branch in flow_offload_queue_work(),\nit may not be called in preemptible path, but it's good to use\nNF_FLOW_TABLE_STAT_INC_ATOMIC() for all cases in\nflow_offload_queue_work().","modified":"2026-04-02T08:27:12.269446Z","published":"2024-10-21T20:05:55.739Z","database_specific":{"cna_assigner":"Linux","osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/48xxx/CVE-2022-48976.json"},"references":[{"type":"WEB","url":"https://git.kernel.org/stable/c/a220a11fda012fba506b35929672374c2723ae6d"},{"type":"WEB","url":"https://git.kernel.org/stable/c/a81047154e7ce4eb8769d5d21adcbc9693542a79"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/48xxx/CVE-2022-48976.json"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2022-48976"},{"type":"PACKAGE","url":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","events":[{"introduced":"b038177636f83bbf87c2b238706474145dd2cd04"},{"fixed":"a220a11fda012fba506b35929672374c2723ae6d"},{"fixed":"a81047154e7ce4eb8769d5d21adcbc9693542a79"}]},{"type":"GIT","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","events":[{"introduced":"0"},{"last_affected":"5345d78ae64d5a760c211cd2da995dc71c5b29e4"}]}],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2022-48976.json"}}],"schema_version":"1.7.5"}