diff options
| author | Sage Weil <sage@newdream.net> | 2009-09-21 16:00:27 -0400 |
|---|---|---|
| committer | Chris Mason <chris.mason@oracle.com> | 2009-09-21 16:00:27 -0400 |
| commit | 1fb58a6051cd904a9f8e0344b22e31921d6b5a4d (patch) | |
| tree | 2f8c1a89b3e4f119590e89cebe1a5be1a02f487a | |
| parent | 76dda93c6ae2c1dc3e6cde34569d6aca26b0c918 (diff) | |
Btrfs: fix arithmetic error in clone ioctl
Fix an arithmetic error that was breaking extents cloned via the clone
ioctl starting in the second half of a file.
Signed-off-by: Sage Weil <sage@newdream.net>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
| -rw-r--r-- | fs/btrfs/ioctl.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index a13fd556db74..a8577a7f26ab 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c | |||
| @@ -1105,8 +1105,7 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd, | |||
| 1105 | datao += off - key.offset; | 1105 | datao += off - key.offset; |
| 1106 | datal -= off - key.offset; | 1106 | datal -= off - key.offset; |
| 1107 | } | 1107 | } |
| 1108 | if (key.offset + datao + datal + key.offset > | 1108 | if (key.offset + datao + datal > off + len) |
| 1109 | off + len) | ||
| 1110 | datal = off + len - key.offset - datao; | 1109 | datal = off + len - key.offset - datao; |
| 1111 | /* disko == 0 means it's a hole */ | 1110 | /* disko == 0 means it's a hole */ |
| 1112 | if (!disko) | 1111 | if (!disko) |
