xfs
[Top] [All Lists]

Re: [RFC PATCH] dax, ext2, ext4, XFS: fix data corruption race

To: Ross Zwisler <ross.zwisler@xxxxxxxxxxxxxxx>
Subject: Re: [RFC PATCH] dax, ext2, ext4, XFS: fix data corruption race
From: Matthew Wilcox <willy@xxxxxxxxxxxxxxx>
Date: Fri, 22 Jan 2016 21:01:02 -0500
Cc: linux-kernel@xxxxxxxxxxxxxxx, Theodore Ts'o <tytso@xxxxxxx>, Alexander Viro <viro@xxxxxxxxxxxxxxxxxx>, Andreas Dilger <adilger.kernel@xxxxxxxxx>, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, Dan Williams <dan.j.williams@xxxxxxxxx>, Dave Chinner <david@xxxxxxxxxxxxx>, Jan Kara <jack@xxxxxxxx>, linux-ext4@xxxxxxxxxxxxxxx, linux-fsdevel@xxxxxxxxxxxxxxx, linux-nvdimm@xxxxxxxxxxxx, xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <1453503971-5319-1-git-send-email-ross.zwisler@xxxxxxxxxxxxxxx>
References: <1453503971-5319-1-git-send-email-ross.zwisler@xxxxxxxxxxxxxxx>
User-agent: Mutt/1.5.24 (2015-08-30)
On Fri, Jan 22, 2016 at 04:06:11PM -0700, Ross Zwisler wrote:
> +++ b/fs/block_dev.c
> @@ -1733,13 +1733,28 @@ static const struct address_space_operations 
> def_blk_aops = {
>   */
>  static int blkdev_dax_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
>  {
> -     return __dax_fault(vma, vmf, blkdev_get_block, NULL);
> +     int ret;
> +
> +     ret = __dax_fault(vma, vmf, blkdev_get_block, NULL, false);
> +
> +     if (WARN_ON_ONCE(ret == -EAGAIN))
> +             ret = VM_FAULT_SIGBUS;
> +
> +     return ret;
>  }

Let's not mix up -E returns and VM_FAULT returns.  We already have a
perfectly good VM_FAULT return value -- VM_FAULT_RETRY.

<Prev in Thread] Current Thread [Next in Thread>