1. 23 12月, 2015 1 次提交
  2. 14 12月, 2015 1 次提交
  3. 08 12月, 2015 1 次提交
    • T
      SUNRPC: Fix callback channel · 756b9b37
      Trond Myklebust 提交于
      The NFSv4.1 callback channel is currently broken because the receive
      message will keep shrinking because the backchannel receive buffer size
      never gets reset.
      The easiest solution to this problem is instead of changing the receive
      buffer, to rather adjust the copied request.
      
      Fixes: 38b7631f ("nfs4: limit callback decoding to received bytes")
      Cc: Benjamin Coddington <bcodding@redhat.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      756b9b37
  4. 02 12月, 2015 1 次提交
    • E
      net: rename SOCK_ASYNC_NOSPACE and SOCK_ASYNC_WAITDATA · 9cd3e072
      Eric Dumazet 提交于
      This patch is a cleanup to make following patch easier to
      review.
      
      Goal is to move SOCK_ASYNC_NOSPACE and SOCK_ASYNC_WAITDATA
      from (struct socket)->flags to a (struct socket_wq)->flags
      to benefit from RCU protection in sock_wake_async()
      
      To ease backports, we rename both constants.
      
      Two new helpers, sk_set_bit(int nr, struct sock *sk)
      and sk_clear_bit(int net, struct sock *sk) are added so that
      following patch can change their implementation.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9cd3e072
  5. 24 11月, 2015 1 次提交
    • B
      nfs4: limit callback decoding to received bytes · 38b7631f
      Benjamin Coddington 提交于
      A truncated cb_compound request will cause the client to decode null or
      data from a previous callback for nfs4.1 backchannel case, or uninitialized
      data for the nfs4.0 case. This is because the path through
      svc_process_common() advances the request's iov_base and decrements iov_len
      without adjusting the overall xdr_buf's len field.  That causes
      xdr_init_decode() to set up the xdr_stream with an incorrect length in
      nfs4_callback_compound().
      
      Fixing this for the nfs4.1 backchannel case first requires setting the
      correct iov_len and page_len based on the length of received data in the
      same manner as the nfs4.0 case.
      
      Then the request's xdr_buf length can be adjusted for both cases based upon
      the remaining iov_len and page_len.
      Signed-off-by: NBenjamin Coddington <bcodding@redhat.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      38b7631f
  6. 11 11月, 2015 1 次提交
  7. 10 11月, 2015 1 次提交
  8. 04 11月, 2015 2 次提交
  9. 03 11月, 2015 17 次提交
  10. 29 10月, 2015 3 次提交
  11. 24 10月, 2015 3 次提交
    • N
      sunrpc/cache: make cache flushing more reliable. · 77862036
      Neil Brown 提交于
      The caches used to store sunrpc authentication information can be
      flushed by writing a timestamp to a file in /proc.
      
      This timestamp has a one-second resolution and any entry in cache that
      was last_refreshed *before* that time is treated as expired.
      
      This is problematic as it is not possible to reliably flush the cache
      without interrupting NFS service.
      If the current time is written to the "flush" file, any entry that was
      added since the current second started will still be treated as valid.
      If one second beyond than the current time is written to the file
      then no entries can be valid until the second ticks over.  This will
      mean that no NFS request will be handled for up to 1 second.
      
      To resolve this issue we make two changes:
      
      1/ treat an entry as expired if the timestamp when it was last_refreshed
        is before *or the same as* the expiry time.  This means that current
        code which writes out the current time will now flush the cache
        reliably.
      
      2/ when a new entry in added to the cache -  set the last_refresh timestamp
        to 1 second *beyond* the current flush time, when that not in the
        past.
        This ensures that newly added entries will always be valid.
      
      Now that we have a very reliable way to flush the cache, and also
      since we are using "since-boot" timestamps which are monotonic,
      change cache_purge() to set the smallest future flush_time which
      will work, and leave it there: don't revert to '1'.
      
      Also disable the setting of the 'flush_time' far into the future.
      That has never been useful and is now awkward as it would cause
      last_refresh times to be strange.
      Finally: if a request is made to set the 'flush_time' to the current
      second, assume the intent is to flush the cache and advance it, if
      necessary, to 1 second beyond the current 'flush_time' so that all
      active entries will be deemed to be expired.
      
      As part of this we need to add a 'cache_detail' arg to cache_init()
      and cache_fresh_locked() so they can find the current ->flush_time.
      Signed-off-by: NNeilBrown <neilb@suse.com>
      Reported-by: NOlaf Kirch <okir@suse.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      77862036
    • A
      sunrpc: avoid warning in gss_key_timeout · cc6a7aab
      Arnd Bergmann 提交于
      The gss_key_timeout() function causes a harmless warning in some
      configurations, e.g. ARM imx_v6_v7_defconfig with gcc-5.2, if the
      compiler cannot figure out the state of the 'expire' variable across
      an rcu_read_unlock():
      
      net/sunrpc/auth_gss/auth_gss.c: In function 'gss_key_timeout':
      net/sunrpc/auth_gss/auth_gss.c:1422:211: warning: 'expire' may be used uninitialized in this function [-Wmaybe-uninitialized]
      
      To avoid this warning without adding a bogus initialization, this
      rewrites the function so the comparison is done inside of the
      critical section. As a side-effect, it also becomes slightly
      easier to understand because the implementation now more closely
      resembles the comment above it.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Fixes: c5e6aecd ("sunrpc: fix RCU handling of gc_ctx field")
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      cc6a7aab
    • T
      SUNRPC: Use MSG_SENDPAGE_NOTLAST when calling sendpage() · 226453d8
      Trond Myklebust 提交于
      If we're sending more pages via kernel_sendpage(), then set
      MSG_SENDPAGE_NOTLAST.
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      226453d8
  12. 12 10月, 2015 1 次提交
  13. 08 10月, 2015 6 次提交
  14. 07 10月, 2015 1 次提交