From: Chris Wright <chrisw@osdl.org>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: akpm@osdl.org, "Theodore Ts'o" <tytso@mit.edu>,
Zwane Mwaikambo <zwane@arm.linux.org.uk>,
Justin Forbes <jmforbes@linuxtx.org>,
Randy Dunlap <rdunlap@xenotime.net>,
torvalds@osdl.org, Chuck Wolber <chuckw@quantumlinux.com>,
alan@lxorguk.ukuu.org.uk, jgarzik@pobox.com
Subject: [05/07] Add "memory" clobbers to the x86 inline asm of strncmp and friends
Date: Mon, 27 Jun 2005 16:01:44 -0700 [thread overview]
Message-ID: <20050627230144.GN9046@shell0.pdx.osdl.net> (raw)
In-Reply-To: <20050627224651.GI9046@shell0.pdx.osdl.net>
-stable review patch. If anyone has any objections, please let us know.
------------------
From: Linus Torvalds <torvalds@ppc970.osdl.org>
Add "memory" clobbers to the x86 inline asm of strncmp and friends
They don't actually clobber memory, but gcc doesn't even know they
_read_ memory, so can apparently re-order memory accesses around them.
Which obviously does the wrong thing if the memory access happens to
change the memory that the compare function is accessing..
Verified to fix a strange boot problem by Jens Axboe.
Signed-off-by: Chris Wright <chrisw@osdl.org>
---
include/asm-i386/string.h | 32 ++++++++++++++++++++++----------
1 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/include/asm-i386/string.h b/include/asm-i386/string.h
--- a/include/asm-i386/string.h
+++ b/include/asm-i386/string.h
@@ -116,7 +116,8 @@ __asm__ __volatile__(
"orb $1,%%al\n"
"3:"
:"=a" (__res), "=&S" (d0), "=&D" (d1)
- :"1" (cs),"2" (ct));
+ :"1" (cs),"2" (ct)
+ :"memory");
return __res;
}
@@ -138,8 +139,9 @@ __asm__ __volatile__(
"3:\tsbbl %%eax,%%eax\n\t"
"orb $1,%%al\n"
"4:"
- :"=a" (__res), "=&S" (d0), "=&D" (d1), "=&c" (d2)
- :"1" (cs),"2" (ct),"3" (count));
+ :"=a" (__res), "=&S" (d0), "=&D" (d1), "=&c" (d2)
+ :"1" (cs),"2" (ct),"3" (count)
+ :"memory");
return __res;
}
@@ -158,7 +160,9 @@ __asm__ __volatile__(
"movl $1,%1\n"
"2:\tmovl %1,%0\n\t"
"decl %0"
- :"=a" (__res), "=&S" (d0) : "1" (s),"0" (c));
+ :"=a" (__res), "=&S" (d0)
+ :"1" (s),"0" (c)
+ :"memory");
return __res;
}
@@ -175,7 +179,9 @@ __asm__ __volatile__(
"leal -1(%%esi),%0\n"
"2:\ttestb %%al,%%al\n\t"
"jne 1b"
- :"=g" (__res), "=&S" (d0), "=&a" (d1) :"0" (0),"1" (s),"2" (c));
+ :"=g" (__res), "=&S" (d0), "=&a" (d1)
+ :"0" (0),"1" (s),"2" (c)
+ :"memory");
return __res;
}
@@ -189,7 +195,9 @@ __asm__ __volatile__(
"scasb\n\t"
"notl %0\n\t"
"decl %0"
- :"=c" (__res), "=&D" (d0) :"1" (s),"a" (0), "0" (0xffffffffu));
+ :"=c" (__res), "=&D" (d0)
+ :"1" (s),"a" (0), "0" (0xffffffffu)
+ :"memory");
return __res;
}
@@ -333,7 +341,9 @@ __asm__ __volatile__(
"je 1f\n\t"
"movl $1,%0\n"
"1:\tdecl %0"
- :"=D" (__res), "=&c" (d0) : "a" (c),"0" (cs),"1" (count));
+ :"=D" (__res), "=&c" (d0)
+ :"a" (c),"0" (cs),"1" (count)
+ :"memory");
return __res;
}
@@ -369,7 +379,7 @@ __asm__ __volatile__(
"je 2f\n\t"
"stosb\n"
"2:"
- : "=&c" (d0), "=&D" (d1)
+ :"=&c" (d0), "=&D" (d1)
:"a" (c), "q" (count), "0" (count/4), "1" ((long) s)
:"memory");
return (s);
@@ -392,7 +402,8 @@ __asm__ __volatile__(
"jne 1b\n"
"3:\tsubl %2,%0"
:"=a" (__res), "=&d" (d0)
- :"c" (s),"1" (count));
+ :"c" (s),"1" (count)
+ :"memory");
return __res;
}
/* end of additional stuff */
@@ -473,7 +484,8 @@ static inline void * memscan(void * addr
"dec %%edi\n"
"1:"
: "=D" (addr), "=c" (size)
- : "0" (addr), "1" (size), "a" (c));
+ : "0" (addr), "1" (size), "a" (c)
+ : "memory");
return addr;
}
next prev parent reply other threads:[~2005-06-27 23:10 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-27 22:46 [00/07] -stable review Chris Wright
2005-06-27 22:50 ` [01/07] Fix typo in drivers/pci/pci-driver.c Chris Wright
2005-06-27 22:53 ` [02/07] [SCSI] qla2xxx: Pull-down scsi-host-addition to follow board initialization Chris Wright
2005-06-28 21:51 ` Jean Delvare
2005-06-28 22:20 ` Andrew Morton
2005-06-28 22:30 ` Chris Wright
2005-06-28 23:09 ` Andrew Morton
2005-06-28 23:16 ` Chris Wright
2005-06-28 22:32 ` [stable] " Greg KH
2005-06-29 8:08 ` Jean Delvare
2005-06-29 16:36 ` James Bottomley
2005-07-01 11:32 ` Jean Delvare
2005-06-27 22:55 ` [03/07] fix remap_pte_range BUG Chris Wright
2005-06-27 22:59 ` [04/07] e1000: fix spinlock bug Chris Wright
2005-06-27 23:01 ` Chris Wright [this message]
2005-06-28 21:57 ` [05/07] Add "memory" clobbers to the x86 inline asm of strncmp and friends Jean Delvare
2005-06-27 23:03 ` [06/07] ACPI: Make sure we call acpi_register_gsi() even for default PCI interrupt assignment Chris Wright
2005-06-27 23:05 ` [07/07] [NETLINK]: Fix two socket hashing bugs Chris Wright
2005-06-28 12:10 ` [00/07] -stable review Jim MacBaine
2005-06-28 14:47 ` [stable] " Chris Wright
2005-06-28 17:18 ` Jim MacBaine
2005-06-28 17:20 ` Chris Wright
2005-06-28 20:45 ` David S. Miller
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=20050627230144.GN9046@shell0.pdx.osdl.net \
--to=chrisw@osdl.org \
--cc=akpm@osdl.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=chuckw@quantumlinux.com \
--cc=jgarzik@pobox.com \
--cc=jmforbes@linuxtx.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rdunlap@xenotime.net \
--cc=stable@kernel.org \
--cc=torvalds@osdl.org \
--cc=tytso@mit.edu \
--cc=zwane@arm.linux.org.uk \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome