1. 06 Feb, 2020 4 commits
  2. 22 Jan, 2020 16 commits
  3. 03 Jan, 2020 3 commits
  4. 20 Dec, 2019 3 commits
    • Arnd Bergmann's avatar
      nfsd: remove nfs4_reset_lease() declarations · 364d5814
      Arnd Bergmann authored
      The function was removed a long time ago, but the declaration
      and a dummy implementation are still there, referencing the
      deprecated time_t type.
      
      Remove both.
      
      Fixes: f958a132 ("nfsd4: remove unnecessary lease-setting function")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      364d5814
    • Arnd Bergmann's avatar
      nfsd: use ktime_get_real_seconds() in nfs4_verifier · 9104ae49
      Arnd Bergmann authored
      gen_confirm() generates a unique identifier based on the current
      time. This overflows in year 2038, but that is harmless since it
      generally does not lead to duplicates, as long as the time has
      been initialized by a real-time clock or NTP.
      
      Using ktime_get_boottime_seconds() or ktime_get_seconds() would
      avoid the overflow, but it would be more likely to result in
      non-unique numbers.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      9104ae49
    • Arnd Bergmann's avatar
      nfsd: use boottime for lease expiry calculation · 20b7d86f
      Arnd Bergmann authored
      A couple of time_t variables are only used to track the state of the
      lease time and its expiration. The code correctly uses the 'time_after()'
      macro to make this work on 32-bit architectures even beyond year 2038,
      but the get_seconds() function and the time_t type itself are deprecated
      as they behave inconsistently between 32-bit and 64-bit architectures
      and often lead to code that is not y2038 safe.
      
      As a minor issue, using get_seconds() leads to problems with concurrent
      settimeofday() or clock_settime() calls, in the worst case timeout never
      triggering after the time has been set backwards.
      
      Change nfsd to use time64_t and ktime_get_boottime_seconds() here. This
      is clearly excessive, as boottime by itself means we never go beyond 32
      bits, but it does mean we handle this correctly and consistently without
      having to worry about corner cases and should be no more expensive than
      the previous implementation on 64-bit architectures.
      
      The max_cb_time() function gets changed in order to avoid an expensive
      64-bit division operation, but as the lease time is at most one hour,
      there is no change in behavior.
      
      Also do the same for server-to-server copy expiration time.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      [bfields@redhat.com: fix up copy expiration]
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      20b7d86f
  5. 19 Dec, 2019 12 commits
  6. 17 Dec, 2019 1 commit
  7. 09 Dec, 2019 1 commit
    • J. Bruce Fields's avatar
      nfsd4: avoid NULL deference on strange COPY compounds · d781e3df
      J. Bruce Fields authored
      With cross-server COPY we've introduced the possibility that the current
      or saved filehandle might not have fh_dentry/fh_export filled in, but we
      missed a place that assumed it was.  I think this could be triggered by
      a compound like:
      
      	PUTFH(foreign filehandle)
      	GETATTR
      	SAVEFH
      	COPY
      
      First, check_if_stalefh_allowed sets no_verify on the first (PUTFH) op.
      Then op_func = nfsd4_putfh runs and leaves current_fh->fh_export NULL.
      need_wrongsec_check returns true, since this PUTFH has OP_IS_PUTFH_LIKE
      set and GETATTR does not have OP_HANDLES_WRONGSEC set.
      
      We should probably also consider tightening the checks in
      check_if_stalefh_allowed and double-checking that we don't assume the
      filehandle is verified elsewhere in the compound.  But I think this
      fixes the immediate issue.
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Fixes: 4e48f1cccab3 "NFSD: allow inter server COPY to have... "
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      d781e3df