CVE-2024-53113 Information
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.
Reference
https://git.kernel.org/stable/c/31502374627ba9ec3e710dbd0bb00457cc6d2c19 https://git.kernel.org/stable/c/6addb2d9501ec866d7b3a3b4e665307c437e9be2 https://git.kernel.org/stable/c/8ce41b0f9d77cca074df25afd39b86e2ee3aa68e https://git.kernel.org/stable/c/d0f16cec79774c3132df006cf771eddd89d08f58
Share on: