You need to sign in or sign up before continuing.
  1. 11 7月, 2013 1 次提交
  2. 10 7月, 2013 2 次提交
  3. 04 7月, 2013 1 次提交
  4. 29 6月, 2013 5 次提交
  5. 19 6月, 2013 1 次提交
    • J
      rpc_pipefs: only set rpc_dentry_ops if d_op isn't already set · e401452d
      Jeff Layton 提交于
      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]  [<ffffffff810610c0>] warn_slowpath_common+0x70/0xa0
      [ 1360.125208]  [<ffffffff810611aa>] warn_slowpath_null+0x1a/0x20
      [ 1360.131025]  [<ffffffff811af46d>] d_set_d_op+0x8d/0xc0
      [ 1360.136159]  [<ffffffffa05a7d6f>] __rpc_lookup_create_exclusive+0x4f/0x80 [sunrpc]
      [ 1360.143710]  [<ffffffffa05a8cc6>] rpc_mkpipe_dentry+0x86/0x170 [sunrpc]
      [ 1360.150311]  [<ffffffffa062a7b6>] nfs_idmap_new+0x96/0x130 [nfsv4]
      [ 1360.156475]  [<ffffffffa062e7cd>] nfs4_init_client+0xad/0x2d0 [nfsv4]
      [ 1360.162902]  [<ffffffff812f02df>] ? idr_get_empty_slot+0x16f/0x3c0
      [ 1360.169062]  [<ffffffff812f0582>] ? idr_mark_full+0x52/0x60
      [ 1360.174615]  [<ffffffff812f0699>] ? idr_alloc+0x79/0xe0
      [ 1360.179826]  [<ffffffffa0598081>] ? __rpc_init_priority_wait_queue+0x81/0xc0 [sunrpc]
      [ 1360.187635]  [<ffffffffa05980f3>] ? rpc_init_wait_queue+0x13/0x20 [sunrpc]
      [ 1360.194493]  [<ffffffffa05d05da>] nfs_get_client+0x27a/0x350 [nfs]
      [ 1360.200666]  [<ffffffffa062e438>] nfs4_set_client.isra.8+0x78/0x100 [nfsv4]
      [ 1360.207624]  [<ffffffffa062f2f3>] nfs4_create_server+0xf3/0x3a0 [nfsv4]
      [ 1360.214222]  [<ffffffffa06284be>] nfs4_remote_mount+0x2e/0x60 [nfsv4]
      [ 1360.220644]  [<ffffffff8119ea79>] mount_fs+0x39/0x1b0
      [ 1360.225691]  [<ffffffff81153880>] ? __alloc_percpu+0x10/0x20
      [ 1360.231348]  [<ffffffff811b7ccf>] vfs_kern_mount+0x5f/0xf0
      [ 1360.236822]  [<ffffffffa0628396>] nfs_do_root_mount+0x86/0xc0 [nfsv4]
      [ 1360.243246]  [<ffffffffa06287b4>] nfs4_try_mount+0x44/0xc0 [nfsv4]
      [ 1360.249410]  [<ffffffffa05d1457>] ? get_nfs_version+0x27/0x80 [nfs]
      [ 1360.255659]  [<ffffffffa05db985>] nfs_fs_mount+0x5c5/0xd10 [nfs]
      [ 1360.261650]  [<ffffffffa05dc550>] ? nfs_clone_super+0x140/0x140 [nfs]
      [ 1360.268074]  [<ffffffffa05da8e0>] ? param_set_portnr+0x60/0x60 [nfs]
      [ 1360.274406]  [<ffffffff8119ea79>] mount_fs+0x39/0x1b0
      [ 1360.279443]  [<ffffffff81153880>] ? __alloc_percpu+0x10/0x20
      [ 1360.285088]  [<ffffffff811b7ccf>] vfs_kern_mount+0x5f/0xf0
      [ 1360.290556]  [<ffffffff811b9f5d>] do_mount+0x1fd/0xa00
      [ 1360.295677]  [<ffffffff81137dee>] ? __get_free_pages+0xe/0x50
      [ 1360.301405]  [<ffffffff811b9be6>] ? copy_mount_options+0x36/0x170
      [ 1360.307479]  [<ffffffff811ba7e3>] sys_mount+0x83/0xc0
      [ 1360.312515]  [<ffffffff8160ad59>] 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: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      e401452d
  6. 07 6月, 2013 3 次提交
  7. 29 5月, 2013 2 次提交
  8. 23 5月, 2013 1 次提交
    • T
      SUNRPC: Prevent an rpc_task wakeup race · a3c3cac5
      Trond Myklebust 提交于
      The lockless RPC_IS_QUEUED() test in __rpc_execute means that we need to
      be careful about ordering the calls to rpc_test_and_set_running(task) and
      rpc_clear_queued(task). If we get the order wrong, then we may end up
      testing the RPC_TASK_RUNNING flag after __rpc_execute() has looped
      and changed the state of the rpc_task.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      Cc: stable@vger.kernel.org
      a3c3cac5
  9. 16 5月, 2013 3 次提交
  10. 13 5月, 2013 1 次提交
  11. 12 5月, 2013 1 次提交
    • C
      freezer: add unsafe versions of freezable helpers for NFS · 416ad3c9
      Colin Cross 提交于
      NFS calls the freezable helpers with locks held, which is unsafe
      and will cause lockdep warnings when 6aa97070 "lockdep: check
      that no locks held at freeze time" is reapplied (it was reverted
      in dbf520a9).  NFS shouldn't be doing this, but it has
      long-running syscalls that must hold a lock but also shouldn't
      block suspend.  Until NFS freeze handling is rewritten to use a
      signal to exit out of the critical section, add new *_unsafe
      versions of the helpers that will not run the lockdep test when
      6aa97070 is reapplied, and call them from NFS.
      
      In practice the likley result of holding the lock while freezing
      is that a second task blocked on the lock will never freeze,
      aborting suspend, but it is possible to manufacture a case using
      the cgroup freezer, the lock, and the suspend freezer to create
      a deadlock.  Silencing the lockdep warning here will allow
      problems to be found in other drivers that may have a more
      serious deadlock risk, and prevent new problems from being added.
      Signed-off-by: NColin Cross <ccross@android.com>
      Acked-by: NPavel Machek <pavel@ucw.cz>
      Acked-by: NTejun Heo <tj@kernel.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      416ad3c9
  12. 08 5月, 2013 1 次提交
  13. 06 5月, 2013 1 次提交
  14. 04 5月, 2013 1 次提交
  15. 01 5月, 2013 1 次提交
  16. 30 4月, 2013 5 次提交
  17. 26 4月, 2013 5 次提交
    • S
      SUNRPC: Use gssproxy upcall for server RPCGSS authentication. · 030d794b
      Simo Sorce 提交于
      The main advantge of this new upcall mechanism is that it can handle
      big tickets as seen in Kerberos implementations where tickets carry
      authorization data like the MS-PAC buffer with AD or the Posix Authorization
      Data being discussed in IETF on the krbwg working group.
      
      The Gssproxy program is used to perform the accept_sec_context call on the
      kernel's behalf. The code is changed to also pass the input buffer straight
      to upcall mechanism to avoid allocating and copying many pages as tokens can
      be as big (potentially more in future) as 64KiB.
      Signed-off-by: NSimo Sorce <simo@redhat.com>
      [bfields: containerization, negotiation api]
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      030d794b
    • S
      SUNRPC: Add RPC based upcall mechanism for RPCGSS auth · 1d658336
      Simo Sorce 提交于
      This patch implements a sunrpc client to use the services of the gssproxy
      userspace daemon.
      
      In particular it allows to perform calls in user space using an RPC
      call instead of custom hand-coded upcall/downcall messages.
      
      Currently only accept_sec_context is implemented as that is all is needed for
      the server case.
      
      File server modules like NFS and CIFS can use full gssapi services this way,
      once init_sec_context is also implemented.
      
      For the NFS server case this code allow to lift the limit of max 2k krb5
      tickets. This limit is prevents legitimate kerberos deployments from using krb5
      authentication with the Linux NFS server as they have normally ticket that are
      many kilobytes large.
      
      It will also allow to lift the limitation on the size of the credential set
      (uid,gid,gids) passed down from user space for users that have very many groups
      associated. Currently the downcall mechanism used by rpc.svcgssd is limited
      to around 2k secondary groups of the 65k allowed by kernel structures.
      Signed-off-by: NSimo Sorce <simo@redhat.com>
      [bfields: containerization, concurrent upcalls, misc. fixes and cleanup]
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      1d658336
    • S
      SUNRPC: conditionally return endtime from import_sec_context · 400f26b5
      Simo Sorce 提交于
      We expose this parameter for a future caller.
      It will be used to extract the endtime from the gss-proxy upcall mechanism,
      in order to set the rsc cache expiration time.
      Signed-off-by: NSimo Sorce <simo@redhat.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      400f26b5
    • J
      SUNRPC: allow disabling idle timeout · 33d90ac0
      J. Bruce Fields 提交于
      In the gss-proxy case we don't want to have to reconnect at random--we
      want to connect only on gss-proxy startup when we can steal gss-proxy's
      context to do the connect in the right namespace.
      
      So, provide a flag that allows the rpc_create caller to turn off the
      idle timeout.
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      33d90ac0
    • J
      SUNRPC: attempt AF_LOCAL connect on setup · 7073ea87
      J. Bruce Fields 提交于
      In the gss-proxy case, setup time is when I know I'll have the right
      namespace for the connect.
      
      In other cases, it might be useful to get any connection errors
      earlier--though actually in practice it doesn't make any difference for
      rpcbind.
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      7073ea87
  18. 15 4月, 2013 2 次提交
  19. 10 4月, 2013 1 次提交
    • A
      procfs: new helper - PDE_DATA(inode) · d9dda78b
      Al Viro 提交于
      The only part of proc_dir_entry the code outside of fs/proc
      really cares about is PDE(inode)->data.  Provide a helper
      for that; static inline for now, eventually will be moved
      to fs/proc, along with the knowledge of struct proc_dir_entry
      layout.
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      d9dda78b
  20. 06 4月, 2013 2 次提交