GitHub/moto-9609/android_kernel_motorola_exynos9610.git
11 years agoipc/msg.c: Fix lost wakeup in msgsnd().
Manfred Spraul [Tue, 3 Sep 2013 14:00:08 +0000 (16:00 +0200)]
ipc/msg.c: Fix lost wakeup in msgsnd().

The check if the queue is full and adding current to the wait queue of
pending msgsnd() operations (ss_add()) must be atomic.

Otherwise:
 - the thread that performs msgsnd() finds a full queue and decides to
   sleep.
 - the thread that performs msgrcv() first reads all messages from the
   queue and then sleeps, because the queue is empty.
 - the msgrcv() calls do not perform any wakeups, because the msgsnd()
   task has not yet called ss_add().
 - then the msgsnd()-thread first calls ss_add() and then sleeps.

Net result: msgsnd() and msgrcv() both sleep forever.

Observed with msgctl08 from ltp with a preemptible kernel.

Fix: Call ipc_lock_object() before performing the check.

The patch also moves security_msg_queue_msgsnd() under ipc_lock_object:
 - msgctl(IPC_SET) explicitely mentions that it tries to expunge any
   pending operations that are not allowed anymore with the new
   permissions.  If security_msg_queue_msgsnd() is called without locks,
   then there might be races.
 - it makes the patch much simpler.

Reported-and-tested-by: Vineet Gupta <Vineet.Gupta1@synopsys.com>
Acked-by: Rik van Riel <riel@redhat.com>
Cc: stable@vger.kernel.org # for 3.11
Signed-off-by: Manfred Spraul <manfred@colorfullife.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
11 years agoMerge tag 'regulator-v3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
Linus Torvalds [Tue, 3 Sep 2013 17:09:29 +0000 (10:09 -0700)]
Merge tag 'regulator-v3.12' of git://git./linux/kernel/git/broonie/regulator

Pull regulator updates from Mark Brown:
 "Not much exciting going on with the regulator API this time around,
  lots of driver fixes and enhancements - the main thing is the addition
  of a new API to help make the stubbing code do the right thing for
  missing regulator mappings.

  Highlights:

   - A new regulator_get_optional() API call for regulators that can be
     absent in normal operation.  This currently does nothing but will
     be used to improve the stubbing code for unspecified regulators,
     helping avoid some of the issues we've seen with adding new
     regulator support.
   - Helpers for devices with multiple linear ranges of voltages in the
     same regulator.
   - Moved the helpers into a separate file since core.c is getting
     rather large.
   - New drivers for Dialog DA9210 and DA9063, Freescale pfuze100 and
     Marvell 88pm800"

* tag 'regulator-v3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (70 commits)
  regulator: da9063: Statize da9063_ldo_lim_event
  regulator: lp872x: Make REGULATOR_LP872X depend on I2C rather than I2C=y
  regulator: tps65217: Convert to use linear ranges
  regulator: da9063: Use IS_ERR to check return value of regulator_register()
  regulator: da9063: Optimize da9063_set_current_limit implementation
  regulator: build: Allow most regulators to be built as modules
  regulator: Add devm_regulator_get_exclusive()
  regulator: da9063: Add Dialog DA9063 voltage regulators support.
  regulator: ti-abb: simplify platform_get_resource_byname/devm_ioremap_resource
  hwmon: (sht15) Use devm_regulator_get_optional()
  regulator: core: Use bool for exclusivitity flag
  regulator: 88pm800: forever loop in pm800_regulator_probe()
  cpufreq: cpufreq-cpu0: Use devm_regulator_get_optional()
  regulator: da9210: Remove redundant MODULE_ALIAS
  regulator: 88pm800: Fix checking whether num_regulator is valid
  regulator: s2mps11: Fix setting ramp_delay
  regulator: s2mps11: Fix wrong arguments for regmap_update_bits() call
  regulator: palmas: Update the DT binding doc for smps10 out1 and out2
  regulator: palmas: model SMPS10 as two regulators
  regulator: core: Move list_voltage_{linear,linear_range,table} to helpers.c
  ...

11 years agoMerge tag 'spi-v3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
Linus Torvalds [Tue, 3 Sep 2013 17:08:25 +0000 (10:08 -0700)]
Merge tag 'spi-v3.12' of git://git./linux/kernel/git/broonie/spi

Pull spi updates from Mark Brown:
 "Business as usual for SPI - some new drivers, lots of fixes and
  updates to existing drivers plus some new framework features.  Notable
  changes are:

   - Support for dual and quad data lines, commonly used by flash chips
     to improve performance, from Wang Yuhang.
   - Factored out a common pattern for runtime PM implementation into
     the core saving a bunch of code.
   - A particularly nice set of updates to the ep93xx driver from
     H Hartley Sweeten, modernising it and reducing the code size a lot.
   - New drivers for Blackfin v3, EFM32, Freescale DSPI and TI QSPI"

* tag 'spi-v3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (133 commits)
  spi/qspi: fix missing unlock on error in ti_qspi_start_transfer_one()
  spi: quad: fix the name of DT property
  spi: core: Fix spi_register_master error handling
  spi: efm32: Fix build error
  spi: altera: Use DIV_ROUND_UP to calculate hw->bytes_per_word
  spi: rspi: Add spi_master_get() call to prevent use after free
  spi: quad: Make DT properties optional
  spi: quad: Fix missing return
  spi: Use dev_get_drvdata at appropriate places
  spi: use dev_get_platdata()
  spi: nuc900: Fix mode_bits setting
  spi: simplify devm_request_mem_region/devm_ioremap
  spi: altera: Simplify altera_spi_txrx implementation for noirq case
  spi: spi-rspi: fix inconsistent spin_lock_irqsave
  spi/qspi: Add compatible string for am4372.
  spi/qspi: Fix device table entry
  spi/sirf: fix the misunderstanding about len of spi_transfer
  spi/qspi: Add dual/quad spi read support
  spi: sirf: fix error return code in spi_sirfsoc_probe()
  spi: bcm2835: Add spi_master_get() call to prevent use after free
  ...

11 years agoMerge tag 'regmap-v3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
Linus Torvalds [Tue, 3 Sep 2013 17:07:40 +0000 (10:07 -0700)]
Merge tag 'regmap-v3.12' of git://git./linux/kernel/git/broonie/regmap

Pull regmap updates from Mark Brown:
 "A quiet release for regmap, some cleanups, fixes and:

   - Improved node coalescing for rbtree, reducing memory usage and
     improving performance during syncs.
   - Support for registering multiple register patches.
   - A quirk for handling interrupts that need to be clear when masked
     in regmap-irq"

* tag 'regmap-v3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap:
  regmap: rbtree: Make cache_present bitmap per node
  regmap: rbtree: Reduce number of nodes, take 2
  regmap: rbtree: Simplify adjacent node look-up
  regmap: debugfs: Fix continued read from registers file
  regcache-rbtree: Fix reg_stride != 1
  regmap: Allow multiple patches to be registered
  regmap: regcache: allow read-only regs to be cached
  regmap: fix regcache_reg_present() for empty cache
  regmap: core: allow a virtual range to cover its own data window
  regmap: irq: document mask/wake_invert flags
  regmap: irq: make flags bool and put them in a bitfield
  regmap: irq: Allow to acknowledge masked interrupts during initialization
  regmap: Provide __acquires/__releases annotations

11 years agoMerge branch 'lockref' (locked reference counts)
Linus Torvalds [Tue, 3 Sep 2013 15:08:21 +0000 (08:08 -0700)]
Merge branch 'lockref' (locked reference counts)

Merge lockref infrastructure code by me and Waiman Long.

I already merged some of the preparatory patches that didn't actually do
any semantic changes earlier, but this merges the actual _reason_ for
those preparatory patches.

The "lockref" structure is a combination "spinlock and reference count"
that allows optimized reference count accesses.  In particular, it
guarantees that the reference count will be updated AS IF the spinlock
was held, but using atomic accesses that cover both the reference count
and the spinlock words, we can often do the update without actually
having to take the lock.

This allows us to avoid the nastiest cases of spinlock contention on
large machines under heavy pathname lookup loads.  When updating the
dentry reference counts on a large system, we'll still end up with the
cache line bouncing around, but that's much less noticeable than
actually having to spin waiting for the lock.

* lockref:
  lockref: implement lockless reference count updates using cmpxchg()
  lockref: uninline lockref helper functions
  vfs: reimplement d_rcu_to_refcount() using lockref_get_or_lock()
  vfs: use lockref_get_not_zero() for optimistic lockless dget_parent()
  lockref: add 'lockref_get_or_lock() helper

11 years agoLinux 3.11
Linus Torvalds [Mon, 2 Sep 2013 20:46:10 +0000 (13:46 -0700)]
Linux 3.11

11 years agolockref: implement lockless reference count updates using cmpxchg()
Linus Torvalds [Mon, 2 Sep 2013 19:12:15 +0000 (12:12 -0700)]
lockref: implement lockless reference count updates using cmpxchg()

Instead of taking the spinlock, the lockless versions atomically check
that the lock is not taken, and do the reference count update using a
cmpxchg() loop.  This is semantically identical to doing the reference
count update protected by the lock, but avoids the "wait for lock"
contention that you get when accesses to the reference count are
contended.

Note that a "lockref" is absolutely _not_ equivalent to an atomic_t.
Even when the lockref reference counts are updated atomically with
cmpxchg, the fact that they also verify the state of the spinlock means
that the lockless updates can never happen while somebody else holds the
spinlock.

So while "lockref_put_or_lock()" looks a lot like just another name for
"atomic_dec_and_lock()", and both optimize to lockless updates, they are
fundamentally different: the decrement done by atomic_dec_and_lock() is
truly independent of any lock (as long as it doesn't decrement to zero),
so a locked region can still see the count change.

The lockref structure, in contrast, really is a *locked* reference
count.  If you hold the spinlock, the reference count will be stable and
you can modify the reference count without using atomics, because even
the lockless updates will see and respect the state of the lock.

In order to enable the cmpxchg lockless code, the architecture needs to
do three things:

 (1) Make sure that the "arch_spinlock_t" and an "unsigned int" can fit
     in an aligned u64, and have a "cmpxchg()" implementation that works
     on such a u64 data type.

 (2) define a helper function to test for a spinlock being unlocked
     ("arch_spin_value_unlocked()")

 (3) select the "ARCH_USE_CMPXCHG_LOCKREF" config variable in its
     Kconfig file.

This enables it for x86-64 (but not 32-bit, we'd need to make sure
cmpxchg() turns into the proper cmpxchg8b in order to enable it for
32-bit mode).

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
11 years agolockref: uninline lockref helper functions
Linus Torvalds [Mon, 2 Sep 2013 18:58:20 +0000 (11:58 -0700)]
lockref: uninline lockref helper functions

They aren't very good to inline, since they already call external
functions (the spinlock code), and we're going to create rather more
complicated versions of them that can do the reference count updates
locklessly.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
11 years agovfs: reimplement d_rcu_to_refcount() using lockref_get_or_lock()
Linus Torvalds [Mon, 2 Sep 2013 18:38:06 +0000 (11:38 -0700)]
vfs: reimplement d_rcu_to_refcount() using lockref_get_or_lock()

This moves __d_rcu_to_refcount() from <linux/dcache.h> into fs/namei.c
and re-implements it using the lockref infrastructure instead.  It also
adds a lot of comments about what is actually going on, because turning
a dentry that was looked up using RCU into a long-lived reference
counted entry is one of the more subtle parts of the rcu walk.

We also used to be _particularly_ subtle in unlazy_walk() where we
re-validate both the dentry and its parent using the same sequence
count.  We used to do it by nesting the locks and then verifying the
sequence count just once.

That was silly, because nested locking is expensive, but the sequence
count check is not.  So this just re-validates the dentry and the parent
separately, avoiding the nested locking, and making the lockref lookup
possible.

Acked-by: Waiman Long <waiman.long@hp.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
11 years agovfs: use lockref_get_not_zero() for optimistic lockless dget_parent()
Waiman Long [Mon, 2 Sep 2013 18:29:22 +0000 (11:29 -0700)]
vfs: use lockref_get_not_zero() for optimistic lockless dget_parent()

A valid parent pointer is always going to have a non-zero reference
count, but if we look up the parent optimistically without locking, we
have to protect against the (very unlikely) race against renaming
changing the parent from under us.

We do that by using lockref_get_not_zero(), and then re-checking the
parent pointer after getting a valid reference.

[ This is a re-implementation of a chunk from the original patch by
  Waiman Long: "dcache: Enable lockless update of dentry's refcount".
  I've completely rewritten the patch-series and split it up, but I'm
  attributing this part to Waiman as it's close enough to his earlier
  patch  - Linus ]

Signed-off-by: Waiman Long <Waiman.Long@hp.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
11 years agolockref: add 'lockref_get_or_lock() helper
Linus Torvalds [Mon, 2 Sep 2013 18:14:19 +0000 (11:14 -0700)]
lockref: add 'lockref_get_or_lock() helper

This behaves like "lockref_get_not_zero()", but instead of doing nothing
if the count was zero, it returns with the lock held.

This allows callers to revalidate the lockref-protected data structure
if required even if the count was zero to begin with, and possibly
increment the count if it passes muster.

In particular, the dentry code wants this when it wants to turn an
RCU-protected dentry into a stable refcounted one: if the dentry count
it zero, but the sequence number still validates the dentry, we can take
a reference to it.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
11 years agoMerge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Linus Torvalds [Mon, 2 Sep 2013 17:43:13 +0000 (10:43 -0700)]
Merge tag 'scsi-fixes' of git://git./linux/kernel/git/jejb/scsi

Pull SCSI fix from James Bottomley:
 "This is a bug fix for the pm80xx driver.  It turns out that when the
  new hardware support was added in 3.10 the IO command size was kept at
  the old hard coded value.  This means that the driver attaches to some
  new cards and then simply hangs the system"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
  [SCSI] pm80xx: fix Adaptec 71605H hang

11 years agoMerge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
Linus Torvalds [Mon, 2 Sep 2013 16:55:14 +0000 (09:55 -0700)]
Merge branch 'x86-urgent-for-linus' of git://git./linux/kernel/git/tip/tip

Pull x86 boot fix from Peter Anvin:
 "A single very small boot fix for very large memory systems (> 0.5T)"

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/mm: Fix boot crash with DEBUG_PAGE_ALLOC=y and more than 512G RAM

11 years agoMerge branch 'fixes' of git://git.infradead.org/users/vkoul/slave-dma
Linus Torvalds [Mon, 2 Sep 2013 16:54:06 +0000 (09:54 -0700)]
Merge branch 'fixes' of git://git.infradead.org/users/vkoul/slave-dma

Pull slave-dma fix from Vinod Koul:
 "A fix for resolving TI_EDMA driver's build error in allmodconfig to
  have filter function built in""

* 'fixes' of git://git.infradead.org/users/vkoul/slave-dma:
  dma/Kconfig: TI_EDMA needs to be boolean

11 years agoMerge remote-tracking branch 'regulator/topic/tps65912' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:23 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/tps65912' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/ti-abb' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:22 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/ti-abb' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/sec' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:21 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/sec' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/ramp' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:20 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/ramp' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/pfuze100' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:18 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/pfuze100' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/palmas' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:17 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/palmas' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/optional' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:17 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/optional' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/max8660' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:16 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/max8660' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/lp8755' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:14 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/lp8755' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/lp872x' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:13 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/lp872x' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/linear-range' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:12 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/linear-range' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/kconfig' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:11 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/kconfig' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/helpers' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:09 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/helpers' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/fan53555' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:08 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/fan53555' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/da9063' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:07 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/da9063' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/core' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:06 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/core' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/as3711' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:05 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/as3711' into regulator-next

11 years agoMerge remote-tracking branch 'regulator/topic/88pm800' into regulator-next
Mark Brown [Sun, 1 Sep 2013 12:50:04 +0000 (13:50 +0100)]
Merge remote-tracking branch 'regulator/topic/88pm800' into regulator-next

11 years agoMerge remote-tracking branch 'spi/topic/txx9' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:18 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/txx9' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/topcliff' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:17 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/topcliff' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/tle62x0' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:15 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/tle62x0' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/tel62x0' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:14 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/tel62x0' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/tegra' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:13 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/tegra' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/sirf' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:12 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/sirf' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/sh-msiof' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:11 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/sh-msiof' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/sh-hspi' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:10 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/sh-hspi' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/s3c64xx' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:09 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/s3c64xx' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/rspi' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:08 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/rspi' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/quad' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:07 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/quad' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/qspi' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:06 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/qspi' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/pxa' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:05 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/pxa' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/pl022' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:04 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/pl022' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/pdata' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:03 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/pdata' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/orion' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:02 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/orion' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/omap-100k' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:01 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/omap-100k' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/octeon' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:49:00 +0000 (13:49 +0100)]
Merge remote-tracking branch 'spi/topic/octeon' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/nuc900' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:59 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/nuc900' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/mxs' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:59 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/mxs' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/msglen' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:58 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/msglen' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/mpc512x' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:57 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/mpc512x' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/ioremap' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:56 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/ioremap' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/imx' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:55 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/imx' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/ep93xx' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:54 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/ep93xx' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/efm32' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:53 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/efm32' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/dspi' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:52 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/dspi' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/doc' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:51 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/doc' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/davinci' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:51 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/davinci' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/core' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:50 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/core' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/clps711x' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:49 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/clps711x' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/checks' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:48 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/checks' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/build' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:47 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/build' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/bpw' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:46 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/bpw' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/blackfin-v3' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:45 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/blackfin-v3' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/bitbang' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:44 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/bitbang' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/bcm2835' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:44 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/bcm2835' into spi-next

11 years agoMerge remote-tracking branch 'spi/topic/atmel' into spi-next
Mark Brown [Sun, 1 Sep 2013 12:48:43 +0000 (13:48 +0100)]
Merge remote-tracking branch 'spi/topic/atmel' into spi-next

11 years agospi/qspi: fix missing unlock on error in ti_qspi_start_transfer_one()
Wei Yongjun [Sun, 1 Sep 2013 01:01:00 +0000 (09:01 +0800)]
spi/qspi: fix missing unlock on error in ti_qspi_start_transfer_one()

Add the missing unlock before return from function ti_qspi_start_transfer_one()
in the error handling case.

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Mark Brown <broonie@linaro.org>
11 years agospi: quad: fix the name of DT property
wangyuhang [Sun, 1 Sep 2013 09:36:21 +0000 (17:36 +0800)]
spi: quad: fix the name of DT property

spi: quad: fix the name of DT property in patch

The previous property name spi-tx-nbits and spi-rx-nbits looks not
human-readable. To make it consistent with other devices, using property
name spi-tx-bus-width and spi-rx-bus-width instead of the previous one
specify the number of data wires that spi controller will work in.
Add the specification in spi-bus.txt.

Signed-off-by: wangyuhang <wangyuhang2014@gmail.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
11 years agoregulator: da9063: Statize da9063_ldo_lim_event
Axel Lin [Sun, 1 Sep 2013 04:19:51 +0000 (12:19 +0800)]
regulator: da9063: Statize da9063_ldo_lim_event

da9063_ldo_lim_event() is only referenced in this driver, make it static.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
11 years agoMerge remote-tracking branch 'regmap/topic/sparse' into regmap-next
Mark Brown [Sat, 31 Aug 2013 18:25:16 +0000 (19:25 +0100)]
Merge remote-tracking branch 'regmap/topic/sparse' into regmap-next

11 years agoMerge remote-tracking branch 'regmap/topic/rbtree' into regmap-next
Mark Brown [Sat, 31 Aug 2013 18:25:15 +0000 (19:25 +0100)]
Merge remote-tracking branch 'regmap/topic/rbtree' into regmap-next

11 years agoMerge remote-tracking branch 'regmap/topic/range' into regmap-next
Mark Brown [Sat, 31 Aug 2013 18:25:14 +0000 (19:25 +0100)]
Merge remote-tracking branch 'regmap/topic/range' into regmap-next

11 years agoMerge remote-tracking branch 'regmap/topic/patch' into regmap-next
Mark Brown [Sat, 31 Aug 2013 18:25:13 +0000 (19:25 +0100)]
Merge remote-tracking branch 'regmap/topic/patch' into regmap-next

11 years agoMerge remote-tracking branch 'regmap/topic/irq' into regmap-next
Mark Brown [Sat, 31 Aug 2013 18:25:12 +0000 (19:25 +0100)]
Merge remote-tracking branch 'regmap/topic/irq' into regmap-next

11 years agoMerge remote-tracking branch 'regmap/topic/cache' into regmap-next
Mark Brown [Sat, 31 Aug 2013 18:25:11 +0000 (19:25 +0100)]
Merge remote-tracking branch 'regmap/topic/cache' into regmap-next

11 years agospi: core: Fix spi_register_master error handling
Axel Lin [Sat, 31 Aug 2013 12:25:52 +0000 (20:25 +0800)]
spi: core: Fix spi_register_master error handling

In the case spi_master_initialize_queue() fails, current code calls
device_unregister() before return error from spi_register_master().
However, all the drivers call spi_master_put() in the error path if
spi_register_master() fails. Thus we should call device_del() rather than
device_unregister() before return error from spi_register_master().

This also makes all the spi_register_master() error handling consistent,
because all other error paths of spi_register_master() expect drivers to
call spi_master_put() if spi_register_master() fails.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
11 years agospi: efm32: Fix build error
Axel Lin [Sat, 31 Aug 2013 14:27:27 +0000 (22:27 +0800)]
spi: efm32: Fix build error

Obviously the of_device_id table name is wrong.

Fix below build error:

  CC [M]  drivers/spi/spi-efm32.o
drivers/spi/spi-efm32.c:499:1: error: '__mod_of_device_table' aliased to undefined symbol 'efm32_uart_dt_ids'
make[2]: *** [drivers/spi/spi-efm32.o] Error 1
make[1]: *** [drivers/spi] Error 2
make: *** [drivers] Error 2

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
11 years agospi: altera: Use DIV_ROUND_UP to calculate hw->bytes_per_word
Axel Lin [Thu, 29 Aug 2013 15:41:20 +0000 (23:41 +0800)]
spi: altera: Use DIV_ROUND_UP to calculate hw->bytes_per_word

The Altera SPI hardware can be configured to support data width from 1 to 32
since Quartus II 8.1. To avoid truncation by integer division, use DIV_ROUND_UP
to calculate hw->bytes_per_word.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Acked-by: Thomas Chou <thomas@wytron.com.tw>
Signed-off-by: Mark Brown <broonie@linaro.org>
11 years agospi: rspi: Add spi_master_get() call to prevent use after free
Axel Lin [Sat, 31 Aug 2013 11:42:56 +0000 (19:42 +0800)]
spi: rspi: Add spi_master_get() call to prevent use after free

In rspi_remove(), current code dereferences rspi after spi_unregister_master(),
thus add an extra spi_master_get() call is necessary to prevent use after free.

Current code already has an extra spi_master_put() call in rspi_remove(), so
this patch just adds a spi_master_get() call rather than a spi_master_get() with
spi_master_put() calls.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
11 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Linus Torvalds [Sat, 31 Aug 2013 00:43:17 +0000 (17:43 -0700)]
Merge git://git./linux/kernel/git/davem/net

Pull networking fixes from David Miller:

 1) There was a simplification in the ipv6 ndisc packet sending
    attempted here, which avoided using memory accounting on the
    per-netns ndisc socket for sending NDISC packets.  It did fix some
    important issues, but it causes regressions so it gets reverted here
    too.  Specifically, the problem with this change is that the IPV6
    output path really depends upon there being a valid skb->sk
    attached.

    The reason we want to do this change in some form when we figure out
    how to do it right, is that if a device goes down the ndisc_sk
    socket send queue will fill up and block NDISC packets that we want
    to send to other devices too.  That's really bad behavior.

    Hopefully Thomas can come up with a better version of this change.

 2) Fix a severe TCP performance regression by reverting a change made
    to dev_pick_tx() quite some time ago.  From Eric Dumazet.

 3) TIPC returns wrongly signed error codes, fix from Erik Hugne.

 4) Fix OOPS when doing IPSEC over ipv4 tunnels due to orphaning the
    skb->sk too early.  Fix from Li Hongjun.

 5) RAW ipv4 sockets can use the wrong routing key during lookup, from
    Chris Clark.

 6) Similar to #1 revert an older change that tried to use plain
    alloc_skb() for SYN/ACK TCP packets, this broke the netfilter owner
    mark which needs to see the skb->sk for such frames.  From Phil
    Oester.

 7) BNX2x driver bug fixes from Ariel Elior and Yuval Mintz,
    specifically in the handling of virtual functions.

 8) IPSEC path error propagations to sockets is not done properly when
    we have v4 in v6, and v6 in v4 type rules.  Fix from Hannes Frederic
    Sowa.

 9) Fix missing channel context release in mac80211, from Johannes Berg.

10) Fix network namespace handing wrt.  SCM_RIGHTS, from Andy
    Lutomirski.

11) Fix usage of bogus NAPI weight in jme, netxen, and ps3_gelic
    drivers.  From Michal Schmidt.

12) Hopefully a complete and correct fix for the genetlink dump locking
    and module reference counting.  From Pravin B Shelar.

13) sk_busy_loop() must do a cpu_relax(), from Eliezer Tamir.

14) Fix handling of timestamp offset when restoring a snapshotted TCP
    socket.  From Andrew Vagin.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (44 commits)
  net: fec: fix time stamping logic after napi conversion
  net: bridge: convert MLDv2 Query MRC into msecs_to_jiffies for max_delay
  mISDN: return -EINVAL on error in dsp_control_req()
  net: revert 8728c544a9c ("net: dev_pick_tx() fix")
  Revert "ipv6: Don't depend on per socket memory for neighbour discovery messages"
  ipv4 tunnels: fix an oops when using ipip/sit with IPsec
  tipc: set sk_err correctly when connection fails
  tcp: tcp_make_synack() should use sock_wmalloc
  bridge: separate querier and query timer into IGMP/IPv4 and MLD/IPv6 ones
  ipv6: Don't depend on per socket memory for neighbour discovery messages
  ipv4: sendto/hdrincl: don't use destination address found in header
  tcp: don't apply tsoffset if rcv_tsecr is zero
  tcp: initialize rcv_tstamp for restored sockets
  net: xilinx: fix memleak
  net: usb: Add HP hs2434 device to ZLP exception table
  net: add cpu_relax to busy poll loop
  net: stmmac: fixed the pbl setting with DT
  genl: Hold reference on correct module while netlink-dump.
  genl: Fix genl dumpit() locking.
  xfrm: Fix potential null pointer dereference in xdst_queue_output
  ...

11 years agospi: quad: Make DT properties optional
Mark Brown [Fri, 30 Aug 2013 22:19:40 +0000 (23:19 +0100)]
spi: quad: Make DT properties optional

The addition SPI quad support made the DT properties mandatory, breaking
compatibility with existing systems. Fix that by making them optional,
also improving the error messages while we're at it.

Signed-off-by: Mark Brown <broonie@linaro.org>
Tested-by: Stephen Warren <swarren@nvidia.com>
11 years agoMAINTAINERS: change my DT related maintainer address
Ian Campbell [Fri, 30 Aug 2013 08:50:42 +0000 (09:50 +0100)]
MAINTAINERS: change my DT related maintainer address

Filtering capabilities on my work email are pretty much non-existent and this
has turned out to be something of a firehose...

Cc: Stephen Warren <swarren@wwwdotorg.org>
Cc: Rob Herring <rob.herring@calxeda.com>
Cc: Olof Johansson <olof@lixom.net>
Cc: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Pawel Moll <pawel.moll@arm.com>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
11 years agoMerge tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Linus Torvalds [Sat, 31 Aug 2013 00:05:02 +0000 (17:05 -0700)]
Merge tag 'sound-3.11' of git://git./linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
 "This contains two Oops fixes (opti9xx and HD-audio) and a simple fixup
  for an Acer laptop.  All marked as stable patches"

* tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ALSA: opti9xx: Fix conflicting driver object name
  ALSA: hda - Fix NULL dereference with CONFIG_SND_DYNAMIC_MINORS=n
  ALSA: hda - Add inverted digital mic fixup for Acer Aspire One

11 years agoMerge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm...
Linus Torvalds [Fri, 30 Aug 2013 23:18:59 +0000 (16:18 -0700)]
Merge tag 'fixes-for-linus' of git://git./linux/kernel/git/arm/arm-soc

Pull ARM SoC fixes from Olof Johansson:
 "Two straggling fixes that I had missed as they were posted a couple of
  weeks ago, causing problems with interrupts (breaking them completely)
  on the CSR SiRF platforms"

* tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
  arm: prima2: drop nr_irqs in mach as we moved to linear irqdomain
  irqchip: sirf: move from legacy mode to linear irqdomain

11 years agoMerge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux
Linus Torvalds [Fri, 30 Aug 2013 23:17:10 +0000 (16:17 -0700)]
Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux

Pull drm fixes from Dave Airlie:
 "Since we are getting to the pointy end, one i915 black screen on some
  machines, and one vmwgfx stop userspace ability to nuke the VM,

  There might be one or two ati or nouveau fixes trickle in before
  final, but I think this should pretty much be it"

* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
  drm/vmwgfx: Split GMR2_REMAP commands if they are to large
  drm/i915: ivb: fix edp voltage swing reg val

11 years agoMerge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
Linus Torvalds [Fri, 30 Aug 2013 23:15:52 +0000 (16:15 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/dtor/input

Pull input layer updates from Dmitry Torokhov:
 "Just a couple of new IDs in Wacom and xpad drivers, i8042 is now
  disabled on ARC, and data checks in Elantech driver that were overly
  relaxed by the previous patch are now tightened"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
  Input: i8042 - disable the driver on ARC platforms
  Input: xpad - add signature for Razer Onza Classic Edition
  Input: elantech - fix packet check for v3 and v4 hardware
  Input: wacom - add support for 0x300 and 0x301

11 years agonet: fec: fix time stamping logic after napi conversion
Richard Cochran [Fri, 30 Aug 2013 18:28:10 +0000 (20:28 +0200)]
net: fec: fix time stamping logic after napi conversion

Commit dc975382 "net: fec: add napi support to improve proformance"
converted the fec driver to the napi model. However, that commit
forgot to remove the call to skb_defer_rx_timestamp which is only
needed in non-napi drivers.

(The function napi_gro_receive eventually calls netif_receive_skb,
which in turn calls skb_defer_rx_timestamp.)

This patch should also be applied to the 3.9 and 3.10 kernels.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agonet: bridge: convert MLDv2 Query MRC into msecs_to_jiffies for max_delay
Daniel Borkmann [Thu, 29 Aug 2013 21:55:05 +0000 (23:55 +0200)]
net: bridge: convert MLDv2 Query MRC into msecs_to_jiffies for max_delay

While looking into MLDv1/v2 code, I noticed that bridging code does
not convert it's max delay into jiffies for MLDv2 messages as we do
in core IPv6' multicast code.

RFC3810, 5.1.3. Maximum Response Code says:

  The Maximum Response Code field specifies the maximum time allowed
  before sending a responding Report. The actual time allowed, called
  the Maximum Response Delay, is represented in units of milliseconds,
  and is derived from the Maximum Response Code as follows: [...]

As we update timers that work with jiffies, we need to convert it.

Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Cc: Linus Lüssing <linus.luessing@web.de>
Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agospi: quad: Fix missing return
wangyuhang [Fri, 30 Aug 2013 10:05:10 +0000 (18:05 +0800)]
spi: quad: Fix missing return

Delete a "return" when commit the patch to a new kernel version
 by mistake. So recover it.

Signed-off-by: wangyuhang <wangyuhang2014@gmail.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
11 years agomISDN: return -EINVAL on error in dsp_control_req()
Dan Carpenter [Thu, 29 Aug 2013 08:47:00 +0000 (11:47 +0300)]
mISDN: return -EINVAL on error in dsp_control_req()

If skb->len is too short then we should return an error.  Otherwise we
read beyond the end of skb->data for several bytes.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agonet: revert 8728c544a9c ("net: dev_pick_tx() fix")
Eric Dumazet [Thu, 29 Aug 2013 01:10:43 +0000 (18:10 -0700)]
net: revert 8728c544a9c ("net: dev_pick_tx() fix")

commit 8728c544a9cbdc ("net: dev_pick_tx() fix") and commit
b6fe83e9525a ("bonding: refine IFF_XMIT_DST_RELEASE capability")
are quite incompatible : Queue selection is disabled because skb
dst was dropped before entering bonding device.

This causes major performance regression, mainly because TCP packets
for a given flow can be sent to multiple queues.

This is particularly visible when using the new FQ packet scheduler
with MQ + FQ setup on the slaves.

We can safely revert the first commit now that 416186fbf8c5b
("net: Split core bits of netdev_pick_tx into __netdev_pick_tx")
properly caps the queue_index.

Reported-by: Xi Wang <xii@google.com>
Diagnosed-by: Xi Wang <xii@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Tom Herbert <therbert@google.com>
Cc: Alexander Duyck <alexander.h.duyck@intel.com>
Cc: Denys Fedorysychenko <nuclearcat@nuclearcat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoRevert "ipv6: Don't depend on per socket memory for neighbour discovery messages"
David S. Miller [Fri, 30 Aug 2013 21:39:33 +0000 (17:39 -0400)]
Revert "ipv6: Don't depend on per socket memory for neighbour discovery messages"

This reverts commit 1f324e38870cc09659cf23bc626f1b8869e201f2.

It seems to cause regressions, and in particular the output path
really depends upon there being a socket attached to skb->sk for
checks such as sk_mc_loop(skb->sk) for example.  See ip6_output_finish2().

Reported-by: Stephen Warren <swarren@wwwdotorg.org>
Reported-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoipv4 tunnels: fix an oops when using ipip/sit with IPsec
Li Hongjun [Wed, 28 Aug 2013 09:54:50 +0000 (11:54 +0200)]
ipv4 tunnels: fix an oops when using ipip/sit with IPsec

Since commit 3d7b46cd20e3 (ip_tunnel: push generic protocol handling to
ip_tunnel module.), an Oops is triggered when an xfrm policy is configured on
an IPv4 over IPv4 tunnel.

xfrm4_policy_check() calls __xfrm_policy_check2(), which uses skb_dst(skb). But
this field is NULL because iptunnel_pull_header() calls skb_dst_drop(skb).

Signed-off-by: Li Hongjun <hongjun.li@6wind.com>
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agotipc: set sk_err correctly when connection fails
Erik Hugne [Wed, 28 Aug 2013 07:29:58 +0000 (09:29 +0200)]
tipc: set sk_err correctly when connection fails

Should a connect fail, if the publication/server is unavailable or
due to some other error, a positive value will be returned and errno
is never set. If the application code checks for an explicit zero
return from connect (success) or a negative return (failure), it
will not catch the error and subsequent send() calls will fail as
shown from the strace snippet below.

socket(0x1e /* PF_??? */, SOCK_SEQPACKET, 0) = 3
connect(3, {sa_family=0x1e /* AF_??? */, sa_data="\2\1\322\4\0\0\322\4\0\0\0\0\0\0"}, 16) = 111
sendto(3, "test", 4, 0, NULL, 0)        = -1 EPIPE (Broken pipe)

The reason for this behaviour is that TIPC wrongly inverts error
codes set in sk_err.

Signed-off-by: Erik Hugne <erik.hugne@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agotcp: tcp_make_synack() should use sock_wmalloc
Phil Oester [Tue, 27 Aug 2013 23:41:40 +0000 (16:41 -0700)]
tcp: tcp_make_synack() should use sock_wmalloc

In commit 90ba9b19 (tcp: tcp_make_synack() can use alloc_skb()), Eric changed
the call to sock_wmalloc in tcp_make_synack to alloc_skb.  In doing so,
the netfilter owner match lost its ability to block the SYNACK packet on
outbound listening sockets.  Revert the change, restoring the owner match
functionality.

This closes netfilter bugzilla #847.

Signed-off-by: Phil Oester <kernel@linuxace.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agobridge: separate querier and query timer into IGMP/IPv4 and MLD/IPv6 ones
Linus Lüssing [Fri, 30 Aug 2013 15:28:17 +0000 (17:28 +0200)]
bridge: separate querier and query timer into IGMP/IPv4 and MLD/IPv6 ones

Currently we would still potentially suffer multicast packet loss if there
is just either an IGMP or an MLD querier: For the former case, we would
possibly drop IPv6 multicast packets, for the latter IPv4 ones. This is
because we are currently assuming that if either an IGMP or MLD querier
is present that the other one is present, too.

This patch makes the behaviour and fix added in
"bridge: disable snooping if there is no querier" (b00589af3b04)
to also work if there is either just an IGMP or an MLD querier on the
link: It refines the deactivation of the snooping to be protocol
specific by using separate timers for the snooped IGMP and MLD queries
as well as separate timers for our internal IGMP and MLD queriers.

Signed-off-by: Linus Lüssing <linus.luessing@web.de>
Signed-off-by: David S. Miller <davem@davemloft.net>