platform/adaptation/renesas_rcar/renesas_kernel.git
11 years agoRevert "serial: 8250_pci: add support for another kind of NetMos Technology PCI 9835...
Greg Kroah-Hartman [Sun, 30 Jun 2013 16:03:06 +0000 (09:03 -0700)]
Revert "serial: 8250_pci: add support for another kind of NetMos Technology PCI 9835 Multi-I/O Controller"

This reverts commit 8d2f8cd424ca0b99001f3ff4f5db87c4e525f366.

As reported by Stefan, this device already works with the parport_serial
driver, so the 8250_pci driver should not also try to grab it as well.

Reported-by: Stefan Seyfried <stefan.seyfried@googlemail.com>
Cc: Wang YanQing <udknight@gmail.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agoMerge remote-tracking branch 'regmap/topic/field' into regmap-next
Mark Brown [Sun, 30 Jun 2013 11:40:03 +0000 (12:40 +0100)]
Merge remote-tracking branch 'regmap/topic/field' into regmap-next

11 years agoMerge remote-tracking branch 'regmap/topic/debugfs' into regmap-next
Mark Brown [Sun, 30 Jun 2013 11:40:02 +0000 (12:40 +0100)]
Merge remote-tracking branch 'regmap/topic/debugfs' into regmap-next

11 years agoMerge remote-tracking branch 'regmap/topic/core' into regmap-next
Mark Brown [Sun, 30 Jun 2013 11:40:02 +0000 (12:40 +0100)]
Merge remote-tracking branch 'regmap/topic/core' into regmap-next

11 years agoMerge remote-tracking branch 'regmap/topic/cache' into regmap-next
Mark Brown [Sun, 30 Jun 2013 11:40:01 +0000 (12:40 +0100)]
Merge remote-tracking branch 'regmap/topic/cache' into regmap-next

11 years agopinctrl: st: Remove unnecessary use of of_match_ptr macro
Axel Lin [Sun, 30 Jun 2013 00:58:57 +0000 (08:58 +0800)]
pinctrl: st: Remove unnecessary use of of_match_ptr macro

This is a DT only driver and st_pctl_of_match is always compiled
in. Hence of_match_ptr is unnecessary.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
11 years agopowerpc/eeh: Fix fetching bus for single-dev-PE
Gavin Shan [Wed, 5 Jun 2013 07:34:02 +0000 (15:34 +0800)]
powerpc/eeh: Fix fetching bus for single-dev-PE

While running Linux as guest on top of phyp, we possiblly have
PE that includes single PCI device. However, we didn't return
its PCI bus correctly and it leads to failure on recovery from
EEH errors for single-dev-PE. The patch fixes the issue.

Cc: <stable@vger.kernel.org> # v3.7+
Cc: Steve Best <sbest@us.ibm.com>
Signed-off-by: Gavin Shan <shangw@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
11 years agoMerge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
Linus Torvalds [Sun, 30 Jun 2013 00:02:48 +0000 (17:02 -0700)]
Merge branch 'merge' of git://git./linux/kernel/git/benh/powerpc

Pull powerpc fixes from Ben Herrenschmidt:
 "We discovered some breakage in our "EEH" (PCI Error Handling) code
  while doing error injection, due to a couple of regressions.  One of
  them is due to a patch (37f02195bee9 "powerpc/pci: fix PCI-e devices
  rescan issue on powerpc platform") that, in hindsight, I shouldn't
  have merged considering that it caused more problems than it solved.

  Please pull those two fixes.  One for a simple EEH address cache
  initialization issue.  The other one is a patch from Guenter that I
  had originally planned to put in 3.11 but which happens to also fix
  that other regression (a kernel oops during EEH error handling and
  possibly hotplug).

  With those two, the couple of test machines I've hammered with error
  injection are remaining up now.  EEH appears to still fail to recover
  on some devices, so there is another problem that Gavin is looking
  into but at least it's no longer crashing the kernel."

* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
  powerpc/pci: Improve device hotplug initialization
  powerpc/eeh: Add eeh_dev to the cache during boot

11 years agoARM: dt: Only print warning, not WARN() on bad cpu map in device tree
Olof Johansson [Sat, 29 Jun 2013 23:25:14 +0000 (16:25 -0700)]
ARM: dt: Only print warning, not WARN() on bad cpu map in device tree

Due to recent changes and expecations of proper cpu bindings, there are
now cases for many of the in-tree devicetrees where a WARN() will hit
on boot due to badly formatted /cpus nodes.

Downgrade this to a pr_warn() to be less alarmist, since it's not a
new problem.

Tested on Arndale, Cubox, Seaboard and Panda ES. Panda hits the WARN
without this, the others do not.

Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
11 years agoGpio/trivial: replace numeric with standard PM state macros
Yijing Wang [Thu, 27 Jun 2013 12:58:55 +0000 (20:58 +0800)]
Gpio/trivial: replace numeric with standard PM state macros

Use standard PM state macros PCI_Dx instead of numeric 0/1/2..

Signed-off-by: Yijing Wang <wangyijing@huawei.com>
Cc: Michael Buesch <m@bues.ch>
Cc: Grant Likely <grant.likely@linaro.org>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Jiri Kosina <trivial@kernel.org>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
11 years agopowerpc/pci: Improve device hotplug initialization
Guenter Roeck [Mon, 10 Jun 2013 17:18:08 +0000 (10:18 -0700)]
powerpc/pci: Improve device hotplug initialization

Commit 37f02195b (powerpc/pci: fix PCI-e devices rescan issue on powerpc
platform) fixes a problem with interrupt and DMA initialization on hot
plugged devices. With this commit, interrupt and DMA initialization for
hot plugged devices is handled in the pci device enable function.

This approach has a couple of drawbacks. First, it creates two code paths
for device initialization, one for hot plugged devices and another for devices
known during the initial PCI scan. Second, the initialization code for hot
plugged devices is only called when the device is enabled, ie typically
in the probe function. Also, the platform specific setup code is called each
time pci_enable_device() is called, not only once during device discovery,
meaning it is actually called multiple times, once for devices discovered
during the initial scan and again each time a driver is re-loaded.

The visible result is that interrupt pins are only assigned to hot plugged
devices when the device driver is loaded. Effectively this changes the PCI
probe API, since pci_dev->irq and the device's dma configuration will now
only be valid after pci_enable() was called at least once. A more subtle
change is that platform specific PCI device setup is moved from device
discovery into the driver's probe function, more specifically into the
pci_enable_device() call.

To fix the inconsistencies, add new function pcibios_add_device.
Call pcibios_setup_device from pcibios_setup_bus_devices if device setup
is not complete, and from pcibios_add_device if bus setup is complete.

With this change, device setup code is moved back into device initialization,
and called exactly once for both static and hot plugged devices.

[ This also fixes a regression introduced by the above patch which
  causes dev->irq to be overwritten under some cirumstances after
  MSIs have been enabled for the device which leads to crashes due
  to the MSI core "hijacking" dev->irq to store the base MSI number
  and not the LSI. --BenH
]

Cc: Yuanquan Chen <Yuanquan.Chen@freescale.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Hiroo Matsumoto <matsumoto.hiroo@jp.fujitsu.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
11 years agocgroup: CGRP_ROOT_SUBSYS_BOUND should also be ignored when mounting an existing hierarchy
Tejun Heo [Sat, 29 Jun 2013 21:06:10 +0000 (14:06 -0700)]
cgroup: CGRP_ROOT_SUBSYS_BOUND should also be ignored when mounting an existing hierarchy

0ce6cba357 ("cgroup: CGRP_ROOT_SUBSYS_BOUND should be ignored when
comparing mount options") only updated the remount path but
CGRP_ROOT_SUBSYS_BOUND should also be ignored when comparing options
while mounting an existing hierarchy.  As option mismatch triggers a
warning but doesn't fail the mount without sane_behavior, this only
triggers a spurious warning message.

Fix it by only comparing CGRP_ROOT_OPTION_MASK bits when comparing new
and existing root options.

Signed-off-by: Tejun Heo <tj@kernel.org>
11 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Linus Torvalds [Sat, 29 Jun 2013 18:34:18 +0000 (11:34 -0700)]
Merge git://git./linux/kernel/git/herbert/crypto-2.6

Pull crypto fix from Herbert Xu:
 "This fixes a crash in the crypto layer exposed by an SCTP test tool"

* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
  crypto: algboss - Hold ref count on larval

11 years agoMerge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux
Linus Torvalds [Sat, 29 Jun 2013 18:32:05 +0000 (11:32 -0700)]
Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux

Pull drm/qxl fix from Dave Airlie:
 "Bad me forgot an access check, possible security issue, but since this
  is the first kernel with it, should be fine to just put it in now"

* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
  drm/qxl: add missing access check for execbuffer ioctl

11 years agoFix: kernel/ptrace.c: ptrace_peek_siginfo() missing __put_user() validation
Mathieu Desnoyers [Fri, 28 Jun 2013 13:49:46 +0000 (09:49 -0400)]
Fix: kernel/ptrace.c: ptrace_peek_siginfo() missing __put_user() validation

This __put_user() could be used by unprivileged processes to write into
kernel memory.  The issue here is that even if copy_siginfo_to_user()
fails, the error code is not checked before __put_user() is executed.

Luckily, ptrace_peek_siginfo() has been added within the 3.10-rc cycle,
so it has not hit a stable release yet.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Acked-by: Oleg Nesterov <oleg@redhat.com>
Cc: Andrey Vagin <avagin@openvz.org>
Cc: Roland McGrath <roland@redhat.com>
Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
Cc: David Howells <dhowells@redhat.com>
Cc: Dave Jones <davej@redhat.com>
Cc: Pavel Emelyanov <xemul@parallels.com>
Cc: Pedro Alves <palves@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
11 years agoMerge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph...
Linus Torvalds [Sat, 29 Jun 2013 17:31:15 +0000 (10:31 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/sage/ceph-client

Pull Ceph fix from Sage Weil:
 "This is a recently spotted regression in the snapshot behavior...

  It turns out several tests weren't being run in the nightlies so this
  took a while to spot"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:
  rbd: send snapshot context with writes

11 years agoMerge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Linus Torvalds [Sat, 29 Jun 2013 17:30:31 +0000 (10:30 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/viro/vfs

Pull ubifs fixes from Al Viro:
 "A couple of ubifs readdir/lseek race fixes.  Stable fodder, really
  nasty..."

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
  UBIFS: fix a horrid bug
  UBIFS: prepare to fix a horrid bug

11 years agoMerge tag 'for-linus-20130628' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowe...
Linus Torvalds [Sat, 29 Jun 2013 17:28:52 +0000 (10:28 -0700)]
Merge tag 'for-linus-20130628' of git://git./linux/kernel/git/dhowells/linux-mn10300

Pull two MN10300 fixes from David Howells:
 "The first fixes a problem with passing arrays rather than pointers to
  get_user() where __typeof__ then wants to declare and initialise an
  array variable which gcc doesn't like.

  The second fixes a problem whereby putting mem=xxx into the kernel
  command line causes init=xxx to get an incorrect value."

* tag 'for-linus-20130628' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-mn10300:
  mn10300: Use early_param() to parse "mem=" parameter
  mn10300: Allow to pass array name to get_user()

11 years agoMerge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
Linus Torvalds [Sat, 29 Jun 2013 17:27:19 +0000 (10:27 -0700)]
Merge branch 'timers-urgent-for-linus' of git://git./linux/kernel/git/tip/tip

Pull timer fix from Thomas Gleixner:
 "Correct an ordering issue in the tick broadcast code.  I really wish
  we'd get compensation for pain and suffering for each line of code we
  write to work around dysfunctional timer hardware."

* 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  tick: Fix tick_broadcast_pending_mask not cleared

11 years agoMerge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
Linus Torvalds [Sat, 29 Jun 2013 17:26:50 +0000 (10:26 -0700)]
Merge branch 'perf-urgent-for-linus' of git://git./linux/kernel/git/tip/tip

Pull perf fix from Ingo Molnar:
 "One more fix for a recently discovered bug"

* 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  perf: Disable monitoring on setuid processes for regular users

11 years agoMerge branch 'devel-stable' into for-next
Russell King [Sat, 29 Jun 2013 10:44:43 +0000 (11:44 +0100)]
Merge branch 'devel-stable' into for-next

Conflicts:
arch/arm/Makefile
arch/arm/include/asm/glue-proc.h

11 years agoMerge branches 'fixes', 'mcpm', 'misc' and 'mmci' into for-next
Russell King [Sat, 29 Jun 2013 10:43:28 +0000 (11:43 +0100)]
Merge branches 'fixes', 'mcpm', 'misc' and 'mmci' into for-next

11 years agoARM: 7775/1: mm: Remove do_sect_fault from LPAE code
Steven Capper [Tue, 25 Jun 2013 07:45:51 +0000 (08:45 +0100)]
ARM: 7775/1: mm: Remove do_sect_fault from LPAE code

For LPAE, do_sect_fault used to be invoked as the second level access
flag handler. When transparent huge pages were introduced for LPAE,
do_page_fault was used instead.

Unfortunately, do_sect_fault remains defined but not used for LPAE code
resulting in a compile warning.

This patch surrounds do_sect_fault with #ifndef CONFIG_ARM_LPAE to fix
this warning.

Signed-off-by: Steve Capper <steve.capper@linaro.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
11 years agoARM: 7777/1: Avoid extra calls to the C compiler
Douglas Anderson [Thu, 27 Jun 2013 03:32:06 +0000 (04:32 +0100)]
ARM: 7777/1: Avoid extra calls to the C compiler

Starting up the C compiler can be a slow operation on some systems.
Though these calls don't individually take a lot of time, they add up.
Rearrange the ARM Makefile a bit to avoid extra calls to the compiler
when they can be easily avoided.

When running with the Chrome OS ARM cross compiler
"armv7a-cros-linux-gnueabi-", this shaved .55 seconds (from 5.31
seconds to 4.76 seconds) off an incremental build of the kernel:
  time make -j32 ARCH=arm CROSS_COMPILE=armv7a-cros-linux-gnueabi-

Thanks to Mike Frysinger for the clean trick to make this work.

Signed-off-by: Doug Anderson <dianders@chromium.org>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
11 years agoARM: 7774/1: Fix dtb dependency to use order-only prerequisites
Douglas Anderson [Mon, 24 Jun 2013 21:03:50 +0000 (22:03 +0100)]
ARM: 7774/1: Fix dtb dependency to use order-only prerequisites

The %.dtb dependency is specified to depend on the PHONY "scripts".
That means that it'll build every time even if the underlying dtb file
hasn't been touched.  Use an order-only prerequisites to fix this.
Also mark "dtbs" as PHONY for correctness.

This was broken in (70b0476 ARM: 7513/1: Make sure dtc is built before
running it).

Reported-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Doug Anderson <dianders@chromium.org>
Acked-by: Olof Johansson <olof@lixom.net>
Reviewed-by: David Brown <davidb@codeaurora.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
11 years agolseek_execute() doesn't need an inode passed to it
Al Viro [Sun, 23 Jun 2013 18:45:30 +0000 (22:45 +0400)]
lseek_execute() doesn't need an inode passed to it

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoblock_dev: switch to fixed_size_llseek()
Al Viro [Sun, 23 Jun 2013 17:34:45 +0000 (21:34 +0400)]
block_dev: switch to fixed_size_llseek()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agocpqphp_sysfs: switch to fixed_size_llseek()
Al Viro [Sun, 23 Jun 2013 08:46:49 +0000 (12:46 +0400)]
cpqphp_sysfs: switch to fixed_size_llseek()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agotile-srom: switch to fixed_size_llseek()
Al Viro [Sun, 23 Jun 2013 08:43:48 +0000 (12:43 +0400)]
tile-srom: switch to fixed_size_llseek()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoproc_powerpc: switch to fixed_size_llseek()
Al Viro [Sun, 23 Jun 2013 08:35:26 +0000 (12:35 +0400)]
proc_powerpc: switch to fixed_size_llseek()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoubi/cdev: switch to fixed_size_llseek()
Al Viro [Sun, 23 Jun 2013 08:30:24 +0000 (12:30 +0400)]
ubi/cdev: switch to fixed_size_llseek()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agopci/proc: switch to fixed_size_llseek()
Al Viro [Sun, 23 Jun 2013 08:29:00 +0000 (12:29 +0400)]
pci/proc: switch to fixed_size_llseek()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoisapnp: switch to fixed_size_llseek()
Al Viro [Sun, 23 Jun 2013 08:09:11 +0000 (12:09 +0400)]
isapnp: switch to fixed_size_llseek()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolpfc: switch to fixed_size_llseek()
Al Viro [Sun, 23 Jun 2013 08:08:05 +0000 (12:08 +0400)]
lpfc: switch to fixed_size_llseek()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolocks: give the blocked_hash its own spinlock
Jeff Layton [Fri, 21 Jun 2013 12:58:20 +0000 (08:58 -0400)]
locks: give the blocked_hash its own spinlock

There's no reason we have to protect the blocked_hash and file_lock_list
with the same spinlock. With the tests I have, breaking it in two gives
a barely measurable performance benefit, but it seems reasonable to make
this locking as granular as possible.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolocks: add a new "lm_owner_key" lock operation
Jeff Layton [Fri, 21 Jun 2013 12:58:19 +0000 (08:58 -0400)]
locks: add a new "lm_owner_key" lock operation

Currently, the hashing that the locking code uses to add these values
to the blocked_hash is simply calculated using fl_owner field. That's
valid in most cases except for server-side lockd, which validates the
owner of a lock based on fl_owner and fl_pid.

In the case where you have a small number of NFS clients doing a lot
of locking between different processes, you could end up with all
the blocked requests sitting in a very small number of hash buckets.

Add a new lm_owner_key operation to the lock_manager_operations that
will generate an unsigned long to use as the key in the hashtable.
That function is only implemented for server-side lockd, and simply
XORs the fl_owner and fl_pid.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Acked-by: J. Bruce Fields <bfields@fieldses.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolocks: turn the blocked_list into a hashtable
Jeff Layton [Fri, 21 Jun 2013 12:58:18 +0000 (08:58 -0400)]
locks: turn the blocked_list into a hashtable

Break up the blocked_list into a hashtable, using the fl_owner as a key.
This speeds up searching the hash chains, which is especially significant
for deadlock detection.

Note that the initial implementation assumes that hashing on fl_owner is
sufficient. In most cases it should be, with the notable exception being
server-side lockd, which compares ownership using a tuple of the
nlm_host and the pid sent in the lock request. So, this may degrade to a
single hash bucket when you only have a single NFS client. That will be
addressed in a later patch.

The careful observer may note that this patch leaves the file_lock_list
alone. There's much less of a case for turning the file_lock_list into a
hashtable. The only user of that list is the code that generates
/proc/locks, and it always walks the entire list.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Acked-by: J. Bruce Fields <bfields@fieldses.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolocks: convert fl_link to a hlist_node
Jeff Layton [Fri, 21 Jun 2013 12:58:17 +0000 (08:58 -0400)]
locks: convert fl_link to a hlist_node

Testing has shown that iterating over the blocked_list for deadlock
detection turns out to be a bottleneck. In order to alleviate that,
begin the process of turning it into a hashtable. We start by turning
the fl_link into a hlist_node and the global lists into hlists. A later
patch will do the conversion of the blocked_list to a hashtable.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Acked-by: J. Bruce Fields <bfields@fieldses.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolocks: avoid taking global lock if possible when waking up blocked waiters
Jeff Layton [Fri, 21 Jun 2013 12:58:16 +0000 (08:58 -0400)]
locks: avoid taking global lock if possible when waking up blocked waiters

Since we always hold the i_lock when inserting a new waiter onto the
fl_block list, we can avoid taking the global lock at all if we find
that it's empty when we go to wake up blocked waiters.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolocks: protect most of the file_lock handling with i_lock
Jeff Layton [Fri, 21 Jun 2013 12:58:15 +0000 (08:58 -0400)]
locks: protect most of the file_lock handling with i_lock

Having a global lock that protects all of this code is a clear
scalability problem. Instead of doing that, move most of the code to be
protected by the i_lock instead. The exceptions are the global lists
that the ->fl_link sits on, and the ->fl_block list.

->fl_link is what connects these structures to the
global lists, so we must ensure that we hold those locks when iterating
over or updating these lists.

Furthermore, sound deadlock detection requires that we hold the
blocked_list state steady while checking for loops. We also must ensure
that the search and update to the list are atomic.

For the checking and insertion side of the blocked_list, push the
acquisition of the global lock into __posix_lock_file and ensure that
checking and update of the  blocked_list is done without dropping the
lock in between.

On the removal side, when waking up blocked lock waiters, take the
global lock before walking the blocked list and dequeue the waiters from
the global list prior to removal from the fl_block list.

With this, deadlock detection should be race free while we minimize
excessive file_lock_lock thrashing.

Finally, in order to avoid a lock inversion problem when handling
/proc/locks output we must ensure that manipulations of the fl_block
list are also protected by the file_lock_lock.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolocks: encapsulate the fl_link list handling
Jeff Layton [Fri, 21 Jun 2013 12:58:14 +0000 (08:58 -0400)]
locks: encapsulate the fl_link list handling

Move the fl_link list handling routines into a separate set of helpers.
Also ensure that locks and requests are always put on global lists
last (after fully initializing them) and are taken off before unintializing
them.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolocks: make "added" in __posix_lock_file a bool
Jeff Layton [Fri, 21 Jun 2013 12:58:13 +0000 (08:58 -0400)]
locks: make "added" in __posix_lock_file a bool

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Acked-by: J. Bruce Fields <bfields@fieldses.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolocks: comment cleanups and clarifications
Jeff Layton [Fri, 21 Jun 2013 12:58:12 +0000 (08:58 -0400)]
locks: comment cleanups and clarifications

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolocks: make generic_add_lease and generic_delete_lease static
Jeff Layton [Fri, 21 Jun 2013 12:58:11 +0000 (08:58 -0400)]
locks: make generic_add_lease and generic_delete_lease static

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Acked-by: J. Bruce Fields <bfields@fieldses.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agocifs: use posix_unblock_lock instead of locks_delete_block
Jeff Layton [Fri, 21 Jun 2013 12:58:10 +0000 (08:58 -0400)]
cifs: use posix_unblock_lock instead of locks_delete_block

commit 66189be74 (CIFS: Fix VFS lock usage for oplocked files) exported
the locks_delete_block symbol. There's already an exported helper
function that provides this capability however, so make cifs use that
instead and turn locks_delete_block back into a static function.

Note that if fl->fl_next == NULL then this lock has already been through
locks_delete_block(), so we should be OK to ignore an ENOENT error here
and simply not retry the lock.

Cc: Pavel Shilovsky <piastryyy@gmail.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Acked-by: J. Bruce Fields <bfields@fieldses.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolocks: drop the unused filp argument to posix_unblock_lock
Jeff Layton [Fri, 21 Jun 2013 12:58:09 +0000 (08:58 -0400)]
locks: drop the unused filp argument to posix_unblock_lock

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoDon't pass inode to ->d_hash() and ->d_compare()
Linus Torvalds [Tue, 21 May 2013 22:22:44 +0000 (15:22 -0700)]
Don't pass inode to ->d_hash() and ->d_compare()

Instances either don't look at it at all (the majority of cases) or
only want it to find the superblock (which can be had as dentry->d_sb).
A few cases that want more are actually safe with dentry->d_inode -
the only precaution needed is the check that it hadn't been replaced with
NULL by rmdir() or by overwriting rename(), which case should be simply
treated as cache miss.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agominix: bug widening a binary "not" operation
Dan Carpenter [Wed, 19 Jun 2013 00:08:10 +0000 (10:08 +1000)]
minix: bug widening a binary "not" operation

"chunk_size" is an unsigned int and "pos" is an unsigned long.  The
"& ~(chunk_size-1)" operation clears the high 32 bits unintentionally.

The ALIGN() macro does the correct thing.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
11 years agosplice: lift checks from do_splice_from() into callers
Al Viro [Wed, 19 Jun 2013 11:41:54 +0000 (15:41 +0400)]
splice: lift checks from do_splice_from() into callers

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoconstify rw_verify_area()
Al Viro [Wed, 19 Jun 2013 11:26:04 +0000 (15:26 +0400)]
constify rw_verify_area()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agops3flash: switch to generic_file_llseek_size()
Al Viro [Mon, 17 Jun 2013 06:05:35 +0000 (10:05 +0400)]
ps3flash: switch to generic_file_llseek_size()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agowlcore: use *ppos, not file->f_pos
Al Viro [Mon, 17 Jun 2013 11:26:19 +0000 (15:26 +0400)]
wlcore: use *ppos, not file->f_pos

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agobfa: switch to fixed_size_llseek()
Al Viro [Mon, 17 Jun 2013 13:45:46 +0000 (17:45 +0400)]
bfa: switch to fixed_size_llseek()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agofnic: switch to fixed_size_llseek()
Al Viro [Mon, 17 Jun 2013 13:44:23 +0000 (17:44 +0400)]
fnic: switch to fixed_size_llseek()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agovc: switch to fixed_size_llseek()
Al Viro [Mon, 17 Jun 2013 11:31:22 +0000 (15:31 +0400)]
vc: switch to fixed_size_llseek()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoeisa_eeprom: switch to fixed_size_llseek()
Al Viro [Mon, 17 Jun 2013 11:27:47 +0000 (15:27 +0400)]
eisa_eeprom: switch to fixed_size_llseek()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agobna: switch to fixed_size_llseek()
Al Viro [Mon, 17 Jun 2013 11:23:54 +0000 (15:23 +0400)]
bna: switch to fixed_size_llseek()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agozorro: switch to fixed_size_llseek()
Al Viro [Sat, 22 Jun 2013 08:10:22 +0000 (12:10 +0400)]
zorro: switch to fixed_size_llseek()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agomtdchar: switch to fixed_size_llseek()
Al Viro [Sun, 16 Jun 2013 16:27:42 +0000 (20:27 +0400)]
mtdchar: switch to fixed_size_llseek()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agonew helper: fixed_size_llseek()
Al Viro [Sun, 16 Jun 2013 16:27:42 +0000 (20:27 +0400)]
new helper: fixed_size_llseek()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoecryptfs: switch ecryptfs_decode_and_decrypt_filename() from dentry to sb
Al Viro [Sun, 16 Jun 2013 16:05:38 +0000 (20:05 +0400)]
ecryptfs: switch ecryptfs_decode_and_decrypt_filename() from dentry to sb

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agofuse: another open-coded file_inode()
Al Viro [Sun, 16 Jun 2013 16:05:23 +0000 (20:05 +0400)]
fuse: another open-coded file_inode()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agobtrfs: more open-coded file_inode()
Al Viro [Sun, 16 Jun 2013 15:32:35 +0000 (19:32 +0400)]
btrfs: more open-coded file_inode()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agofanotify: quit wanking with FASYNC in ->release()
Al Viro [Sun, 16 Jun 2013 15:08:36 +0000 (19:08 +0400)]
fanotify: quit wanking with FASYNC in ->release()

... especially since there's no way to get that sucker
on the list fsnotify_fasync() works with - the only thing
adding to it is fsnotify_fasync() itself and it's never
called for fanotify files while they are opened.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agocomedi: quit wanking with FASYNC in ->release()
Al Viro [Sun, 16 Jun 2013 15:05:07 +0000 (19:05 +0400)]
comedi: quit wanking with FASYNC in ->release()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agomore open-coded file_inode() calls
Al Viro [Sun, 16 Jun 2013 13:25:12 +0000 (17:25 +0400)]
more open-coded file_inode() calls

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agokill find_inode_number()
Al Viro [Sat, 15 Jun 2013 07:37:47 +0000 (11:37 +0400)]
kill find_inode_number()

the only remaining caller (in ncpfs) is guaranteed to return 0 -
we only hit it if we'd just checked that there's no dentry with
such name.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agocoda: don't bother with find_inode_number()
Al Viro [Wed, 19 Jun 2013 09:21:03 +0000 (13:21 +0400)]
coda: don't bother with find_inode_number()

the fallback it's using for dcache misses is actually the
same value we would've used for inumber anyway.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoproc_fill_cache(): clean up, get rid of pointless find_inode_number() use
Al Viro [Sat, 15 Jun 2013 07:33:10 +0000 (11:33 +0400)]
proc_fill_cache(): clean up, get rid of pointless find_inode_number() use

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoproc_fill_cache(): just make instantiate_t return int
Al Viro [Sat, 15 Jun 2013 07:15:20 +0000 (11:15 +0400)]
proc_fill_cache(): just make instantiate_t return int

all instances always return ERR_PTR(-E...) or NULL, anyway

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoproc_pid_readdir(): stop wanking with proc_fill_cache() for /proc/self
Al Viro [Sat, 15 Jun 2013 06:45:10 +0000 (10:45 +0400)]
proc_pid_readdir(): stop wanking with proc_fill_cache() for /proc/self

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoproc_fill_cache(): kill pointless check
Al Viro [Sat, 15 Jun 2013 06:26:35 +0000 (10:26 +0400)]
proc_fill_cache(): kill pointless check

we'd just checked that child->d_inode is non-NULL, for fuck sake!

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoncpfs: don't bother with EBUSY on removal of busy directories
Al Viro [Sat, 15 Jun 2013 01:53:23 +0000 (05:53 +0400)]
ncpfs: don't bother with EBUSY on removal of busy directories

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agodon't call file_pos_write() if vfs_{read,write}{,v}() fails
Al Viro [Sat, 15 Jun 2013 01:49:36 +0000 (05:49 +0400)]
don't call file_pos_write() if vfs_{read,write}{,v}() fails

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoSELinux: Institute file_path_has_perm()
David Howells [Thu, 13 Jun 2013 22:37:55 +0000 (23:37 +0100)]
SELinux: Institute file_path_has_perm()

Create a file_path_has_perm() function that is like path_has_perm() but
instead takes a file struct that is the source of both the path and the
inode (rather than getting the inode from the dentry in the path).  This
is then used where appropriate.

This will be useful for situations like unionmount where it will be
possible to have an apparently-negative dentry (eg. a fallthrough) that is
open with the file struct pointing to an inode on the lower fs.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoReplace a bunch of file->dentry->d_inode refs with file_inode()
David Howells [Thu, 13 Jun 2013 22:37:49 +0000 (23:37 +0100)]
Replace a bunch of file->dentry->d_inode refs with file_inode()

Replace a bunch of file->dentry->d_inode refs with file_inode().

In __fput(), use file->f_inode instead so as not to be affected by any tricks
that file_inode() might grow.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoudf: provide ->tmpfile()
Al Viro [Wed, 12 Jun 2013 05:35:33 +0000 (09:35 +0400)]
udf: provide ->tmpfile()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoext3 ->tmpfile() support
Al Viro [Tue, 11 Jun 2013 08:52:02 +0000 (12:52 +0400)]
ext3 ->tmpfile() support

In this case we do need a bit more than usual, due to orphan
list handling.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoallow the temp files created by open() to be linked to
Al Viro [Tue, 11 Jun 2013 04:34:36 +0000 (08:34 +0400)]
allow the temp files created by open() to be linked to

O_TMPFILE | O_CREAT => linkat() with AT_SYMLINK_FOLLOW and /proc/self/fd/<n>
as oldpath (i.e. flink()) will create a link
O_TMPFILE | O_CREAT | O_EXCL => ENOENT on attempt to link those guys

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years ago[O_TMPFILE] it's still short a few helpers, but infrastructure should be OK now...
Al Viro [Fri, 7 Jun 2013 05:20:27 +0000 (01:20 -0400)]
[O_TMPFILE] it's still short a few helpers, but infrastructure should be OK now...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agoallow build_open_flags() to return an error
Al Viro [Tue, 11 Jun 2013 04:23:01 +0000 (08:23 +0400)]
allow build_open_flags() to return an error

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolift file_*_write out of do_splice_direct()
Al Viro [Fri, 24 May 2013 00:10:34 +0000 (20:10 -0400)]
lift file_*_write out of do_splice_direct()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agolift file_*_write out of do_splice_from()
Al Viro [Fri, 24 May 2013 00:07:11 +0000 (20:07 -0400)]
lift file_*_write out of do_splice_from()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agodo_last(): fix missing checks for LAST_BIND case
Al Viro [Thu, 6 Jun 2013 13:12:33 +0000 (09:12 -0400)]
do_last(): fix missing checks for LAST_BIND case

/proc/self/cwd with O_CREAT should fail with EISDIR.  /proc/self/exe, OTOH,
should fail with ENOTDIR when opened with O_DIRECTORY.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years agopcm_native: switch to fdget()/fdput()
Al Viro [Wed, 5 Jun 2013 18:09:55 +0000 (14:09 -0400)]
pcm_native: switch to fdget()/fdput()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years ago[readdir] constify ->actor
Al Viro [Thu, 23 May 2013 02:22:04 +0000 (22:22 -0400)]
[readdir] constify ->actor

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years ago[readdir] ->readdir() is gone
Al Viro [Thu, 23 May 2013 01:44:23 +0000 (21:44 -0400)]
[readdir] ->readdir() is gone

everything's converted to ->iterate()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years ago[readdir] convert ecryptfs
Al Viro [Thu, 23 May 2013 01:23:40 +0000 (21:23 -0400)]
[readdir] convert ecryptfs

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years ago[readdir] convert coda
Al Viro [Thu, 23 May 2013 01:15:30 +0000 (21:15 -0400)]
[readdir] convert coda

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years ago[readdir] convert ocfs2
Al Viro [Thu, 23 May 2013 01:06:00 +0000 (21:06 -0400)]
[readdir] convert ocfs2

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years ago[readdir] convert fatfs
Al Viro [Wed, 22 May 2013 22:37:16 +0000 (18:37 -0400)]
[readdir] convert fatfs

... pox upon the idiotic ioctls; life would be much easier without
those.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years ago[readdir] convert xfs
Al Viro [Wed, 22 May 2013 21:07:56 +0000 (17:07 -0400)]
[readdir] convert xfs

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years ago[readdir] convert btrfs
Al Viro [Wed, 22 May 2013 20:48:09 +0000 (16:48 -0400)]
[readdir] convert btrfs

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years ago[readdir] convert hostfs
Al Viro [Wed, 22 May 2013 20:34:19 +0000 (16:34 -0400)]
[readdir] convert hostfs

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years ago[readdir] convert afs
Al Viro [Wed, 22 May 2013 20:31:14 +0000 (16:31 -0400)]
[readdir] convert afs

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years ago[readdir] convert ncpfs
Al Viro [Wed, 22 May 2013 19:11:27 +0000 (15:11 -0400)]
[readdir] convert ncpfs

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years ago[readdir] convert hfsplus
Al Viro [Wed, 22 May 2013 18:59:39 +0000 (14:59 -0400)]
[readdir] convert hfsplus

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years ago[readdir] convert hfs
Al Viro [Wed, 22 May 2013 18:29:35 +0000 (14:29 -0400)]
[readdir] convert hfs

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years ago[readdir] convert befs
Al Viro [Wed, 22 May 2013 17:44:05 +0000 (13:44 -0400)]
[readdir] convert befs

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
11 years ago[readdir] convert cifs
Al Viro [Wed, 22 May 2013 20:17:25 +0000 (16:17 -0400)]
[readdir] convert cifs

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>