diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-12-12 13:14:13 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-12-12 13:14:13 -0500 |
commit | 48a2f0b2728c88b18829e191eafdde60290aa64f (patch) | |
tree | 7d8095fbb0afde5a695891b7b141533dd111c780 /fs/xfs/xfs_fsops.c | |
parent | 5cdec2d833748fbd27d3682f7209225c504c79c5 (diff) | |
parent | f94c44573e7c22860e2c3dfe349c45f72ba35ad3 (diff) |
Merge tag 'xfs-for-linus-v3.13-rc4' of git://oss.sgi.com/xfs/xfs
Pull xfs bugfixes from Ben Myers:
- fix for buffer overrun in agfl with growfs on v4 superblock
- return EINVAL if requested discard length is less than a block
- fix possible memory corruption in xfs_attrlist_by_handle()
* tag 'xfs-for-linus-v3.13-rc4' of git://oss.sgi.com/xfs/xfs:
xfs: growfs overruns AGFL buffer on V4 filesystems
xfs: don't perform discard if the given range length is less than block size
xfs: underflow bug in xfs_attrlist_by_handle()
Diffstat (limited to 'fs/xfs/xfs_fsops.c')
-rw-r--r-- | fs/xfs/xfs_fsops.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index a6e54b3319bd..02fb943cbf22 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c | |||
@@ -220,6 +220,8 @@ xfs_growfs_data_private( | |||
220 | */ | 220 | */ |
221 | nfree = 0; | 221 | nfree = 0; |
222 | for (agno = nagcount - 1; agno >= oagcount; agno--, new -= agsize) { | 222 | for (agno = nagcount - 1; agno >= oagcount; agno--, new -= agsize) { |
223 | __be32 *agfl_bno; | ||
224 | |||
223 | /* | 225 | /* |
224 | * AG freespace header block | 226 | * AG freespace header block |
225 | */ | 227 | */ |
@@ -279,8 +281,10 @@ xfs_growfs_data_private( | |||
279 | agfl->agfl_seqno = cpu_to_be32(agno); | 281 | agfl->agfl_seqno = cpu_to_be32(agno); |
280 | uuid_copy(&agfl->agfl_uuid, &mp->m_sb.sb_uuid); | 282 | uuid_copy(&agfl->agfl_uuid, &mp->m_sb.sb_uuid); |
281 | } | 283 | } |
284 | |||
285 | agfl_bno = XFS_BUF_TO_AGFL_BNO(mp, bp); | ||
282 | for (bucket = 0; bucket < XFS_AGFL_SIZE(mp); bucket++) | 286 | for (bucket = 0; bucket < XFS_AGFL_SIZE(mp); bucket++) |
283 | agfl->agfl_bno[bucket] = cpu_to_be32(NULLAGBLOCK); | 287 | agfl_bno[bucket] = cpu_to_be32(NULLAGBLOCK); |
284 | 288 | ||
285 | error = xfs_bwrite(bp); | 289 | error = xfs_bwrite(bp); |
286 | xfs_buf_relse(bp); | 290 | xfs_buf_relse(bp); |