{"attribution":"This product uses data from the NVD API but is not endorsed or certified by the NVD.","cve":{"id":"CVE-2026-98150","sourceIdentifier":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","published":"2026-09-25T11:17:46.580","lastModified":"2026-10-21T20:24:26.410","vulnStatus":"Analyzed","cveTags":[],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Fix BPF_F_CPU validation for sparse CPU IDs\n\nBPF_F_CPU stores the target CPU ID in the upper 32 bits of the map\noperation flags. bpf_map_check_op_flags() currently compares that ID\nwith num_possible_cpus(), which is the number of possible CPUs rather\nthan a bound on CPU IDs.\n\nOn an arm64 QEMU guest with a CPU device-tree hole, the possible CPU\nmask was 0,2-3. A userspace program using raw bpf() syscalls creates\na BPF_MAP_TYPE_PERCPU_ARRAY and performs update and lookup operations\nfor each CPU by setting BPF_F_CPU and the CPU ID in the flags.\n\nWith the old check, CPU 1 is incorrectly accepted while valid CPU 3 is\nrejected with -ERANGE. The CPU 1 update then reaches the per-CPU map\naccess path and triggers:\n\n  Unable to handle kernel paging request at virtual address ...\n  pc : __pi_memcpy_generic+0x5c/0x22c\n  lr : bpf_percpu_array_update+0x2dc/0x2e8\n  Call trace:\n    __pi_memcpy_generic\n    bpf_map_update_value\n    map_update_elem\n    __sys_bpf\n\nCheck the CPU ID against nr_cpu_ids and cpu_possible() instead. This\nrejects CPU IDs outside the valid range and CPUs absent from the\npossible mask, while allowing valid sparse CPU IDs."}],"affected":[{"source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","affectedData":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","programFiles":["include/linux/bpf.h"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","versions":[{"version":"2b421662c7887a0649fe409155a1f101562d0fa9","lessThan":"bdc5941f6eeef90b76a07fd8ca38ac1933ba2195","versionType":"git","status":"affected"},{"version":"2b421662c7887a0649fe409155a1f101562d0fa9","lessThan":"ed54bf564ac52699cf4def3d0c2125d493e756f9","versionType":"git","status":"affected"}]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","programFiles":["include/linux/bpf.h"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","versions":[{"version":"7.0","status":"affected"},{"version":"0","lessThan":"7.0","versionType":"semver","status":"unaffected"},{"version":"7.2.7","lessThanOrEqual":"7.2.*","versionType":"semver","status":"unaffected"},{"version":"7.3","lessThanOrEqual":"*","versionType":"original_commit_for_fix","status":"unaffected"}]}]}],"metrics":{"cvssMetricV31":[{"source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.0,"baseSeverity":"HIGH","attackVector":"LOCAL","attackComplexity":"HIGH","privilegesRequired":"LOW","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"},"exploitabilityScore":1.0,"impactScore":5.9}]},"weaknesses":[{"source":"nvd@nist.gov","type":"Primary","description":[{"lang":"en","value":"NVD-CWE-noinfo"}]}],"configurations":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"7.0","versionEndExcluding":"7.2.7","matchCriteriaId":"DB28EE51-99BD-418E-A2D4-11E0565C193D"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:7.3:rc1:*:*:*:*:*:*","matchCriteriaId":"11E35E1B-5DB4-4AB9-9706-CD73B799EADF"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/bdc5941f6eeef90b76a07fd8ca38ac1933ba2195","source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":["Patch"]},{"url":"https://git.kernel.org/stable/c/ed54bf564ac52699cf4def3d0c2125d493e756f9","source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":["Patch"]}]}}