xfs
[Top] [All Lists]

Re: [PATCH 2/4] xfs_repair: fix unaligned accesses

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: [PATCH 2/4] xfs_repair: fix unaligned accesses
From: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date: Sun, 11 Oct 2015 20:33:41 -0500
Cc: xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <20151011222618.GX27164@dastard>
References: <56170906.5090301@xxxxxxxxxx> <56170974.5020604@xxxxxxxxxxx> <20151011222618.GX27164@dastard>
On Oct 11, 2015, at 5:26 PM, Dave Chinner <david@xxxxxxxxxxxxx> wrote:
> 
>> On Thu, Oct 08, 2015 at 07:25:24PM -0500, Eric Sandeen wrote:
>> This fixes some unaligned accesses spotted by libubsan in repair.
>> 
>> Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx>
>> ---
>> repair/dinode.c   |   19 +++++++++----------
>> repair/prefetch.c |    4 ++--
>> 2 files changed, 11 insertions(+), 12 deletions(-)
>> 
>> diff --git a/repair/dinode.c b/repair/dinode.c
>> index f78f907..44bbb8f 100644
>> --- a/repair/dinode.c
>> +++ b/repair/dinode.c
>> @@ -960,13 +960,13 @@ _("bad numrecs 0 in inode %" PRIu64 " bmap btree root 
>> block\n"),
>>         * btree, we'd do it right here.  For now, if there's a
>>         * problem, we'll bail out and presumably clear the inode.
>>         */
>> -        if (!verify_dfsbno(mp, be64_to_cpu(pp[i])))  {
>> +        if (!verify_dfsbno(mp, get_unaligned_be64(&pp[i])))  {
> 
> I don't understand - when are pointers in the BMBT not 64 bit
> aligned? The buffers are allocated by memalign to be 64 bit aligned,
> and all the internal BMBT structures are 64 bit aligned, too. i.e
> the BMBT block header is 24/72 bytes in length (depending on CRCs),
> the pointers are 64 bit, and the records are 128 bit.
> 
> So where's the unaligned access coming from?
> 
Hrm, I'm sure I hit it and just took it at face value, sorry - I'll run through 
it again and look more closely...

Thanks,
Eric

> Cheers,
> 
> Dave.
> -- 
> Dave Chinner
> david@xxxxxxxxxxxxx
> 
> _______________________________________________
> xfs mailing list
> xfs@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs
> 

<Prev in Thread] Current Thread [Next in Thread>