04 Jul, 2019

5 commits

  • Fix sparse warnings:

    fs/lockd/clntproc.c:57:6: warning: symbol 'nlmclnt_put_lockowner' was not declared. Should it be static?
    fs/lockd/svclock.c:409:35: warning: symbol 'nlmsvc_lock_ops' was not declared. Should it be static?

    Reported-by: Hulk Robot
    Signed-off-by: YueHaibing
    Signed-off-by: J. Bruce Fields

    YueHaibing
     
  • Use the pid of lockd instead of the remote lock's svid for the fl_pid for
    local POSIX locks. This allows proper enumeration of which local process
    owns which lock. The svid is meaningless to local lock readers.

    Signed-off-by: Benjamin Coddington
    Signed-off-by: J. Bruce Fields

    Benjamin Coddington
     
  • Now that the NLM server allocates an nlm_lockowner for fl_owner, there's
    no need for special hashing or comparison.

    Signed-off-by: Benjamin Coddington
    Signed-off-by: J. Bruce Fields

    Benjamin Coddington
     
  • Do as the NLM client: allocate and track a struct nlm_lockowner for use as
    the fl_owner for locks created by the NLM sever. This allows us to keep
    the svid within this structure for matching locks, and will allow us to
    track the pid of lockd in a future patch. It should also allow easier
    reference of the nlm_host in conflicting locks, and simplify lock hashing
    and comparison.

    Signed-off-by: Benjamin Coddington
    [bfields@redhat.com: fix type of some error returns]
    Signed-off-by: J. Bruce Fields

    Benjamin Coddington
     
  • The nlm_lockowner structure that the client uses to track locks is
    generally useful to the server as well. Very similar functions to handle
    allocation and tracking of the nlm_lockowner will follow. Rename the client
    functions for clarity.

    Signed-off-by: Benjamin Coddington
    Signed-off-by: J. Bruce Fields

    Benjamin Coddington
     

31 May, 2019

1 commit

  • This reverts most of commit b8eee0e90f97 ("lockd: Show pid of lockd for
    remote locks"), which caused remote locks to not be differentiated between
    remote processes for NLM.

    We retain the fixup for setting the client's fl_pid to a negative value.

    Fixes: b8eee0e90f97 ("lockd: Show pid of lockd for remote locks")
    Cc: stable@vger.kernel.org

    Signed-off-by: Benjamin Coddington
    Reviewed-by: XueWei Zhang
    Signed-off-by: J. Bruce Fields

    Benjamin Coddington
     

21 May, 2019

2 commits

  • Add SPDX license identifiers to all files which:

    - Have no license information of any form

    - Have MODULE_LICENCE("GPL*") inside which was used in the initial
    scan/conversion to ignore the file

    These files fall under the project license, GPL v2 only. The resulting SPDX
    license identifier is:

    GPL-2.0-only

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     
  • Add SPDX license identifiers to all files which:

    - Have no license information of any form

    - Have EXPORT_.*_SYMBOL_GPL inside which was used in the
    initial scan/conversion to ignore the file

    These files fall under the project license, GPL v2 only. The resulting SPDX
    license identifier is:

    GPL-2.0-only

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

16 May, 2019

1 commit

  • Pull nfsd updates from Bruce Fields:
    "This consists mostly of nfsd container work:

    Scott Mayhew revived an old api that communicates with a userspace
    daemon to manage some on-disk state that's used to track clients
    across server reboots. We've been using a usermode_helper upcall for
    that, but it's tough to run those with the right namespaces, so a
    daemon is much friendlier to container use cases.

    Trond fixed nfsd's handling of user credentials in user namespaces. He
    also contributed patches that allow containers to support different
    sets of NFS protocol versions.

    The only remaining container bug I'm aware of is that the NFS reply
    cache is shared between all containers. If anyone's aware of other
    gaps in our container support, let me know.

    The rest of this is miscellaneous bugfixes"

    * tag 'nfsd-5.2' of git://linux-nfs.org/~bfields/linux: (23 commits)
    nfsd: update callback done processing
    locks: move checks from locks_free_lock() to locks_release_private()
    nfsd: fh_drop_write in nfsd_unlink
    nfsd: allow fh_want_write to be called twice
    nfsd: knfsd must use the container user namespace
    SUNRPC: rsi_parse() should use the current user namespace
    SUNRPC: Fix the server AUTH_UNIX userspace mappings
    lockd: Pass the user cred from knfsd when starting the lockd server
    SUNRPC: Temporary sockets should inherit the cred from their parent
    SUNRPC: Cache the process user cred in the RPC server listener
    nfsd: Allow containers to set supported nfs versions
    nfsd: Add custom rpcbind callbacks for knfsd
    SUNRPC: Allow further customisation of RPC program registration
    SUNRPC: Clean up generic dispatcher code
    SUNRPC: Add a callback to initialise server requests
    SUNRPC/nfs: Fix return value for nfs4_callback_compound()
    nfsd: handle legacy client tracking records sent by nfsdcld
    nfsd: re-order client tracking method selection
    nfsd: keep a tally of RECLAIM_COMPLETE operations when using nfsdcld
    nfsd: un-deprecate nfsdcld
    ...

    Linus Torvalds
     

27 Apr, 2019

2 commits


26 Apr, 2019

1 commit

  • The RPC_TASK_KILLED flag should really not be set from another context
    because it can clobber data in the struct task when task->tk_flags is
    changed non-atomically.
    Let's therefore swap out RPC_TASK_KILLED with an atomic flag, and add
    a function to set that flag and safely wake up the task.

    Signed-off-by: Trond Myklebust
    Signed-off-by: Anna Schumaker

    Trond Myklebust
     

24 Apr, 2019

4 commits


19 Mar, 2019

1 commit

  • If the last NFSv3 unmount from a given host races with a mount from the
    same host, we can destroy an nlm_host that is still in use.

    Specifically nlmclnt_lookup_host() can increment h_count on
    an nlm_host that nlmclnt_release_host() has just successfully called
    refcount_dec_and_test() on.
    Once nlmclnt_lookup_host() drops the mutex, nlm_destroy_host_lock()
    will be called to destroy the nlmclnt which is now in use again.

    The cause of the problem is that the dec_and_test happens outside the
    locked region. This is easily fixed by using
    refcount_dec_and_mutex_lock().

    Fixes: 8ea6ecc8b075 ("lockd: Create client-side nlm_host cache")
    Cc: stable@vger.kernel.org (v2.6.38+)
    Signed-off-by: NeilBrown
    Signed-off-by: Trond Myklebust

    NeilBrown
     

14 Feb, 2019

1 commit


03 Jan, 2019

2 commits

  • Pull NFS client updates from Anna Schumaker:
    "Stable bugfixes:
    - xprtrdma: Yet another double DMA-unmap # v4.20

    Features:
    - Allow some /proc/sys/sunrpc entries without CONFIG_SUNRPC_DEBUG
    - Per-xprt rdma receive workqueues
    - Drop support for FMR memory registration
    - Make port= mount option optional for RDMA mounts

    Other bugfixes and cleanups:
    - Remove unused nfs4_xdev_fs_type declaration
    - Fix comments for behavior that has changed
    - Remove generic RPC credentials by switching to 'struct cred'
    - Fix crossing mountpoints with different auth flavors
    - Various xprtrdma fixes from testing and auditing the close code
    - Fixes for disconnect issues when using xprtrdma with krb5
    - Clean up and improve xprtrdma trace points
    - Fix NFS v4.2 async copy reboot recovery"

    * tag 'nfs-for-4.21-1' of git://git.linux-nfs.org/projects/anna/linux-nfs: (63 commits)
    sunrpc: convert to DEFINE_SHOW_ATTRIBUTE
    sunrpc: Add xprt after nfs4_test_session_trunk()
    sunrpc: convert unnecessary GFP_ATOMIC to GFP_NOFS
    sunrpc: handle ENOMEM in rpcb_getport_async
    NFS: remove unnecessary test for IS_ERR(cred)
    xprtrdma: Prevent leak of rpcrdma_rep objects
    NFSv4.2 fix async copy reboot recovery
    xprtrdma: Don't leak freed MRs
    xprtrdma: Add documenting comment for rpcrdma_buffer_destroy
    xprtrdma: Replace outdated comment for rpcrdma_ep_post
    xprtrdma: Update comments in frwr_op_send
    SUNRPC: Fix some kernel doc complaints
    SUNRPC: Simplify defining common RPC trace events
    NFS: Fix NFSv4 symbolic trace point output
    xprtrdma: Trace mapping, alloc, and dereg failures
    xprtrdma: Add trace points for calls to transport switch methods
    xprtrdma: Relocate the xprtrdma_mr_map trace points
    xprtrdma: Clean up of xprtrdma chunk trace points
    xprtrdma: Remove unused fields from rpcrdma_ia
    xprtrdma: Cull dprintk() call sites
    ...

    Linus Torvalds
     
  • Pull nfsd updates from Bruce Fields:
    "Thanks to Vasily Averin for fixing a use-after-free in the
    containerized NFSv4.2 client, and cleaning up some convoluted
    backchannel server code in the process.

    Otherwise, miscellaneous smaller bugfixes and cleanup"

    * tag 'nfsd-4.21' of git://linux-nfs.org/~bfields/linux: (25 commits)
    nfs: fixed broken compilation in nfs_callback_up_net()
    nfs: minor typo in nfs4_callback_up_net()
    sunrpc: fix debug message in svc_create_xprt()
    sunrpc: make visible processing error in bc_svc_process()
    sunrpc: remove unused xpo_prep_reply_hdr callback
    sunrpc: remove svc_rdma_bc_class
    sunrpc: remove svc_tcp_bc_class
    sunrpc: remove unused bc_up operation from rpc_xprt_ops
    sunrpc: replace svc_serv->sv_bc_xprt by boolean flag
    sunrpc: use-after-free in svc_process_common()
    sunrpc: use SVC_NET() in svcauth_gss_* functions
    nfsd: drop useless LIST_HEAD
    lockd: Show pid of lockd for remote locks
    NFSD remove OP_CACHEME from 4.2 op_flags
    nfsd: Return EPERM, not EACCES, in some SETATTR cases
    sunrpc: fix cache_head leak due to queued request
    nfsd: clean up indentation, increase indentation in switch statement
    svcrdma: Optimize the logic that selects the R_key to invalidate
    nfsd: fix a warning in __cld_pipe_upcall()
    nfsd4: fix crash on writing v4_end_grace before nfsd startup
    ...

    Linus Torvalds
     

20 Dec, 2018

1 commit

  • SUNRPC has two sorts of credentials, both of which appear as
    "struct rpc_cred".
    There are "generic credentials" which are supplied by clients
    such as NFS and passed in 'struct rpc_message' to indicate
    which user should be used to authorize the request, and there
    are low-level credentials such as AUTH_NULL, AUTH_UNIX, AUTH_GSS
    which describe the credential to be sent over the wires.

    This patch replaces all the generic credentials by 'struct cred'
    pointers - the credential structure used throughout Linux.

    For machine credentials, there is a special 'struct cred *' pointer
    which is statically allocated and recognized where needed as
    having a special meaning. A look-up of a low-level cred will
    map this to a machine credential.

    Signed-off-by: NeilBrown
    Acked-by: J. Bruce Fields
    Signed-off-by: Anna Schumaker

    NeilBrown
     

15 Dec, 2018

1 commit

  • Commit 9d5b86ac13c5 ("fs/locks: Remove fl_nspid and use fs-specific l_pid
    for remote locks") specified that the l_pid returned for F_GETLK on a local
    file that has a remote lock should be the pid of the lock manager process.
    That commit, while updating other filesystems, failed to update lockd, such
    that locks created by lockd had their fl_pid set to that of the remote
    process holding the lock. Fix that here to be the pid of lockd.

    Also, fix the client case so that the returned lock pid is negative, which
    indicates a remote lock on a remote file.

    Fixes: 9d5b86ac13c5 ("fs/locks: Remove fl_nspid and use fs-specific...")
    Cc: stable@vger.kernel.org

    Signed-off-by: Benjamin Coddington
    Signed-off-by: J. Bruce Fields

    Benjamin Coddington
     

07 Dec, 2018

1 commit

  • posix_unblock_lock() is not specific to posix locks, and behaves
    nearly identically to locks_delete_block() - the former returning a
    status while the later doesn't.

    So discard posix_unblock_lock() and use locks_delete_block() instead,
    after giving that function an appropriate return value.

    Signed-off-by: NeilBrown
    Reviewed-by: J. Bruce Fields
    Signed-off-by: Jeff Layton

    NeilBrown
     

28 Nov, 2018

1 commit

  • We fail to advance the read pointer when reading the stat.oh field that
    identifies the lock-holder in a TEST result.

    This turns out not to matter if the server is knfsd, which always
    returns a zero-length field. But other servers (Ganesha is an example)
    may not do this. The result is bad values in fcntl F_GETLK results.

    Fix this.

    Signed-off-by: J. Bruce Fields

    J. Bruce Fields
     

30 Oct, 2018

1 commit


10 Aug, 2018

1 commit

  • nfsd and lockd call vfs_lock_file() to lock/unlock the inode
    returned by locks_inode(file).

    Many places in nfsd/lockd code use the inode returned by
    file_inode(file) for lock manipulation. With Overlayfs, file_inode()
    (the underlying inode) is not the same object as locks_inode() (the
    overlay inode). This can result in "Leaked POSIX lock" messages
    and eventually to a kernel crash as reported by Eddie Horng:
    https://marc.info/?l=linux-unionfs&m=153086643202072&w=2

    Fix all the call sites in nfsd/lockd that should use locks_inode().
    This is a correctness bug that manifested when overlayfs gained
    NFS export support in v4.16.

    Reported-by: Eddie Horng
    Tested-by: Eddie Horng
    Cc: Jeff Layton
    Fixes: 8383f1748829 ("ovl: wire up NFS export operations")
    Cc: stable@vger.kernel.org
    Signed-off-by: Amir Goldstein
    Signed-off-by: J. Bruce Fields

    Amir Goldstein
     

20 Mar, 2018

1 commit

  • The variables nlm_ntf_refcnt and nlm_ntf_wq are local to the source and
    do not need to be in global scope, so make them static.

    Cleans up sparse warnings:
    fs/lockd/svc.c:60:10: warning: symbol 'nlm_ntf_refcnt' was not declared.
    Should it be static?
    fs/lockd/svc.c:61:1: warning: symbol 'nlm_ntf_wq' was not declared.
    Should it be static?

    Signed-off-by: Colin Ian King
    Signed-off-by: J. Bruce Fields

    Colin Ian King
     

25 Jan, 2018

1 commit

  • The server shouldn't actually delete the struct nlm_host until it hits
    the garbage collector. In order to make that work correctly with the
    refcount API, we can bump the refcount by one, and then use
    refcount_dec_if_one() in the garbage collector.

    Signed-off-by: Trond Myklebust
    Acked-by: J. Bruce Fields

    Trond Myklebust
     

15 Jan, 2018

4 commits

  • atomic_t variables are currently used to implement reference
    counters with the following properties:
    - counter is initialized to 1 using atomic_set()
    - a resource is freed upon counter reaching zero
    - once counter reaches zero, its further
    increments aren't allowed
    - counter schema uses basic atomic operations
    (set, inc, inc_not_zero, dec_and_test, etc.)

    Such atomic variables should be converted to a newly provided
    refcount_t type and API that prevents accidental counter overflows
    and underflows. This is important since overflows and underflows
    can lead to use-after-free situation and be exploitable.

    The variable nlm_rqst.a_count is used as pure reference counter.
    Convert it to refcount_t and fix up the operations.

    **Important note for maintainers:

    Some functions from refcount_t API defined in lib/refcount.c
    have different memory ordering guarantees than their atomic
    counterparts.
    The full comparison can be seen in
    https://lkml.org/lkml/2017/11/15/57 and it is hopefully soon
    in state to be merged to the documentation tree.
    Normally the differences should not matter since refcount_t provides
    enough guarantees to satisfy the refcounting use cases, but in
    some rare cases it might matter.
    Please double check that you don't have some undocumented
    memory guarantees for this variable usage.

    For the nlm_rqst.a_count it might make a difference
    in following places:
    - nlmclnt_release_call() and nlmsvc_release_call(): decrement
    in refcount_dec_and_test() only
    provides RELEASE ordering and control dependency on success
    vs. fully ordered atomic counterpart

    Suggested-by: Kees Cook
    Reviewed-by: David Windsor
    Reviewed-by: Hans Liljestrand
    Signed-off-by: Elena Reshetova
    Signed-off-by: Trond Myklebust

    Elena Reshetova
     
  • atomic_t variables are currently used to implement reference
    counters with the following properties:
    - counter is initialized to 1 using atomic_set()
    - a resource is freed upon counter reaching zero
    - once counter reaches zero, its further
    increments aren't allowed
    - counter schema uses basic atomic operations
    (set, inc, inc_not_zero, dec_and_test, etc.)

    Such atomic variables should be converted to a newly provided
    refcount_t type and API that prevents accidental counter overflows
    and underflows. This is important since overflows and underflows
    can lead to use-after-free situation and be exploitable.

    The variable nlm_lockowner.count is used as pure reference counter.
    Convert it to refcount_t and fix up the operations.

    **Important note for maintainers:

    Some functions from refcount_t API defined in lib/refcount.c
    have different memory ordering guarantees than their atomic
    counterparts.
    The full comparison can be seen in
    https://lkml.org/lkml/2017/11/15/57 and it is hopefully soon
    in state to be merged to the documentation tree.
    Normally the differences should not matter since refcount_t provides
    enough guarantees to satisfy the refcounting use cases, but in
    some rare cases it might matter.
    Please double check that you don't have some undocumented
    memory guarantees for this variable usage.

    For the nlm_lockowner.count it might make a difference
    in following places:
    - nlm_put_lockowner(): decrement in refcount_dec_and_lock() only
    provides RELEASE ordering, control dependency on success and
    holds a spin lock on success vs. fully ordered atomic counterpart.
    No changes in spin lock guarantees.

    Suggested-by: Kees Cook
    Reviewed-by: David Windsor
    Reviewed-by: Hans Liljestrand
    Signed-off-by: Elena Reshetova
    Signed-off-by: Trond Myklebust

    Elena Reshetova
     
  • atomic_t variables are currently used to implement reference
    counters with the following properties:
    - counter is initialized to 1 using atomic_set()
    - a resource is freed upon counter reaching zero
    - once counter reaches zero, its further
    increments aren't allowed
    - counter schema uses basic atomic operations
    (set, inc, inc_not_zero, dec_and_test, etc.)

    Such atomic variables should be converted to a newly provided
    refcount_t type and API that prevents accidental counter overflows
    and underflows. This is important since overflows and underflows
    can lead to use-after-free situation and be exploitable.

    The variable nsm_handle.sm_count is used as pure reference counter.
    Convert it to refcount_t and fix up the operations.

    **Important note for maintainers:

    Some functions from refcount_t API defined in lib/refcount.c
    have different memory ordering guarantees than their atomic
    counterparts.
    The full comparison can be seen in
    https://lkml.org/lkml/2017/11/15/57 and it is hopefully soon
    in state to be merged to the documentation tree.
    Normally the differences should not matter since refcount_t provides
    enough guarantees to satisfy the refcounting use cases, but in
    some rare cases it might matter.
    Please double check that you don't have some undocumented
    memory guarantees for this variable usage.

    For the nsm_handle.sm_count it might make a difference
    in following places:
    - nsm_release(): decrement in refcount_dec_and_lock() only
    provides RELEASE ordering, control dependency on success
    and holds a spin lock on success vs. fully ordered atomic
    counterpart. No change for the spin lock guarantees.

    Suggested-by: Kees Cook
    Reviewed-by: David Windsor
    Reviewed-by: Hans Liljestrand
    Signed-off-by: Elena Reshetova
    Signed-off-by: Trond Myklebust

    Elena Reshetova
     
  • atomic_t variables are currently used to implement reference
    counters with the following properties:
    - counter is initialized to 1 using atomic_set()
    - a resource is freed upon counter reaching zero
    - once counter reaches zero, its further
    increments aren't allowed
    - counter schema uses basic atomic operations
    (set, inc, inc_not_zero, dec_and_test, etc.)

    Such atomic variables should be converted to a newly provided
    refcount_t type and API that prevents accidental counter overflows
    and underflows. This is important since overflows and underflows
    can lead to use-after-free situation and be exploitable.

    The variable nlm_host.h_count is used as pure reference counter.
    Convert it to refcount_t and fix up the operations.

    **Important note for maintainers:

    Some functions from refcount_t API defined in lib/refcount.c
    have different memory ordering guarantees than their atomic
    counterparts.
    The full comparison can be seen in
    https://lkml.org/lkml/2017/11/15/57 and it is hopefully soon
    in state to be merged to the documentation tree.
    Normally the differences should not matter since refcount_t provides
    enough guarantees to satisfy the refcounting use cases, but in
    some rare cases it might matter.
    Please double check that you don't have some undocumented
    memory guarantees for this variable usage.

    For the nlm_host.h_count it might make a difference
    in following places:
    - nlmsvc_release_host(): decrement in refcount_dec()
    provides RELEASE ordering, while original atomic_dec()
    was fully unordered. Since the change is for better, it
    should not matter.
    - nlmclnt_release_host(): decrement in refcount_dec_and_test() only
    provides RELEASE ordering and control dependency on success
    vs. fully ordered atomic counterpart. It doesn't seem to
    matter in this case since object freeing happens under mutex
    lock anyway.

    Suggested-by: Kees Cook
    Reviewed-by: David Windsor
    Reviewed-by: Hans Liljestrand
    Signed-off-by: Elena Reshetova
    Signed-off-by: Trond Myklebust

    Elena Reshetova
     

28 Nov, 2017

5 commits

  • nlm_complain_hosts() walks through nlm_server_hosts hlist, which should
    be protected by nlm_host_mutex.

    Signed-off-by: Vasily Averin
    Reviewed-by: Jeff Layton
    Signed-off-by: J. Bruce Fields

    Vasily Averin
     
  • lockd_inet[6]addr_event use nlmsvc_rqst without taken nlmsvc_mutex,
    nlmsvc_rqst can be changed during execution of notifiers and crash the host.

    Patch enables access to nlmsvc_rqst only when it was correctly initialized
    and delays its cleanup until notifiers are no longer in use.

    Note that nlmsvc_rqst can be temporally set to ERR_PTR, so the "if
    (nlmsvc_rqst)" check in notifiers is insufficient on its own.

    Signed-off-by: Vasily Averin
    Tested-by: Scott Mayhew
    Signed-off-by: J. Bruce Fields

    Vasily Averin
     
  • Commit efda760fe95ea ("lockd: fix lockd shutdown race") is incorrect,
    it removes lockd_manager and disarm grace_period_end for init_net only.

    If nfsd was started from another net namespace lockd_up_net() calls
    set_grace_period() that adds lockd_manager into per-netns list
    and queues grace_period_end delayed work.

    These action should be reverted in lockd_down_net().
    Otherwise it can lead to double list_add on after restart nfsd in netns,
    and to use-after-free if non-disarmed delayed work will be executed after netns destroy.

    Fixes: efda760fe95e ("lockd: fix lockd shutdown race")
    Cc: stable@vger.kernel.org
    Signed-off-by: Vasily Averin
    Signed-off-by: J. Bruce Fields

    Vasily Averin
     
  • Signed-off-by: Vasily Averin
    Signed-off-by: J. Bruce Fields

    Vasily Averin
     
  • Publishing of net pointer is not safe,
    use net->ns.inum as net ID in debug messages

    [ 171.757678] lockd_up_net: per-net data created; net=f00001e7
    [ 171.767188] NFSD: starting 90-second grace period (net f00001e7)
    [ 300.653313] lockd: nuking all hosts in net f00001e7...
    [ 300.653641] lockd: host garbage collection for net f00001e7
    [ 300.653968] lockd: nlmsvc_mark_resources for net f00001e7
    [ 300.711483] lockd_down_net: per-net data destroyed; net=f00001e7
    [ 300.711847] lockd: nuking all hosts in net 0...
    [ 300.711847] lockd: host garbage collection for net 0
    [ 300.711848] lockd: nlmsvc_mark_resources for net 0

    Signed-off-by: Vasily Averin
    Signed-off-by: J. Bruce Fields

    Vasily Averin
     

19 Nov, 2017

1 commit

  • Pull nfsd updates from Bruce Fields:
    "Lots of good bugfixes, including:

    - fix a number of races in the NFSv4+ state code

    - fix some shutdown crashes in multiple-network-namespace cases

    - relax our 4.1 session limits; if you've an artificially low limit
    to the number of 4.1 clients that can mount simultaneously, try
    upgrading"

    * tag 'nfsd-4.15' of git://linux-nfs.org/~bfields/linux: (22 commits)
    SUNRPC: Improve ordering of transport processing
    nfsd: deal with revoked delegations appropriately
    svcrdma: Enqueue after setting XPT_CLOSE in completion handlers
    nfsd: use nfs->ns.inum as net ID
    rpc: remove some BUG()s
    svcrdma: Preserve CB send buffer across retransmits
    nfds: avoid gettimeofday for nfssvc_boot time
    fs, nfsd: convert nfs4_file.fi_ref from atomic_t to refcount_t
    fs, nfsd: convert nfs4_cntl_odstate.co_odcount from atomic_t to refcount_t
    fs, nfsd: convert nfs4_stid.sc_count from atomic_t to refcount_t
    lockd: double unregister of inetaddr notifiers
    nfsd4: catch some false session retries
    nfsd4: fix cached replies to solo SEQUENCE compounds
    sunrcp: make function _svc_create_xprt static
    SUNRPC: Fix tracepoint storage issues with svc_recv and svc_rqst_status
    nfsd: use ARRAY_SIZE
    nfsd: give out fewer session slots as limit approaches
    nfsd: increase DRC cache limit
    nfsd: remove unnecessary nofilehandle checks
    nfs_common: convert int to bool
    ...

    Linus Torvalds
     

16 Nov, 2017

1 commit

  • Pull module updates from Jessica Yu:
    "Summary of modules changes for the 4.15 merge window:

    - treewide module_param_call() cleanup, fix up set/get function
    prototype mismatches, from Kees Cook

    - minor code cleanups"

    * tag 'modules-for-v4.15' of git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux:
    module: Do not paper over type mismatches in module_param_call()
    treewide: Fix function prototypes for module_param_call()
    module: Prepare to convert all module_param_call() prototypes
    kernel/module: Delete an error message for a failed memory allocation in add_module_usage()

    Linus Torvalds
     

08 Nov, 2017

1 commit

  • lockd_up() can call lockd_unregister_notifiers twice:
    inside lockd_start_svc() when it calls lockd_svc_exit_thread()
    and then in error path of lockd_up()

    Patch forces lockd_start_svc() to unregister notifiers in all error cases
    and removes extra unregister in error path of lockd_up().

    Fixes: cb7d224f82e4 "lockd: unregister notifier blocks if the service ..."
    Signed-off-by: Vasily Averin
    Cc: stable@vger.kernel.org
    Reviewed-by: Jeff Layton
    Signed-off-by: J. Bruce Fields

    Vasily Averin