Skip to content

Commit

Permalink
iomap: remove the length variable in iomap_seek_data
Browse files Browse the repository at this point in the history
The length variable is rather pointless given that it can be trivially
deduced from offset and size.  Also the initial calculation can lead
to KASAN warnings.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reported-by: Leizhen (ThunderTown) <thunder.leizhen@huawei.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
  • Loading branch information
Christoph Hellwig authored and Darrick J. Wong committed Jul 15, 2021
1 parent e73f0f0 commit 3ac1d42
Showing 1 changed file with 6 additions and 10 deletions.
16 changes: 6 additions & 10 deletions fs/iomap/seek.c
Original file line number Diff line number Diff line change
Expand Up @@ -83,27 +83,23 @@ loff_t
iomap_seek_data(struct inode *inode, loff_t offset, const struct iomap_ops *ops)
{
loff_t size = i_size_read(inode);
loff_t length = size - offset;
loff_t ret;

/* Nothing to be found before or beyond the end of the file. */
if (offset < 0 || offset >= size)
return -ENXIO;

while (length > 0) {
ret = iomap_apply(inode, offset, length, IOMAP_REPORT, ops,
&offset, iomap_seek_data_actor);
while (offset < size) {
ret = iomap_apply(inode, offset, size - offset, IOMAP_REPORT,
ops, &offset, iomap_seek_data_actor);
if (ret < 0)
return ret;
if (ret == 0)
break;

return offset;
offset += ret;
length -= ret;
}

if (length <= 0)
return -ENXIO;
return offset;
/* We've reached the end of the file without finding data */
return -ENXIO;
}
EXPORT_SYMBOL_GPL(iomap_seek_data);

0 comments on commit 3ac1d42

Please sign in to comment.