mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2026-10-20 19:23:40 +00:00
When a block of memory is requested from the execmem manager it tries to find a suitable fragment by traversing the free_areas. In case there is no such block, a new memory area is added to the free_areas and then allocated to the caller by traversing the free_area tree again. The above operations of allocation and tree traversal are not atomic hence another request may consume this newly allocated memory block which results in the allocation failure for the original request. Such occurrence can be spotted on devices running the 6.18 kernel during the parallel modules loading. To mitigate such resource races execute the cache population and allocation operations under one mutex lock. Link: https://lkml.kernel.org/r/20260320075723.779985-1-hmazur@google.com Signed-off-by: Hubert Mazur <hmazur@google.com> Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Stanislaw Kardach <skardach@google.com> Cc: Michal Krawczyk <mikrawczyk@google.com> Cc: Slawomir Rosek <srosek@google.com> Cc: Hubert Mazur <hmazur@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
596 lines
14 KiB
596 lines
14 KiB