[PATCH v4 1/1] eal/linux: reject mountpt not parent of --huge-dir

David Marchand david.marchand at redhat.com
Fri Feb 10 12:01:25 CET 2023


On Mon, Jan 9, 2023 at 2:52 AM Ashish Sadanandan
<ashish.sadanandan at gmail.com> wrote:
>
> The code added for allowing --huge-dir to specify hugetlbfs
> sub-directories has a bug where it incorrectly matches mounts that
> contain a prefix of the specified --huge-dir.
>
> Consider --huge-dir=/dev/hugepages1G is passed to rte_eal_init. Given
> the following hugetlbfs mounts
>
> $ mount | grep hugetlbfs
> hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
> hugetlbfs on /dev/hugepages1G type hugetlbfs (rw,relatime,pagesize=1024M)
> hugetlbfs on /mnt/huge type hugetlbfs (rw,relatime,pagesize=2M)
>
> get_hugepage_dir is first called with hugepage_sz=2097152. While
> iterating over all mount points, /dev/hugepages is incorrectly
> determined to be a match because it's a prefix of --huge-dir. The caller
> then obtains an exclusive lock on --huge-dir.
>
> In the next call to get_hugepage_dir, hugepage_sz=1073741824. This call
> correctly determines /dev/hugepages1G is a match. The caller again
> attempts to obtain an exclusive lock on --huge-dir and deadlocks because
> it's already holding a lock.
>
> This has been corrected by ensuring any matched mount point is either an
> exact match or a parent path of --huge-dir.
>
> Fixes: 24d5a1ce6b85 ("eal/linux: allow hugetlbfs sub-directories")
> Cc: stable at dpdk.org

> Signed-off-by: Ashish Sadanandan <ashish.sadanandan at gmail.com>
Reviewed-by: John Levon <john.levon at nutanix.com>

I got pinged by Julien who reported a similar issue.
He confirmed later that this fix works for him too.

Tested-by: Julien Meunier <julien.meunier at nokia.com>


Applied, thanks Ashish.

-- 
David Marchand



More information about the stable mailing list