{"id":"CVE-2026-98616","kind":"vulnerability","aliases":["CVE-2026-98616"],"related":[],"title":"Linux kernel fbnic driver: NULL pointer crash after failed PCIe recovery or resume","description":"In the Linux kernel, the following vulnerability has been resolved:\n\neth: fbnic: reset num_napi when the napi vectors are freed\n\nfbn->num_napi is the count of live napi vectors, each of which owns an\nIRQ.  The PM path had freed them without clearing the count.\nfbnic_pm_suspend() tears the datapath down via ndo_stop() and frees the\nIRQs, but leaves netif_running() true so resume knows to re-open.  Resume\nrebuilds the datapath in __fbnic_pm_resume() and fbnic_reset_queues() sets\nnum_napi and __fbnic_open() re-allocates the vectors.\n\nWhen the datapath is torn down but never rebuilt, num_napi is left\npointing at freed vectors under 2 different scenarios:\n - a PCIe error recovery that fails (fbnic_err_slot_reset() ->\n   __fbnic_pm_resume() returns an error -> PCI_ERS_RESULT_DISCONNECT), so\n   .resume never runs; or\n - an __fbnic_open() that fails partway on resume and unwinds, freeing\n   the vectors after fbnic_reset_queues() has already set num_napi.\n\nThe netdev is then running with num_napi > 0 but napi[] freed, and the\neventual remove/unbind close re-enters fbnic_down() -> fbnic_dbg_down()\nand dereferences the freed vectors:\n  BUG: kernel NULL pointer dereference, address: 0000000000000210\n  RIP: fbnic_dbg_down+0x28\n\nClear num_napi when the vectors are freed: in the suspend teardown (a\ngood resume re-establishes it before __fbnic_open()) and on the resume\nopen failure.  A redundant ndo_stop() then walks an empty napi[].  The\nnormal ndo_stop() down/up cycle is untouched and keeps num_napi for the\nnext ndo_open().","summary":"The fbnic network driver in the Linux kernel keeps a count of napi vectors after freeing them during suspend or a failed resume, so a later close dereferences freed memory. The sources describe a kernel NULL pointer dereference in fbnic_dbg_down, which crashes the machine rather than granting an attacker access.","severity":"unknown","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["fbnic","linux-kernel","package","servers"],"not_affected_if":["no-fbnic-hardware"],"how_to_check":"- Run `uname -r` and check whether the kernel includes the fbnic num_napi fix in its stable release notes\n- Run `lspci -k | grep -A3 -i fbnic` to see if the fbnic driver is bound to a device","fix":"- Update the Linux kernel to a release that includes the upstream fbnic fix (the sources do not name a version: unknown)\n- Reboot after updating so the patched module loads","status":"open","published_at":"2026-10-18T16:17:14+00:00","first_seen_at":"2026-10-23T21:57:16+00:00","triaged_at":"2026-10-25T05:21:20+00:00","updated_at":"2026-10-25T05:21:20+00:00","category":"package","confidence":0.5,"triage":{"at":"2026-10-25T05:21:20Z","model":"claude-haiku-5-5","output":{"fix":"- Update the Linux kernel to a release that includes the upstream fbnic fix (the sources do not name a version: unknown)\n- Reboot after updating so the patched module loads","reach":"local","title":"Linux kernel fbnic driver: NULL pointer crash after failed PCIe recovery or resume","impact":"low","summary":"The fbnic network driver in the Linux kernel keeps a count of napi vectors after freeing them during suspend or a failed resume, so a later close dereferences freed memory. The sources describe a kernel NULL pointer dereference in fbnic_dbg_down, which crashes the machine rather than granting an attacker access.","category":"package","nicknames":[],"who_cares":["linux-kernel","fbnic","servers"],"confidence":0.5,"needs_auth":"no","worst_case":"kernel crash on NIC teardown after failed recovery","analyst_note":"Confirm affected and fixed kernel version ranges from the NVD entry and the upstream stable commit; sources give no CVSS or version data.","how_to_check":"- Run `uname -r` and check whether the kernel includes the fbnic num_napi fix in its stable release notes\n- Run `lspci -k | grep -A3 -i fbnic` to see if the fbnic driver is bound to a device","needs_analyst":true,"not_affected_if":["no-fbnic-hardware"],"who_is_affected":"Only hosts that use a Meta fbnic network adapter with this driver loaded, and only when a PCIe error recovery or a resume open fails. Systems without fbnic hardware can skip it. The sources do not name a version range.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000682,"input_tokens":3858,"output_tokens":592,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'+0':283C '-2026':15A,18A '-98616':16A,19A '0':250C '0000000000000210':278C '2':192C 'access':77B 'address':277C 'alloc':171C 'alreadi':238C 'attack':76B 'bug':272C 'clear':122C,285C 'close':52B,258C 'count':36B,104C,124C 'crash':7A,69B 'cve':14A,17A 'cycl':327C 'datapath':130C,154C,176C 'dbg':66B,265C,281C 'derefer':53B,63B,268C,276C 'describ':58B 'differ':193C 'disconnect':214C 'down/up':326C 'driver':4A,29B 'empti':320C 'enter':261C 'er':212C 'err':202C 'error':197C,210C 'establish':302C 'eth':88C 'eventu':256C 'fail':9A,47B,200C,224C 'failur':312C 'fbn':99C 'fbnic':3A,20B,27B,65B,89C,125C,156C,160C,167C,201C,205C,221C,234C,262C,264C,280C,305C 'follow':83C 'free':41B,136C,230C 'freed':54B,98C,119C,189C,253C,270C,292C 'good':298C 'grant':74B 'irq':114C,138C 'keep':34B,331C 'kernel':2A,23B,33B,60B,81C,273C 'know':146C 'later':51B 'leav':140C 'left':186C 'linux':1A,22B,32B,80C 'linux-kernel':21B 'live':106C 'machin':71B 'memori':55B 'napi':38B,92C,95C,101C,107C,165C,184C,241C,249C,252C,287C,321C,333C 'ndo':133C,315C,324C,337C 'netdev':243C 'netif':141C 'network':28B 'never':181C,217C 'next':336C 'normal':323C 'null':5A,61B,274C 'num':91C,100C,164C,183C,240C,248C,286C,332C 'open':150C,168C,222C,306C,311C,338C 'own':112C 'packag':24B 'partway':225C 'path':117C 'pci':211C 'pcie':10A,196C 'pm':116C,126C,157C,206C 'point':187C 'pointer':6A,62B,275C 'queue':162C,236C 'rather':72B 're':149C,170C,260C,301C 're-alloc':169C 're-ent':259C 're-establish':300C 're-open':148C 'rebuild':152C 'rebuilt':182C 'recoveri':11A,198C 'redund':314C 'remove/unbind':257C 'reset':90C,161C,204C,235C 'resolv':87C 'result':213C 'resum':13A,48B,145C,151C,158C,207C,216C,227C,299C,310C 'return':208C 'rip':279C 'run':142C,218C,246C 'scenario':194C 'server':25B 'set':163C,239C 'slot':203C 'sourc':57B 'stop':134C,316C,325C 'suspend':44B,127C,295C 'tear':128C 'teardown':296C 'torn':178C 'true':143C 'untouch':329C 'unwind':229C 'vector':39B,96C,108C,173C,190C,232C,271C,290C 'via':132C 'vulner':84C 'walk':318C 'without':121C 'x28':284C","nicknames":[],"mitigations":[],"who_affected":"Only hosts that use a Meta fbnic network adapter with this driver loaded, and only when a PCIe error recovery or a resume open fails. Systems without fbnic hardware can skip it. The sources do not name a version range.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-18T16:17:14+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-98616","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-98616","severity":null,"published_at":"2026-10-18T16:17:14+00:00","modified_at":"2026-10-19T10:19:25+00:00","first_seen_at":"2026-10-23T21:57:16+00:00","fetched_at":"2026-10-23T22:28:56+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"}