1. 02 Apr, 2015 11 commits
    • David Howells's avatar
      FS-Cache: The operation cancellation method needs calling in more places · d3b97ca4
      David Howells authored
      Any time an incomplete operation is cancelled, the operation cancellation
      function needs to be called to clean up.  This is currently being passed
      directly to some of the functions that might want to call it, but not all.
      
      Instead, pass the cancellation method pointer to the fscache_operation_init()
      and have that cache it in the operation struct.  Further, plug in a dummy
      cancellation handler if the caller declines to set one as this allows us to
      call the function unconditionally (the extra overhead isn't worth bothering
      about as we don't expect to be calling this typically).
      
      The cancellation method must thence be called everywhere the CANCELLED state
      is set.  Note that we call it *before* setting the CANCELLED state such that
      the method can use the old state value to guide its operation.
      
      fscache_do_cancel_retrieval() needs moving higher up in the sources so that
      the init function can use it now.
      
      Without this, the following oops may be seen:
      
      	FS-Cache: Assertion failed
      	FS-Cache: 3 == 0 is false
      	------------[ cut here ]------------
      	kernel BUG at ../fs/fscache/page.c:261!
      	...
      	RIP: 0010:[<ffffffffa0089c1b>]  fscache_release_retrieval_op+0x77/0x100
      	 [<ffffffffa008853d>] fscache_put_operation+0x114/0x2da
      	 [<ffffffffa008b8c2>] __fscache_read_or_alloc_pages+0x358/0x3b3
      	 [<ffffffffa00b761f>] __nfs_readpages_from_fscache+0x59/0xbf [nfs]
      	 [<ffffffffa00b06c5>] nfs_readpages+0x10c/0x185 [nfs]
      	 [<ffffffff81124925>] ? alloc_pages_current+0x119/0x13e
      	 [<ffffffff810ee5fd>] ? __page_cache_alloc+0xfb/0x10a
      	 [<ffffffff810f87f8>] __do_page_cache_readahead+0x188/0x22c
      	 [<ffffffff810f8b3a>] ondemand_readahead+0x29e/0x2af
      	 [<ffffffff810f8c92>] page_cache_sync_readahead+0x38/0x3a
      	 [<ffffffff810ef337>] generic_file_read_iter+0x1a2/0x55a
      	 [<ffffffffa00a9dff>] ? nfs_revalidate_mapping+0xd6/0x288 [nfs]
      	 [<ffffffffa00a6a23>] nfs_file_read+0x49/0x70 [nfs]
      	 [<ffffffff811363be>] new_sync_read+0x78/0x9c
      	 [<ffffffff81137164>] __vfs_read+0x13/0x38
      	 [<ffffffff8113721e>] vfs_read+0x95/0x121
      	 [<ffffffff811372f6>] SyS_read+0x4c/0x8a
      	 [<ffffffff81557a52>] system_call_fastpath+0x12/0x17
      
      The assertion is showing that the remaining number of pages (n_pages) is not 0
      when the operation is being released.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Reviewed-by: default avatarSteve Dickson <steved@redhat.com>
      Acked-by: default avatarJeff Layton <jeff.layton@primarydata.com>
      d3b97ca4
    • David Howells's avatar
      FS-Cache: Put an aborted initialised op so that it is accounted correctly · a39caadf
      David Howells authored
      Call fscache_put_operation() or a wrapper on any op that has gone through
      fscache_operation_init() so that the accounting shown in /proc is done
      correctly, specifically fscache_n_op_release.
      
      fscache_put_operation() therefore now allows an op in the INITIALISED state as
      well as in the CANCELLED and COMPLETE states.
      
      Note that this means that an operation can get put that doesn't have its
      ->object pointer filled in, so anything that depends on the object needs to be
      conditional in fscache_put_operation().
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Reviewed-by: default avatarSteve Dickson <steved@redhat.com>
      Acked-by: default avatarJeff Layton <jeff.layton@primarydata.com>
      a39caadf
    • David Howells's avatar
      FS-Cache: Fix cancellation of in-progress operation · 73c04a47
      David Howells authored
      Cancellation of an in-progress operation needs to update the relevant counters
      and start any operations that are pending waiting on this one.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Reviewed-by: default avatarSteve Dickson <steved@redhat.com>
      Acked-by: default avatarJeff Layton <jeff.layton@primarydata.com>
      73c04a47
    • David Howells's avatar
      FS-Cache: Count the number of initialised operations · 03cdd0e4
      David Howells authored
      Count and display through /proc/fs/fscache/stats the number of initialised
      operations.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Reviewed-by: default avatarSteve Dickson <steved@redhat.com>
      Acked-by: default avatarJeff Layton <jeff.layton@primarydata.com>
      03cdd0e4
    • David Howells's avatar
      FS-Cache: Out of line fscache_operation_init() · 1339ec98
      David Howells authored
      Out of line fscache_operation_init() so that it can access internal FS-Cache
      features, such as stats, in a later commit.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Reviewed-by: default avatarSteve Dickson <steved@redhat.com>
      Acked-by: default avatarJeff Layton <jeff.layton@primarydata.com>
      1339ec98
    • David Howells's avatar
      FS-Cache: Permit fscache_cancel_op() to cancel in-progress operations too · 418b7eb9
      David Howells authored
      Currently, fscache_cancel_op() only cancels pending operations - attempts to
      cancel in-progress operations are ignored.  This leads to a problem in
      fscache_wait_for_operation_activation() whereby the wait is terminated, but
      the object has been killed.
      
      The check at the end of the function now triggers because it's no longer
      contingent on the cache having produced an I/O error since the commit that
      fixed the logic error in fscache_object_is_dead().
      
      The result of the check is that it tries to cancel the operation - but since
      the object may not be pending by this point, the cancellation request may be
      ignored - with the result that the the object is just put by the caller and
      fscache_put_operation has an assertion failure because the operation isn't in
      either the COMPLETE or the CANCELLED states.
      
      To fix this, we permit in-progress ops to be cancelled under some
      circumstances.
      
      The bug results in an oops that looks something like this:
      
      	FS-Cache: fscache_wait_for_operation_activation() = -ENOBUFS [obj dead 3]
      	FS-Cache:
      	FS-Cache: Assertion failed
      	FS-Cache: 3 == 5 is false
      	------------[ cut here ]------------
      	kernel BUG at ../fs/fscache/operation.c:432!
      	...
      	RIP: 0010:[<ffffffffa0088574>] fscache_put_operation+0xf2/0x2cd
      	Call Trace:
      	 [<ffffffffa008b92a>] __fscache_read_or_alloc_pages+0x2ec/0x3b3
      	 [<ffffffffa00b761f>] __nfs_readpages_from_fscache+0x59/0xbf [nfs]
      	 [<ffffffffa00b06c5>] nfs_readpages+0x10c/0x185 [nfs]
      	 [<ffffffff81124925>] ? alloc_pages_current+0x119/0x13e
      	 [<ffffffff810ee5fd>] ? __page_cache_alloc+0xfb/0x10a
      	 [<ffffffff810f87f8>] __do_page_cache_readahead+0x188/0x22c
      	 [<ffffffff810f8b3a>] ondemand_readahead+0x29e/0x2af
      	 [<ffffffff810f8c92>] page_cache_sync_readahead+0x38/0x3a
      	 [<ffffffff810ef337>] generic_file_read_iter+0x1a2/0x55a
      	 [<ffffffffa00a9dff>] ? nfs_revalidate_mapping+0xd6/0x288 [nfs]
      	 [<ffffffffa00a6a23>] nfs_file_read+0x49/0x70 [nfs]
      	 [<ffffffff811363be>] new_sync_read+0x78/0x9c
      	 [<ffffffff81137164>] __vfs_read+0x13/0x38
      	 [<ffffffff8113721e>] vfs_read+0x95/0x121
      	 [<ffffffff811372f6>] SyS_read+0x4c/0x8a
      	 [<ffffffff81557a52>] system_call_fastpath+0x12/0x17
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Reviewed-by: default avatarSteve Dickson <steved@redhat.com>
      Acked-by: default avatarJeff Layton <jeff.layton@primarydata.com>
      418b7eb9
    • David Howells's avatar
      FS-Cache: fscache_object_is_dead() has wrong logic, kill it · 87021526
      David Howells authored
      fscache_object_is_dead() returns true only if the object is marked dead and
      the cache got an I/O error.  This should be a logical OR instead.  Since two
      of the callers got split up into handling for separate subcases, expand the
      other callers and kill the function.  This is probably the right thing to do
      anyway since one of the subcases isn't about the object at all, but rather
      about the cache.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Reviewed-by: default avatarSteve Dickson <steved@redhat.com>
      Acked-by: default avatarJeff Layton <jeff.layton@primarydata.com>
      87021526
    • David Howells's avatar
      FS-Cache: Synchronise object death state change vs operation submission · f09b443d
      David Howells authored
      When an object is being marked as no longer live, do this under the object
      spinlock to prevent a race with operation submission targeted on that object.
      
      The problem occurs due to the following pair of intertwined sequences when the
      cache tries to create an object that would take it over the hard available
      space limit:
      
       NETFS INTERFACE
       ===============
       (A) The netfs calls fscache_acquire_cookie().  object creation is deferred to
           the object state machine and the netfs is allowed to continue.
      
      	OBJECT STATE MACHINE KTHREAD
      	============================
      	(1) The object is looked up on disk by fscache_look_up_object()
      	    calling cachefiles_walk_to_object().  The latter finds that the
      	    object is not yet represented on disk and calls
      	    fscache_object_lookup_negative().
      
      	(2) fscache_object_lookup_negative() sets FSCACHE_COOKIE_NO_DATA_YET
      	    and clears FSCACHE_COOKIE_LOOKING_UP, thus allowing the netfs to
      	    start queuing read operations.
      
       (B) The netfs calls fscache_read_or_alloc_pages().  This calls
           fscache_wait_for_deferred_lookup() which sees FSCACHE_COOKIE_LOOKING_UP
           become clear, allowing the read to begin.
      
       (C) A read operation is set up and passed to fscache_submit_op() to deal
           with.
      
      	(3) cachefiles_walk_to_object() calls cachefiles_has_space(), which
      	    fails (or one of the file operations to create stuff fails).
      	    cachefiles returns an error to fscache.
      
      	(4) fscache_look_up_object() transits to the LOOKUP_FAILURE state,
      
      	(5) fscache_lookup_failure() sets FSCACHE_OBJECT_LOOKED_UP and
      	    FSCACHE_COOKIE_UNAVAILABLE and clears FSCACHE_COOKIE_LOOKING_UP
      	    then transits to the KILL_OBJECT state.
      
      	(6) fscache_kill_object() clears FSCACHE_OBJECT_IS_LIVE in an attempt
      	    to reject any further requests from the netfs.
      
      	(7) object->n_ops is examined and found to be 0.
      	    fscache_kill_object() transits to the DROP_OBJECT state.
      
       (D) fscache_submit_op() locks the object spinlock, sees if it can dispatch
           the op immediately by calling fscache_object_is_active() - which fails
           since FSCACHE_OBJECT_IS_AVAILABLE has not yet been set.
      
       (E) fscache_submit_op() then tests FSCACHE_OBJECT_LOOKED_UP - which is set.
           It then queues the object and increments object->n_ops.
      
      	(8) fscache_drop_object() releases the object and eventually
      	    fscache_put_object() calls cachefiles_put_object() which suffers
      	    an assertion failure here:
      
      		ASSERTCMP(object->fscache.n_ops, ==, 0);
      
      Locking the object spinlock in step (6) around the clearance of
      FSCACHE_OBJECT_IS_LIVE ensures that the the decision trees in
      fscache_submit_op() and fscache_submit_exclusive_op() don't see the IS_LIVE
      flag being cleared mid-decision: either the op is queued before step (7) - in
      which case fscache_kill_object() will see n_ops>0 and will deal with the op -
      or the op will be rejected.
      
      This, combined with rejecting op submission if the target object is dying, fix
      the problem.
      
      The problem shows up as the following oops:
      
      CacheFiles: Assertion failed
      CacheFiles: 1 == 0 is false
      ------------[ cut here ]------------
      kernel BUG at ../fs/cachefiles/interface.c:339!
      ...
      RIP: 0010:[<ffffffffa014fd9c>]  [<ffffffffa014fd9c>] cachefiles_put_object+0x2a4/0x301 [cachefiles]
      ...
      Call Trace:
       [<ffffffffa008674b>] fscache_put_object+0x18/0x21 [fscache]
       [<ffffffffa00883e6>] fscache_object_work_func+0x3ba/0x3c9 [fscache]
       [<ffffffff81054dad>] process_one_work+0x226/0x441
       [<ffffffff81055d91>] worker_thread+0x273/0x36b
       [<ffffffff81055b1e>] ? rescuer_thread+0x2e1/0x2e1
       [<ffffffff81059b9d>] kthread+0x10e/0x116
       [<ffffffff81059a8f>] ? kthread_create_on_node+0x1bb/0x1bb
       [<ffffffff815579ac>] ret_from_fork+0x7c/0xb0
       [<ffffffff81059a8f>] ? kthread_create_on_node+0x1bb/0x1bb
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Reviewed-by: default avatarSteve Dickson <steved@redhat.com>
      Acked-by: default avatarJeff Layton <jeff.layton@primarydata.com>
      f09b443d
    • David Howells's avatar
      FS-Cache: Handle a new operation submitted against a killed object · 6515d1db
      David Howells authored
      Reject new operations that are being submitted against an object if that
      object has failed its lookup or creation states or has been killed by the
      cache backend for some other reason, such as having been culled.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Reviewed-by: default avatarSteve Dickson <steved@redhat.com>
      Acked-by: default avatarJeff Layton <jeff.layton@primarydata.com>
      6515d1db
    • David Howells's avatar
      FS-Cache: When submitting an op, cancel it if the target object is dying · 30ceec62
      David Howells authored
      When submitting an operation, prefer to cancel the operation immediately
      rather than queuing it for later processing if the object is marked as dying
      (ie. the object state machine has reached the KILL_OBJECT state).
      
      Whilst we're at it, change the series of related test_bit() calls into a
      READ_ONCE() and bitwise-AND operators to reduce the number of load
      instructions (test_bit() has a volatile address).
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Reviewed-by: default avatarSteve Dickson <steved@redhat.com>
      Acked-by: default avatarJeff Layton <jeff.layton@primarydata.com>
      30ceec62
    • David Howells's avatar
      FS-Cache: Move fscache_report_unexpected_submission() to make it more available · 3c305984
      David Howells authored
      Move fscache_report_unexpected_submission() up within operation.c so that it
      can be called from fscache_submit_exclusive_op() too.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Reviewed-by: default avatarSteve Dickson <steved@redhat.com>
      Acked-by: default avatarJeff Layton <jeff.layton@primarydata.com>
      3c305984
  2. 24 Feb, 2015 1 commit
  3. 18 Feb, 2015 18 commits
    • Linus Torvalds's avatar
      Merge tag 'locks-v3.20-2' of git://git.samba.org/jlayton/linux · b2b89ebf
      Linus Torvalds authored
      Pull file locking fixes from Jeff Layton:
       "A small set of patches to fix problems with the recent file locking
        changes that we discussed earlier this week"
      "
      
      * tag 'locks-v3.20-2' of git://git.samba.org/jlayton/linux:
        locks: fix list insertion when lock is split in two
        locks: remove conditional lock release in middle of flock_lock_file
        locks: only remove leases associated with the file being closed
        Revert "locks: keep a count of locks on the flctx lists"
      b2b89ebf
    • Linus Torvalds's avatar
      Merge tag 'asm-generic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic · eaa0eda5
      Linus Torvalds authored
      Pull asm-generic uaccess.h cleanup from Arnd Bergmann:
       "Like in 3.19, I once more have a multi-stage cleanup for one
        asm-generic header file, this time the work was done by Michael
        Tsirkin and cleans up the uaccess.h file in asm-generic, as well as
        all architectures for which the respective maintainers did not pick up
        his patches directly"
      
      * tag 'asm-generic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic: (37 commits)
        sparc32: nocheck uaccess coding style tweaks
        sparc64: nocheck uaccess coding style tweaks
        xtensa: macro whitespace fixes
        sh: macro whitespace fixes
        parisc: macro whitespace fixes
        m68k: macro whitespace fixes
        m32r: macro whitespace fixes
        frv: macro whitespace fixes
        cris: macro whitespace fixes
        avr32: macro whitespace fixes
        arm64: macro whitespace fixes
        arm: macro whitespace fixes
        alpha: macro whitespace fixes
        blackfin: macro whitespace fixes
        sparc64: uaccess_64 macro whitespace fixes
        sparc32: uaccess_32 macro whitespace fixes
        avr32: whitespace fix
        sh: fix put_user sparse errors
        metag: fix put_user sparse errors
        ia64: fix put_user sparse errors
        ...
      eaa0eda5
    • Linus Torvalds's avatar
      Merge tag 'pci-v3.20-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci · cad3ab58
      Linus Torvalds authored
      Pull PCI resource management fix from Bjorn Helgaas:
       "This fixes a double kfree in code we merged for v3.20:
      
        Remove duplicate kfree in of_pci_get_host_bridge_resources() (Lorenzo
        Pieralisi)"
      
      * tag 'pci-v3.20-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
        of/pci: Remove duplicate kfree in of_pci_get_host_bridge_resources()
      cad3ab58
    • Linus Torvalds's avatar
      Merge tag 'virtio-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux · 53861af9
      Linus Torvalds authored
      Pull virtio updates from Rusty Russell:
       "OK, this has the big virtio 1.0 implementation, as specified by OASIS.
      
        On top of tht is the major rework of lguest, to use PCI and virtio
        1.0, to double-check the implementation.
      
        Then comes the inevitable fixes and cleanups from that work"
      
      * tag 'virtio-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux: (80 commits)
        virtio: don't set VIRTIO_CONFIG_S_DRIVER_OK twice.
        virtio_net: unconditionally define struct virtio_net_hdr_v1.
        tools/lguest: don't use legacy definitions for net device in example launcher.
        virtio: Don't expose legacy net features when VIRTIO_NET_NO_LEGACY defined.
        tools/lguest: use common error macros in the example launcher.
        tools/lguest: give virtqueues names for better error messages
        tools/lguest: more documentation and checking of virtio 1.0 compliance.
        lguest: don't look in console features to find emerg_wr.
        tools/lguest: don't start devices until DRIVER_OK status set.
        tools/lguest: handle indirect partway through chain.
        tools/lguest: insert driver references from the 1.0 spec (4.1 Virtio Over PCI)
        tools/lguest: insert device references from the 1.0 spec (4.1 Virtio Over PCI)
        tools/lguest: rename virtio_pci_cfg_cap field to match spec.
        tools/lguest: fix features_accepted logic in example launcher.
        tools/lguest: handle device reset correctly in example launcher.
        virtual: Documentation: simplify and generalize paravirt_ops.txt
        lguest: remove NOTIFY call and eventfd facility.
        lguest: remove NOTIFY facility from demonstration launcher.
        lguest: use the PCI console device's emerg_wr for early boot messages.
        lguest: always put console in PCI slot #1.
        ...
      53861af9
    • Linus Torvalds's avatar
      Merge tag 'mfd-for-linus-3.20' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd · 5c277007
      Linus Torvalds authored
      Pull MFD updates from Lee Jones:
       "Changes to existing drivers:
         - fixr platform device collision; da9052, wm8994-core
         - regmap configuration amendments; tps65218
         - fix runtime PM deadlock; rtsx_usb
         - remove unused/superfluous code; db8500-prcmu, omap-usb-host
         - enable watchdog timer; lpc_sch
         - add start/stop RX URBs helpers; dln2
         - remove platform device (DT only); max77686, max77802
         - support suspend and resume; dln2
         - add Device Tree support; da9063
         - extra error checking; intel_soc_pmic
         - const'ify all the things; 88pm860x, hi6421-pmic, intel_soc_pmic,
                                     max77686, lm3533, retu, pcf50633,
                                     davinci_voicecodec, smsc-ece1099,
                                     tps65218, mc13xxx, tps65217, twl-core,
                                     twl6040
      
        New drivers/supported devices:
         - new driver for Richtek RT5033
         - new driver for DA9150 Charger and FuelGauge
         - new driver for Qualcomm Resource Power Manager (RPM)
         - add support for the ir-clk into sun6i-prcm
         - add support for FuelGauge into axp20x"
      
      * tag 'mfd-for-linus-3.20' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (32 commits)
        mfd: intel_soc_pmic: Add missing error check for devm_kzalloc
        mfd: rtsx_usb: Defer autosuspend while card exists
        mfd: devicetree: Add bindings for DA9063
        mfd: da9063: Add device tree support
        regulator: qcom-rpm: Add missing state flag in call to RPM
        mfd: qcom-rpm: Driver for the Qualcomm RPM
        mfd: devicetree: bindings: Add Qualcomm RPM DT binding
        mfd: max77686/802: Remove support for board files
        mfd: omap-usb-host: Remove some unused functions
        mfd: twl6040: Constify struct regmap_config and reg_default array
        mfd: twl-core: Constify struct regmap_config and reg_default array
        mfd: tps65217: Constify struct regmap_config
        mfd: mc13xxx: i2c/spi: Constify struct regmap_config
        mfd: tps65218: Constify struct regmap_config
        mfd: smsc-ece1099: Constify struct regmap_config
        mfd: davinci_voicecodec: Constify struct regmap_config
        mfd: pcf50633: Constify struct regmap_config
        mfd: retu: Constify struct regmap_config
        mfd: lm3533: Constify struct regmap_config
        mfd: max77686: Constify struct regmap_config
        ...
      5c277007
    • Linus Torvalds's avatar
      Merge tag 'pwm/for-3.20-rc1' of... · 9a8b2aa5
      Linus Torvalds authored
      Merge tag 'pwm/for-3.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm
      
      Pull pwm updates from Thierry Reding:
       "This contains two new drivers, one for Allwinner SoCs and the other
        for Imagination Technologies' Pistachio SoC.
      
        Complementing this are a couple of fixes to the Atmel HLCDC PWM and
        STi PWM drivers as well as minor cleanups to the core and the Tegra
        driver"
      
      * tag 'pwm/for-3.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm:
        pwm: tegra: Use NSEC_PER_SEC
        pwm: Remove unnecessary check before of_node_put()
        pwm: Add device tree binding document for IMG PWM DAC
        pwm: Imagination Technologies PWM DAC driver
        pwm: sti: Maintain a bitmap of configured devices
        pwm: sunxi: document OF bindings
        pwm: Add Allwinner SoC support
        pwm: atmel-hlcdc: Prevent division by zero
        pwm: atmel-hlcdc: Depend on HAVE_CLK
      9a8b2aa5
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma · ce1d3fde
      Linus Torvalds authored
      Pull dmaengine updates from Vinod Koul:
       "This update brings:
      
         - the big cleanup up by Maxime for device control and slave
           capabilities.  This makes the API much cleaner.
      
         - new IMG MDC driver by Andrew
      
         - new Renesas R-Car Gen2 DMA Controller driver by Laurent along with
           bunch of fixes on rcar drivers
      
         - odd fixes and updates spread over driver"
      
      * 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma: (130 commits)
        dmaengine: pl330: add DMA_PAUSE feature
        dmaengine: pl330: improve pl330_tx_status() function
        dmaengine: rcar-dmac: Disable channel 0 when using IOMMU
        dmaengine: rcar-dmac: Work around descriptor mode IOMMU errata
        dmaengine: rcar-dmac: Allocate hardware descriptors with DMAC device
        dmaengine: rcar-dmac: Fix oops due to unintialized list in error ISR
        dmaengine: rcar-dmac: Fix spinlock issues in interrupt
        dmaenegine: edma: fix sparse warnings
        dmaengine: rcar-dmac: Fix uninitialized variable usage
        dmaengine: shdmac: extend PM methods
        dmaengine: shdmac: use SET_RUNTIME_PM_OPS()
        dmaengine: pl330: fix bug that cause start the same descs in cyclic
        dmaengine: at_xdmac: allow muliple dwidths when doing slave transfers
        dmaengine: at_xdmac: simplify channel configuration stuff
        dmaengine: at_xdmac: introduce save_cc field
        dmaengine: at_xdmac: wait for in-progress transaction to complete after pausing a channel
        ioat: fail self-test if wait_for_completion times out
        dmaengine: dw: define DW_DMA_MAX_NR_MASTERS
        dmaengine: dw: amend description of dma_dev field
        dmatest: move src_off, dst_off, len inside loop
        ...
      ce1d3fde
    • Linus Torvalds's avatar
      Merge git://www.linux-watchdog.org/linux-watchdog · 928fce2f
      Linus Torvalds authored
      Pull watchdog updates from Wim Van Sebroeck:
       "This adds the following new drivers:
      
         - ImgTec PDC Watchdog Timer Driver,
         - Mediatek SoC integrated watchdog
      
        Add support for BCM5301X, IT8783, NCT6791 and NCT6792 WDT's
      
        Add bcm47xx_wdt and da9063 restart handlers and contains overall
        improvements and fixes"
      
      * git://www.linux-watchdog.org/linux-watchdog:
        watchdog: bcm47xx_wdt.c: allow enabling on BCM5301X arch
        watchdog: jz4740: Add DT support
        dt: watchdog: Add DT binding documentation for jz4740 watchdog timer
        watchdog: dw_wdt: Try to get a 30 second watchdog by default
        watchdog: dw_wdt: pat the watchdog before enabling it
        watchdog: w83627hf_wdt: Add support for NCT6791 and NCT6792
        watchdog: bcm47xx_wdt.c: add restart handler support
        watchdog: gpio_wdt: Add "always_running" feature to GPIO watchdog
        watchdog: da9063: Add restart handler support
        ARM: mediatek: dts: Add bindings for watchdog
        watchdog: Add driver for Mediatek watchdog
        watchdog: Fix omap watchdogs to enable the magic close bit
        watchdog: rt2880_wdt: minor clean up
        watchdog: hpwdt: Fix initialization message in hpwdt.c
        watchdog: it87_wdt: add IT8783 ID
        watchdog: imx2: Constify struct regmap_config and watchdog_ops
        DT: watchdog: Add ImgTec PDC Watchdog Timer binding documentation
        watchdog: ImgTec PDC Watchdog Timer Driver
      928fce2f
    • Linus Torvalds's avatar
      Merge tag 'firewire-updates' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394 · a5ac1fb1
      Linus Torvalds authored
      Pull fireware updates from Stefan Richter:
       "IEEE 1394 subsystem updates:
      
         - Replace made-up, unallocated Vendor and Model values of
           firewire-core's Configuration ROM register root directory by
           properly registered IDs.  (These IDs are visible to peer nodes on
           the bus and locally via sysfs, but they are not involved in
           protocol matching or driver matching, nor are they used in stock
           udev rules)
      
         - Remove some unneccessary code"
      
      * tag 'firewire-updates' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394:
        firewire: core: use correct vendor/model IDs
        firewire: sbp2: remove redundant check for bidi command
        firewire: ohci: Remove unused function
      a5ac1fb1
    • Linus Torvalds's avatar
      Merge tag 'for-linus-20150216' of git://git.infradead.org/linux-mtd · 402521b8
      Linus Torvalds authored
      Pull MTD updates from Brian Norris:
       "NAND:
      
         - Add new Hisilicon NAND driver for Hip04
         - Add default reboot handler, to ensure all outstanding erase
           transactions complete in time
         - jz4740: convert to use GPIO descriptor API
         - Atmel: add support for sama5d4
         - Change default bitflip threshold to 75% of correction strength
         - Miscellaneous cleanups and bugfixes
      
        SPI NOR:
      
         - Freescale QuadSPI:
         - Fix a few probe() and remove() issues
         - Add a MAINTAINERS entry for this driver
         - Tweak transfer size to increase read performance
         - Add suspend/resume support
         - Add Micron quad I/O support
         - ST FSM SPI: miscellaneous fixes
      
        JFFS2:
      
         - gracefully handle corrupted 'offset' field found on flash
      
        Other:
      
         - bcm47xxpart: add tweaks for a few new devices
         - mtdconcat: set return lengths properly for mtd_write_oob()
         - map_ram: enable use with mtdoops
         - maps: support fallback to ROM/UBI for write-protected NOR flash"
      
      * tag 'for-linus-20150216' of git://git.infradead.org/linux-mtd: (46 commits)
        mtd: hisilicon: && vs & typo
        jffs2: fix handling of corrupted summary length
        mtd: hisilicon: add device tree binding documentation
        mtd: hisilicon: add a new NAND controller driver for hisilicon hip04 Soc
        mtd: avoid registering reboot notifier twice
        mtd: concat: set the return lengths properly
        mtd: kconfig: replace PPC_OF with PPC
        mtd: denali: remove unnecessary stubs
        mtd: nand: remove redundant local variable
        MAINTAINERS: add maintainer entry for FREESCALE QUAD SPI driver
        mtd: fsl-quadspi: improve read performance by increase AHB transfer size
        mtd: fsl-quadspi: Remove unnecessary 'map_failed' label
        mtd: fsl-quadspi: Remove unneeded success/error messages
        mtd: fsl-quadspi: Fix the error paths
        mtd: nand: omap: drop condition with no effect
        mtd: nand: jz4740: Convert to GPIO descriptor API
        mtd: nand: Request strength instead of bytes for soft BCH
        mtd: nand: default bitflip-reporting threshold to 75% of correction strength
        mtd: atmel_nand: introduce a new compatible string for sama5d4 chip
        mtd: atmel_nand: return max bitflips in all sectors in pmecc_correction()
        ...
      402521b8
    • Thierry Reding's avatar
      pwm: tegra: Use NSEC_PER_SEC · b65af27a
      Thierry Reding authored
      Instead of using the literal value for the number of nanoseconds per
      second, use the macro instead to increase readability.
      Signed-off-by: default avatarThierry Reding <thierry.reding@gmail.com>
      b65af27a
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · f5af19d1
      Linus Torvalds authored
      Pull networking updates from David Miller:
      
       1) Missing netlink attribute validation in nft_lookup, from Patrick
          McHardy.
      
       2) Restrict ipv6 partial checksum handling to UDP, since that's the
          only case it works for.  From Vlad Yasevich.
      
       3) Clear out silly device table sentinal macros used by SSB and BCMA
          drivers.  From Joe Perches.
      
       4) Make sure the remote checksum code never creates a situation where
          the remote checksum is applied yet the tunneling metadata describing
          the remote checksum transformation is still present.  Otherwise an
          external entity might see this and apply the checksum again.  From
          Tom Herbert.
      
       5) Use msecs_to_jiffies() where applicable, from Nicholas Mc Guire.
      
       6) Don't explicitly initialize timer struct fields, use setup_timer()
          and mod_timer() instead.  From Vaishali Thakkar.
      
       7) Don't invoke tg3_halt() without the tp->lock held, from Jun'ichi
          Nomura.
      
       8) Missing __percpu annotation in ipvlan driver, from Eric Dumazet.
      
       9) Don't potentially perform skb_get() on shared skbs, also from Eric
          Dumazet.
      
      10) Fix COW'ing of metrics for non-DST_HOST routes in ipv6, from Martin
          KaFai Lau.
      
      11) Fix merge resolution error between the iov_iter changes in vhost and
          some bug fixes that occurred at the same time.  From Jason Wang.
      
      12) If rtnl_configure_link() fails we have to perform a call to
          ->dellink() before unregistering the device.  From WANG Cong.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (39 commits)
        net: dsa: Set valid phy interface type
        rtnetlink: call ->dellink on failure when ->newlink exists
        com20020-pci: add support for eae single card
        vhost_net: fix wrong iter offset when setting number of buffers
        net: spelling fixes
        net/core: Fix warning while make xmldocs caused by dev.c
        net: phy: micrel: disable NAND-tree for KSZ8021, KSZ8031, KSZ8051, KSZ8081
        ipv6: fix ipv6_cow_metrics for non DST_HOST case
        openvswitch: Fix key serialization.
        r8152: restore hw settings
        hso: fix rx parsing logic when skb allocation fails
        tcp: make sure skb is not shared before using skb_get()
        bridge: netfilter: Move sysctl-specific error code inside #ifdef
        ipv6: fix possible deadlock in ip6_fl_purge / ip6_fl_gc
        ipvlan: add a missing __percpu pcpu_stats
        tg3: Hold tp->lock before calling tg3_halt() from tg3_init_one()
        bgmac: fix device initialization on Northstar SoCs (condition typo)
        qlcnic: Delete existing multicast MAC list before adding new
        net/mlx5_core: Fix configuration of log_uar_page_sz
        sunvnet: don't change gso data on clones
        ...
      f5af19d1
    • Linus Torvalds's avatar
      Merge tag 'md/3.20-fixes' of git://neil.brown.name/md · 0d695d6d
      Linus Torvalds authored
      Pull md bugfixes from Neil Brown:
       "Three bug md fixes for 3.20
      
        yet-another-livelock in raid5, and a problem with write errors to
        4K-block devices"
      
      * tag 'md/3.20-fixes' of git://neil.brown.name/md:
        md/raid5: Fix livelock when array is both resyncing and degraded.
        md/raid10: round up to bdev_logical_block_size in narrow_write_error.
        md/raid1: round up to bdev_logical_block_size in narrow_write_error
      0d695d6d
    • Linus Torvalds's avatar
      Merge tag 'please-pull-fixmcelog' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras · d96c757e
      Linus Torvalds authored
      Pull mcelog regression fix from Tony Luck:
       "Fix regression - functions on the mce notifier chain should not be
        able to decide that an event should not be logged"
      
      * tag 'please-pull-fixmcelog' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras:
        x86/mce: Fix regression. All error records should report via /dev/mcelog
      d96c757e
    • Linus Torvalds's avatar
      Merge tag 'docs-fix' of git://git.lwn.net/linux-2.6 · fbe4da49
      Linus Torvalds authored
      Pull DocBook build fix from Jonathan Corbet:
       "Fix the DocBook build failure caused by the move of the i2o subsystem
        to the staging tree"
      
      * tag 'docs-fix' of git://git.lwn.net/linux-2.6:
        Fix docs build failure caused by i2o removal
      fbe4da49
    • Linus Torvalds's avatar
      Merge branch 'for-3.20' of git://linux-nfs.org/~bfields/linux · 533cf7ae
      Linus Torvalds authored
      Pull nfsd bugfixes from Bruce Fields:
       "These are fixes for two bugs introduced during the merge window"
      
      * 'for-3.20' of git://linux-nfs.org/~bfields/linux:
        nfsd4: fix v3-less build
        nfsd: fix comparison in fh_fsid_match()
      533cf7ae
    • NeilBrown's avatar
      md/raid5: Fix livelock when array is both resyncing and degraded. · 26ac1073
      NeilBrown authored
      Commit a7854487:
        md: When RAID5 is dirty, force reconstruct-write instead of read-modify-write.
      
      Causes an RCW cycle to be forced even when the array is degraded.
      A degraded array cannot support RCW as that requires reading all data
      blocks, and one may be missing.
      
      Forcing an RCW when it is not possible causes a live-lock and the code
      spins, repeatedly deciding to do something that cannot succeed.
      
      So change the condition to only force RCW on non-degraded arrays.
      Reported-by: default avatarManibalan P <pmanibalan@amiindia.co.in>
      Bisected-by: default avatarJes Sorensen <Jes.Sorensen@redhat.com>
      Tested-by: default avatarJes Sorensen <Jes.Sorensen@redhat.com>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Fixes: a7854487
      Cc: stable@vger.kernel.org (v3.7+)
      26ac1073
    • Linus Torvalds's avatar
      Merge branch 'lazytime' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 03891159
      Linus Torvalds authored
      Pull lazytime mount option support from Al Viro:
       "Lazytime stuff from tytso"
      
      * 'lazytime' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        ext4: add optimization for the lazytime mount option
        vfs: add find_inode_nowait() function
        vfs: add support for a lazytime mount option
      03891159
  4. 17 Feb, 2015 10 commits
    • Linus Torvalds's avatar
      Merge branch 'iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 66dc830d
      Linus Torvalds authored
      Pull iov_iter updates from Al Viro:
       "More iov_iter work - missing counterpart of iov_iter_init() for
        bvec-backed ones and vfs_read_iter()/vfs_write_iter() - wrappers for
        sync calls of ->read_iter()/->write_iter()"
      
      * 'iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        fs: add vfs_iter_{read,write} helpers
        new helper: iov_iter_bvec()
      66dc830d
    • Linus Torvalds's avatar
      Merge branch 'getname2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 05016b0f
      Linus Torvalds authored
      Pull getname/putname updates from Al Viro:
       "Rework of getname/getname_kernel/etc., mostly from Paul Moore.  Gets
        rid of quite a pile of kludges between namei and audit..."
      
      * 'getname2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        audit: replace getname()/putname() hacks with reference counters
        audit: fix filename matching in __audit_inode() and __audit_inode_child()
        audit: enable filename recording via getname_kernel()
        simpler calling conventions for filename_mountpoint()
        fs: create proper filename objects using getname_kernel()
        fs: rework getname_kernel to handle up to PATH_MAX sized filenames
        cut down the number of do_path_lookup() callers
      05016b0f
    • Linus Torvalds's avatar
      Merge branch 'debugfs_automount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · c6b1de1b
      Linus Torvalds authored
      Pull debugfs patches from Al Viro:
       "debugfs patches, mostly to make it possible for something like tracefs
        to be transparently automounted on given directory in debugfs.
      
        New primitive in there is debugfs_create_automount(name, parent, func,
        arg), which creates a directory and makes its ->d_automount() return
        func(arg).  Another missing primitive was debugfs_create_file_size() -
        open-coded in quite a few places.  Dave's patch adds it and converts
        the open-code instances to calling it"
      
      * 'debugfs_automount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        debugfs: Provide a file creation function that also takes an initial size
        new primitive: debugfs_create_automount()
        debugfs: split end_creating() into success and failure cases
        debugfs: take mode-dependent parts of debugfs_get_inode() into callers
        fold debugfs_mknod() into callers
        fold debugfs_create() into caller
        fold debugfs_mkdir() into caller
        debugfs_mknod(): get rid useless arguments
        fold debugfs_link() into caller
        debugfs: kill __create_file()
        debugfs: split the beginning and the end of __create_file() off
        debugfs_{mkdir,create,link}(): get rid of redundant argument
      c6b1de1b
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 50652963
      Linus Torvalds authored
      Pull misc VFS updates from Al Viro:
       "This cycle a lot of stuff sits on topical branches, so I'll be sending
        more or less one pull request per branch.
      
        This is the first pile; more to follow in a few.  In this one are
        several misc commits from early in the cycle (before I went for
        separate branches), plus the rework of mntput/dput ordering on umount,
        switching to use of fs_pin instead of convoluted games in
        namespace_unlock()"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        switch the IO-triggering parts of umount to fs_pin
        new fs_pin killing logics
        allow attaching fs_pin to a group not associated with some superblock
        get rid of the second argument of acct_kill()
        take count and rcu_head out of fs_pin
        dcache: let the dentry count go down to zero without taking d_lock
        pull bumping refcount into ->kill()
        kill pin_put()
        mode_t whack-a-mole: chelsio
        file->f_path.dentry is pinned down for as long as the file is open...
        get rid of lustre_dump_dentry()
        gut proc_register() a bit
        kill d_validate()
        ncpfs: get rid of d_validate() nonsense
        selinuxfs: don't open-code d_genocide()
      50652963
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · e2b74f23
      Linus Torvalds authored
      Merge yet more updates from Andrew Morton:
      
       - a pile of minor fs fixes and cleanups
      
       - kexec updates
      
       - random misc fixes in various places: vmcore, rbtree, eventfd, ipc, seccomp.
      
       - a series of python-based kgdb helper scripts
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (58 commits)
        seccomp: cap SECCOMP_RET_ERRNO data to MAX_ERRNO
        samples/seccomp: improve label helper
        ipc,sem: use current->state helpers
        scripts/gdb: disable pagination while printing from breakpoint handler
        scripts/gdb: define maintainer
        scripts/gdb: convert CpuList to generator function
        scripts/gdb: convert ModuleList to generator function
        scripts/gdb: use a generator instead of iterator for task list
        scripts/gdb: ignore byte-compiled python files
        scripts/gdb: port to python3 / gdb7.7
        scripts/gdb: add basic documentation
        scripts/gdb: add lx-lsmod command
        scripts/gdb: add class to iterate over CPU masks
        scripts/gdb: add lx_current convenience function
        scripts/gdb: add internal helper and convenience function for per-cpu lookup
        scripts/gdb: add get_gdbserver_type helper
        scripts/gdb: add internal helper and convenience function to retrieve thread_info
        scripts/gdb: add is_target_arch helper
        scripts/gdb: add helper and convenience function to look up tasks
        scripts/gdb: add task iteration class
        ...
      e2b74f23
    • Kees Cook's avatar
      seccomp: cap SECCOMP_RET_ERRNO data to MAX_ERRNO · 580c57f1
      Kees Cook authored
      The value resulting from the SECCOMP_RET_DATA mask could exceed MAX_ERRNO
      when setting errno during a SECCOMP_RET_ERRNO filter action.  This makes
      sure we have a reliable value being set, so that an invalid errno will not
      be ignored by userspace.
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      Reported-by: default avatarDmitry V. Levin <ldv@altlinux.org>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Will Drewry <wad@chromium.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      580c57f1
    • Kees Cook's avatar
      samples/seccomp: improve label helper · 3a9af0bd
      Kees Cook authored
      Fixes a potential corruption with uninitialized stack memory in the
      seccomp BPF sample program.
      
      [akpm@linux-foundation.org: coding-style fixlet]
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      Reported-by: default avatarRobert Swiecki <swiecki@google.com>
      Tested-by: default avatarRobert Swiecki <swiecki@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3a9af0bd
    • Davidlohr Bueso's avatar
      ipc,sem: use current->state helpers · 52644c9a
      Davidlohr Bueso authored
      Call __set_current_state() instead of assigning the new state directly.
      These interfaces also aid CONFIG_DEBUG_ATOMIC_SLEEP environments, keeping
      track of who changed the state.
      Signed-off-by: default avatarDavidlohr Bueso <dbueso@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      52644c9a
    • Jan Kiszka's avatar
      scripts/gdb: disable pagination while printing from breakpoint handler · a9c5bcfa
      Jan Kiszka authored
      While reporting the (refreshed) list of modules on automatic updates we
      may hit the page boundary of the output console and cause a stop if
      pagination is enabled.  However, gdb does not accept user input while
      running over the breakpoint handler.  So we get stuck, and the user is
      forced to interrupt gdb.
      
      Resolve this by disabling pagination during automatic symbol updates.  We
      restore the user's configuration once done.
      Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Jason Wessel <jason.wessel@windriver.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Ben Widawsky <ben@bwidawsk.net>
      Cc: Borislav Petkov <bp@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a9c5bcfa
    • Jan Kiszka's avatar
      scripts/gdb: define maintainer · 158daf16
      Jan Kiszka authored
      I'm proposing myself for keeping an eye on these scripts and integrating
      contributions.
      Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Jason Wessel <jason.wessel@windriver.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Ben Widawsky <ben@bwidawsk.net>
      Cc: Borislav Petkov <bp@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      158daf16