diff --git a/fs/read_write.c b/fs/read_write.c
index fa05985f700e511e2f8da109153f86e0072ee03a..324ec271cc4e64868c34e3ff2f28ac2c0542475e 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -1656,6 +1656,9 @@ int vfs_dedupe_file_range(struct file *file, struct file_dedupe_range *same)
 		mnt_drop_write_file(dst_file);
 next_loop:
 		fdput(dst_fd);
+
+		if (fatal_signal_pending(current))
+			goto out;
 	}
 
 out: