]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 27 Sep 2011 22:53:49 +0000 (15:53 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 27 Sep 2011 22:53:49 +0000 (15:53 -0700)
queue-3.0/firmware-loader-allow-builtin-firmware-load-even-if.patch [new file with mode: 0644]
queue-3.0/restore-pinning-the-victim-dentry-in-vfs_rmdir-vfs_rename_dir.patch
queue-3.0/series
queue-3.0/vfs-automount-should-ignore-lookup_follow.patch [deleted file]

diff --git a/queue-3.0/firmware-loader-allow-builtin-firmware-load-even-if.patch b/queue-3.0/firmware-loader-allow-builtin-firmware-load-even-if.patch
new file mode 100644 (file)
index 0000000..189e987
--- /dev/null
@@ -0,0 +1,73 @@
+From caca9510ff4e5d842c0589110243d60927836222 Mon Sep 17 00:00:00 2001
+From: Linus Torvalds <torvalds@linux-foundation.org>
+Date: Wed, 24 Aug 2011 15:55:30 -0700
+Subject: firmware loader: allow builtin firmware load even if
+ usermodehelper is disabled
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit caca9510ff4e5d842c0589110243d60927836222 upstream.
+
+In commit a144c6a6c924 ("PM: Print a warning if firmware is requested
+when tasks are frozen") we not only printed a warning if somebody tried
+to load the firmware when tasks are frozen - we also failed the load.
+
+But that check was done before the check for built-in firmware, and then
+when we disallowed usermode helpers during bootup (commit 288d5abec831:
+"Boot up with usermodehelper disabled"), that actually means that
+built-in modules can no longer load their firmware even if the firmware
+is built in too.  Which used to work, and some people depended on it for
+the R100 driver.
+
+So move the test for usermodehelper_is_disabled() down, to after
+checking the built-in firmware.
+
+This should fix:
+
+       https://bugzilla.kernel.org/show_bug.cgi?id=40952
+
+Reported-by: James Cloos <cloos@hjcloos.com>
+Bisected-by: Elimar Riesebieter <riesebie@lxtec.de>
+Cc: Michel Dänzer <michel@daenzer.net>
+Cc: Rafael Wysocki <rjw@sisk.pl>
+Cc: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: Valdis Kletnieks <valdis.kletnieks@vt.edu>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Borislav Petkov <bp@alien8.de>
+Cc: Lucas Villa Real <lucasvr@gobolinux.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/base/firmware_class.c |   11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+--- a/drivers/base/firmware_class.c
++++ b/drivers/base/firmware_class.c
+@@ -521,11 +521,6 @@ static int _request_firmware(const struc
+       if (!firmware_p)
+               return -EINVAL;
+-      if (WARN_ON(usermodehelper_is_disabled())) {
+-              dev_err(device, "firmware: %s will not be loaded\n", name);
+-              return -EBUSY;
+-      }
+-
+       *firmware_p = firmware = kzalloc(sizeof(*firmware), GFP_KERNEL);
+       if (!firmware) {
+               dev_err(device, "%s: kmalloc(struct firmware) failed\n",
+@@ -539,6 +534,12 @@ static int _request_firmware(const struc
+               return 0;
+       }
++      if (WARN_ON(usermodehelper_is_disabled())) {
++              dev_err(device, "firmware: %s will not be loaded\n", name);
++              retval = -EBUSY;
++              goto out;
++      }
++
+       if (uevent)
+               dev_dbg(device, "firmware: requesting %s\n", name);
index 0e9e145b8ff2af491fab8078e234acb7f6b38e0b..81fa541c4b2d0a8c157355f36c36867c8728cbc5 100644 (file)
@@ -27,7 +27,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
 
 --- a/fs/namei.c
 +++ b/fs/namei.c
-@@ -2580,6 +2580,7 @@ int vfs_rmdir(struct inode *dir, struct
+@@ -2582,6 +2582,7 @@ int vfs_rmdir(struct inode *dir, struct
        if (!dir->i_op->rmdir)
                return -EPERM;
  
@@ -35,7 +35,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
        mutex_lock(&dentry->d_inode->i_mutex);
  
        error = -EBUSY;
-@@ -2600,6 +2601,7 @@ int vfs_rmdir(struct inode *dir, struct
+@@ -2602,6 +2603,7 @@ int vfs_rmdir(struct inode *dir, struct
  
  out:
        mutex_unlock(&dentry->d_inode->i_mutex);
@@ -43,7 +43,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
        if (!error)
                d_delete(dentry);
        return error;
-@@ -3003,6 +3005,7 @@ static int vfs_rename_dir(struct inode *
+@@ -3005,6 +3007,7 @@ static int vfs_rename_dir(struct inode *
        if (error)
                return error;
  
@@ -51,7 +51,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
        if (target)
                mutex_lock(&target->i_mutex);
  
-@@ -3023,6 +3026,7 @@ static int vfs_rename_dir(struct inode *
+@@ -3025,6 +3028,7 @@ static int vfs_rename_dir(struct inode *
  out:
        if (target)
                mutex_unlock(&target->i_mutex);
index c6e04e259b97f563c6fe86b64a7a331cac7b2f39..f34af1f02aa59851d33f0e7130c3583418444c98 100644 (file)
@@ -100,7 +100,6 @@ pci-set-pci-e-max-payload-size-on-fabric.patch
 pci-export-pcie_bus_configure_settings-symbol.patch
 pci-remove-mrrs-modification-from-mps-setting-code.patch
 isci-fix-sata-response-handling.patch
-vfs-automount-should-ignore-lookup_follow.patch
 isci-fix-32-bit-operation-when-config_highmem64g-n.patch
 asoc-mpc5200-replace-of_device-with-platform_device.patch
 hpsa-fix-problem-that-obdr-devices-are-not-detected.patch
@@ -222,3 +221,4 @@ hwmon-ds620-fix-handling-of-negative-temperatures.patch
 arm-dma-mapping-free-allocated-page-if-unable-to-map.patch
 arm-7091-1-errata-d-cache-line-maintenance-operation-by.patch
 arm-7099-1-futex-preserve-oldval-in-smp-__futex_atomic_op.patch
+firmware-loader-allow-builtin-firmware-load-even-if.patch
diff --git a/queue-3.0/vfs-automount-should-ignore-lookup_follow.patch b/queue-3.0/vfs-automount-should-ignore-lookup_follow.patch
deleted file mode 100644 (file)
index 8785138..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-From 0ec26fd0698285b31248e34bf1abb022c00f23d6 Mon Sep 17 00:00:00 2001
-From: Miklos Szeredi <mszeredi@suse.cz>
-Date: Mon, 5 Sep 2011 18:06:26 +0200
-Subject: vfs: automount should ignore LOOKUP_FOLLOW
-
-From: Miklos Szeredi <mszeredi@suse.cz>
-
-commit 0ec26fd0698285b31248e34bf1abb022c00f23d6 upstream.
-
-Prior to 2.6.38 automount would not trigger on either stat(2) or
-lstat(2) on the automount point.
-
-After 2.6.38, with the introduction of the ->d_automount()
-infrastructure, stat(2) and others would start triggering automount
-while lstat(2), etc. still would not.  This is a regression and a
-userspace ABI change.
-
-Problem originally reported here:
-
-  http://thread.gmane.org/gmane.linux.kernel.autofs/6098
-
-It appears that there was an attempt at fixing various userspace tools
-to not trigger the automount.  But since the stat system call is
-rather common it is impossible to "fix" all userspace.
-
-This patch reverts the original behavior, which is to not trigger on
-stat(2) and other symlink following syscalls.
-
-[ It's not really clear what the right behavior is.  Apparently Solaris
-  does the "automount on stat, leave alone on lstat".  And some programs
-  can get unhappy when "stat+open+fstat" ends up giving a different
-  result from the fstat than from the initial stat.
-
-  But the change in 2.6.38 resulted in problems for some people, so
-  we're going back to old behavior.  Maybe we can re-visit this
-  discussion at some future date  - Linus ]
-
-Reported-by: Leonardo Chiquitto <leonardo.lists@gmail.com>
-Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
-Acked-by: Ian Kent <raven@themaw.net>
-Cc: David Howells <dhowells@redhat.com>
-Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- fs/namei.c |    8 +++-----
- 1 file changed, 3 insertions(+), 5 deletions(-)
-
---- a/fs/namei.c
-+++ b/fs/namei.c
-@@ -783,12 +783,10 @@ static int follow_automount(struct path
-        * type under the mountpoint, wants to traverse through the mountpoint
-        * or wants to open the mounted directory.
-        *
--       * We don't want to mount if someone's just doing a stat and they've
--       * set AT_SYMLINK_NOFOLLOW - unless they're stat'ing a directory and
--       * appended a '/' to the name.
-+       * We don't want to mount if someone's just doing a stat - unless
-+       * they're stat'ing a directory and appended a '/' to the name.
-        */
--      if (!(flags & LOOKUP_FOLLOW) &&
--          !(flags & (LOOKUP_CONTINUE | LOOKUP_DIRECTORY |
-+      if (!(flags & (LOOKUP_CONTINUE | LOOKUP_DIRECTORY |
-                      LOOKUP_OPEN | LOOKUP_CREATE)))
-               return -EISDIR;