On Tue, Nov 14, 2017 at 5:37 PM, Jeff Moyer <jmoyer@xxxxxxxxxx> wrote: > PMD faults on a zero length file on a file system mounted with -o dax > will not generate SIGBUS as expected. > > fd = open(...O_TRUNC); > addr = mmap(NULL, 2*1024*1024, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); > *addr = 'a'; > <expect SIGBUS> > > The problem is this code in dax_iomap_pmd_fault: > > max_pgoff = (i_size_read(inode) - 1) >> PAGE_SHIFT; > > If the inode size is zero, we end up with a max_pgoff that is way larger > than 0. :) Fix it by using DIV_ROUND_UP, as is done elsewhere in the > kernel. > > I tested this with some simple test code that ensured that SIGBUS was > received where expected. > I assume this needs: Fixes: 642261ac995e ("dax: add struct iomap based DAX PMD support") Cc: <stable@xxxxxxxxxxxxxxx> ...otherwise looks good to me.