linux/arch/parisc
John David Anglin 6d6bb1075f parisc: Fix validity check of pointer size argument in new CAS implementation
commit 05f016d2ca upstream.

As noted by Christoph Biedl, passing a pointer size of 4 in the new CAS
implementation causes a kernel crash.  The attached patch corrects the
off by one error in the argument validity check.

In reviewing the code, I noticed that we only perform word operations
with the pointer size argument.  The subi instruction intentionally uses
a word condition on 64-bit kernels.  Nullification was used instead of a
cmpib instruction as the branch should never be taken.  The shlw
pseudo-operation generates a depw,z instruction and it clears the target
before doing a shift left word deposit.  Thus, we don't need to clip the
upper 32 bits of this argument on 64-bit kernels.

Tested with a gcc testsuite run with a 64-bit kernel.  The gcc atomic
code in libgcc is the only direct user of the new CAS implementation
that I am aware of.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2018-02-13 18:42:24 +00:00
..
configs USB: remove CONFIG_USB_DEBUG from defconfig files 2014-05-28 09:40:45 -07:00
hpux execve: use 'struct filename *' for executable name passing 2014-02-05 12:54:53 -08:00
include parisc: DMA API: return error instead of BUG_ON for dma ops on non dma devs 2017-10-12 15:28:00 +01:00
kernel parisc: Fix validity check of pointer size argument in new CAS implementation 2018-02-13 18:42:24 +00:00
lib parisc: Unbreak handling exceptions from kernel modules 2016-05-01 00:06:10 +02:00
math-emu parisc: remove duplicate define 2013-11-07 22:28:15 +01:00
mm parisc: Report SIGSEGV instead of SIGBUS when running out of stack 2017-10-12 15:27:59 +01:00
oprofile oprofile: more whitespace fixes 2008-10-15 20:55:51 +02:00
defpalo.conf parisc: switch to gzip-compressed vmlinuz kernel 2013-07-09 22:09:20 +02:00
install.sh parisc: make "make install" not depend on vmlinux 2013-11-07 22:28:06 +01:00
Kconfig Merge branch 'parisc-3.15-4' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux 2014-05-20 14:35:28 +09:00
Kconfig.debug consolidate per-arch stack overflow debugging options 2013-07-04 11:25:39 -07:00
Makefile parisc: Only use -mfast-indirect-calls option for 32-bit kernel builds 2014-10-05 13:41:08 -07:00
nm Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00