aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_super.c
diff options
context:
space:
mode:
authorDarrick J. Wong <darrick.wong@oracle.com>2020-01-02 13:20:13 -0800
committerDarrick J. Wong <darrick.wong@oracle.com>2020-01-14 08:02:52 -0800
commit4bbb04abb4ee2e1f7d65e52557ba1c4038ea43ed (patch)
tree8602a1639d3b6874961f5547b434c6ec6ce1ee8d /fs/xfs/xfs_super.c
parentxfs: introduce XFS_MAX_FILEOFF (diff)
downloadlinux-dev-4bbb04abb4ee2e1f7d65e52557ba1c4038ea43ed.tar.xz
linux-dev-4bbb04abb4ee2e1f7d65e52557ba1c4038ea43ed.zip
xfs: truncate should remove all blocks, not just to the end of the page cache
xfs_itruncate_extents_flags() is supposed to unmap every block in a file from EOF onwards. Oddly, it uses s_maxbytes as the upper limit to the bunmapi range, even though s_maxbytes reflects the highest offset the pagecache can support, not the highest offset that XFS supports. The result of this confusion is that if you create a 20T file on a 64-bit machine, mount the filesystem on a 32-bit machine, and remove the file, we leak everything above 16T. Fix this by capping the bunmapi request at the maximum possible block offset, not s_maxbytes. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions