All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ARC Bug fix for 3.11-rc7
@ 2013-08-24  6:33 Vineet Gupta
  2013-08-24  6:33 ` [PATCH] ARC: [lib] strchr breakage in Big-endian configuration Vineet Gupta
  0 siblings, 1 reply; 2+ messages in thread
From: Vineet Gupta @ 2013-08-24  6:33 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: lkml, Anton Kolesov, Joern Rennecke, Noam Camus, stable,
	Greg Kroah-Hartman, Vineet Gupta

Hi Linus,

Here's a serious bug fix in Big Endian configuration. I know it's late, but
we need this fix. Please consider applying for 3.11-rc7.
I hope direct email as opposed to a formal pull request is OK.

P.S. @Greg, I can vouch for this fix, can you please queue this up for next
stable and not wait for -rc to come out.

Thx,
-Vineet

Joern Rennecke (1):
  ARC: [lib] strchr breakage in Big-endian configuration

 arch/arc/lib/strchr-700.S | 10 ++++++++++
 1 file changed, 10 insertions(+)

-- 
1.8.1.2


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

* [PATCH] ARC: [lib] strchr breakage in Big-endian configuration
  2013-08-24  6:33 [PATCH] ARC Bug fix for 3.11-rc7 Vineet Gupta
@ 2013-08-24  6:33 ` Vineet Gupta
  0 siblings, 0 replies; 2+ messages in thread
From: Vineet Gupta @ 2013-08-24  6:33 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: lkml, Anton Kolesov, Joern Rennecke, Noam Camus, stable,
	Greg Kroah-Hartman, Vineet Gupta

From: Joern Rennecke <joern.rennecke@embecosm.com>

For a search buffer, 2 byte aligned, strchr() was returning pointer
outside of buffer (buf - 1)

------------->8----------------
    // Input buffer (default 4 byte aigned)
    char *buffer = "1AA_";

    // actual search start (to mimick 2 byte alignment)
    char *current_line = &(buffer[2]);

    // Character to search for
    char c = 'A';

    char *c_pos = strchr(current_line, c);

    printf("%s\n", c_pos) --> 'AA_' as oppose to 'A_'
------------->8----------------

Reported-by: Anton Kolesov <Anton.Kolesov@synopsys.com>
Debugged-by: Anton Kolesov <Anton.Kolesov@synopsys.com>
Cc: <stable@vger.kernel.org> # [3.9 and 3.10]
Cc: Noam Camus <noamc@ezchip.com>
Signed-off-by: Joern Rennecke  <joern.rennecke@embecosm.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
 arch/arc/lib/strchr-700.S | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/arch/arc/lib/strchr-700.S b/arch/arc/lib/strchr-700.S
index 99c1047..9c548c7 100644
--- a/arch/arc/lib/strchr-700.S
+++ b/arch/arc/lib/strchr-700.S
@@ -39,9 +39,18 @@ ARC_ENTRY strchr
 	ld.a	r2,[r0,4]
 	sub	r12,r6,r7
 	bic	r12,r12,r6
+#ifdef __LITTLE_ENDIAN__
 	and	r7,r12,r4
 	breq	r7,0,.Loop ; For speed, we want this branch to be unaligned.
 	b	.Lfound_char ; Likewise this one.
+#else
+	and	r12,r12,r4
+	breq	r12,0,.Loop ; For speed, we want this branch to be unaligned.
+	lsr_s	r12,r12,7
+	bic 	r2,r7,r6
+	b.d	.Lfound_char_b
+	and_s	r2,r2,r12
+#endif
 ; /* We require this code address to be unaligned for speed...  */
 .Laligned:
 	ld_s	r2,[r0]
@@ -95,6 +104,7 @@ ARC_ENTRY strchr
 	lsr	r7,r7,7
 
 	bic	r2,r7,r6
+.Lfound_char_b:
 	norm	r2,r2
 	sub_s	r0,r0,4
 	asr_s	r2,r2,3
-- 
1.8.1.2


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

end of thread, other threads:[~2013-08-24  6:39 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-24  6:33 [PATCH] ARC Bug fix for 3.11-rc7 Vineet Gupta
2013-08-24  6:33 ` [PATCH] ARC: [lib] strchr breakage in Big-endian configuration Vineet Gupta

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.