31 Oct, 2014

4 commits

  • commit d1f456b0b9545f1606a54cd17c20775f159bd2ce upstream.

    Commit 2f60ea6b8ced ("NFSv4: The NFSv4.0 client must send RENEW calls if it holds a delegation") set the NFS4_RENEW_TIMEOUT flag in nfs4_renew_state, and does
    not put an nfs41_proc_async_sequence call, the NFSv4.1 lease renewal heartbeat
    call, on the wire to renew the NFSv4.1 state if the flag was not set.

    The NFS4_RENEW_TIMEOUT flag is set when "now" is after the last renewal
    (cl_last_renewal) plus the lease time divided by 3. This is arbitrary and
    sometimes does the following:

    In normal operation, the only way a future state renewal call is put on the
    wire is via a call to nfs4_schedule_state_renewal, which schedules a
    nfs4_renew_state workqueue task. nfs4_renew_state determines if the
    NFS4_RENEW_TIMEOUT should be set, and the calls nfs41_proc_async_sequence,
    which only gets sent if the NFS4_RENEW_TIMEOUT flag is set.
    Then the nfs41_proc_async_sequence rpc_release function schedules
    another state remewal via nfs4_schedule_state_renewal.

    Without this change we can get into a state where an application stops
    accessing the NFSv4.1 share, state renewal calls stop due to the
    NFS4_RENEW_TIMEOUT flag _not_ being set. The only way to recover
    from this situation is with a clientid re-establishment, once the application
    resumes and the server has timed out the lease and so returns
    NFS4ERR_BAD_SESSION on the subsequent SEQUENCE operation.

    An example application:
    open, lock, write a file.

    sleep for 6 * lease (could be less)

    ulock, close.

    In the above example with NFSv4.1 delegations enabled, without this change,
    there are no OP_SEQUENCE state renewal calls during the sleep, and the
    clientid is recovered due to lease expiration on the close.

    This issue does not occur with NFSv4.1 delegations disabled, nor with
    NFSv4.0, with or without delegations enabled.

    Signed-off-by: Andy Adamson
    Link: http://lkml.kernel.org/r/1411486536-23401-1-git-send-email-andros@netapp.com
    Fixes: 2f60ea6b8ced (NFSv4: The NFSv4.0 client must send RENEW calls...)
    Signed-off-by: Trond Myklebust
    Signed-off-by: Greg Kroah-Hartman

    Andy Adamson
     
  • commit df817ba35736db2d62b07de6f050a4db53492ad8 upstream.

    The current open/lock state recovery unfortunately does not handle errors
    such as NFS4ERR_CONN_NOT_BOUND_TO_SESSION correctly. Instead of looping,
    just proceeds as if the state manager is finished recovering.
    This patch ensures that we loop back, handle higher priority errors
    and complete the open/lock state recovery.

    Signed-off-by: Trond Myklebust
    Signed-off-by: Greg Kroah-Hartman

    Trond Myklebust
     
  • commit a4339b7b686b4acc8b6de2b07d7bacbe3ae44b83 upstream.

    If a NFSv4.x server returns NFS4ERR_STALE_CLIENTID in response to a
    CREATE_SESSION or SETCLIENTID_CONFIRM in order to tell us that it rebooted
    a second time, then the client will currently take this to mean that it must
    declare all locks to be stale, and hence ineligible for reboot recovery.

    RFC3530 and RFC5661 both suggest that the client should instead rely on the
    server to respond to inelegible open share, lock and delegation reclaim
    requests with NFS4ERR_NO_GRACE in this situation.

    Signed-off-by: Trond Myklebust
    Signed-off-by: Greg Kroah-Hartman

    Trond Myklebust
     
  • commit 8faaa6d5d48b201527e0451296d9e71d23afb362 upstream.

    Commit c9fdeb28 removed a 'continue' after checking if the lease needs
    to be renewed. However, if client hasn't moved, the code falls down to
    starting reboot recovery erroneously (ie., sends open reclaim and gets
    back stale_clientid error) before recovering from getting stale_clientid
    on the renew operation.

    Signed-off-by: Olga Kornievskaia
    Fixes: c9fdeb280b8c (NFS: Add basic migration support to state manager thread)
    Signed-off-by: Trond Myklebust
    Signed-off-by: Greg Kroah-Hartman

    Olga Kornievskaia
     

06 Oct, 2014

2 commits

  • commit cd9288ffaea4359d5cfe2b8d264911506aed26a4 upstream.

    James Drew reports another bug whereby the NFS client is now sending
    an OPEN_DOWNGRADE in a situation where it should really have sent a
    CLOSE: the client is opening the file for O_RDWR, but then trying to
    do a downgrade to O_RDONLY, which is not allowed by the NFSv4 spec.

    Reported-by: James Drews
    Link: http://lkml.kernel.org/r/541AD7E5.8020409@engr.wisc.edu
    Fixes: aee7af356e15 (NFSv4: Fix problems with close in the presence...)
    Signed-off-by: Trond Myklebust
    Signed-off-by: Greg Kroah-Hartman

    Trond Myklebust
     
  • commit 080af20cc945d110f9912d01cf6b66f94a375b8d upstream.

    There is a race between nfs4_state_manager() and
    nfs_server_remove_lists() that happens during a nfsv3 mount.

    The v3 mount notices there is already a supper block so
    nfs_server_remove_lists() called which uses the nfs_client_lock
    spin lock to synchronize access to the client list.

    At the same time nfs4_state_manager() is running through
    the client list looking for work to do, using the same
    lock. When nfs4_state_manager() wins the race to the
    list, a v3 client pointer is found and not ignored
    properly which causes the panic.

    Moving some protocol checks before the state checking
    avoids the panic.

    Signed-off-by: Steve Dickson
    Signed-off-by: Trond Myklebust
    Signed-off-by: Greg Kroah-Hartman

    Steve Dickson
     

06 Sep, 2014

3 commits

  • commit aee7af356e151494d5014f57b33460b162f181b5 upstream.

    In the presence of delegations, we can no longer assume that the
    state->n_rdwr, state->n_rdonly, state->n_wronly reflect the open
    stateid share mode, and so we need to calculate the initial value
    for calldata->arg.fmode using the state->flags.

    Reported-by: James Drews
    Fixes: 88069f77e1ac5 (NFSv41: Fix a potential state leakage when...)
    Signed-off-by: Trond Myklebust
    Signed-off-by: Greg Kroah-Hartman

    Trond Myklebust
     
  • commit f87d928f6d98644d39809a013a22f981d39017cf upstream.

    When creating a new object on the NFS server, we should not be sending
    posix setacl requests unless the preceding posix_acl_create returned a
    non-trivial acl. Doing so, causes Solaris servers in particular to
    return an EINVAL.

    Fixes: 013cdf1088d72 (nfs: use generic posix ACL infrastructure,,,)
    Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1132786
    Signed-off-by: Trond Myklebust
    Signed-off-by: Greg Kroah-Hartman

    Trond Myklebust
     
  • commit 7a9e75a185e6b3a3860e6a26fb6e88691fc2c9d9 upstream.

    There was a check for result being not NULL. But get_acl() may return
    NULL, or ERR_PTR, or actual pointer.
    The purpose of the function where current change is done is to "list
    ACLs only when they are available", so any error condition of get_acl()
    mustn't be elevated, and returning 0 there is still valid.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=81111
    Signed-off-by: Andrey Utkin
    Reviewed-by: Christoph Hellwig
    Fixes: 74adf83f5d77 (nfs: only show Posix ACLs in listxattr if actually...)
    Signed-off-by: Trond Myklebust
    Signed-off-by: Greg Kroah-Hartman

    Andrey Utkin
     

01 Aug, 2014

1 commit

  • commit 74adf83f5d7720925499b4938f930591f947b660 upstream.

    The big ACL switched nfs to use generic_listxattr, which calls all existing
    ->list handlers. Add a custom .listxattr implementation that only lists
    the ACLs if they actually are present on the given inode.

    Signed-off-by: Christoph Hellwig
    Reported-by: Philippe Troin
    Tested-by: Philippe Troin
    Fixes: 013cdf1088d7 (nfs: use generic posix ACL infrastructure ...)
    Signed-off-by: Trond Myklebust
    Signed-off-by: Greg Kroah-Hartman

    Christoph Hellwig
     

07 Jul, 2014

5 commits

  • commit 18dd78c427513fb0f89365138be66e6ee8700d1b upstream.

    NFS_INO_INVALID_DATA cannot be ignored, even if we have a delegation.

    We're still having some problems with data corruption when multiple
    clients are appending to a file and those clients are being granted
    write delegations on open.

    To reproduce:

    Client A:
    vi /mnt/`hostname -s`
    while :; do echo "XXXXXXXXXXXXXXX" >>/mnt/file; sleep $(( $RANDOM % 5 )); done

    Client B:
    vi /mnt/`hostname -s`
    while :; do echo "YYYYYYYYYYYYYYY" >>/mnt/file; sleep $(( $RANDOM % 5 )); done

    What's happening is that in nfs_update_inode() we're recognizing that
    the file size has changed and we're setting NFS_INO_INVALID_DATA
    accordingly, but then we ignore the cache_validity flags in
    nfs_write_pageuptodate() because we have a delegation. As a result,
    in nfs_updatepage() we're extending the write to cover the full page
    even though we've not read in the data to begin with.

    Signed-off-by: Scott Mayhew
    Signed-off-by: Trond Myklebust
    Signed-off-by: Greg Kroah-Hartman

    Scott Mayhew
     
  • commit a914722f333b3359d2f4f12919380a334176bb89 upstream.

    Otherwise the kernel oopses when remounting with IPv6 server because
    net is dereferenced in dev_get_by_name.

    Use net ns of current thread so that dev_get_by_name does not operate on
    foreign ns. Changing the address is prohibited anyway so this should not
    affect anything.

    Signed-off-by: Mateusz Guzik
    Cc: linux-nfs@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Trond Myklebust
    Signed-off-by: Greg Kroah-Hartman

    Mateusz Guzik
     
  • commit abbec2da13f0e4c5d9b78b7e2c025a3e617228ba upstream.

    The addition of lockdep code to write_seqcount_begin/end has lead to
    a bunch of false positive claims of ABBA deadlocks with the so_lock
    spinlock. Audits show that this simply cannot happen because the
    read side code does not spin while holding so_lock.

    Signed-off-by: Trond Myklebust
    Signed-off-by: Greg Kroah-Hartman

    Trond Myklebust
     
  • commit 43b6535e717d2f656f71d9bd16022136b781c934 upstream.

    Fix a bug, whereby nfs_update_inode() was declaring the inode to be
    up to date despite not having checked all the attributes.
    The bug occurs because the temporary variable in which we cache
    the validity information is 'sanitised' before reapplying to
    nfsi->cache_validity.

    Reported-by: Kinglong Mee
    Signed-off-by: Trond Myklebust
    Signed-off-by: Greg Kroah-Hartman

    Trond Myklebust
     
  • commit 6df200f5d5191bdde4d2e408215383890f956781 upstream.

    Return the NULL pointer when the allocation fails.

    Reported-by: Fengguang Wu
    Signed-off-by: Trond Myklebust
    Signed-off-by: Greg Kroah-Hartman

    Trond Myklebust
     

06 May, 2014

1 commit

  • commit e911b8158ee1def8153849b1641b736026b036e0 upstream.

    If we interrupt the nfs4_wait_for_completion_rpc_task() call in
    nfs4_run_open_task(), then we don't prevent the RPC call from
    completing. So freeing up the opendata->f_attr.mdsthreshold
    in the error path in _nfs4_do_open() leads to a use-after-free
    when the XDR decoder tries to decode the mdsthreshold information
    from the server.

    Fixes: 82be417aa37c0 (NFSv4.1 cache mdsthreshold values on OPEN)
    Tested-by: Steve Dickson
    Signed-off-by: Trond Myklebust
    Signed-off-by: Greg Kroah-Hartman

    Trond Myklebust
     

10 Mar, 2014

1 commit

  • Pull NFS client bugfixes from Trond Myklebust:
    "Highlights include:

    - Fix another nfs4_sequence corruptor in RELEASE_LOCKOWNER
    - Fix an Oopsable delegation callback race
    - Fix another bad stateid infinite loop
    - Fail the data server I/O is the stateid represents a lost lock
    - Fix an Oopsable sunrpc trace event"

    * tag 'nfs-for-3.14-5' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
    SUNRPC: Fix oops when trace sunrpc_task events in nfs client
    NFSv4: Fail the truncate() if the lock/open stateid is invalid
    NFSv4.1 Fail data server I/O if stateid represents a lost lock
    NFSv4: Fix the return value of nfs4_select_rw_stateid
    NFSv4: nfs4_stateid_is_current should return 'true' for an invalid stateid
    NFS: Fix a delegation callback race
    NFSv4: Fix another nfs4_sequence corruptor

    Linus Torvalds
     

06 Mar, 2014

4 commits

  • If the open stateid could not be recovered, or the file locks were lost,
    then we should fail the truncate() operation altogether.

    Reported-by: Andy Adamson
    Link: http://lkml.kernel.org/r/1393954269-3974-1-git-send-email-andros@netapp.com
    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • Signed-off-by: Andy Adamson
    Link: http://lkml.kernel.org/r/1393954269-3974-1-git-send-email-andros@netapp.com
    Signed-off-by: Trond Myklebust

    Andy Adamson
     
  • In commit 5521abfdcf4d6 (NFSv4: Resend the READ/WRITE RPC call
    if a stateid change causes an error), we overloaded the return value of
    nfs4_select_rw_stateid() to cause it to return -EWOULDBLOCK if an RPC
    call is outstanding that would cause the NFSv4 lock or open stateid
    to change.
    That is all redundant when we actually copy the stateid used in the
    read/write RPC call that failed, and check that against the current
    stateid. It is doubly so, when we consider that in the NFSv4.1 case,
    we also set the stateid's seqid to the special value '0', which means
    'match the current valid stateid'.

    Reported-by: Andy Adamson
    Link: http://lkml.kernel.org/r/1393954269-3974-1-git-send-email-andros@netapp.com
    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • When nfs4_set_rw_stateid() can fails by returning EIO to indicate that
    the stateid is completely invalid, then it makes no sense to have it
    trigger a retry of the READ or WRITE operation. Instead, we should just
    have it fall through and attempt a recovery.

    This fixes an infinite loop in which the client keeps replaying the same
    bad stateid back to the server.

    Reported-by: Andy Adamson
    Link: http://lkml.kernel.org/r/1393954269-3974-1-git-send-email-andros@netapp.com
    Cc: stable@vger.kernel.org # 3.10+
    Signed-off-by: Trond Myklebust

    Trond Myklebust
     

03 Mar, 2014

1 commit

  • The clean-up in commit 36281caa839f ended up removing a NULL pointer check
    that is needed in order to prevent an Oops in
    nfs_async_inode_return_delegation().

    Reported-by: "Yan, Zheng"
    Link: http://lkml.kernel.org/r/5313E9F6.2020405@intel.com
    Fixes: 36281caa839f (NFSv4: Further clean-ups of delegation stateid validation)
    Cc: stable@vger.kernel.org # 3.4+
    Signed-off-by: Trond Myklebust

    Trond Myklebust
     

02 Mar, 2014

1 commit

  • nfs4_release_lockowner needs to set the rpc_message reply to point to
    the nfs4_sequence_res in order to avoid another Oopsable situation
    in nfs41_assign_slot.

    Fixes: fbd4bfd1d9d21 (NFS: Add nfs4_sequence calls for RELEASE_LOCKOWNER)
    Cc: stable@vger.kernel.org # 3.12+
    Signed-off-by: Trond Myklebust

    Trond Myklebust
     

21 Feb, 2014

1 commit

  • Pull cgroup fixes from Tejun Heo:
    "Quite a few fixes this time.

    Three locking fixes, all marked for -stable. A couple error path
    fixes and some misc fixes. Hugh found a bug in memcg offlining
    sequence and we thought we could fix that from cgroup core side but
    that turned out to be insufficient and got reverted. A different fix
    has been applied to -mm"

    * 'for-3.14-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
    cgroup: update cgroup_enable_task_cg_lists() to grab siglock
    Revert "cgroup: use an ordered workqueue for cgroup destruction"
    cgroup: protect modifications to cgroup_idr with cgroup_mutex
    cgroup: fix locking in cgroup_cfts_commit()
    cgroup: fix error return from cgroup_create()
    cgroup: fix error return value in cgroup_mount()
    cgroup: use an ordered workqueue for cgroup destruction
    nfs: include xattr.h from fs/nfs/nfs3proc.c
    cpuset: update MAINTAINERS entry
    arm, pm, vmpressure: add missing slab.h includes

    Linus Torvalds
     

20 Feb, 2014

1 commit

  • Pull NFS client bugfixes from Trond Myklebust:
    "Highlights include stable fixes for the following bugs:

    - General performance regression due to NFS_INO_INVALID_LABEL being
    set when the server doesn't support labeled NFS
    - Hang in the RPC code due to a socket out-of-buffer race
    - Infinite loop when trying to establish the NFSv4 lease
    - Use-after-free bug in the RPCSEC gss code.
    - nfs4_select_rw_stateid is returning with a non-zero error value on
    success

    Other bug fixes:

    - Potential memory scribble in the RPC bi-directional RPC code
    - Pipe version reference leak
    - Use the correct net namespace in the new NFSv4 migration code"

    * tag 'nfs-for-3.14-4' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
    NFS fix error return in nfs4_select_rw_stateid
    NFSv4: Use the correct net namespace in nfs4_update_server
    SUNRPC: Fix a pipe_version reference leak
    SUNRPC: Ensure that gss_auth isn't freed before its upcall messages
    SUNRPC: Fix potential memory scribble in xprt_free_bc_request()
    SUNRPC: Fix races in xs_nospace()
    SUNRPC: Don't create a gss auth cache unless rpc.gssd is running
    NFS: Do not set NFS_INO_INVALID_LABEL unless server supports labeled NFS

    Linus Torvalds
     

19 Feb, 2014

1 commit

  • Do not return an error when nfs4_copy_delegation_stateid succeeds.

    Signed-off-by: Andy Adamson
    Link: http://lkml.kernel.org/r/1392737765-41942-1-git-send-email-andros@netapp.com
    Fixes: ef1820f9be27b (NFSv4: Don't try to recover NFSv4 locks when...)
    Cc: NeilBrown
    Cc: stable@vger.kernel.org # 3.12+
    Signed-off-by: Trond Myklebust

    Andy Adamson
     

18 Feb, 2014

1 commit


11 Feb, 2014

1 commit

  • Changes in commit a0b8cab3b9b2 ("mm: remove lru parameter from
    __pagevec_lru_add and remove parts of pagevec API") have introduced a
    call to add_to_page_cache_lru() which causes a leak in nfs_symlink() as
    now the page gets an extra refcount that is not dropped.

    Jan Stancek observed and reported the leak effect while running test8
    from Connectathon Testsuite. After several iterations over the test
    case, which creates several symlinks on a NFS mountpoint, the test
    system was quickly getting into an out-of-memory scenario.

    This patch fixes the page leak by dropping that extra refcount
    add_to_page_cache_lru() is grabbing.

    Signed-off-by: Jan Stancek
    Signed-off-by: Rafael Aquini
    Acked-by: Mel Gorman
    Acked-by: Rik van Riel
    Cc: Jeff Layton
    Cc: Trond Myklebust
    Cc: [3.11.x+]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael Aquini
     

10 Feb, 2014

1 commit

  • Commit aa9c2669626c (NFS: Client implementation of Labeled-NFS) introduces
    a performance regression. When nfs_zap_caches_locked is called, it sets
    the NFS_INO_INVALID_LABEL flag irrespectively of whether or not the
    NFS server supports security labels. Since that flag is never cleared,
    it means that all calls to nfs_revalidate_inode() will now trigger
    an on-the-wire GETATTR call.

    This patch ensures that we never set the NFS_INO_INVALID_LABEL unless the
    server advertises support for labeled NFS.
    It also causes nfs_setsecurity() to clear NFS_INO_INVALID_LABEL when it
    has successfully set the security label for the inode.
    Finally it gets rid of the NFS_INO_INVALID_LABEL cruft from nfs_update_inode,
    which has nothing to do with labeled NFS.

    Reported-by: Neil Brown
    Cc: stable@vger.kernel.org # 3.11+
    Tested-by: Neil Brown
    Signed-off-by: Trond Myklebust

    Trond Myklebust
     

04 Feb, 2014

4 commits


02 Feb, 2014

2 commits


01 Feb, 2014

2 commits

  • nfs3_get_acl() tries to skip posix equivalent ACLs, but misinterprets
    the return value of posix_acl_equiv_mode(). Fix it.

    This is a regression introduced by
    "nfs: use generic posix ACL infrastructure for v3 Posix ACLs"

    CC: Christoph Hellwig
    CC: linux-nfs@vger.kernel.org
    CC: linux-fsdevel@vger.kernel.org

    Signed-off-by: Trond Myklebust

    Noah Massey
     
  • Pull NFS client bugfixes from Trond Myklebust:
    "Highlights:

    - Fix several races in nfs_revalidate_mapping
    - NFSv4.1 slot leakage in the pNFS files driver
    - Stable fix for a slot leak in nfs40_sequence_done
    - Don't reject NFSv4 servers that support ACLs with only ALLOW aces"

    * tag 'nfs-for-3.14-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
    nfs: initialize the ACL support bits to zero.
    NFSv4.1: Cleanup
    NFSv4.1: Clean up nfs41_sequence_done
    NFSv4: Fix a slot leak in nfs40_sequence_done
    NFSv4.1 free slot before resending I/O to MDS
    nfs: add memory barriers around NFS_INO_INVALID_DATA and NFS_INO_INVALIDATING
    NFS: Fix races in nfs_revalidate_mapping
    sunrpc: turn warn_gssd() log message into a dprintk()
    NFS: fix the handling of NFS_INO_INVALID_DATA flag in nfs_revalidate_mapping
    nfs: handle servers that support only ALLOW ACE type.

    Linus Torvalds
     

31 Jan, 2014

3 commits

  • Avoid returning incorrect acl mask attributes when the server doesn't
    support ACLs.

    Signed-off-by: Malahal Naineni
    Signed-off-by: Trond Myklebust

    Malahal Naineni
     
  • Pull core block IO changes from Jens Axboe:
    "The major piece in here is the immutable bio_ve series from Kent, the
    rest is fairly minor. It was supposed to go in last round, but
    various issues pushed it to this release instead. The pull request
    contains:

    - Various smaller blk-mq fixes from different folks. Nothing major
    here, just minor fixes and cleanups.

    - Fix for a memory leak in the error path in the block ioctl code
    from Christian Engelmayer.

    - Header export fix from CaiZhiyong.

    - Finally the immutable biovec changes from Kent Overstreet. This
    enables some nice future work on making arbitrarily sized bios
    possible, and splitting more efficient. Related fixes to immutable
    bio_vecs:

    - dm-cache immutable fixup from Mike Snitzer.
    - btrfs immutable fixup from Muthu Kumar.

    - bio-integrity fix from Nic Bellinger, which is also going to stable"

    * 'for-3.14/core' of git://git.kernel.dk/linux-block: (44 commits)
    xtensa: fixup simdisk driver to work with immutable bio_vecs
    block/blk-mq-cpu.c: use hotcpu_notifier()
    blk-mq: for_each_* macro correctness
    block: Fix memory leak in rw_copy_check_uvector() handling
    bio-integrity: Fix bio_integrity_verify segment start bug
    block: remove unrelated header files and export symbol
    blk-mq: uses page->list incorrectly
    blk-mq: use __smp_call_function_single directly
    btrfs: fix missing increment of bi_remaining
    Revert "block: Warn and free bio if bi_end_io is not set"
    block: Warn and free bio if bi_end_io is not set
    blk-mq: fix initializing request's start time
    block: blk-mq: don't export blk_mq_free_queue()
    block: blk-mq: make blk_sync_queue support mq
    block: blk-mq: support draining mq queue
    dm cache: increment bi_remaining when bi_end_io is restored
    block: fixup for generic bio chaining
    block: Really silence spurious compiler warnings
    block: Silence spurious compiler warnings
    block: Kill bio_pair_split()
    ...

    Linus Torvalds
     
  • Chris Mason reported a NULL pointer derefernence in generic_getxattr()
    that was due to sb->s_xattr being NULL.

    The reason is that the nfs #ifdef's for ACL support were misplaced, and
    the nfs3 inode operations had the xattr operation pointers set up, even
    though xattrs were not actually supported. As a result, the xattr code
    was being called without the infrastructure having been set up.

    Move the #ifdef's appropriately.

    Reported-and-tested-by: Chris Mason
    Acked-by: Al Viro viro@zeniv.linux.org.uk>
    Signed-off-by: Linus Torvalds

    Christoph Hellwig