{"id":"CVE-2026-98911","kind":"vulnerability","aliases":["CVE-2026-98911"],"related":[],"title":"Linux kernel: dpaa2-switch error path frees wrong buffer type on receive","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ndpaa2-switch: fix the error path in dpaa2_switch_rx()\n\nIn case of an error in dpaa2_switch_rx(), the dpaa2_switch_free_fd()\nfunction is called in order to free the FD. This is incorrect since the\ndpaa2_switch_free_fd() is intended to be used on Tx frame descriptors,\nmeaning that it expects in the software annotation area of the FD data\nto find a valid skb pointer on which to call dev_kfree_skb().\n\nFix this by extracting the dma_unmap_page() from\ndpaa2_switch_build_linear_skb() directly into the dpaa2_switch_rx()\nfunction. This allows us to directly use free_pages() in case of an\nerror before an SKB was created and kfree_skb() afterwards.","summary":"In the Linux kernel's dpaa2-switch driver, an error during frame receive calls a free routine meant for transmit descriptors, freeing memory incorrectly. The sources do not describe a confirmed attacker outcome beyond memory handling being wrong on an error path.","severity":"unknown","cvss":null,"epss":0.00215,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["embedded","linux-kernel","nxp-dpaa2","runtime"],"not_affected_if":["driver-not-loaded","no-dpaa2-hardware"],"how_to_check":"- Check the running kernel version with `uname -r` and compare it against the fixed kernel release in the NVD entry.\n- Check whether the dpaa2-switch driver is loaded with `lsmod | grep dpaa2_switch`.","fix":"- Update the Linux kernel to a release that includes the upstream fix for dpaa2-switch dpaa2_switch_rx(); the fixed version is unknown from the sources.","status":"open","published_at":"2026-10-23T12:18:25+00:00","first_seen_at":"2026-10-23T21:57:33+00:00","triaged_at":"2026-10-25T04:58:31+00:00","updated_at":"2026-10-25T12:38:50+00:00","category":"runtime","confidence":0.5,"triage":{"at":"2026-10-25T04:58:31Z","model":"claude-haiku-5-5","output":{"fix":"- Update the Linux kernel to a release that includes the upstream fix for dpaa2-switch dpaa2_switch_rx(); the fixed version is unknown from the sources.","reach":"unknown","title":"Linux kernel: dpaa2-switch error path frees wrong buffer type on receive","impact":"medium","summary":"In the Linux kernel's dpaa2-switch driver, an error during frame receive calls a free routine meant for transmit descriptors, freeing memory incorrectly. The sources do not describe a confirmed attacker outcome beyond memory handling being wrong on an error path.","category":"runtime","nicknames":[],"who_cares":["linux-kernel","nxp-dpaa2","embedded"],"confidence":0.5,"needs_auth":"unknown","worst_case":"unknown; memory corruption on an error path in kernel code","analyst_note":"Check the NVD entry and the kernel stable commit for the fixed version and the real trigger conditions.","how_to_check":"- Check the running kernel version with `uname -r` and compare it against the fixed kernel release in the NVD entry.\n- Check whether the dpaa2-switch driver is loaded with `lsmod | grep dpaa2_switch`.","needs_analyst":true,"not_affected_if":["no-dpaa2-hardware","driver-not-loaded"],"who_is_affected":"Only systems that load the dpaa2-switch driver, which is used on NXP DPAA2 hardware with switch functionality, are relevant. Systems without that hardware or driver can skip it. The sources do not describe a remote trigger.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000642,"input_tokens":3488,"output_tokens":586,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':15A,18A '-98911':16A,19A 'afterward':201C 'allow':181C 'annot':140C 'area':141C 'attack':60B 'beyond':62B 'buffer':10A 'build':170C 'call':42B,108C,155C 'case':93C,189C 'confirm':59B 'creat':197C 'cve':14A,17A 'data':145C 'describ':57B 'descriptor':49B,132C 'dev':156C 'direct':173C,184C 'dma':164C 'dpaa2':4A,26B,34B,82C,89C,98C,102C,120C,168C,176C 'dpaa2-switch':3A,33B,81C 'driver':36B 'embed':20B 'error':6A,38B,69B,86C,96C,192C 'expect':136C 'extract':162C 'fd':105C,114C,123C,144C 'find':147C 'fix':84C,159C 'follow':76C 'frame':40B,131C 'free':8A,44B,50B,104C,112C,122C,186C 'function':106C,179C 'handl':64B 'incorrect':52B,117C 'intend':125C 'kernel':2A,23B,31B,74C 'kfree':157C,199C 'linear':171C 'linux':1A,22B,30B,73C 'linux-kernel':21B 'mean':133C 'meant':46B 'memori':51B,63B 'nxp':25B 'nxp-dpaa2':24B 'order':110C 'outcom':61B 'page':166C,187C 'path':7A,70B,87C 'pointer':151C 'receiv':13A,41B 'resolv':80C 'routin':45B 'runtim':27B 'rx':91C,100C,178C 'sinc':118C 'skb':150C,158C,172C,195C,200C 'softwar':139C 'sourc':54B 'switch':5A,35B,83C,90C,99C,103C,121C,169C,177C 'transmit':48B 'tx':130C 'type':11A 'unmap':165C 'us':182C 'use':128C,185C 'valid':149C 'vulner':77C 'wrong':9A,66B","nicknames":[],"mitigations":[],"who_affected":"Only systems that load the dpaa2-switch driver, which is used on NXP DPAA2 hardware with switch functionality, are relevant. Systems without that hardware or driver can skip it. The sources do not describe a remote trigger.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-23T12:18:25+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-98911","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-98911","severity":null,"published_at":"2026-10-23T12:18:25+00:00","modified_at":"2026-10-23T12:18:25+00:00","first_seen_at":"2026-10-23T21:57:33+00:00","fetched_at":"2026-10-23T22:29:03+00:00","note":null},{"source":"epss","external_id":"CVE-2026-98911","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-98911","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-25T12:38:50+00:00","fetched_at":"2026-10-25T12:38:50+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}