From: Greg Kroah-Hartman Date: Thu, 6 May 2010 22:50:31 +0000 (-0700) Subject: .27 patches added and one removed X-Git-Tag: v2.6.32.13~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=89f18180c57b2ef203781271e9cf5f80d8a173cb;p=thirdparty%2Fkernel%2Fstable-queue.git .27 patches added and one removed --- diff --git a/queue-2.6.27/i2c-fix-probing-of-fsc-hardware-monitoring-chips.patch b/queue-2.6.27/i2c-fix-probing-of-fsc-hardware-monitoring-chips.patch new file mode 100644 index 00000000000..75d8af86a05 --- /dev/null +++ b/queue-2.6.27/i2c-fix-probing-of-fsc-hardware-monitoring-chips.patch @@ -0,0 +1,69 @@ +From b1d4b390ea4bb480e65974ce522a04022608a8df Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Tue, 4 May 2010 11:09:28 +0200 +Subject: i2c: Fix probing of FSC hardware monitoring chips + +From: Jean Delvare + +commit b1d4b390ea4bb480e65974ce522a04022608a8df upstream. + +Some FSC hardware monitoring chips (Syleus at least) doesn't like +quick writes we typically use to probe for I2C chips. Use a regular +byte read instead for the address they live at (0x73). These are the +only known chips living at this address on PC systems. + +For clarity, this fix should not be needed for kernels 2.6.30 and +later, as we started instantiating the hwmon devices explicitly based +on DMI data. Still, this fix is valuable in the following two cases: +* Support for recent FSC chips on older kernels. The DMI-based device + instantiation is more difficult to backport than the device support + itself. +* Case where the DMI-based device instantiation fails, whatever the + reason. We fall back to probing in that case, so it should work. + +This fixes kernel bug #15634: +https://bugzilla.kernel.org/show_bug.cgi?id=15634 + +Signed-off-by: Jean Delvare +Acked-by: Hans de Goede +Signed-off-by: Greg Kroah-Hartman + + +--- + drivers/i2c/i2c-core.c | 24 +++++++++++++++++------- + 1 file changed, 17 insertions(+), 7 deletions(-) + +--- a/drivers/i2c/i2c-core.c ++++ b/drivers/i2c/i2c-core.c +@@ -1269,14 +1269,24 @@ static int i2c_detect_address(struct i2c + + /* Make sure there is something at this address, unless forced */ + if (kind < 0) { +- if (i2c_smbus_xfer(adapter, addr, 0, 0, 0, +- I2C_SMBUS_QUICK, NULL) < 0) +- return 0; ++ if (addr == 0x73 && (adapter->class & I2C_CLASS_HWMON)) { ++ /* Special probe for FSC hwmon chips */ ++ union i2c_smbus_data dummy; + +- /* prevent 24RF08 corruption */ +- if ((addr & ~0x0f) == 0x50) +- i2c_smbus_xfer(adapter, addr, 0, 0, 0, +- I2C_SMBUS_QUICK, NULL); ++ if (i2c_smbus_xfer(adapter, addr, 0, I2C_SMBUS_READ, 0, ++ I2C_SMBUS_BYTE_DATA, &dummy) < 0) ++ return 0; ++ } else { ++ if (i2c_smbus_xfer(adapter, addr, 0, I2C_SMBUS_WRITE, 0, ++ I2C_SMBUS_QUICK, NULL) < 0) ++ return 0; ++ ++ /* Prevent 24RF08 corruption */ ++ if ((addr & ~0x0f) == 0x50) ++ i2c_smbus_xfer(adapter, addr, 0, ++ I2C_SMBUS_WRITE, 0, ++ I2C_SMBUS_QUICK, NULL); ++ } + } + + /* Finally call the custom detection function */ diff --git a/queue-2.6.27/keys-the-request_key-syscall-should-link-an-existing-key-to-the-dest-keyring.patch b/queue-2.6.27/keys-the-request_key-syscall-should-link-an-existing-key-to-the-dest-keyring.patch deleted file mode 100644 index 594176f0bd9..00000000000 --- a/queue-2.6.27/keys-the-request_key-syscall-should-link-an-existing-key-to-the-dest-keyring.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 03449cd9eaa4fa3a7faa4a59474bafe2e90bd143 Mon Sep 17 00:00:00 2001 -From: David Howells -Date: Tue, 27 Apr 2010 13:13:08 -0700 -Subject: keys: the request_key() syscall should link an existing key to the dest keyring - -From: David Howells - -commit 03449cd9eaa4fa3a7faa4a59474bafe2e90bd143 upstream. - -The request_key() system call and request_key_and_link() should make a -link from an existing key to the destination keyring (if supplied), not -just from a new key to the destination keyring. - -This can be tested by: - - ring=`keyctl newring fred @s` - keyctl request2 user debug:a a - keyctl request user debug:a $ring - keyctl list $ring - -If it says: - - keyring is empty - -then it didn't work. If it shows something like: - - 1 key in keyring: - 1070462727: --alswrv 0 0 user: debug:a - -then it did. - -request_key() system call is meant to recursively search all your keyrings for -the key you desire, and, optionally, if it doesn't exist, call out to userspace -to create one for you. - -If request_key() finds or creates a key, it should, optionally, create a link -to that key from the destination keyring specified. - -Therefore, if, after a successful call to request_key() with a desination -keyring specified, you see the destination keyring empty, the code didn't work -correctly. - -If you see the found key in the keyring, then it did - which is what the patch -is required for. - -Signed-off-by: David Howells -Cc: James Morris -Signed-off-by: Andrew Morton -Signed-off-by: Linus Torvalds -Signed-off-by: Greg Kroah-Hartman - ---- - security/keys/request_key.c | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - ---- a/security/keys/request_key.c -+++ b/security/keys/request_key.c -@@ -316,8 +316,10 @@ static int construct_alloc_key(struct ke - - key_already_present: - mutex_unlock(&key_construction_mutex); -- if (dest_keyring) -+ if (dest_keyring) { -+ __key_link(dest_keyring, key_ref_to_ptr(key_ref)); - up_write(&dest_keyring->sem); -+ } - mutex_unlock(&user->cons_lock); - key_put(key); - *_key = key = key_ref_to_ptr(key_ref); -@@ -396,6 +398,11 @@ struct key *request_key_and_link(struct - - if (!IS_ERR(key_ref)) { - key = key_ref_to_ptr(key_ref); -+ if (dest_keyring) { -+ construct_get_dest_keyring(&dest_keyring); -+ key_link(dest_keyring, key); -+ key_put(dest_keyring); -+ } - } else if (PTR_ERR(key_ref) != -EAGAIN) { - key = ERR_CAST(key_ref); - } else { diff --git a/queue-2.6.27/nfs-d_revalidate-is-too-trigger-happy-with-d_drop.patch b/queue-2.6.27/nfs-d_revalidate-is-too-trigger-happy-with-d_drop.patch new file mode 100644 index 00000000000..e84514a3740 --- /dev/null +++ b/queue-2.6.27/nfs-d_revalidate-is-too-trigger-happy-with-d_drop.patch @@ -0,0 +1,37 @@ +From d9e80b7de91db05c1c4d2e5ebbfd70b3b3ba0e0f Mon Sep 17 00:00:00 2001 +From: Al Viro +Date: Thu, 29 Apr 2010 03:10:43 +0100 +Subject: nfs d_revalidate() is too trigger-happy with d_drop() + +From: Al Viro + +commit d9e80b7de91db05c1c4d2e5ebbfd70b3b3ba0e0f upstream. + +If dentry found stale happens to be a root of disconnected tree, we +can't d_drop() it; its d_hash is actually part of s_anon and d_drop() +would simply hide it from shrink_dcache_for_umount(), leading to +all sorts of fun, including busy inodes on umount and oopsen after +that. + +Bug had been there since at least 2006 (commit c636eb already has it), +so it's definitely -stable fodder. + +Signed-off-by: Al Viro +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + fs/nfs/dir.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/fs/nfs/dir.c ++++ b/fs/nfs/dir.c +@@ -826,6 +826,8 @@ out_zap_parent: + /* If we have submounts, don't unhash ! */ + if (have_submounts(dentry)) + goto out_valid; ++ if (dentry->d_flags & DCACHE_DISCONNECTED) ++ goto out_valid; + shrink_dcache_parent(dentry); + } + d_drop(dentry); diff --git a/queue-2.6.27/nfs-rsize-and-wsize-settings-ignored-on-v4-mounts.patch b/queue-2.6.27/nfs-rsize-and-wsize-settings-ignored-on-v4-mounts.patch new file mode 100644 index 00000000000..8d6233651d1 --- /dev/null +++ b/queue-2.6.27/nfs-rsize-and-wsize-settings-ignored-on-v4-mounts.patch @@ -0,0 +1,37 @@ +From 356e76b855bdbfd8d1c5e75bcf0c6bf0dfe83496 Mon Sep 17 00:00:00 2001 +From: Chuck Lever +Date: Thu, 22 Apr 2010 15:35:56 -0400 +Subject: NFS: rsize and wsize settings ignored on v4 mounts + +From: Chuck Lever + +commit 356e76b855bdbfd8d1c5e75bcf0c6bf0dfe83496 upstream. + +NFSv4 mounts ignore the rsize and wsize mount options, and always use +the default transfer size for both. This seems to be because all +NFSv4 mounts are now cloned, and the cloning logic doesn't copy the +rsize and wsize settings from the parent nfs_server. + +I tested Fedora's 2.6.32.11-99 and it seems to have this problem as +well, so I'm guessing that .33, .32, and perhaps older kernels have +this issue as well. + +Signed-off-by: Chuck Lever +Signed-off-by: Trond Myklebust +Signed-off-by: Greg Kroah-Hartman + +--- + fs/nfs/client.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/fs/nfs/client.c ++++ b/fs/nfs/client.c +@@ -826,6 +826,8 @@ out_error: + static void nfs_server_copy_userdata(struct nfs_server *target, struct nfs_server *source) + { + target->flags = source->flags; ++ target->rsize = source->rsize; ++ target->wsize = source->wsize; + target->acregmin = source->acregmin; + target->acregmax = source->acregmax; + target->acdirmin = source->acdirmin; diff --git a/queue-2.6.27/series b/queue-2.6.27/series index aad8d57c3e6..1d717e1fbd9 100644 --- a/queue-2.6.27/series +++ b/queue-2.6.27/series @@ -14,6 +14,8 @@ tty-release_one_tty-forgets-to-put-pids.patch megaraid_sas-fix-for-32bit-apps.patch trace-fix-inappropriate-substraction-on-tracing_pages_allocated-in-trace_free_page.patch clockevent-prevent-dead-lock-on-clockevents_lock.patch -keys-the-request_key-syscall-should-link-an-existing-key-to-the-dest-keyring.patch nfsd4-bug-in-read_buf.patch usb-fix-testing-the-wrong-variable-in-fs_create_by_name.patch +nfs-d_revalidate-is-too-trigger-happy-with-d_drop.patch +nfs-rsize-and-wsize-settings-ignored-on-v4-mounts.patch +i2c-fix-probing-of-fsc-hardware-monitoring-chips.patch