• Randy Dodgen's avatar
    ext4: fix fault handling when mounted with -o dax,ro · fd96b8da
    Randy Dodgen authored
    If an ext4 filesystem is mounted with both the DAX and read-only
    options, executables on that filesystem will fail to start (claiming
    'Segmentation fault') due to the fault handler returning
    VM_FAULT_SIGBUS.
    
    This is due to the DAX fault handler (see ext4_dax_huge_fault)
    attempting to write to the journal when FAULT_FLAG_WRITE is set. This is
    the wrong behavior for write faults which will lead to a COW page; in
    particular, this fails for readonly mounts.
    
    This change avoids journal writes for faults that are expected to COW.
    
    It might be the case that this could be better handled in
    ext4_iomap_begin / ext4_iomap_end (called via iomap_ops inside
    dax_iomap_fault). These is some overlap already (e.g. grabbing journal
    handles).
    Signed-off-by: default avatarRandy Dodgen <dodgen@google.com>
    Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    Reviewed-by: default avatarJan Kara <jack@suse.cz>
    Reviewed-by: default avatarRoss Zwisler <ross.zwisler@linux.intel.com>
    fd96b8da
file.c 19.3 KB