All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lachlan McIlroy <lachlan@sgi.com>
To: David Chinner <dgc@sgi.com>
Cc: xfs-oss <xfs@oss.sgi.com>, xfs-dev <xfs-dev@sgi.com>
Subject: Re: [Patch] xfs_lowbit64 broken on ia32
Date: Wed, 05 Dec 2007 17:35:52 +1100	[thread overview]
Message-ID: <475646C8.6070700@sgi.com> (raw)
In-Reply-To: <20071205054421.GD115527101@sgi.com>

David Chinner wrote:
> On Wed, Dec 05, 2007 at 04:37:01PM +1100, Lachlan McIlroy wrote:
>> David Chinner wrote:
>>> On Wed, Dec 05, 2007 at 01:11:36PM +1100, Lachlan McIlroy wrote:
>>>> David Chinner wrote:
>>>>> The recent change to the internals of xfs_lowbit64 broke it on
>>>>> ia32 - the code treats the 64bit value as an unsigned long
>>>>> which is only 32 bits on ia32 and hence throws away the high 32
>>>>> bits. 64 bit platforms are not affected.
>>>>>
>>>>> Tested with a userspace implementation comparing the original
>>>>> code with the new code.
>>>>>
>>>>> Signed-off-by: Dave Chinner <dgc@sgi.com>
>>>>> ---
>>>>> fs/xfs/xfs_bit.h |    4 ++--
>>>>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>>>>
>>>>> Index: 2.6.x-xfs-new/fs/xfs/xfs_bit.h
>>>>> ===================================================================
>>>>> --- 2.6.x-xfs-new.orig/fs/xfs/xfs_bit.h	2007-11-02 
>>>>> 13:44:45.000000000 +1100
>>>>> +++ 2.6.x-xfs-new/fs/xfs/xfs_bit.h	2007-12-03 14:43:33.169851481 +1100
>>>>> @@ -68,8 +68,8 @@ static inline int xfs_lowbit32(__uint32_
>>>>> /* Get low bit set out of 64-bit argument, -1 if none set */
>>>>> static inline int xfs_lowbit64(__uint64_t v)
>>>>> {
>>>>> -	unsigned long	t = v;
>>>>> -	return (v) ? find_first_bit(&t, 64) : -1;
>>>>> +	unsigned long long	t = v;
>>>> Why create a local copy?  Why not just pass v into find_first_bit()?
>>> Because I thought that taking the address of a function parameter
>>> was a big no-no because the result is undefined (i.e. platform and
>>> compiler dependent)?
>>>
>> Really?  Didn't occur to me but then I can't say for sure I've ever
>> used the address of an argument.  If we need a local copy then why
>> not use __unit64_t instead of unsigned long long?
> 
> Whatever. They are both the same.
> 
> xfs/xfs_types.h    <global> 41 typedef unsigned long long int __uint64_t;
> 

Figured they would be.  Using the same type probably would have avoided
the bug in the first place.  Otherwise the change is good.

  reply	other threads:[~2007-12-05  6:35 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-12-03 21:16 [Patch] xfs_lowbit64 broken on ia32 David Chinner
2007-12-05  2:11 ` Lachlan McIlroy
2007-12-05  3:21   ` David Chinner
2007-12-05  5:37     ` Lachlan McIlroy
2007-12-05  5:44       ` David Chinner
2007-12-05  6:35         ` Lachlan McIlroy [this message]
2007-12-05 12:14     ` Alex Elder
2007-12-05 13:44       ` Which (lib)acl for 2.4.35? Jameel Akari
2007-12-06  0:04       ` [Patch] xfs_lowbit64 broken on ia32 Timothy Shimmin
2007-12-06  2:15         ` Alex Elder
2007-12-06  1:55       ` David Chinner
2007-12-06  2:22         ` Alex Elder

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=475646C8.6070700@sgi.com \
    --to=lachlan@sgi.com \
    --cc=dgc@sgi.com \
    --cc=xfs-dev@sgi.com \
    --cc=xfs@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.