From: Greg Kroah-Hartman Date: Tue, 12 Apr 2011 00:09:10 +0000 (-0700) Subject: .38 patches X-Git-Tag: v2.6.38.3~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=366b1bb3df579d24106ca18b164f87429d0f0de7;p=thirdparty%2Fkernel%2Fstable-queue.git .38 patches --- diff --git a/queue-2.6.38/acer-wmi-does-not-set-persistence-state-by-rfkill_init_sw_state.patch b/queue-2.6.38/acer-wmi-does-not-set-persistence-state-by-rfkill_init_sw_state.patch index 6585fb24c3b..5cba0a25128 100644 --- a/queue-2.6.38/acer-wmi-does-not-set-persistence-state-by-rfkill_init_sw_state.patch +++ b/queue-2.6.38/acer-wmi-does-not-set-persistence-state-by-rfkill_init_sw_state.patch @@ -1,12 +1,12 @@ From 8215af019040ce9182728afee9642d8fdeb17f59 Mon Sep 17 00:00:00 2001 -From: Lee, Chun-Yi +From: Chun-Yi Lee Date: Mon, 28 Mar 2011 16:52:02 +0800 Subject: acer-wmi: does not set persistence state by rfkill_init_sw_state MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -From: Lee, Chun-Yi +From: Chun-Yi Lee commit 8215af019040ce9182728afee9642d8fdeb17f59 upstream. @@ -29,7 +29,7 @@ Cc: Dmitry Torokhov Cc: Corentin Chary Cc: Oldřich Jedlička Cc: Johannes Berg -Signed-off-by: Lee, Chun-Yi +Signed-off-by: Chun-Yi Lee Signed-off-by: Matthew Garrett Signed-off-by: Greg Kroah-Hartman diff --git a/queue-2.6.38/nfsd4-fix-oops-on-lock-failure.patch b/queue-2.6.38/nfsd4-fix-oops-on-lock-failure.patch new file mode 100644 index 00000000000..ea8bba5736d --- /dev/null +++ b/queue-2.6.38/nfsd4-fix-oops-on-lock-failure.patch @@ -0,0 +1,103 @@ +From 23fcf2ec93fb8573a653408316af599939ff9a8e Mon Sep 17 00:00:00 2001 +From: J. Bruce Fields +Date: Mon, 28 Mar 2011 15:15:09 +0800 +Subject: nfsd4: fix oops on lock failure + +From: J. Bruce Fields + +commit 23fcf2ec93fb8573a653408316af599939ff9a8e upstream. + +Lock stateid's can have access_bmap 0 if they were only partially +initialized (due to a failed lock request); handle that case in +free_generic_stateid. + +------------[ cut here ]------------ +kernel BUG at fs/nfsd/nfs4state.c:380! +invalid opcode: 0000 [#1] SMP +last sysfs file: /sys/kernel/mm/ksm/run +Modules linked in: nfs fscache md4 nls_utf8 cifs ip6table_filter ip6_tables ebtable_nat ebtables ipt_MASQUERADE iptable_nat nf_nat bridge stp llc nfsd lockd nfs_acl auth_rpcgss sunrpc ipv6 ppdev parport_pc parport pcnet32 mii pcspkr microcode i2c_piix4 BusLogic floppy [last unloaded: mperf] + +Pid: 1468, comm: nfsd Not tainted 2.6.38+ #120 VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform +EIP: 0060:[] EFLAGS: 00010297 CPU: 0 +EIP is at nfs4_access_to_omode+0x1c/0x29 [nfsd] +EAX: ffffffff EBX: dd758120 ECX: 00000000 EDX: 00000004 +ESI: dd758120 EDI: ddfe657c EBP: dd54dde0 ESP: dd54dde0 + DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 +Process nfsd (pid: 1468, ti=dd54c000 task=ddc92580 task.ti=dd54c000) +Stack: + dd54ddf0 e24f19ca 00000000 ddfe6560 dd54de08 e24f1a5d dd758130 deee3a20 + ddfe6560 31270000 dd54df1c e24f52fd 0000000f dd758090 e2505dd0 0be304cf + dbb51d68 0000000e ddfe657c ddcd8020 dd758130 dd758128 dd7580d8 dd54de68 +Call Trace: + [] free_generic_stateid+0x1c/0x3e [nfsd] + [] release_lockowner+0x71/0x8a [nfsd] + [] nfsd4_lock+0x617/0x66c [nfsd] + [] ? nfsd_setuser+0x199/0x1bb [nfsd] + [] ? nfsd_setuser_and_check_port+0x65/0x81 [nfsd] + [] ? _cond_resched+0x8/0x1c + [] ? slab_pre_alloc_hook.clone.33+0x23/0x27 + [] ? kmem_cache_alloc+0x1a/0xd2 + [] ? __call_rcu+0xd7/0xdd + [] ? fh_verify+0x401/0x452 [nfsd] + [] ? nfsd4_encode_operation+0x52/0x117 [nfsd] + [] ? nfsd4_putfh+0x33/0x3b [nfsd] + [] ? nfsd4_delegreturn+0xd4/0xd4 [nfsd] + [] nfsd4_proc_compound+0x1ea/0x33e [nfsd] + [] nfsd_dispatch+0xd1/0x1a5 [nfsd] + [] svc_process_common+0x282/0x46f [sunrpc] + [] svc_process+0xdc/0xfa [sunrpc] + [] nfsd+0xd6/0x115 [nfsd] + [] ? nfsd_shutdown+0x24/0x24 [nfsd] + [] kthread+0x62/0x67 + [] ? kthread_worker_fn+0x114/0x114 + [] kernel_thread_helper+0x6/0x10 +Code: eb 05 b8 00 00 27 4f 8d 65 f4 5b 5e 5f 5d c3 83 e0 03 55 83 f8 02 89 e5 74 17 83 f8 03 74 05 48 75 09 eb 09 b8 02 00 00 00 eb 0b <0f> 0b 31 c0 eb 05 b8 01 00 00 00 5d c3 55 89 e5 57 56 89 d6 8d +EIP: [] nfs4_access_to_omode+0x1c/0x29 [nfsd] SS:ESP 0068:dd54dde0 +---[ end trace 2b0bf6c6557cb284 ]--- + +The trace route is: + + -> nfsd4_lock() + -> if (lock->lk_is_new) { + -> alloc_init_lock_stateid() + + 3739: stp->st_access_bmap = 0; + + ->if (status && lock->lk_is_new && lock_sop) + -> release_lockowner() + -> free_generic_stateid() + -> nfs4_access_bmap_to_omode() + -> nfs4_access_to_omode() + + 380: BUG(); ***** + +This problem was introduced by 0997b173609b9229ece28941c118a2a9b278796e. + +Reported-by: Mi Jinlong +Tested-by: Mi Jinlong +Signed-off-by: J. Bruce Fields +Signed-off-by: Greg Kroah-Hartman + +--- + fs/nfsd/nfs4state.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +--- a/fs/nfsd/nfs4state.c ++++ b/fs/nfsd/nfs4state.c +@@ -397,10 +397,13 @@ static void unhash_generic_stateid(struc + + static void free_generic_stateid(struct nfs4_stateid *stp) + { +- int oflag = nfs4_access_bmap_to_omode(stp); ++ int oflag; + +- nfs4_file_put_access(stp->st_file, oflag); +- put_nfs4_file(stp->st_file); ++ if (stp->st_access_bmap) { ++ oflag = nfs4_access_bmap_to_omode(stp); ++ nfs4_file_put_access(stp->st_file, oflag); ++ put_nfs4_file(stp->st_file); ++ } + kmem_cache_free(stateid_slab, stp); + } + diff --git a/queue-2.6.38/series b/queue-2.6.38/series index b6975364f19..25369bf6535 100644 --- a/queue-2.6.38/series +++ b/queue-2.6.38/series @@ -102,3 +102,4 @@ atm-solos-pci-don-t-flap-vcs-when-carrier-state-changes.patch ext4-fix-a-double-free-in-ext4_register_li_request.patch ext4-fix-credits-computing-for-indirect-mapped-files.patch nfsd-fix-auth_domain-reference-leak-on-nlm-operations.patch +nfsd4-fix-oops-on-lock-failure.patch