Description
In the Linux kernel, the following vulnerability has been resolved: mm: fix NULL pointer dereference in alloc_pages_bulk_noprof We triggered a NULL pointer dereference for ac.preferred_zoneref->zone in alloc_pages_bulk_noprof() when the task is migrated between cpusets. When cpuset is enabled, in prepare_alloc_pages(), ac->nodemask may be ¤t->mems_allowed. when first_zones_zonelist() is called to find preferred_zoneref, the ac->nodemask may be modified concurrently if the task is migrated between different cpusets. Assuming we have 2 NUMA Node, when traversing Node1 in ac->zonelist, the nodemask is 2, and when traversing Node2 in ac->zonelist, the nodemask is 1. As a result, the ac->preferred_zoneref points to NULL zone. In alloc_pages_bulk_noprof(), for_each_zone_zonelist_nodemask() finds a allowable zone and calls zonelist_node_idx(ac.preferred_zoneref), leading to NULL pointer dereference. __alloc_pages_noprof() fixes this issue by checking NULL pointer in commit ea57485af8f4 ("mm, page_alloc: fix check for NULL preferred_zone") and commit df76cee6bbeb ("mm, page_alloc: remove redundant checks from alloc fastpath"). To fix it, check NULL pointer for preferred_zoneref->zone.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
387ba26fb1cb9be9e35dc14a6d97188e916eda05 to < 903d896448c2e50e8652aaba529a30d4d1eaa0e5affected387ba26fb1cb9be9e35dc14a6d97188e916eda05 to < 6addb2d9501ec866d7b3a3b4e665307c437e9be2affected387ba26fb1cb9be9e35dc14a6d97188e916eda05 to < d0f16cec79774c3132df006cf771eddd89d08f58affected387ba26fb1cb9be9e35dc14a6d97188e916eda05 to < 31502374627ba9ec3e710dbd0bb00457cc6d2c19affected387ba26fb1cb9be9e35dc14a6d97188e916eda05 to < 8ce41b0f9d77cca074df25afd39b86e2ee3aa68eaffected
Linux Linux
Default version status: affected
5.13affected0 to < 5.13unaffected5.15.174 to ≤ 5.15.*unaffected6.1.119 to ≤ 6.1.*unaffected6.6.63 to ≤ 6.6.*unaffected6.11.10 to ≤ 6.11.*unaffected6.12 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/903d896448c2e50e8652aaba529a30d4d1eaa0e5 ↗
- https://git.kernel.org/stable/c/6addb2d9501ec866d7b3a3b4e665307c437e9be2 ↗
- https://git.kernel.org/stable/c/d0f16cec79774c3132df006cf771eddd89d08f58 ↗
- https://git.kernel.org/stable/c/31502374627ba9ec3e710dbd0bb00457cc6d2c19 ↗
- https://git.kernel.org/stable/c/8ce41b0f9d77cca074df25afd39b86e2ee3aa68e ↗
- https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html ↗