]> git.baikalelectronics.ru Git - kernel.git/commit
xfs: remote attribute read too short
authorDave Chinner <dchinner@redhat.com>
Tue, 21 May 2013 08:02:02 +0000 (18:02 +1000)
committerBen Myers <bpm@sgi.com>
Thu, 30 May 2013 22:25:50 +0000 (17:25 -0500)
commit17065aaa5a6825d0bfee7ac5e49b30a6becc5cd2
treebaab0a86b30c4c1896453ef11bb70af1ff01e176
parent253e396fce253b666e6eb66847f431b87585c744
xfs: remote attribute read too short

Reading a maximally size remote attribute fails when CRCs are
enabled with this verification error:

XFS (vdb): remote attribute header does not match required off/len/owner)

There are two reasons for this, the first being that the
length of the buffer being read is determined from the
args->rmtblkcnt which doesn't take into account CRC headers. Hence
the mapped length ends up being too short and so we need to
calculate it directly from the value length.

The second is that the byte count of valid data within a buffer is
capped by the length of the data and so doesn't take into account
that the buffer might be longer due to headers. Hence we need to
calculate the data space in the buffer first before calculating the
actual byte count of data.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Ben Myers <bpm@sgi.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
(cherry picked from commit 913e96bc292e1bb248854686c79d6545ef3ee720)
fs/xfs/xfs_attr_remote.c