linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ARM: Fix find_next_zero_bit and related assembly
@ 2010-11-19 18:13 James Jones
  0 siblings, 0 replies; 8+ messages in thread
From: James Jones @ 2010-11-19 18:13 UTC (permalink / raw)
  To: linux-arm-kernel

The find_next_bit, find_first_bit, find_next_zero_bit
and find_first_zero_bit functions were not properly
clamping to the maxbit argument at the bit level. They
were instead only checking maxbit at the byte level.
To fix this, add a compare and a conditional move
instruction to the end of the common bit-within-the-
byte code used by all the functions and be sure not to
clobber the maxbit argument before it is used.

Signed-off-by: James Jones <jajones@nvidia.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
---
 arch/arm/lib/findbit.S |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/arch/arm/lib/findbit.S b/arch/arm/lib/findbit.S
index 1e4cbd4..64f6bc1 100644
--- a/arch/arm/lib/findbit.S
+++ b/arch/arm/lib/findbit.S
@@ -174,8 +174,8 @@ ENDPROC(_find_next_bit_be)
  */
 .L_found:
 #if __LINUX_ARM_ARCH__ >= 5
-		rsb	r1, r3, #0
-		and	r3, r3, r1
+		rsb	r0, r3, #0
+		and	r3, r3, r0
 		clz	r3, r3
 		rsb	r3, r3, #31
 		add	r0, r2, r3
@@ -190,5 +190,7 @@ ENDPROC(_find_next_bit_be)
 		addeq	r2, r2, #1
 		mov	r0, r2
 #endif
+		cmp	r1, r0			@ Clamp to maxbit
+		movlo	r0, r1
 		mov	pc, lr
 
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH] ARM: Fix find_next_zero_bit and related assembly
       [not found] <1289524615-22484-1-git-send-email-jajones@nvidia.com>
@ 2010-11-23 21:26 ` Nicolas Pitre
  2010-11-23 23:28   ` James Jones
  0 siblings, 1 reply; 8+ messages in thread
From: Nicolas Pitre @ 2010-11-23 21:26 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, 11 Nov 2010, James Jones wrote:

> The find_next_bit, find_first_bit, find_next_zero_bit
> and find_first_zero_bit functions were not properly
> clamping to the maxbit argument at the bit level. They
> were instead only checking maxbit at the byte level.
> To fix this, add a compare and a conditional move
> instruction to the end of the common bit-within-the-
> byte code used by all the functions and be sure not to
> clobber the maxbit argument before it is used.
> 
> Signed-off-by: James Jones <jajones@nvidia.com>
> Tested-by: Stephen Warren <swarren@nvidia.com>

Reviewed-by: Nicolas Pitre <nicolas.pitre@linaro.org>

Please send to RMK's patch system.



> ---
>  arch/arm/lib/findbit.S |    6 ++++--
>  1 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/lib/findbit.S b/arch/arm/lib/findbit.S
> index 1e4cbd4..64f6bc1 100644
> --- a/arch/arm/lib/findbit.S
> +++ b/arch/arm/lib/findbit.S
> @@ -174,8 +174,8 @@ ENDPROC(_find_next_bit_be)
>   */
>  .L_found:
>  #if __LINUX_ARM_ARCH__ >= 5
> -		rsb	r1, r3, #0
> -		and	r3, r3, r1
> +		rsb	r0, r3, #0
> +		and	r3, r3, r0
>  		clz	r3, r3
>  		rsb	r3, r3, #31
>  		add	r0, r2, r3
> @@ -190,5 +190,7 @@ ENDPROC(_find_next_bit_be)
>  		addeq	r2, r2, #1
>  		mov	r0, r2
>  #endif
> +		cmp	r1, r0			@ Clamp to maxbit
> +		movlo	r0, r1
>  		mov	pc, lr
>  
> -- 
> 1.7.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH] ARM: Fix find_next_zero_bit and related assembly
  2010-11-23 21:26 ` [PATCH] ARM: Fix find_next_zero_bit and related assembly Nicolas Pitre
@ 2010-11-23 23:28   ` James Jones
  2010-11-24 18:12     ` Stephen Boyd
  0 siblings, 1 reply; 8+ messages in thread
From: James Jones @ 2010-11-23 23:28 UTC (permalink / raw)
  To: linux-arm-kernel

On Tuesday 23 November 2010 13:26:47 Nicolas Pitre wrote:
> On Thu, 11 Nov 2010, James Jones wrote:
> > The find_next_bit, find_first_bit, find_next_zero_bit
> > and find_first_zero_bit functions were not properly
> > clamping to the maxbit argument at the bit level. They
> > were instead only checking maxbit at the byte level.
> > To fix this, add a compare and a conditional move
> > instruction to the end of the common bit-within-the-
> > byte code used by all the functions and be sure not to
> > clobber the maxbit argument before it is used.
> > 
> > Signed-off-by: James Jones <jajones@nvidia.com>
> > Tested-by: Stephen Warren <swarren@nvidia.com>
> 
> Reviewed-by: Nicolas Pitre <nicolas.pitre@linaro.org>
> 
> Please send to RMK's patch system.

Thanks for the review.  It's already in the patch system, but I updated the 
entry to include your reviewed-by line.

-James

> > ---
> > 
> >  arch/arm/lib/findbit.S |    6 ++++--
> >  1 files changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/arch/arm/lib/findbit.S b/arch/arm/lib/findbit.S
> > index 1e4cbd4..64f6bc1 100644
> > --- a/arch/arm/lib/findbit.S
> > +++ b/arch/arm/lib/findbit.S
> > @@ -174,8 +174,8 @@ ENDPROC(_find_next_bit_be)
> > 
> >   */
> >  
> >  .L_found:
> >  #if __LINUX_ARM_ARCH__ >= 5
> > 
> > -		rsb	r1, r3, #0
> > -		and	r3, r3, r1
> > +		rsb	r0, r3, #0
> > +		and	r3, r3, r0
> > 
> >  		clz	r3, r3
> >  		rsb	r3, r3, #31
> >  		add	r0, r2, r3
> > 
> > @@ -190,5 +190,7 @@ ENDPROC(_find_next_bit_be)
> > 
> >  		addeq	r2, r2, #1
> >  		mov	r0, r2
> >  
> >  #endif
> > 
> > +		cmp	r1, r0			@ Clamp to maxbit
> > +		movlo	r0, r1
> > 
> >  		mov	pc, lr

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH] ARM: Fix find_next_zero_bit and related assembly
  2010-11-23 23:28   ` James Jones
@ 2010-11-24 18:12     ` Stephen Boyd
  2010-11-24 19:00       ` Nicolas Pitre
  0 siblings, 1 reply; 8+ messages in thread
From: Stephen Boyd @ 2010-11-24 18:12 UTC (permalink / raw)
  To: linux-arm-kernel

On 11/23/2010 03:28 PM, James Jones wrote:
> On Tuesday 23 November 2010 13:26:47 Nicolas Pitre wrote:
>> On Thu, 11 Nov 2010, James Jones wrote:
>>> The find_next_bit, find_first_bit, find_next_zero_bit
>>> and find_first_zero_bit functions were not properly
>>> clamping to the maxbit argument at the bit level. They
>>> were instead only checking maxbit at the byte level.
>>> To fix this, add a compare and a conditional move
>>> instruction to the end of the common bit-within-the-
>>> byte code used by all the functions and be sure not to
>>> clobber the maxbit argument before it is used.
>>>
>>> Signed-off-by: James Jones <jajones@nvidia.com>
>>> Tested-by: Stephen Warren <swarren@nvidia.com>
>> Reviewed-by: Nicolas Pitre <nicolas.pitre@linaro.org>
>>
>> Please send to RMK's patch system.
> Thanks for the review.  It's already in the patch system, but I updated the 
> entry to include your reviewed-by line.

Should this be sent to the stable tree too?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH] ARM: Fix find_next_zero_bit and related assembly
  2010-11-24 18:12     ` Stephen Boyd
@ 2010-11-24 19:00       ` Nicolas Pitre
  2010-11-24 19:08         ` James Jones
  0 siblings, 1 reply; 8+ messages in thread
From: Nicolas Pitre @ 2010-11-24 19:00 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, 24 Nov 2010, Stephen Boyd wrote:

> On 11/23/2010 03:28 PM, James Jones wrote:
> > On Tuesday 23 November 2010 13:26:47 Nicolas Pitre wrote:
> >> On Thu, 11 Nov 2010, James Jones wrote:
> >>> The find_next_bit, find_first_bit, find_next_zero_bit
> >>> and find_first_zero_bit functions were not properly
> >>> clamping to the maxbit argument at the bit level. They
> >>> were instead only checking maxbit at the byte level.
> >>> To fix this, add a compare and a conditional move
> >>> instruction to the end of the common bit-within-the-
> >>> byte code used by all the functions and be sure not to
> >>> clobber the maxbit argument before it is used.
> >>>
> >>> Signed-off-by: James Jones <jajones@nvidia.com>
> >>> Tested-by: Stephen Warren <swarren@nvidia.com>
> >> Reviewed-by: Nicolas Pitre <nicolas.pitre@linaro.org>
> >>
> >> Please send to RMK's patch system.
> > Thanks for the review.  It's already in the patch system, but I updated the 
> > entry to include your reviewed-by line.
> 
> Should this be sent to the stable tree too?

It could, yes.  This is hardly an urgent fix though, as the bug has been 
there virtually forever.


Nicolas

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH] ARM: Fix find_next_zero_bit and related assembly
  2010-11-24 19:00       ` Nicolas Pitre
@ 2010-11-24 19:08         ` James Jones
  2010-11-24 19:13           ` Nicolas Pitre
  0 siblings, 1 reply; 8+ messages in thread
From: James Jones @ 2010-11-24 19:08 UTC (permalink / raw)
  To: linux-arm-kernel

On Wednesday 24 November 2010 11:00:12 am Nicolas Pitre wrote:
> On Wed, 24 Nov 2010, Stephen Boyd wrote:
> > On 11/23/2010 03:28 PM, James Jones wrote:
> > > On Tuesday 23 November 2010 13:26:47 Nicolas Pitre wrote:
> > >> On Thu, 11 Nov 2010, James Jones wrote:
> > >>> The find_next_bit, find_first_bit, find_next_zero_bit
> > >>> and find_first_zero_bit functions were not properly
> > >>> clamping to the maxbit argument at the bit level. They
> > >>> were instead only checking maxbit at the byte level.
> > >>> To fix this, add a compare and a conditional move
> > >>> instruction to the end of the common bit-within-the-
> > >>> byte code used by all the functions and be sure not to
> > >>> clobber the maxbit argument before it is used.
> > >>> 
> > >>> Signed-off-by: James Jones <jajones@nvidia.com>
> > >>> Tested-by: Stephen Warren <swarren@nvidia.com>
> > >> 
> > >> Reviewed-by: Nicolas Pitre <nicolas.pitre@linaro.org>
> > >> 
> > >> Please send to RMK's patch system.
> > > 
> > > Thanks for the review.  It's already in the patch system, but I updated
> > > the entry to include your reviewed-by line.
> > 
> > Should this be sent to the stable tree too?
> 
> It could, yes.  This is hardly an urgent fix though, as the bug has been
> there virtually forever.
> 
> 
> Nicolas

While ancient, it does cause per-cpu allocations to fail in some situations, 
which generally causes panics.

Thanks,
-James

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH] ARM: Fix find_next_zero_bit and related assembly
  2010-11-24 19:08         ` James Jones
@ 2010-11-24 19:13           ` Nicolas Pitre
  2010-11-24 19:15             ` Russell King - ARM Linux
  0 siblings, 1 reply; 8+ messages in thread
From: Nicolas Pitre @ 2010-11-24 19:13 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, 24 Nov 2010, James Jones wrote:

> On Wednesday 24 November 2010 11:00:12 am Nicolas Pitre wrote:
> > On Wed, 24 Nov 2010, Stephen Boyd wrote:
> > > On 11/23/2010 03:28 PM, James Jones wrote:
> > > > On Tuesday 23 November 2010 13:26:47 Nicolas Pitre wrote:
> > > >> On Thu, 11 Nov 2010, James Jones wrote:
> > > >>> The find_next_bit, find_first_bit, find_next_zero_bit
> > > >>> and find_first_zero_bit functions were not properly
> > > >>> clamping to the maxbit argument at the bit level. They
> > > >>> were instead only checking maxbit at the byte level.
> > > >>> To fix this, add a compare and a conditional move
> > > >>> instruction to the end of the common bit-within-the-
> > > >>> byte code used by all the functions and be sure not to
> > > >>> clobber the maxbit argument before it is used.
> > > >>> 
> > > >>> Signed-off-by: James Jones <jajones@nvidia.com>
> > > >>> Tested-by: Stephen Warren <swarren@nvidia.com>
> > > >> 
> > > >> Reviewed-by: Nicolas Pitre <nicolas.pitre@linaro.org>
> > > >> 
> > > >> Please send to RMK's patch system.
> > > > 
> > > > Thanks for the review.  It's already in the patch system, but I updated
> > > > the entry to include your reviewed-by line.
> > > 
> > > Should this be sent to the stable tree too?
> > 
> > It could, yes.  This is hardly an urgent fix though, as the bug has been
> > there virtually forever.
> > 
> > 
> > Nicolas
> 
> While ancient, it does cause per-cpu allocations to fail in some situations, 
> which generally causes panics.

That would be a good justification for the stable tree then.


Nicolas

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH] ARM: Fix find_next_zero_bit and related assembly
  2010-11-24 19:13           ` Nicolas Pitre
@ 2010-11-24 19:15             ` Russell King - ARM Linux
  0 siblings, 0 replies; 8+ messages in thread
From: Russell King - ARM Linux @ 2010-11-24 19:15 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Nov 24, 2010 at 02:13:05PM -0500, Nicolas Pitre wrote:
> On Wed, 24 Nov 2010, James Jones wrote:
> 
> > On Wednesday 24 November 2010 11:00:12 am Nicolas Pitre wrote:
> > > On Wed, 24 Nov 2010, Stephen Boyd wrote:
> > > > On 11/23/2010 03:28 PM, James Jones wrote:
> > > > > On Tuesday 23 November 2010 13:26:47 Nicolas Pitre wrote:
> > > > >> On Thu, 11 Nov 2010, James Jones wrote:
> > > > >>> The find_next_bit, find_first_bit, find_next_zero_bit
> > > > >>> and find_first_zero_bit functions were not properly
> > > > >>> clamping to the maxbit argument at the bit level. They
> > > > >>> were instead only checking maxbit at the byte level.
> > > > >>> To fix this, add a compare and a conditional move
> > > > >>> instruction to the end of the common bit-within-the-
> > > > >>> byte code used by all the functions and be sure not to
> > > > >>> clobber the maxbit argument before it is used.
> > > > >>> 
> > > > >>> Signed-off-by: James Jones <jajones@nvidia.com>
> > > > >>> Tested-by: Stephen Warren <swarren@nvidia.com>
> > > > >> 
> > > > >> Reviewed-by: Nicolas Pitre <nicolas.pitre@linaro.org>
> > > > >> 
> > > > >> Please send to RMK's patch system.
> > > > > 
> > > > > Thanks for the review.  It's already in the patch system, but I updated
> > > > > the entry to include your reviewed-by line.
> > > > 
> > > > Should this be sent to the stable tree too?
> > > 
> > > It could, yes.  This is hardly an urgent fix though, as the bug has been
> > > there virtually forever.
> > > 
> > > 
> > > Nicolas
> > 
> > While ancient, it does cause per-cpu allocations to fail in some situations, 
> > which generally causes panics.
> 
> That would be a good justification for the stable tree then.

And the best way to do that is _not_ to send it to stable at kernel.org,
but when you submit the patch to the patch system, add a line in
the sign-off area:

CC: <stable@kernel.org>

and when it goes into mainline (which is a requirement for stable
patches) the stable team will automatically pick it up - without anyone
needing to do any additional work.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2010-11-24 19:15 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1289524615-22484-1-git-send-email-jajones@nvidia.com>
2010-11-23 21:26 ` [PATCH] ARM: Fix find_next_zero_bit and related assembly Nicolas Pitre
2010-11-23 23:28   ` James Jones
2010-11-24 18:12     ` Stephen Boyd
2010-11-24 19:00       ` Nicolas Pitre
2010-11-24 19:08         ` James Jones
2010-11-24 19:13           ` Nicolas Pitre
2010-11-24 19:15             ` Russell King - ARM Linux
2010-11-19 18:13 James Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).