[QUESTION] arm64: mmap to the hugetlbfs with hugepagesize=512M got SIGILL

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Catalin and Will,

when we mmap the addr NULL with MAP_FIXED flag to the hugetlbfs, system will return NULL successfully.

My question is: Why mmap to file with the hugepagesize=512M  we got SIGILL but mmap to the file with hugepagesize=2M we got a success ? Here is my test steps:

    1. echo 10 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

        echo 10 > /sys/kernel/mm/hugepages/hugepages-524288kB/nr_hugepages

    2. mount none /mnt -t tmpfs

    3. mkdir /mnt/huge1

        mkdir /mnt/huge2

    4. mount none /mnt/huge1 -t hugetlbfs -o pagesize=512MB

        mount none /mnt/huge2 -t hugetlbfs -o pagesize=2MB

    5. test_case.c

        ... ...

        fd = open("/mnt/huge1/file", O_RDWR | O_CREAT, 0777);

        addr = mmap(NULL, hugepagesize, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE | MAP_FIXED, fd, 0);

        ... ...

The result is , mmap to the /mnt/huge1/file will got a success while mmap to the /mnt/huge2/file will got SIGILL. Meanwile, we have found that the kernel return the address NULL success but set the variable failed.

Here is the pc when SIGILL occured:

        4009bc:   97ffff7d    bl  4007b0 <mmap@plt>

pc->4009c0:   aa0003e1    mov x1, x0



Kind regards,

Yongqiang Liu







[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux