Hi Jan,

On 6/26/20 12:29 PM, Jan Stancek wrote:
Hi,

LTP mmap03 is getting stuck in page fault loop after commit
   c46241a370a6 ("powerpc/pkeys: Check vma before returning key fault error to the 
user")

System is ppc64le P9 lpar [1] running v5.8-rc2-34-g3e08a95294a4.

Here's a minimized reproducer:
------------------------- 8< -----------------------------
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/mman.h>

int main(int ac, char **av)
{
         int page_sz = getpagesize();
         int fildes;
         char *addr;

         fildes = open("tempfile", O_WRONLY | O_CREAT, 0666);
         write(fildes, &fildes, sizeof(fildes));
         close(fildes);

         fildes = open("tempfile", O_RDONLY);
         unlink("tempfile");

         addr = mmap(0, page_sz, PROT_EXEC, MAP_FILE | MAP_PRIVATE, fildes, 0);

         printf("%d\n", *addr);
         return 0;
}
------------------------- >8 -----------------------------

Thanks for the report. This is execute only key where vma has the implied read permission. So The patch do break this case. I will see how best we can handle PROT_EXEC and the multi threaded test that required the change in the patch.


-aneesh

Reply via email to