{"id":"CVE-2026-64084","state":"PUBLISHED","title":"hwmon: (pmbus/adm1266) cap PDIO scan in get_multiple at ADM1266_PDIO_NR","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nhwmon: (pmbus/adm1266) cap PDIO scan in get_multiple at ADM1266_PDIO_NR\n\nadm1266_gpio_get_multiple() iterates the PDIO portion of the\ncaller-supplied mask using\n\n\tfor_each_set_bit_from(gpio_nr, mask,\n\t\t\t      ADM1266_GPIO_NR + ADM1266_PDIO_STATUS) {\n\t\t...\n\t}\n\nwhere ADM1266_PDIO_STATUS is the PMBus command code (0xE9, i.e. 233),\nnot the number of PDIO pins.  The intended upper bound is\nADM1266_GPIO_NR + ADM1266_PDIO_NR = 25.\n\ngpiolib hands in a mask sized for gc.ngpio (= 25 bits on this chip),\nso the iteration walks find_next_bit() up to 242, reading up to 217\nextra bits (a handful of unsigned-long words: four on 64-bit, seven\non 32-bit) of whatever lives past the end of the mask in the\ncaller's stack.  Any incidental set bit in that range then drives a\nset_bit(gpio_nr, bits) call that writes past the end of the\ncaller-supplied bits array too -- both out-of-bounds.\n\nSubstitute ADM1266_PDIO_NR for the constant so the scan stops at the\nlast real PDIO bit.","publishedAt":"2026-07-19T15:39:55.417Z","updatedAt":"2026-08-05T12:39:02.926Z","severity":{"score":7.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"d98dfad35c38c037b37c4adc99df01da571031a5","status":"affected","lessThan":"d0593e15fdeb56048a72c5c6e720f702759d0ccd","versionType":"git"},{"version":"d98dfad35c38c037b37c4adc99df01da571031a5","status":"affected","lessThan":"17cee2f59029039416e8f6303050038eb59ba149","versionType":"git"},{"version":"d98dfad35c38c037b37c4adc99df01da571031a5","status":"affected","lessThan":"299efd14c2eda7e5fd40025e54addd4151a01081","versionType":"git"},{"version":"d98dfad35c38c037b37c4adc99df01da571031a5","status":"affected","lessThan":"4d1da9a6be5a8156c532d571c2ed237169f99244","versionType":"git"},{"version":"d98dfad35c38c037b37c4adc99df01da571031a5","status":"affected","lessThan":"b96c7f0bc0713dc6403912f6527d4ff9168d6fe6","versionType":"git"},{"version":"d98dfad35c38c037b37c4adc99df01da571031a5","status":"affected","lessThan":"fa7ca363069a70b0d1aa51e8892e3095fe2ac1ec","versionType":"git"},{"version":"d98dfad35c38c037b37c4adc99df01da571031a5","status":"affected","lessThan":"2aef8f08c479f4cbc83e1e6b19d1c94d4dd24f17","versionType":"git"},{"version":"d98dfad35c38c037b37c4adc99df01da571031a5","status":"affected","lessThan":"d7834d92251baade796812876e95555e2066fa9f","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/hwmon/pmbus/adm1266.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.10","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.10","versionType":"semver"},{"version":"5.10.258","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.209","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.175","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.142","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.92","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.34","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.0.11","status":"unaffected","lessThanOrEqual":"7.0.*","versionType":"semver"},{"version":"7.1","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/hwmon/pmbus/adm1266.c"]}],"references":["https://git.kernel.org/stable/c/d0593e15fdeb56048a72c5c6e720f702759d0ccd","https://git.kernel.org/stable/c/17cee2f59029039416e8f6303050038eb59ba149","https://git.kernel.org/stable/c/299efd14c2eda7e5fd40025e54addd4151a01081","https://git.kernel.org/stable/c/4d1da9a6be5a8156c532d571c2ed237169f99244","https://git.kernel.org/stable/c/b96c7f0bc0713dc6403912f6527d4ff9168d6fe6","https://git.kernel.org/stable/c/fa7ca363069a70b0d1aa51e8892e3095fe2ac1ec","https://git.kernel.org/stable/c/2aef8f08c479f4cbc83e1e6b19d1c94d4dd24f17","https://git.kernel.org/stable/c/d7834d92251baade796812876e95555e2066fa9f"],"weaknesses":[],"ingestedAt":"2026-10-29T20:12:41.951Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/64xxx/CVE-2026-64084.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-64084","state":"PUBLISHED","datePublished":"2026-07-19T15:39:55.417Z","dateUpdated":"2026-08-05T12:39:02.926Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-07-19T07:54:57.031Z"},"containers":{"cna":{"title":"hwmon: (pmbus/adm1266) cap PDIO scan in get_multiple at ADM1266_PDIO_NR","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nhwmon: (pmbus/adm1266) cap PDIO scan in get_multiple at ADM1266_PDIO_NR\n\nadm1266_gpio_get_multiple() iterates the PDIO portion of the\ncaller-supplied mask using\n\n\tfor_each_set_bit_from(gpio_nr, mask,\n\t\t\t      ADM1266_GPIO_NR + ADM1266_PDIO_STATUS) {\n\t\t...\n\t}\n\nwhere ADM1266_PDIO_STATUS is the PMBus command code (0xE9, i.e. 233),\nnot the number of PDIO pins.  The intended upper bound is\nADM1266_GPIO_NR + ADM1266_PDIO_NR = 25.\n\ngpiolib hands in a mask sized for gc.ngpio (= 25 bits on this chip),\nso the iteration walks find_next_bit() up to 242, reading up to 217\nextra bits (a handful of unsigned-long words: four on 64-bit, seven\non 32-bit) of whatever lives past the end of the mask in the\ncaller's stack.  Any incidental set bit in that range then drives a\nset_bit(gpio_nr, bits) call that writes past the end of the\ncaller-supplied bits array too -- both out-of-bounds.\n\nSubstitute ADM1266_PDIO_NR for the constant so the scan stops at the\nlast real PDIO bit."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"d98dfad35c38c037b37c4adc99df01da571031a5","status":"affected","lessThan":"d0593e15fdeb56048a72c5c6e720f702759d0ccd","versionType":"git"},{"version":"d98dfad35c38c037b37c4adc99df01da571031a5","status":"affected","lessThan":"17cee2f59029039416e8f6303050038eb59ba149","versionType":"git"},{"version":"d98dfad35c38c037b37c4adc99df01da571031a5","status":"affected","lessThan":"299efd14c2eda7e5fd40025e54addd4151a01081","versionType":"git"},{"version":"d98dfad35c38c037b37c4adc99df01da571031a5","status":"affected","lessThan":"4d1da9a6be5a8156c532d571c2ed237169f99244","versionType":"git"},{"version":"d98dfad35c38c037b37c4adc99df01da571031a5","status":"affected","lessThan":"b96c7f0bc0713dc6403912f6527d4ff9168d6fe6","versionType":"git"},{"version":"d98dfad35c38c037b37c4adc99df01da571031a5","status":"affected","lessThan":"fa7ca363069a70b0d1aa51e8892e3095fe2ac1ec","versionType":"git"},{"version":"d98dfad35c38c037b37c4adc99df01da571031a5","status":"affected","lessThan":"2aef8f08c479f4cbc83e1e6b19d1c94d4dd24f17","versionType":"git"},{"version":"d98dfad35c38c037b37c4adc99df01da571031a5","status":"affected","lessThan":"d7834d92251baade796812876e95555e2066fa9f","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/hwmon/pmbus/adm1266.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.10","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.10","versionType":"semver"},{"version":"5.10.258","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.209","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.175","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.142","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.92","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.34","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.0.11","status":"unaffected","lessThanOrEqual":"7.0.*","versionType":"semver"},{"version":"7.1","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/hwmon/pmbus/adm1266.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/d0593e15fdeb56048a72c5c6e720f702759d0ccd"},{"url":"https://git.kernel.org/stable/c/17cee2f59029039416e8f6303050038eb59ba149"},{"url":"https://git.kernel.org/stable/c/299efd14c2eda7e5fd40025e54addd4151a01081"},{"url":"https://git.kernel.org/stable/c/4d1da9a6be5a8156c532d571c2ed237169f99244"},{"url":"https://git.kernel.org/stable/c/b96c7f0bc0713dc6403912f6527d4ff9168d6fe6"},{"url":"https://git.kernel.org/stable/c/fa7ca363069a70b0d1aa51e8892e3095fe2ac1ec"},{"url":"https://git.kernel.org/stable/c/2aef8f08c479f4cbc83e1e6b19d1c94d4dd24f17"},{"url":"https://git.kernel.org/stable/c/d7834d92251baade796812876e95555e2066fa9f"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The bug is only reachable through the GPIO character-device ioctl path (gpiolib → adm1266_gpio_get_multiple), which requires local access to /dev/gpiochip* on a system with an ADM1266 present on I2C; it is not triggered by network packets or physical bus access.\nAC:L - Any caller who can request ADM1266 PDIO lines and issue a multi-line GET_VALUES ioctl reliably enters the flawed loop; no race or victim state beyond attacker-controlled ioctl parameters is required.\nPR:L - Exploitation requires only a local account that can open the GPIO char device and request lines (e.g. root, gpio group membership, or a BMC service account with device access), not full init-namespace CAP_SYS_ADMIN; this is plausible on embedded/BMC deployments where ADM1266 is used.\nUI:N - Once the attacker has GPIO char-device access, triggering the bug is a single ioctl with no additional victim interaction.\nS:U - Impact is kernel stack memory corruption and potential privilege escalation within the same kernel security domain; it does not cross a VM, IOMMU, or sandbox boundary.\nC:H - The flawed loop performs out-of-bounds reads of up to ~217 bits beyond the 25-bit mask into adjacent kernel stack memory, constituting kernel memory disclosure per OOB-read guidance.\nI:H - Incidental set bits found during the out-of-bounds mask scan drive set_bit() writes past the end of the caller-supplied bits array, causing out-of-bounds kernel stack writes that could be leveraged for control-flow hijacking.\nA:H - Stack corruption from the out-of-bounds writes can cause kernel oops, panic, or hang, satisfying the kernel guidance that memory-corruption bugs warrant High availability impact."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T12:39:02.926Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"5.10.258"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"5.15.209"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.1.175"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.6.142"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.12.92"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.18.34"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"7.0.11"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"7.1"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}