13 Jan, 2019

1 commit

  • commit 4ecd55ea074217473f94cfee21bb72864d39f8d7 upstream.

    After commit d202cce8963d, an expired cache_head can be removed from the
    cache_detail's hash.

    However, the expired cache_head may be waiting for a reply from a
    previously submitted request. Such a cache_head has an increased
    refcounter and therefore it won't be freed after cache_put(freeme).

    Because the cache_head was removed from the hash it cannot be found
    during cache_clean() and can be leaked forever, together with stalled
    cache_request and other taken resources.

    In our case we noticed it because an entry in the export cache was
    holding a reference on a filesystem.

    Fixes d202cce8963d ("sunrpc: never return expired entries in sunrpc_cache_lookup")
    Cc: Pavel Tikhomirov
    Cc: stable@kernel.org # 2.6.35
    Signed-off-by: Vasily Averin
    Reviewed-by: NeilBrown
    Signed-off-by: J. Bruce Fields
    Signed-off-by: Greg Kroah-Hartman

    Vasily Averin
     

02 Mar, 2017

1 commit

  • Pull NFS client updates from Anna Schumaker:
    "Highlights include:

    Stable bugfixes:
    - NFSv4: Fix memory and state leak in _nfs4_open_and_get_state
    - xprtrdma: Fix Read chunk padding
    - xprtrdma: Per-connection pad optimization
    - xprtrdma: Disable pad optimization by default
    - xprtrdma: Reduce required number of send SGEs
    - nlm: Ensure callback code also checks that the files match
    - pNFS/flexfiles: If the layout is invalid, it must be updated before
    retrying
    - NFSv4: Fix reboot recovery in copy offload
    - Revert "NFSv4.1: Handle NFS4ERR_BADSESSION/NFS4ERR_DEADSESSION
    replies to OP_SEQUENCE"
    - NFSv4: fix getacl head length estimation
    - NFSv4: fix getacl ERANGE for sum ACL buffer sizes

    Features:
    - Add and use dprintk_cont macros
    - Various cleanups to NFS v4.x to reduce code duplication and
    complexity
    - Remove unused cr_magic related code
    - Improvements to sunrpc "read from buffer" code
    - Clean up sunrpc timeout code and allow changing TCP timeout
    parameters
    - Remove duplicate mw_list management code in xprtrdma
    - Add generic functions for encoding and decoding xdr streams

    Bugfixes:
    - Clean up nfs_show_mountd_netid
    - Make layoutreturn_ops static and use NULL instead of 0 to fix
    sparse warnings
    - Properly handle -ERESTARTSYS in nfs_rename()
    - Check if register_shrinker() failed during rpcauth_init()
    - Properly clean up procfs/pipefs entries
    - Various NFS over RDMA related fixes
    - Silence unititialized variable warning in sunrpc"

    * tag 'nfs-for-4.11-1' of git://git.linux-nfs.org/projects/anna/linux-nfs: (64 commits)
    NFSv4: fix getacl ERANGE for some ACL buffer sizes
    NFSv4: fix getacl head length estimation
    Revert "NFSv4.1: Handle NFS4ERR_BADSESSION/NFS4ERR_DEADSESSION replies to OP_SEQUENCE"
    NFSv4: Fix reboot recovery in copy offload
    pNFS/flexfiles: If the layout is invalid, it must be updated before retrying
    NFSv4: Clean up owner/group attribute decode
    SUNRPC: Add a helper function xdr_stream_decode_string_dup()
    NFSv4: Remove bogus "struct nfs_client" argument from decode_ace()
    NFSv4: Fix the underestimation of delegation XDR space reservation
    NFSv4: Replace callback string decode function with a generic
    NFSv4: Replace the open coded decode_opaque_inline() with the new generic
    NFSv4: Replace ad-hoc xdr encode/decode helpers with xdr_stream_* generics
    SUNRPC: Add generic helpers for xdr_stream encode/decode
    sunrpc: silence uninitialized variable warning
    nlm: Ensure callback code also checks that the files match
    sunrpc: Allow xprt->ops->timer method to sleep
    xprtrdma: Refactor management of mw_list field
    xprtrdma: Handle stale connection rejection
    xprtrdma: Properly recover FRWRs with in-flight FASTREG WRs
    xprtrdma: Shrink send SGEs array
    ...

    Linus Torvalds
     

01 Mar, 2017

1 commit

  • Pull nfsd updates from Bruce Fields:
    "The nfsd update this round is mainly a lot of miscellaneous cleanups
    and bugfixes.

    A couple changes could theoretically break working setups on upgrade.
    I don't expect complaints in practice, but they seem worth calling out
    just in case:

    - NFS security labels are now off by default; a new security_label
    export flag reenables it per export. But, having them on by default
    is a disaster, as it generally only makes sense if all your clients
    and servers have similar enough selinux policies. Thanks to Jason
    Tibbitts for pointing this out.

    - NFSv4/UDP support is off. It was never really supported, and the
    spec explicitly forbids it. We only ever left it on out of
    laziness; thanks to Jeff Layton for finally fixing that"

    * tag 'nfsd-4.11' of git://linux-nfs.org/~bfields/linux: (34 commits)
    nfsd: Fix display of the version string
    nfsd: fix configuration of supported minor versions
    sunrpc: don't register UDP port with rpcbind when version needs congestion control
    nfs/nfsd/sunrpc: enforce transport requirements for NFSv4
    sunrpc: flag transports as having congestion control
    sunrpc: turn bitfield flags in svc_version into bools
    nfsd: remove superfluous KERN_INFO
    nfsd: special case truncates some more
    nfsd: minor nfsd_setattr cleanup
    NFSD: Reserve adequate space for LOCKT operation
    NFSD: Get response size before operation for all RPCs
    nfsd/callback: Drop a useless data copy when comparing sessionid
    nfsd/callback: skip the callback tag
    nfsd/callback: Cleanup callback cred on shutdown
    nfsd/idmap: return nfserr_inval for 0-length names
    SUNRPC/Cache: Always treat the invalid cache as unexpired
    SUNRPC: Drop all entries from cache_detail when cache_purge()
    svcrdma: Poll CQs in "workqueue" mode
    svcrdma: Combine list fields in struct svc_rdma_op_ctxt
    svcrdma: Remove unused sc_dto_q field
    ...

    Linus Torvalds
     

09 Feb, 2017

4 commits


01 Feb, 2017

1 commit

  • We currently handle a client PROC_DESTROY request by turning it
    CACHE_NEGATIVE, setting the expired time to now, and then waiting for
    cache_clean to clean it up later. Since we forgot to set the cache's
    nextcheck value, that could take up to 30 minutes. Also, though there's
    probably no real bug in this case, setting CACHE_NEGATIVE directly like
    this probably isn't a great idea in general.

    So let's just remove the entry from the cache directly, and move this
    bit of cache manipulation to a helper function.

    Signed-off-by: Neil Brown
    Reported-by: Andy Adamson
    Signed-off-by: Andy Adamson
    Signed-off-by: J. Bruce Fields

    Neil Brown
     

14 Jan, 2017

1 commit

  • Since we need to change the implementation, stop exposing internals.

    Provide kref_read() to read the current reference count; typically
    used for debug messages.

    Kills two anti-patterns:

    atomic_read(&kref->refcount)
    kref->refcount.counter

    Signed-off-by: Peter Zijlstra (Intel)
    Cc: Andrew Morton
    Cc: Greg Kroah-Hartman
    Cc: Linus Torvalds
    Cc: Paul E. McKenney
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     

25 Dec, 2016

1 commit


28 Sep, 2016

1 commit

  • sunrpc uses workqueue to clean cache regulary. There is no real dependency
    of executing work on the cpu which queueing it.

    On a idle system, especially for a heterogeneous systems like big.LITTLE,
    it is observed that the big idle cpu was woke up many times just to service
    this work, which against the principle of power saving. It would be better
    if we can schedule it on a cpu which the scheduler believes to be the most
    appropriate one.

    After apply this patch, system_wq will be replaced by
    system_power_efficient_wq for sunrpc. This functionality is enabled when
    CONFIG_WQ_POWER_EFFICIENT is selected.

    Signed-off-by: Ke Wang
    Signed-off-by: Anna Schumaker

    Ke Wang
     

14 Jul, 2016

1 commit


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
     

18 Mar, 2016

1 commit

  • sunrpc_cache_pipe_upcall() can detect a race if CACHE_PENDING is no longer
    set. In this case it aborts the queuing of the upcall.
    However it has already taken a new counted reference on "h" and
    doesn't "put" it, even though it frees the data structure holding the reference.

    So let's delay the "cache_get" until we know we need it.

    Fixes: f9e1aedc6c79 ("sunrpc/cache: remove races with queuing an upcall.")
    Signed-off-by: NeilBrown
    Signed-off-by: J. Bruce Fields

    NeilBrown
     

24 Feb, 2016

1 commit

  • The qword_get() function NUL-terminates its output buffer. If the input
    string is in hex format \xXXXX... and the same length as the output
    buffer, there is an off-by-one:

    int qword_get(char **bpp, char *dest, int bufsize)
    {
    ...
    while (len < bufsize) {
    ...
    *dest++ = (h << 4) | l;
    len++;
    }
    ...
    *dest = '\0';
    return len;
    }

    This patch ensures the NUL terminator doesn't fall outside the output
    buffer.

    Signed-off-by: Stefan Hajnoczi
    Cc: stable@vger.kernel.org
    Signed-off-by: J. Bruce Fields

    Stefan Hajnoczi
     

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
     

24 Oct, 2015

1 commit

  • 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: NeilBrown
    Reported-by: Olaf Kirch
    Signed-off-by: J. Bruce Fields

    Neil Brown
     

13 Aug, 2015

3 commits


16 Apr, 2015

1 commit

  • The current semantics of string_escape_mem are inadequate for one of its
    current users, vsnprintf(). If that is to honour its contract, it must
    know how much space would be needed for the entire escaped buffer, and
    string_escape_mem provides no way of obtaining that (short of allocating a
    large enough buffer (~4 times input string) to let it play with, and
    that's definitely a big no-no inside vsnprintf).

    So change the semantics for string_escape_mem to be more snprintf-like:
    Return the size of the output that would be generated if the destination
    buffer was big enough, but of course still only write to the part of dst
    it is allowed to, and (contrary to snprintf) don't do '\0'-termination.
    It is then up to the caller to detect whether output was truncated and to
    append a '\0' if desired. Also, we must output partial escape sequences,
    otherwise a call such as snprintf(buf, 3, "%1pE", "\123") would cause
    printf to write a \0 to buf[2] but leaving buf[0] and buf[1] with whatever
    they previously contained.

    This also fixes a bug in the escaped_string() helper function, which used
    to unconditionally pass a length of "end-buf" to string_escape_mem();
    since the latter doesn't check osz for being insanely large, it would
    happily write to dst. For example, kasprintf(GFP_KERNEL, "something and
    then %pE", ...); is an easy way to trigger an oops.

    In test-string_helpers.c, the -ENOMEM test is replaced with testing for
    getting the expected return value even if the buffer is too small. We
    also ensure that nothing is written (by relying on a NULL pointer deref)
    if the output size is 0 by passing NULL - this has to work for
    kasprintf("%pE") to work.

    In net/sunrpc/cache.c, I think qword_add still has the same semantics.
    Someone should definitely double-check this.

    In fs/proc/array.c, I made the minimum possible change, but longer-term it
    should stop poking around in seq_file internals.

    [andriy.shevchenko@linux.intel.com: simplify qword_add]
    [andriy.shevchenko@linux.intel.com: add missed curly braces]
    Signed-off-by: Rasmus Villemoes
    Acked-by: Andy Shevchenko
    Signed-off-by: Andy Shevchenko
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rasmus Villemoes
     

09 Mar, 2015

1 commit

  • POLL_OUT isn't what callers of ->poll() are expecting to see; it's
    actually __SI_POLL | 2 and it's a siginfo code, not a poll bitmap
    bit...

    Signed-off-by: Al Viro
    Cc: stable@vger.kernel.org
    Cc: Bruce Fields
    Signed-off-by: Linus Torvalds

    Al Viro
     

10 Dec, 2014

1 commit


09 May, 2014

1 commit


31 Jan, 2014

1 commit

  • Pull nfsd updates from Bruce Fields:
    - Handle some loose ends from the vfs read delegation support.
    (For example nfsd can stop breaking leases on its own in a
    fewer places where it can now depend on the vfs to.)
    - Make life a little easier for NFSv4-only configurations
    (thanks to Kinglong Mee).
    - Fix some gss-proxy problems (thanks Jeff Layton).
    - miscellaneous bug fixes and cleanup

    * 'for-3.14' of git://linux-nfs.org/~bfields/linux: (38 commits)
    nfsd: consider CLAIM_FH when handing out delegation
    nfsd4: fix delegation-unlink/rename race
    nfsd4: delay setting current_fh in open
    nfsd4: minor nfs4_setlease cleanup
    gss_krb5: use lcm from kernel lib
    nfsd4: decrease nfsd4_encode_fattr stack usage
    nfsd: fix encode_entryplus_baggage stack usage
    nfsd4: simplify xdr encoding of nfsv4 names
    nfsd4: encode_rdattr_error cleanup
    nfsd4: nfsd4_encode_fattr cleanup
    minor svcauth_gss.c cleanup
    nfsd4: better VERIFY comment
    nfsd4: break only delegations when appropriate
    NFSD: Fix a memory leak in nfsd4_create_session
    sunrpc: get rid of use_gssp_lock
    sunrpc: fix potential race between setting use_gss_proxy and the upcall rpc_clnt
    sunrpc: don't wait for write before allowing reads from use-gss-proxy file
    nfsd: get rid of unused function definition
    Define op_iattr for nfsd4_open instead using macro
    NFSD: fix compile warning without CONFIG_NFSD_V3
    ...

    Linus Torvalds
     

15 Jan, 2014

1 commit


13 Dec, 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

1 commit


02 Jul, 2013

5 commits

  • When a cache entry is replaced, the "expiry_time" get set to
    zero by a call to "cache_fresh_locked(..., 0)" at the end of
    "sunrpc_cache_update".

    This low expiry time makes cache_check() think that the 'refresh_age'
    is negative, so the 'age' is comparatively large and a refresh is
    triggered.
    However refreshing a replaced entry it pointless, it cannot achieve
    anything useful.

    So teach cache_check to ignore a low refresh_age when expiry_time
    is zero.

    Reported-by: Bodo Stroesser
    Signed-off-by: NeilBrown
    Signed-off-by: J. Bruce Fields

    NeilBrown
     
  • commit d202cce8963d9268ff355a386e20243e8332b308
    sunrpc: never return expired entries in sunrpc_cache_lookup

    moved the 'entry is expired' test from cache_check to
    sunrpc_cache_lookup, so that it happened early and some races could
    safely be ignored.

    However the ip_map (in svcauth_unix.c) has a separate single-item
    cache which allows quick lookup without locking. An entry in this
    case would not be subject to the expiry test and so could be used
    well after it has expired.

    This is not normally a big problem because the first time it is used
    after it is expired an up-call will be scheduled to refresh the entry
    (if it hasn't been scheduled already) and the old entry will then
    be invalidated. So on the second attempt to use it after it has
    expired, ip_map_cached_get will discard it.

    However that is subtle and not ideal, so replace the "!cache_valid"
    test with "cache_is_expired".
    In doing this we drop the test on the "CACHE_VALID" bit. This is
    unnecessary as the bit is never cleared, and an entry will only
    be cached if the bit is set.

    Reported-by: Bodo Stroesser
    Signed-off-by: NeilBrown
    Signed-off-by: J. Bruce Fields

    NeilBrown
     
  • It is possible for a race to set CACHE_PENDING after cache_clean()
    has removed a cache entry from the cache.
    If CACHE_PENDING is still set when the entry is finally 'put',
    the cache_dequeue() will never happen and we can leak memory.

    So set a new flag 'CACHE_CLEANED' when we remove something from
    the cache, and don't queue any upcall if it is set.

    If CACHE_PENDING is set before CACHE_CLEANED, the call that
    cache_clean() makes to cache_fresh_unlocked() will free memory
    as needed. If CACHE_PENDING is set after CACHE_CLEANED, the
    test in sunrpc_cache_pipe_upcall will ensure that the memory
    is not allocated.

    Reported-by:
    Signed-off-by: NeilBrown
    Signed-off-by: J. Bruce Fields

    NeilBrown
     
  • cache_fresh_unlocked() is called when a cache entry
    has been updated and ensures that if there were any
    pending upcalls, they are cleared.

    So every time we update a cache entry, we should call this,
    and this should be the only way that we try to clear
    pending calls (that sort of uniformity makes code sooo much
    easier to read).

    try_to_negate_entry() will (possibly) mark an entry as
    negative. If it doesn't, it is because the entry already
    is VALID.
    So the entry will be valid on exit, so it is appropriate to
    call cache_fresh_unlocked().
    So tidy up try_to_negate_entry() to do that, and remove
    partial open-coded cache_fresh_unlocked() from the one
    call-site of try_to_negate_entry().

    In the other branch of the 'switch(cache_make_upcall())',
    we again have a partial open-coded version of cache_fresh_unlocked().
    Replace that with a real call.

    And again in cache_clean(), use a real call to cache_fresh_unlocked().

    These call sites might previously have called
    cache_revisit_request() if CACHE_PENDING wasn't set.
    This is never necessary because cache_revisit_request() can
    only do anything if the item is in the cache_defer_hash,
    However any time that an item is added to the cache_defer_hash
    (setup_deferral), the code immediately tests CACHE_PENDING,
    and removes the entry again if it is clear. So all other
    places we only need to 'cache_revisit_request' if we've
    just cleared CACHE_PENDING.

    Reported-by: Bodo Stroesser
    Signed-off-by: NeilBrown
    Signed-off-by: J. Bruce Fields

    NeilBrown
     
  • We currently queue an upcall after setting CACHE_PENDING,
    and dequeue after clearing CACHE_PENDING.
    So a request should only be present when CACHE_PENDING is set.

    However we don't combine the test and the enqueue/dequeue in
    a protected region, so it is possible (if unlikely) for a race
    to result in a request being queued without CACHE_PENDING set,
    or a request to be absent despite CACHE_PENDING.

    So: include a test for CACHE_PENDING inside the regions of
    enqueue and dequeue where queue_lock is held, and abort
    the operation if the value is not as expected.

    Also remove the early 'return' from cache_dequeue() to ensure that it
    always removes all entries: As there is no locking between setting
    CACHE_PENDING and calling sunrpc_cache_pipe_upcall it is not
    inconceivable for some other thread to clear CACHE_PENDING and then
    someone else to set it and call sunrpc_cache_pipe_upcall, both before
    the original threads completed the call.

    With this, it perfectly safe and correct to:
    - call cache_dequeue() if and only if we have just
    cleared CACHE_PENDING
    - call sunrpc_cache_pipe_upcall() (via cache_make_upcall)
    if and only if we have just set CACHE_PENDING.

    Reported-by: Bodo Stroesser
    Signed-off-by: NeilBrown
    Signed-off-by: Bodo Stroesser
    Signed-off-by: J. Bruce Fields

    NeilBrown
     

21 May, 2013

1 commit


04 May, 2013

1 commit

  • Pull nfsd changes from J Bruce Fields:
    "Highlights include:

    - Some more DRC cleanup and performance work from Jeff Layton

    - A gss-proxy upcall from Simo Sorce: currently krb5 mounts to the
    server using credentials from Active Directory often fail due to
    limitations of the svcgssd upcall interface. This replacement
    lifts those limitations. The existing upcall is still supported
    for backwards compatibility.

    - More NFSv4.1 support: at this point, if a user with a current
    client who upgrades from 4.0 to 4.1 should see no regressions. In
    theory we do everything a 4.1 server is required to do. Patches
    for a couple minor exceptions are ready for 3.11, and with those
    and some more testing I'd like to turn 4.1 on by default in 3.11."

    Fix up semantic conflict as per Stephen Rothwell and linux-next:

    Commit 030d794bf498 ("SUNRPC: Use gssproxy upcall for server RPCGSS
    authentication") adds two new users of "PDE(inode)->data", but we're
    supposed to use "PDE_DATA(inode)" instead since commit d9dda78bad87
    ("procfs: new helper - PDE_DATA(inode)").

    The old PDE() macro is no longer available since commit c30480b92cf4
    ("proc: Make the PROC_I() and PDE() macros internal to procfs")

    * 'for-3.10' of git://linux-nfs.org/~bfields/linux: (60 commits)
    NFSD: SECINFO doesn't handle unsupported pseudoflavors correctly
    NFSD: Simplify GSS flavor encoding in nfsd4_do_encode_secinfo()
    nfsd: make symbol nfsd_reply_cache_shrinker static
    svcauth_gss: fix error return code in rsc_parse()
    nfsd4: don't remap EISDIR errors in rename
    svcrpc: fix gss-proxy to respect user namespaces
    SUNRPC: gssp_procedures[] can be static
    SUNRPC: define {create,destroy}_use_gss_proxy_proc_entry in !PROC case
    nfsd4: better error return to indicate SSV non-support
    nfsd: fix EXDEV checking in rename
    SUNRPC: Use gssproxy upcall for server RPCGSS authentication.
    SUNRPC: Add RPC based upcall mechanism for RPCGSS auth
    SUNRPC: conditionally return endtime from import_sec_context
    SUNRPC: allow disabling idle timeout
    SUNRPC: attempt AF_LOCAL connect on setup
    nfsd: Decode and send 64bit time values
    nfsd4: put_client_renew_locked can be static
    nfsd4: remove unused macro
    nfsd4: remove some useless code
    nfsd4: implement SEQ4_STATUS_RECALLABLE_STATE_REVOKED
    ...

    Linus Torvalds
     

02 May, 2013

1 commit

  • Pull VFS updates from Al Viro,

    Misc cleanups all over the place, mainly wrt /proc interfaces (switch
    create_proc_entry to proc_create(), get rid of the deprecated
    create_proc_read_entry() in favor of using proc_create_data() and
    seq_file etc).

    7kloc removed.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (204 commits)
    don't bother with deferred freeing of fdtables
    proc: Move non-public stuff from linux/proc_fs.h to fs/proc/internal.h
    proc: Make the PROC_I() and PDE() macros internal to procfs
    proc: Supply a function to remove a proc entry by PDE
    take cgroup_open() and cpuset_open() to fs/proc/base.c
    ppc: Clean up scanlog
    ppc: Clean up rtas_flash driver somewhat
    hostap: proc: Use remove_proc_subtree()
    drm: proc: Use remove_proc_subtree()
    drm: proc: Use minor->index to label things, not PDE->name
    drm: Constify drm_proc_list[]
    zoran: Don't print proc_dir_entry data in debug
    reiserfs: Don't access the proc_dir_entry in r_open(), r_start() r_show()
    proc: Supply an accessor for getting the data from a PDE's parent
    airo: Use remove_proc_subtree()
    rtl8192u: Don't need to save device proc dir PDE
    rtl8187se: Use a dir under /proc/net/r8180/
    proc: Add proc_mkdir_data()
    proc: Move some bits from linux/proc_fs.h to linux/{of.h,signal.h,tty.h}
    proc: Move PDE_NET() to fs/proc/proc_net.c
    ...

    Linus Torvalds
     

30 Apr, 2013

1 commit


10 Apr, 2013

1 commit

  • 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: Al Viro

    Al Viro
     

04 Apr, 2013

1 commit