The copy_mc_to_kernel() will return 0 if it executed successfully.
Then the return value should be set to the length it copied.

Fixes: d984648e428b ("fsdax,xfs: port unshare to fsdax")
Signed-off-by: Shiyang Ruan <[email protected]>
---
 fs/dax.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/dax.c b/fs/dax.c
index c48a3a93ab29..3e457a16c7d1 100644
--- a/fs/dax.c
+++ b/fs/dax.c
@@ -1271,8 +1271,9 @@ static s64 dax_unshare_iter(struct iomap_iter *iter)
        if (ret < 0)
                goto out_unlock;
 
-       ret = copy_mc_to_kernel(daddr, saddr, length);
-       if (ret)
+       if (copy_mc_to_kernel(daddr, saddr, length) == 0)
+               ret = length;
+       else
                ret = -EIO;
 
 out_unlock:
-- 
2.39.1


Reply via email to