{"id":"CVE-2026-98745","kind":"vulnerability","aliases":["CVE-2026-98745"],"related":[],"title":"Linux arm64 kernel: crafted signal frame can panic SME-only systems","description":"In the Linux kernel, the following vulnerability has been resolved:\n\narm64/fpsimd: signal: Forbid non-streaming SVE payload on SME-only systems\n\nWhen system_supports_sme() is true but system_supports_sve() is false,\nrestoring a specifically crafted SVE signal context can result in the\ntask erroneously having non-streaming SVE state. Subsequent attempts to\nmanipulate the task's FPSIMD/SVE/SME state can result in a variety of\nproblems, including fatal EL1 UNDEFs.\n\nIn such configurations, the kernel always creates an SVE signal context\nwhen delivering a signal, and this can only be in one of two states:\n\n(1) SVE_SIG_FLAG_SM is set, and an SVE payload is present containing\n    streaming mode SVE state. The recorded VL is the task's live\n    streaming VL.\n\n(2) SVE_SIG_FLAG_SM is clear, and an SVE payload is not present. The\n    FPSIMD context contains the non-streaming mode FPSIMD state. The\n    recorded VL is 0.\n\nCurrently restore_sve_fpsimd_context() correctly rejects cases where\nSVE_SIG_FLAG_SM is set and an SVE payload is not present, but fails to\nreject cases where SVE_SIG_FLAG_SM is clear and an SVE payload is\npresent. Consequently, restore_sve_fpsimd_context() can place the task\nin a state where it has non-streaming SVE state even when this is not\nsupported by HW.\n\nFor example, this can cause a later EL1 UNDEF when the kernel attempts to\nrestore the task's ZCR_EL1 value:\n\n| # ./sme-sigcontext-to-sve\n| Internal error: Oops - Undefined instruction: 0000000002000000 [#1]  SMP\n| Modules linked in:\n| CPU: 0 UID: 0 PID: 131 Comm: sme-sigcontext- Not tainted 7.3.0-rc1 #1 PREEMPT\n| Hardware name: linux,dummy-virt (DT)\n| pstate: 61402009 (nZCv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--)\n| pc : fpsimd_restore_current_state+0x258/0x458\n| lr : exit_to_user_mode_loop+0xb8/0x188\n| sp : ffff80008056be40\n| x29: ffff80008056be40 x28: fff00000c1670000 x27: 0000000000000000\n| x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000000000\n| x23: ffff80008056bec0 x22: 0000000000000008 x21: 0000000000000040\n| x20: 0000000000000081 x19: 0000000008800010 x18: 0000000000000000\n| x17: 0000fffffd412570 x16: 0000000000001000 x15: 0000fffffd4123b0\n| x14: 0000fffffd412780 x13: 0000fffffd412be8 x12: 0000000047435300\n| x11: 0000fffffd412570 x10: 0000000000000000 x9 : 0000000045585401\n| x8 : fff00000c18a6c44 x7 : 0000000000000000 x6 : 0000000000000002\n| x5 : 0000000000000002 x4 : ffff800080568000 x3 : 0000000000000001\n| x2 : 0000000008800010 x1 : fff00000c1670000 x0 : 0000000008800000\n| Call trace:\n|  fpsimd_restore_current_state+0x258/0x458 (P)\n|  exit_to_user_mode_loop+0xb8/0x188\n|  el0_svc+0x1cc/0x1d0\n|  el0t_64_sync_handler+0xa0/0xe4\n|  el0t_64_sync+0x198/0x19c\n| Code: d5384101 f9400020 53175c03 36b80de0 (d5381202)\n| ---[ end trace 0000000000000000 ]---\n| Kernel panic - not syncing: Oops - Undefined instruction: Fatal exception in interrupt\n| Kernel Offset: 0x291fb1000000 from 0xffff800080000000\n| PHYS_OFFSET: 0x40000000\n| CPU features: 0x0,00000000,0052802f,ffb88f43,3afcf73f\n| Memory Limit: none\n\nRework restore_sve_fpsimd_context() to reject cases where\nSVE_SIG_FLAG_SM is clear and an SVE payload is not present. As\nparse_user_sigframe() rejects SVE signal frames when neither SVE nor SME\nare supported, it isn't necessary for restore_sve_fpsimd_context() to\nhandle the case where neither are supported.","summary":"On arm64 systems that support SME but not SVE, a crafted SVE signal context restored by the kernel can leave a task with non-streaming SVE state the hardware does not support. The result is a fatal undefined-instruction oops and kernel panic, as shown in the sources' trace.","severity":"low","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["arm64","infrastructure","kernel","linux"],"not_affected_if":["sve-capable-arm64","x86-64"],"how_to_check":"- unknown","fix":"- Update to a Linux kernel release that contains the upstream arm64/fpsimd signal fix (the sources do not name the version)","status":"open","published_at":"2026-10-18T16:17:28+00:00","first_seen_at":"2026-10-23T21:57:16+00:00","triaged_at":"2026-10-25T05:17:00+00:00","updated_at":"2026-10-25T05:17:00+00:00","category":"infrastructure","confidence":0.6,"triage":{"at":"2026-10-25T05:17:00Z","model":"claude-haiku-5-5","output":{"fix":"- Update to a Linux kernel release that contains the upstream arm64/fpsimd signal fix (the sources do not name the version)","reach":"local","title":"Linux arm64 kernel: crafted signal frame can panic SME-only systems","impact":"low","summary":"On arm64 systems that support SME but not SVE, a crafted SVE signal context restored by the kernel can leave a task with non-streaming SVE state the hardware does not support. The result is a fatal undefined-instruction oops and kernel panic, as shown in the sources' trace.","category":"infrastructure","nicknames":[],"who_cares":["linux","arm64","kernel"],"confidence":0.6,"needs_auth":"unknown","worst_case":"Kernel panic, denial of service on affected arm64 hosts","analyst_note":"Confirm the fixed kernel versions and whether a local unprivileged process can trigger the crash, using the NVD entry and the upstream kernel commit.","how_to_check":"- unknown","needs_analyst":true,"not_affected_if":["x86-64","sve-capable-arm64"],"who_is_affected":"Only arm64 machines whose CPU supports SME but not SVE, running a kernel without this fix, are described as affected. Systems on x86, or arm64 CPUs with SVE, are not described in the sources as affected. Who can trigger it is unknown from the sources.","user_interaction":"unknown","needs_special_setup":"yes","severity_if_unknown":"low"},"cost_usd":0.000737,"input_tokens":4820,"output_tokens":510,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'+0':370C,378C,448C,456C,460C,466C,471C '-2026':14A,17A '-98745':15A,18A '/sme-sigcontext-to-sve':320C '0':230C,333C,335C '00000000':504C '0000000000000000':387C,389C,391C,393C,405C,421C,427C,481C '0000000000000001':435C '0000000000000002':429C,431C '0000000000000008':397C '0000000000000040':399C '0000000000000081':401C '0000000000001000':409C '0000000002000000':326C '0000000008800000':441C '0000000008800010':403C,437C '0000000045585401':423C '0000000047435300':417C '0000fffffd4123b0':411C '0000fffffd412570':407C,419C '0000fffffd412780':413C '0000fffffd412be8':415C '0052802f':505C '0x0':503C '0x291fb1000000':495C '0x40000000':500C '0xffff800080000000':497C '1':173C,327C,346C '131':337C '2':201C '36b80de0':477C '3afcf73f':507C '53175c03':476C '61402009':356C '64':463C,469C '7.3.0':344C 'alway':153C 'arm64':2A,19B,24B 'arm64/fpsimd':84C 'attempt':129C,311C 'btype':364C 'call':442C 'case':238C,257C,518C,560C 'caus':303C 'clear':207C,264C,525C 'code':473C 'comm':338C 'configur':150C 'consequ':271C 'contain':186C,218C 'context':36B,115C,158C,217C,235C,275C,515C,556C 'correct':236C 'cpu':332C,501C 'craft':4A,33B,112C 'creat':154C 'current':231C,368C,446C 'cve':13A,16A 'd5381202':478C 'd5384101':474C 'daif':358C 'deliv':160C 'dit':362C 'dt':354C 'dummi':352C 'dummy-virt':351C 'el0':458C 'el0t':462C,468C 'el1':146C,306C,318C 'end':479C 'erron':121C 'error':322C 'even':291C 'exampl':300C 'except':490C 'exit':373C,451C 'f9400020':475C 'fail':254C 'fals':108C 'fatal':60B,145C,489C 'featur':502C 'ffb88f43':506C 'fff00000c1670000':385C,439C 'fff00000c18a6c44':425C 'ffff800080568000':433C 'ffff80008056be40':381C,383C 'ffff80008056bec0':395C 'flag':176C,204C,242C,261C,522C 'follow':79C 'forbid':86C 'fpsimd':216C,224C,234C,274C,366C,444C,514C,555C 'fpsimd/sve/sme':135C 'frame':6A,540C 'handl':558C 'handler':465C 'hardwar':52B,348C 'hw':298C 'includ':144C 'infrastructur':20B 'instruct':63B,325C,488C 'intern':321C 'interrupt':492C 'isn':549C 'kernel':3A,21B,40B,66B,77C,152C,310C,482C,493C 'later':305C 'leav':42B 'limit':509C 'link':330C 'linux':1A,22B,76C,350C 'live':198C 'loop':377C,455C 'lr':372C 'manipul':131C 'memori':508C 'mode':188C,223C,376C,454C 'modul':329C 'name':349C 'necessari':551C 'neither':542C,562C 'non':47B,88C,124C,221C,287C 'non-stream':46B,87C,123C,220C,286C 'none':510C 'nzcv':357C 'offset':494C,499C 'one':169C 'oop':64B,323C,486C 'p':450C 'pan':359C 'panic':8A,67B,483C 'pars':534C 'payload':91C,183C,211C,249C,268C,529C 'pc':365C 'phys':498C 'pid':336C 'place':277C 'preempt':347C 'present':185C,214C,252C,270C,532C 'problem':143C 'pstate':355C 'rc1':345C 'record':192C,227C 'reject':237C,256C,517C,537C 'resolv':83C 'restor':37B,109C,232C,272C,313C,367C,445C,512C,553C 'result':57B,117C,138C 'rework':511C 'set':179C,245C 'shown':69B 'sig':175C,203C,241C,260C,521C 'sigcontext':341C 'sigfram':536C 'signal':5A,35B,85C,114C,157C,162C,539C 'sm':177C,205C,243C,262C,523C 'sme':10A,28B,94C,100C,340C,545C 'sme-on':9A,93C 'sme-sigcontext':339C 'smp':328C 'sourc':72B 'sp':380C 'specif':111C 'ssbs':363C 'state':50B,127C,136C,172C,190C,225C,282C,290C,369C,447C 'stream':48B,89C,125C,187C,199C,222C,288C 'subsequ':128C 'support':27B,55B,99C,105C,296C,547C,564C 'svc':459C 'sve':31B,34B,49B,90C,106C,113C,126C,156C,174C,182C,189C,202C,210C,233C,240C,248C,259C,267C,273C,289C,513C,520C,528C,538C,543C,554C 'sync':464C,470C,485C 'system':12A,25B,96C,98C,104C 'taint':343C 'task':44B,120C,133C,196C,279C,315C 'tco':361C 'trace':73B,443C,480C 'true':102C 'two':171C 'uao':360C 'uid':334C 'undef':147C,307C 'undefin':62B,324C,487C 'undefined-instruct':61B 'user':375C,453C,535C 'valu':319C 'varieti':141C 'virt':353C 'vl':193C,200C,228C 'vulner':80C 'x0':440C 'x1':438C 'x10':420C 'x11':418C 'x12':416C 'x13':414C 'x14':412C 'x15':410C 'x16':408C 'x17':406C 'x18':404C 'x19':402C 'x198/0x19c':472C 'x1cc/0x1d0':461C 'x2':436C 'x20':400C 'x21':398C 'x22':396C 'x23':394C 'x24':392C 'x25':390C 'x258/0x458':371C,449C 'x26':388C 'x27':386C 'x28':384C 'x29':382C 'x3':434C 'x4':432C 'x5':430C 'x6':428C 'x7':426C 'x8':424C 'x9':422C 'xa0/0xe4':467C 'xb8/0x188':379C,457C 'zcr':317C","nicknames":[],"mitigations":[],"who_affected":"Only arm64 machines whose CPU supports SME but not SVE, running a kernel without this fix, are described as affected. Systems on x86, or arm64 CPUs with SVE, are not described in the sources as affected. Who can trigger it is unknown from the sources.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-18T16:17:28+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-98745","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-98745","severity":null,"published_at":"2026-10-18T16:17:28+00:00","modified_at":"2026-10-21T13:21:42+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"}