1. 13 6月, 2015 2 次提交
  2. 31 3月, 2015 3 次提交
  3. 24 2月, 2015 1 次提交
    • C
      xprtrdma: Store RDMA credits in unsigned variables · 9b1dcbc8
      Chuck Lever 提交于
      Dan Carpenter's static checker pointed out:
      
         net/sunrpc/xprtrdma/rpc_rdma.c:879 rpcrdma_reply_handler()
         warn: can 'credits' be negative?
      
      "credits" is defined as an int. The credits value comes from the
      server as a 32-bit unsigned integer.
      
      A malicious or broken server can plant a large unsigned integer in
      that field which would result in an underflow in the following
      logic, potentially triggering a deadlock of the mount point by
      blocking the client from issuing more RPC requests.
      
      net/sunrpc/xprtrdma/rpc_rdma.c:
      
        876          credits = be32_to_cpu(headerp->rm_credit);
        877          if (credits == 0)
        878                  credits = 1;    /* don't deadlock */
        879          else if (credits > r_xprt->rx_buf.rb_max_requests)
        880                  credits = r_xprt->rx_buf.rb_max_requests;
        881
        882          cwnd = xprt->cwnd;
        883          xprt->cwnd = credits << RPC_CWNDSHIFT;
        884          if (xprt->cwnd > cwnd)
        885                  xprt_release_rqst_cong(rqst->rq_task);
      Reported-by: NDan Carpenter <dan.carpenter@oracle.com>
      Fixes: eba8ff66 ("xprtrdma: Move credit update to RPC . . .")
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NAnna Schumaker <Anna.Schumaker@Netapp.com>
      9b1dcbc8
  4. 30 1月, 2015 9 次提交
  5. 25 11月, 2014 1 次提交
  6. 01 8月, 2014 2 次提交
  7. 04 6月, 2014 10 次提交
  8. 18 3月, 2014 1 次提交
    • C
      SUNRPC: Fix large reads on NFS/RDMA · 2b7bbc96
      Chuck Lever 提交于
      After commit a11a2bf4, "SUNRPC: Optimise away unnecessary data moves
      in xdr_align_pages", Thu Aug 2 13:21:43 2012, READs larger than a
      few hundred bytes via NFS/RDMA no longer work.  This commit exposed
      a long-standing bug in rpcrdma_inline_fixup().
      
      I reproduce this with an rsize=4096 mount using the cthon04 basic
      tests.  Test 5 fails with an EIO error.
      
      For my reproducer, kernel log shows:
      
        NFS: server cheating in read reply: count 4096 > recvd 0
      
      rpcrdma_inline_fixup() is zeroing the xdr_stream::page_len field,
      and xdr_align_pages() is now returning that value to the READ XDR
      decoder function.
      
      That field is set up by xdr_inline_pages() by the READ XDR encoder
      function.  As far as I can tell, it is supposed to be left alone
      after that, as it describes the dimensions of the reply xdr_stream,
      not the contents of that stream.
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=68391Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      2b7bbc96
  9. 01 2月, 2013 1 次提交
  10. 21 3月, 2012 1 次提交
  11. 20 3月, 2012 1 次提交
  12. 12 3月, 2011 1 次提交
    • T
      RPCRDMA: Fix to XDR page base interpretation in marshalling logic. · bd7ea31b
      Tom Tucker 提交于
      The RPCRDMA marshalling logic assumed that xdr->page_base was an
      offset into the first page of xdr->page_list. It is in fact an
      offset into the xdr->page_list itself, that is, it selects the
      first page in the page_list and the offset into that page.
      
      The symptom depended in part on the rpc_memreg_strategy, if it was
      FRMR, or some other one-shot mapping mode, the connection would get
      torn down on a base and bounds error. When the badly marshalled RPC
      was retransmitted it would reconnect, get the error, and tear down the
      connection again in a loop forever. This resulted in a hung-mount. For
      the other modes, it would result in silent data corruption. This bug is
      most easily reproduced by writing more data than the filesystem
      has space for.
      
      This fix corrects the page_base assumption and otherwise simplifies
      the iov mapping logic.
      Signed-off-by: NTom Tucker <tom@ogc.us>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      bd7ea31b
  13. 12 8月, 2010 1 次提交
  14. 12 3月, 2009 1 次提交
  15. 11 10月, 2008 4 次提交
  16. 21 9月, 2008 1 次提交