• Chuck Lever's avatar
    xprtrdma: Fix XDRBUF_SPARSE_PAGES support · 15261b91
    Chuck Lever authored
    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: default avatarOlga Kornievskaia <kolga@netapp.com>
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
    15261b91
rpc_rdma.c 40 KB