24 Apr, 2018

1 commit

  • commit 4a3877c4cedd95543f8726b0a98743ed8db0c0fb upstream.

    if we ever hit rpc_gssd_dummy_depopulate() dentry passed to
    it has refcount equal to 1. __rpc_rmpipe() drops it and
    dput() done after that hits an already freed dentry.

    Cc: stable@kernel.org
    Signed-off-by: Al Viro
    Signed-off-by: Greg Kroah-Hartman

    Al Viro
     

28 Sep, 2016

1 commit

  • CURRENT_TIME macro is not appropriate for filesystems as it
    doesn't use the right granularity for filesystem timestamps.
    Use current_time() instead.

    CURRENT_TIME is also not y2038 safe.

    This is also in preparation for the patch that transitions
    vfs timestamps to use 64 bit time and hence make them
    y2038 safe. As part of the effort current_time() will be
    extended to do range checks. Hence, it is necessary for all
    file system timestamps to use current_time(). Also,
    current_time() will be transitioned along with vfs to be
    y2038 safe.

    Note that whenever a single call to current_time() is used
    to change timestamps in different inodes, it is because they
    share the same time granularity.

    Signed-off-by: Deepa Dinamani
    Reviewed-by: Arnd Bergmann
    Acked-by: Felipe Balbi
    Acked-by: Steven Whitehouse
    Acked-by: Ryusuke Konishi
    Acked-by: David Sterba
    Signed-off-by: Al Viro

    Deepa Dinamani
     

24 Jun, 2016

1 commit

  • Today what is normally called data (the mount options) is not passed
    to fill_super through mount_ns.

    Pass the mount options and the namespace separately to mount_ns so
    that filesystems such as proc that have mount options, can use
    mount_ns.

    Pass the user namespace to mount_ns so that the standard permission
    check that verifies the mounter has permissions over the namespace can
    be performed in mount_ns instead of in each filesystems .mount method.
    Thus removing the duplication between mqueuefs and proc in terms of
    permission checks. The extra permission check does not currently
    affect the rpc_pipefs filesystem and the nfsd filesystem as those
    filesystems do not currently allow unprivileged mounts. Without
    unpvileged mounts it is guaranteed that the caller has already passed
    capable(CAP_SYS_ADMIN) which guarantees extra permission check will
    pass.

    Update rpc_pipefs and the nfsd filesystem to ensure that the network
    namespace reference is always taken in fill_super and always put in kill_sb
    so that the logic is simpler and so that errors originating inside of
    fill_super do not cause a network namespace leak.

    Acked-by: Seth Forshee
    Signed-off-by: "Eric W. Biederman"

    Eric W. Biederman
     

05 Apr, 2016

1 commit

  • PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} macros were introduced *long* time
    ago with promise that one day it will be possible to implement page
    cache with bigger chunks than PAGE_SIZE.

    This promise never materialized. And unlikely will.

    We have many places where PAGE_CACHE_SIZE assumed to be equal to
    PAGE_SIZE. And it's constant source of confusion on whether
    PAGE_CACHE_* or PAGE_* constant should be used in a particular case,
    especially on the border between fs and mm.

    Global switching to PAGE_CACHE_SIZE != PAGE_SIZE would cause to much
    breakage to be doable.

    Let's stop pretending that pages in page cache are special. They are
    not.

    The changes are pretty straight-forward:

    - << (PAGE_CACHE_SHIFT - PAGE_SHIFT) -> ;

    - >> (PAGE_CACHE_SHIFT - PAGE_SHIFT) -> ;

    - PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} -> PAGE_{SIZE,SHIFT,MASK,ALIGN};

    - page_cache_get() -> get_page();

    - page_cache_release() -> put_page();

    This patch contains automated changes generated with coccinelle using
    script below. For some reason, coccinelle doesn't patch header files.
    I've called spatch for them manually.

    The only adjustment after coccinelle is revert of changes to
    PAGE_CAHCE_ALIGN definition: we are going to drop it later.

    There are few places in the code where coccinelle didn't reach. I'll
    fix them manually in a separate patch. Comments and documentation also
    will be addressed with the separate patch.

    virtual patch

    @@
    expression E;
    @@
    - E << (PAGE_CACHE_SHIFT - PAGE_SHIFT)
    + E

    @@
    expression E;
    @@
    - E >> (PAGE_CACHE_SHIFT - PAGE_SHIFT)
    + E

    @@
    @@
    - PAGE_CACHE_SHIFT
    + PAGE_SHIFT

    @@
    @@
    - PAGE_CACHE_SIZE
    + PAGE_SIZE

    @@
    @@
    - PAGE_CACHE_MASK
    + PAGE_MASK

    @@
    expression E;
    @@
    - PAGE_CACHE_ALIGN(E)
    + PAGE_ALIGN(E)

    @@
    expression E;
    @@
    - page_cache_get(E)
    + get_page(E)

    @@
    expression E;
    @@
    - page_cache_release(E)
    + put_page(E)

    Signed-off-by: Kirill A. Shutemov
    Acked-by: Michal Hocko
    Signed-off-by: Linus Torvalds

    Kirill A. Shutemov
     

23 Jan, 2016

1 commit

  • parallel to mutex_{lock,unlock,trylock,is_locked,lock_nested},
    inode_foo(inode) being mutex_foo(&inode->i_mutex).

    Please, use those for access to ->i_mutex; over the coming cycle
    ->i_mutex will become rwsem, with ->lookup() done with it held
    only shared.

    Signed-off-by: Al Viro

    Al Viro
     

15 Jan, 2016

1 commit

  • Mark those kmem allocations that are known to be easily triggered from
    userspace as __GFP_ACCOUNT/SLAB_ACCOUNT, which makes them accounted to
    memcg. For the list, see below:

    - threadinfo
    - task_struct
    - task_delay_info
    - pid
    - cred
    - mm_struct
    - vm_area_struct and vm_region (nommu)
    - anon_vma and anon_vma_chain
    - signal_struct
    - sighand_struct
    - fs_struct
    - files_struct
    - fdtable and fdtable->full_fds_bits
    - dentry and external_name
    - inode for all filesystems. This is the most tedious part, because
    most filesystems overwrite the alloc_inode method.

    The list is far from complete, so feel free to add more objects.
    Nevertheless, it should be close to "account everything" approach and
    keep most workloads within bounds. Malevolent users will be able to
    breach the limit, but this was possible even with the former "account
    everything" approach (simply because it did not account everything in
    fact).

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Vladimir Davydov
    Acked-by: Johannes Weiner
    Acked-by: Michal Hocko
    Cc: Tejun Heo
    Cc: Greg Thelen
    Cc: Christoph Lameter
    Cc: Pekka Enberg
    Cc: David Rientjes
    Cc: Joonsoo Kim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vladimir Davydov
     

16 Apr, 2015

1 commit


13 Jul, 2014

1 commit

  • Drop cast on the result of kmalloc and similar functions.

    The semantic patch that makes this change is as follows:

    //
    @@
    type T;
    @@

    - (T *)
    (\(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\|
    kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\)(...))
    //

    Signed-off-by: Himangi Saraogi
    Acked-by: Julia Lawall
    Signed-off-by: Trond Myklebust

    Himangi Saraogi
     

11 Dec, 2013

1 commit


07 Dec, 2013

4 commits

  • rpc.gssd expects to see an "info" file in each clntXX dir. Since adding
    the dummy gssd pipe, users that run rpc.gssd see a lot of these messages
    spamming the logs:

    rpc.gssd[508]: ERROR: can't open /var/lib/nfs/rpc_pipefs/gssd/clntXX/info: No such file or directory
    rpc.gssd[508]: ERROR: failed to read service info

    Add a dummy gssd/clntXX/info file to help silence these messages.

    Signed-off-by: Jeff Layton
    Signed-off-by: Trond Myklebust

    Jeff Layton
     
  • In the event that we create the gssd/clntXX dir, but the pipe creation
    subsequently fails, then we should remove the clntXX dir before
    returning.

    Signed-off-by: Jeff Layton
    Signed-off-by: Trond Myklebust

    Jeff Layton
     
  • Now that we have a more reliable method to tell if gssd is running, we
    can replace the sn->gssd_running flag with a function that will query to
    see if it's up and running.

    There's also no need to attempt an upcall that we know will fail, so
    just return -EACCES if gssd isn't running. Finally, fix the warn_gss()
    message not to claim that that the upcall timed out since we don't
    necesarily perform one now when gssd isn't running, and remove the
    extraneous newline from the message.

    Signed-off-by: Jeff Layton
    Signed-off-by: Trond Myklebust

    Jeff Layton
     
  • rpc.gssd will naturally hold open any pipe named */clnt*/gssd that shows
    up under rpc_pipefs. That behavior gives us a reliable mechanism to tell
    whether it's actually running or not.

    Create a new toplevel "gssd" directory in rpc_pipefs when it's mounted.
    Under that directory create another directory called "clntXX", and then
    within that a pipe called "gssd".

    We'll never send an upcall along that pipe, and any downcall written to
    it will just return -EINVAL.

    Signed-off-by: Jeff Layton
    Signed-off-by: Trond Myklebust

    Jeff Layton
     

16 Nov, 2013

1 commit


25 Oct, 2013

1 commit


01 Sep, 2013

2 commits


30 Aug, 2013

2 commits

  • The current system requires everyone to set up notifiers, manage directory
    locking, etc.
    What we really want to do is have the rpc_client create its directory,
    and then create all the entries.

    This patch will allow the RPCSEC_GSS and NFS code to register all the
    objects that they want to have appear in the directory, and then have
    the sunrpc code call them back to actually create/destroy their pipefs
    dentries when the rpc_client creates/destroys the parent.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • It just duplicates the cl_program->name, and is not used in any fast
    paths where the extra dereference will cause a hit.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     

24 Jul, 2013

1 commit


15 Jul, 2013

1 commit

  • Pull more vfs stuff from Al Viro:
    "O_TMPFILE ABI changes, Oleg's fput() series, misc cleanups, including
    making simple_lookup() usable for filesystems with non-NULL s_d_op,
    which allows us to get rid of quite a bit of ugliness"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    sunrpc: now we can just set ->s_d_op
    cgroup: we can use simple_lookup() now
    efivarfs: we can use simple_lookup() now
    make simple_lookup() usable for filesystems that set ->s_d_op
    configfs: don't open-code d_alloc_name()
    __rpc_lookup_create_exclusive: pass string instead of qstr
    rpc_create_*_dir: don't bother with qstr
    llist: llist_add() can use llist_add_batch()
    llist: fix/simplify llist_add() and llist_add_batch()
    fput: turn "list_head delayed_fput_list" into llist_head
    fs/file_table.c:fput(): add comment
    Safer ABI for O_TMPFILE

    Linus Torvalds
     

14 Jul, 2013

3 commits


10 Jul, 2013

2 commits

  • Hi Jeff,

    FYI, there are new sparse warnings show up in

    tree: git://git.linux-nfs.org/projects/trondmy/linux-nfs.git nfs-for-next
    head: 296afe1f58d55fd56ed85daaafafcfee39f59ece
    commit: 76fa66657900071016f2bae61de28f059f3f2abf [2/5] rpc_pipe: set dentry operations at d_alloc time

    >> net/sunrpc/rpc_pipe.c:496:31: sparse: symbol 'rpc_dir_inode_operations' was not declared. Should it be static?

    Please consider folding the attached diff :-)

    Signed-off-by: Fengguang Wu
    Signed-off-by: Trond Myklebust

    Fengguang Wu
     
  • Currently the way these get set is a little convoluted. If the dentry is
    allocated via lookup from userland, then it gets set by simple_lookup.
    If it gets allocated when the kernel is populating the directory, then
    it gets set via __rpc_lookup_create_exclusive, which has to check
    whether they might already be set. Between both of these, this ensures
    that all dentries have their d_op pointer set.

    Instead of doing that, just have them set at d_alloc time by pointing
    sb->s_d_op at them. With that change, we no longer want the lookup op
    to set them, so we must move to using our own lookup routine.

    Signed-off-by: Jeff Layton
    Signed-off-by: Trond Myklebust

    Jeff Layton
     

29 Jun, 2013

2 commits

  • CPU#0 CPU#1
    ----------------------------- -----------------------------
    rpc_kill_sb
    sn->pipefs_sb = NULL rpc_release_client
    (UMOUNT_EVENT) rpc_free_auth
    rpc_pipefs_event
    rpc_get_client_for_event
    !atomic_inc_not_zero(cl_count)

    atomic_inc(cl_count)
    rpc_free_client
    rpc_clnt_remove_pipedir

    To fix this, this patch does the following:

    1) Calls RPC_PIPEFS_UMOUNT notification with sn->pipefs_sb_lock being held.
    2) Removes SUNRPC client from the list AFTER pipes destroying.
    3) Doesn't hold RPC client on notification: if client in the list, then it
    can't be destroyed while sn->pipefs_sb_lock in hold by notification caller.

    Signed-off-by: Stanislav Kinsbursky
    Cc: stable@vger.kernel.org
    Signed-off-by: Trond Myklebust

    Stanislav Kinsbursky
     
  • Below are races, when RPC client can be created without PiepFS dentries

    CPU#0 CPU#1
    ----------------------------- -----------------------------
    rpc_new_client rpc_fill_super
    rpc_setup_pipedir
    mutex_lock(&sn->pipefs_sb_lock)
    rpc_get_sb_net == NULL
    (no per-net PipeFS superblock)
    sn->pipefs_sb = sb;
    notifier_call_chain(MOUNT)
    (client is not in the list)
    rpc_register_client
    (client without pipes dentries)

    To fix this patch:
    1) makes PipeFS mount notification call with pipefs_sb_lock being held.
    2) releases pipefs_sb_lock on new SUNRPC client creation only after
    registration.

    Signed-off-by: Stanislav Kinsbursky
    Cc: stable@vger.kernel.org
    Signed-off-by: Trond Myklebust

    Stanislav Kinsbursky
     

19 Jun, 2013

1 commit

  • We had a report of a reproducible WARNING:

    [ 1360.039358] ------------[ cut here ]------------
    [ 1360.043978] WARNING: at fs/dcache.c:1355 d_set_d_op+0x8d/0xc0()
    [ 1360.049880] Hardware name: HP Z200 Workstation
    [ 1360.054308] Modules linked in: nfsv4 nfs dns_resolver fscache nfsd
    auth_rpcgss nfs_acl lockd sunrpc sg acpi_cpufreq mperf coretemp kvm_intel kvm
    snd_hda_codec_realtek snd_hda_intel snd_hda_codec hp_wmi crc32c_intel
    snd_hwdep e1000e snd_seq snd_seq_device snd_pcm snd_page_alloc snd_timer snd
    sparse_keymap rfkill soundcore serio_raw ptp iTCO_wdt pps_core pcspkr
    iTCO_vendor_support mei microcode lpc_ich mfd_core wmi xfs libcrc32c sr_mod
    sd_mod cdrom crc_t10dif radeon i2c_algo_bit drm_kms_helper ttm ahci libahci
    drm i2c_core libata dm_mirror dm_region_hash dm_log dm_mod [last unloaded:
    auth_rpcgss]
    [ 1360.107406] Pid: 8814, comm: mount.nfs4 Tainted: G I -------------- 3.9.0-0.55.el7.x86_64 #1
    [ 1360.116771] Call Trace:
    [ 1360.119219] [] warn_slowpath_common+0x70/0xa0
    [ 1360.125208] [] warn_slowpath_null+0x1a/0x20
    [ 1360.131025] [] d_set_d_op+0x8d/0xc0
    [ 1360.136159] [] __rpc_lookup_create_exclusive+0x4f/0x80 [sunrpc]
    [ 1360.143710] [] rpc_mkpipe_dentry+0x86/0x170 [sunrpc]
    [ 1360.150311] [] nfs_idmap_new+0x96/0x130 [nfsv4]
    [ 1360.156475] [] nfs4_init_client+0xad/0x2d0 [nfsv4]
    [ 1360.162902] [] ? idr_get_empty_slot+0x16f/0x3c0
    [ 1360.169062] [] ? idr_mark_full+0x52/0x60
    [ 1360.174615] [] ? idr_alloc+0x79/0xe0
    [ 1360.179826] [] ? __rpc_init_priority_wait_queue+0x81/0xc0 [sunrpc]
    [ 1360.187635] [] ? rpc_init_wait_queue+0x13/0x20 [sunrpc]
    [ 1360.194493] [] nfs_get_client+0x27a/0x350 [nfs]
    [ 1360.200666] [] nfs4_set_client.isra.8+0x78/0x100 [nfsv4]
    [ 1360.207624] [] nfs4_create_server+0xf3/0x3a0 [nfsv4]
    [ 1360.214222] [] nfs4_remote_mount+0x2e/0x60 [nfsv4]
    [ 1360.220644] [] mount_fs+0x39/0x1b0
    [ 1360.225691] [] ? __alloc_percpu+0x10/0x20
    [ 1360.231348] [] vfs_kern_mount+0x5f/0xf0
    [ 1360.236822] [] nfs_do_root_mount+0x86/0xc0 [nfsv4]
    [ 1360.243246] [] nfs4_try_mount+0x44/0xc0 [nfsv4]
    [ 1360.249410] [] ? get_nfs_version+0x27/0x80 [nfs]
    [ 1360.255659] [] nfs_fs_mount+0x5c5/0xd10 [nfs]
    [ 1360.261650] [] ? nfs_clone_super+0x140/0x140 [nfs]
    [ 1360.268074] [] ? param_set_portnr+0x60/0x60 [nfs]
    [ 1360.274406] [] mount_fs+0x39/0x1b0
    [ 1360.279443] [] ? __alloc_percpu+0x10/0x20
    [ 1360.285088] [] vfs_kern_mount+0x5f/0xf0
    [ 1360.290556] [] do_mount+0x1fd/0xa00
    [ 1360.295677] [] ? __get_free_pages+0xe/0x50
    [ 1360.301405] [] ? copy_mount_options+0x36/0x170
    [ 1360.307479] [] sys_mount+0x83/0xc0
    [ 1360.312515] [] system_call_fastpath+0x16/0x1b
    [ 1360.318503] ---[ end trace 8fa1f4cbc36094a7 ]---

    The problem is that we're ending up in __rpc_lookup_create_exclusive
    with a negative dentry that already has d_op set. A little debugging
    has shown that when we hit this, the d_ops are already set to
    simple_dentry_operations.

    I believe that what's happening is that during a mount, idmapd is racing
    in and doing a lookup of /var/lib/nfs/rpc_pipefs/nfs/clnt???/idmap.
    Before that dentry reference is released, the kernel races in to create
    that file and finds the new negative dentry, which already has the
    d_op set.

    This patch just avoids setting the d_op if it's already set.
    simple_dentry_operations and rpc_dentry_operations are functionally
    equivalent so it shouldn't matter which one it's set to.

    Signed-off-by: Jeff Layton
    Signed-off-by: Trond Myklebust

    Jeff Layton
     

16 May, 2013

2 commits

  • This seems to have been overlooked when we did the namespace
    conversion. If a container is running a legacy version of rpc.gssd
    then it will be disrupted if the global 'pipe_version' is set by a
    container running the new version of rpc.gssd.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • Recent changes to the NFS security flavour negotiation mean that
    we have a stronger dependency on rpc.gssd. If the latter is not
    running, because the user failed to start it, then we time out
    and mark the container as not having an instance. We then
    use that information to time out faster the next time.

    If, on the other hand, the rpc.gssd successfully binds to an rpc_pipe,
    then we mark the container as having an rpc.gssd instance.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     

13 Mar, 2013

1 commit

  • I had assumed that the only use of module aliases for filesystems
    prior to "fs: Limit sys_mount to only request filesystem modules."
    was in request_module. It turns out I was wrong. At least mkinitcpio
    in Arch linux uses these aliases.

    So readd the preexising aliases, to keep from breaking userspace.

    Userspace eventually will have to follow and use the same aliases the
    kernel does. So at some point we may be delete these aliases without
    problems. However that day is not today.

    Signed-off-by: "Eric W. Biederman"

    Eric W. Biederman
     

04 Mar, 2013

1 commit

  • Modify the request_module to prefix the file system type with "fs-"
    and add aliases to all of the filesystems that can be built as modules
    to match.

    A common practice is to build all of the kernel code and leave code
    that is not commonly needed as modules, with the result that many
    users are exposed to any bug anywhere in the kernel.

    Looking for filesystems with a fs- prefix limits the pool of possible
    modules that can be loaded by mount to just filesystems trivially
    making things safer with no real cost.

    Using aliases means user space can control the policy of which
    filesystem modules are auto-loaded by editing /etc/modprobe.d/*.conf
    with blacklist and alias directives. Allowing simple, safe,
    well understood work-arounds to known problematic software.

    This also addresses a rare but unfortunate problem where the filesystem
    name is not the same as it's module name and module auto-loading
    would not work. While writing this patch I saw a handful of such
    cases. The most significant being autofs that lives in the module
    autofs4.

    This is relevant to user namespaces because we can reach the request
    module in get_fs_type() without having any special permissions, and
    people get uncomfortable when a user specified string (in this case
    the filesystem type) goes all of the way to request_module.

    After having looked at this issue I don't think there is any
    particular reason to perform any filtering or permission checks beyond
    making it clear in the module request that we want a filesystem
    module. The common pattern in the kernel is to call request_module()
    without regards to the users permissions. In general all a filesystem
    module does once loaded is call register_filesystem() and go to sleep.
    Which means there is not much attack surface exposed by loading a
    filesytem module unless the filesystem is mounted. In a user
    namespace filesystems are not mounted unless .fs_flags = FS_USERNS_MOUNT,
    which most filesystems do not set today.

    Acked-by: Serge Hallyn
    Acked-by: Kees Cook
    Reported-by: Kees Cook
    Signed-off-by: "Eric W. Biederman"

    Eric W. Biederman
     

23 Feb, 2013

1 commit


11 Dec, 2012

1 commit


09 Nov, 2012

1 commit

  • rpc_kill_sb() must defer calling put_net() until after the notifier
    has been called, since most (all?) of the notifier callbacks assume
    that sb->s_fs_info points to a valid net namespace. It also must not
    call put_net() if the call to rpc_fill_super was unsuccessful.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=48421

    Signed-off-by: Trond Myklebust
    Cc: Stanislav Kinsbursky
    Cc: stable@vger.kernel.org [>= v3.4]

    Trond Myklebust
     

05 Nov, 2012

1 commit


02 Oct, 2012

1 commit


12 Jun, 2012

1 commit


30 May, 2012

1 commit

  • Pull NFS client updates from Trond Myklebust:
    "New features include:
    - Rewrite the O_DIRECT code so that it can share the same coalescing
    and pNFS functionality as the page cache code.
    - Allow the server to provide hints as to when we should use pNFS,
    and when it is more efficient to read and write through the
    metadata server.
    - NFS cache consistency updates:
    * Use the ctime to emulate a change attribute for NFSv2/v3 so that
    all NFS versions can share the same cache management code.
    * New cache management code will only look at the change attribute
    and size attribute when deciding whether or not our cached data
    is still valid or not.
    * Don't request NFSv4 post-op attributes on writes in cases such as
    O_DIRECT, where we don't care about data cache consistency, or
    when we have a write delegation, and know that our cache is still
    consistent.
    * Don't request NFSv4 post-op attributes on operations such as
    COMMIT, where there are no expected metadata updates.
    * Don't request NFSv4 directory post-op attributes in cases where
    the operations themselves already return change attribute
    updates: i.e. operations such as OPEN, CREATE, REMOVE, LINK and
    RENAME.
    - Speed up 'ls' and friends by using READDIR rather than READDIRPLUS
    if we detect no attempts to lookup filenames.
    - Improve the code sharing between NFSv2/v3 and v4 mounts
    - NFSv4.1 state management efficiency improvements
    - More patches in preparation for NFSv4/v4.1 migration functionality."

    Fix trivial conflict in fs/nfs/nfs4proc.c that was due to the dcache
    qstr name initialization changes (that made the length/hash a 64-bit
    union)

    * tag 'nfs-for-3.5-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (146 commits)
    NFSv4: Add debugging printks to state manager
    NFSv4: Map NFS4ERR_SHARE_DENIED into an EACCES error instead of EIO
    NFSv4: update_changeattr does not need to set NFS_INO_REVAL_PAGECACHE
    NFSv4.1: nfs4_reset_session should use nfs4_handle_reclaim_lease_error
    NFSv4.1: Handle other occurrences of NFS4ERR_CONN_NOT_BOUND_TO_SESSION
    NFSv4.1: Handle NFS4ERR_CONN_NOT_BOUND_TO_SESSION in the state manager
    NFSv4.1: Handle errors in nfs4_bind_conn_to_session
    NFSv4.1: nfs4_bind_conn_to_session should drain the session
    NFSv4.1: Don't clobber the seqid if exchange_id returns a confirmed clientid
    NFSv4.1: Add DESTROY_CLIENTID
    NFSv4.1: Ensure we use the correct credentials for bind_conn_to_session
    NFSv4.1: Ensure we use the correct credentials for session create/destroy
    NFSv4.1: Move NFSPROC4_CLNT_BIND_CONN_TO_SESSION to the end of the operations
    NFSv4.1: Handle NFS4ERR_SEQ_MISORDERED when confirming the lease
    NFSv4: When purging the lease, we must clear NFS4CLNT_LEASE_CONFIRM
    NFSv4: Clean up the error handling for nfs4_reclaim_lease
    NFSv4.1: Exchange ID must use GFP_NOFS allocation mode
    nfs41: Use BIND_CONN_TO_SESSION for CB_PATH_DOWN*
    nfs4.1: add BIND_CONN_TO_SESSION operation
    NFSv4.1 test the mdsthreshold hint parameters
    ...

    Linus Torvalds