1
0
Fork 0
alistair23-linux/net/sunrpc
Chuck Lever 3ee6a2bc14 xprtrdma: Fix XDRBUF_SPARSE_PAGES support
commit 15261b9126 upstream.

Olga K. observed that rpcrdma_marsh_req() allocates sparse pages
only when it has determined that a Reply chunk is necessary. There
are plenty of cases where no Reply chunk is needed, but the
XDRBUF_SPARSE_PAGES flag is set. The result would be a crash in
rpcrdma_inline_fixup() when it tries to copy parts of the received
Reply into a missing page.

To avoid crashing, handle sparse page allocation up front.

Until XATTR support was added, this issue did not appear often
because the only SPARSE_PAGES consumer always expected a reply large
enough to always require a Reply chunk.

Reported-by: Olga Kornievskaia <kolga@netapp.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-12-30 11:51:38 +01:00
..
auth_gss SUNRPC: fix copying of multiple pages in gss_read_proxy_verf() 2020-10-29 09:57:56 +01:00
xprtrdma xprtrdma: Fix XDRBUF_SPARSE_PAGES support 2020-12-30 11:51:38 +01:00
Kconfig SUNRPC: Drop redundant CONFIG_ from CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES 2019-07-06 14:54:53 -04:00
Makefile SUNRPC: remove generic cred code. 2018-12-19 13:52:46 -05:00
addr.c net: sunrpc: Fix off-by-one issues in 'rpc_ntop6' 2020-06-24 17:50:35 +02:00
auth.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
auth_null.c SUNRPC: Add rpc_auth::au_ralign field 2019-02-14 11:48:36 -05:00
auth_unix.c SUNRPC: Use the client user namespace when encoding creds 2019-04-26 16:24:32 -04:00
backchannel_rqst.c SUNRPC: Destroy the back channel when we destroy the host transport 2019-10-30 12:04:35 -04:00
cache.c sunrpc: Fix potential leaks in sunrpc_cache_unhash() 2020-02-24 08:36:55 +01:00
clnt.c SUNRPC: Signalled ASYNC tasks need to exit 2020-05-20 08:20:24 +02:00
debugfs.c net: sunrpc: Fix 'snprintf' return value check in 'do_xprt_debugfs' 2020-12-30 11:51:16 +01:00
netns.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rpc_pipe.c sunrpc: fixed rollback in rpc_gssd_dummy_populate() 2020-06-30 15:37:11 -04:00
rpcb_clnt.c SUNRPC: stop printk reading past end of string 2020-09-23 12:40:36 +02:00
sched.c SUNRPC: rpc_wake_up() should wake up tasks in the correct order 2020-12-30 11:51:15 +01:00
socklib.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
stats.c Merge branch 'multipath_tcp' 2019-07-06 14:54:52 -04:00
sunrpc.h sunrpc: check that domain table is empty at module unload. 2020-08-05 09:59:41 +02:00
sunrpc_syms.c sunrpc: check that domain table is empty at module unload. 2020-08-05 09:59:41 +02:00
svc.c nfsd: Fix NFSv4 READ on RDMA when using readv 2020-08-11 15:33:42 +02:00
svc_xprt.c SUNRPC: Fix a potential buffer overflow in 'svc_print_xprts()' 2020-10-01 13:17:50 +02:00
svcauth.c sunrpc: check that domain table is empty at module unload. 2020-08-05 09:59:41 +02:00
svcauth_unix.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
svcsock.c nfsd: Fix NFSv4 READ on RDMA when using readv 2020-08-11 15:33:42 +02:00
sysctl.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
timer.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
xdr.c SUNRPC: Properly set the @subbuf parameter of xdr_buf_subsegment() 2020-06-30 15:37:12 -04:00
xprt.c SUNRPC: xprt_load_transport() needs to support the netid "rdma6" 2020-12-30 11:51:16 +01:00
xprtmultipath.c SUNRPC: Optimise transport balancing code 2019-07-18 14:43:52 -04:00
xprtsock.c sunrpc: fix xs_read_xdr_buf for partial pages receive 2020-12-30 11:51:26 +01:00