diff options
| -rw-r--r-- | drivers/target/target_core_file.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/target/target_core_file.c b/drivers/target/target_core_file.c index ab2c53b63cc3..72c83d98662b 100644 --- a/drivers/target/target_core_file.c +++ b/drivers/target/target_core_file.c | |||
| @@ -415,7 +415,7 @@ fd_execute_sync_cache(struct se_cmd *cmd) | |||
| 415 | } else { | 415 | } else { |
| 416 | start = cmd->t_task_lba * dev->dev_attrib.block_size; | 416 | start = cmd->t_task_lba * dev->dev_attrib.block_size; |
| 417 | if (cmd->data_length) | 417 | if (cmd->data_length) |
| 418 | end = start + cmd->data_length; | 418 | end = start + cmd->data_length - 1; |
| 419 | else | 419 | else |
| 420 | end = LLONG_MAX; | 420 | end = LLONG_MAX; |
| 421 | } | 421 | } |
| @@ -680,7 +680,12 @@ fd_execute_rw(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents, | |||
| 680 | struct fd_dev *fd_dev = FD_DEV(dev); | 680 | struct fd_dev *fd_dev = FD_DEV(dev); |
| 681 | loff_t start = cmd->t_task_lba * | 681 | loff_t start = cmd->t_task_lba * |
| 682 | dev->dev_attrib.block_size; | 682 | dev->dev_attrib.block_size; |
| 683 | loff_t end = start + cmd->data_length; | 683 | loff_t end; |
| 684 | |||
| 685 | if (cmd->data_length) | ||
| 686 | end = start + cmd->data_length - 1; | ||
| 687 | else | ||
| 688 | end = LLONG_MAX; | ||
| 684 | 689 | ||
| 685 | vfs_fsync_range(fd_dev->fd_file, start, end, 1); | 690 | vfs_fsync_range(fd_dev->fd_file, start, end, 1); |
| 686 | } | 691 | } |
