android_kernel_google_msm/net/sunrpc
Trond Myklebust 52b331e999 SUNRPC: Fix memory corruption issue on 32-bit highmem systems
commit 347e2233b7 upstream.

Some architectures, such as ARM-32 do not return the same base address
when you call kmap_atomic() twice on the same page.
This causes problems for the memmove() call in the XDR helper routine
"_shift_data_right_pages()", since it defeats the detection of
overlapping memory ranges, and has been seen to corrupt memory.

The fix is to distinguish between the case where we're doing an
inter-page copy or not. In the former case of we know that the memory
ranges cannot possibly overlap, so we can additionally micro-optimise
by replacing memmove() with memcpy().

Reported-by: Mark Young <MYoung@nvidia.com>
Reported-by: Matt Craighead <mcraighead@nvidia.com>
Cc: Bruce Fields <bfields@fieldses.org>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Tested-by: Matt Craighead <mcraighead@nvidia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-09-07 21:58:15 -07:00
..
auth_gss auth_gss: the list of pseudoflavors not being parsed correctly 2012-05-03 12:35:33 -04:00
xprtrdma SUNRPC: Fix a UDP transport regression 2012-10-28 10:14:13 -07:00
addr.c SUNRPC: parametrize rpc_uaddr2sockaddr() by network context 2012-01-31 19:28:12 -05:00
auth.c net: Remove unnecessary semicolons 2011-06-05 14:33:39 -07:00
auth_generic.c SUNRPC: Fix machine creds in generic_create_cred and generic_match 2012-01-23 14:03:46 -08:00
auth_null.c SUNRPC: Move the bound cred to struct rpc_rqst 2010-08-04 08:54:09 -04:00
auth_unix.c NFS/sunrpc: don't use a credential with extra groups. 2011-10-25 11:20:58 +02:00
backchannel_rqst.c SUNRPC: Fix a few sparse warnings 2012-03-11 19:30:02 -04:00
bc_svc.c SUNRPC: sunrpc should not explicitly depend on NFS config options 2011-07-15 09:12:23 -04:00
cache.c SUNRPC: Prevent kernel stack corruption on long values of flush 2012-10-28 10:14:13 -07:00
clnt.c SUNRPC: continue run over clients list on PipeFS event instead of break 2013-01-17 08:50:45 -08:00
Kconfig SUNRPC/NFS: Add Kbuild dependencies for NFS_DEBUG/RPC_DEBUG 2012-03-20 13:08:26 -04:00
Makefile SUNRPC: sunrpc should not explicitly depend on NFS config options 2011-07-15 09:12:23 -04:00
netns.h SUNRPC: create GSS auth cache per network namespace 2012-01-31 19:28:15 -05:00
rpc_pipe.c SUNRPC: Fix validity issues with rpc_pipefs sb->s_fs_info 2013-01-17 08:50:50 -08:00
rpcb_clnt.c SUNRPC: return negative value in case rpcbind client creation error 2012-08-15 08:10:05 -07:00
sched.c SUNRPC: Add barriers to ensure read ordering in rpc_wake_up_task_queue_locked 2013-04-05 10:04:14 -07:00
socklib.c sunrpc: remove the second argument of k[un]map_atomic() 2012-03-20 21:48:28 +08:00
stats.c SUNRPC: Use RCU to dereference the rpc_clnt.cl_xprt field 2012-03-02 15:36:38 -05:00
sunrpc.h SUNRPC: subscribe RPC clients to pipefs notifications 2012-01-31 18:20:25 -05:00
sunrpc_syms.c SUNRPC: register PipeFS file system after pernet sybsystem 2012-04-18 11:05:48 -04:00
svc.c SUNRPC: move per-net operations from svc_destroy() 2012-07-16 09:04:39 -07:00
svc_xprt.c svcrpc: make svc_age_temp_xprts enqueue under sv_lock 2013-03-04 06:06:43 +08:00
svcauth.c net: sunrpc: kill unused macros 2010-12-17 15:48:21 -05:00
svcauth_unix.c Merge nfs containerization work from Trond's tree 2012-03-26 11:48:54 -04:00
svcsock.c svcrpc: fix BUG() in svc_tcp_clear_pages 2012-09-14 10:00:19 -07:00
sysctl.c SUNRPC: make SUNPRC clients list per network namespace context 2012-01-31 18:20:25 -05:00
timer.c
xdr.c SUNRPC: Fix memory corruption issue on 32-bit highmem systems 2013-09-07 21:58:15 -07:00
xprt.c SUNRPC: Don't start the retransmission timer when out of socket space 2013-03-14 11:29:42 -07:00
xprtsock.c SUNRPC: Prevent races in xs_abort_connection() 2012-10-31 10:02:57 -07:00