diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-11 06:33:03 +0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-11 06:33:03 +0700 |
commit | e2bc44706faa1852471cc101f3c5cdd757dddcd0 (patch) | |
tree | 60655eadba129c42090f9d4c4dc2b10805569134 /fs | |
parent | 324c66ff52448b3020c12da7d7af2bf565b28f01 (diff) | |
parent | 1f4a63bf019524c96e79f088cd717b96ef00a249 (diff) | |
download | op-kernel-dev-e2bc44706faa1852471cc101f3c5cdd757dddcd0.zip op-kernel-dev-e2bc44706faa1852471cc101f3c5cdd757dddcd0.tar.gz |
Merge tag 'xfs-for-linus-v3.13-rc8' of git://oss.sgi.com/xfs/xfs
Pull xfs bugfixes from Ben Myers:
"Here we have a bugfix for an off-by-one in the remote attribute
verifier that results in a forced shutdown which you can hit with v5
superblock by creating a 64k xattr, and a fix for a missing
destroy_work_on_stack() in the allocation worker.
It's a bit late, but they are both fairly straightforward"
* tag 'xfs-for-linus-v3.13-rc8' of git://oss.sgi.com/xfs/xfs:
xfs: Calling destroy_work_on_stack() to pair with INIT_WORK_ONSTACK()
xfs: fix off-by-one error in xfs_attr3_rmt_verify
Diffstat (limited to 'fs')
-rw-r--r-- | fs/xfs/xfs_attr_remote.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_bmap_util.c | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/fs/xfs/xfs_attr_remote.c b/fs/xfs/xfs_attr_remote.c index 739e0a52..5549d69 100644 --- a/fs/xfs/xfs_attr_remote.c +++ b/fs/xfs/xfs_attr_remote.c @@ -110,7 +110,7 @@ xfs_attr3_rmt_verify( if (be32_to_cpu(rmt->rm_bytes) > fsbsize - sizeof(*rmt)) return false; if (be32_to_cpu(rmt->rm_offset) + - be32_to_cpu(rmt->rm_bytes) >= XATTR_SIZE_MAX) + be32_to_cpu(rmt->rm_bytes) > XATTR_SIZE_MAX) return false; if (rmt->rm_owner == 0) return false; diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c index 1394106..82e0dab 100644 --- a/fs/xfs/xfs_bmap_util.c +++ b/fs/xfs/xfs_bmap_util.c @@ -287,6 +287,7 @@ xfs_bmapi_allocate( INIT_WORK_ONSTACK(&args->work, xfs_bmapi_allocate_worker); queue_work(xfs_alloc_wq, &args->work); wait_for_completion(&done); + destroy_work_on_stack(&args->work); return args->result; } |