From: Greg Kroah-Hartman Date: Sun, 2 Jul 2017 08:54:49 +0000 (+0200) Subject: 3.18-stable patches X-Git-Tag: v3.18.60~54 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=29240f0f6c078a64dc115d62ec016f5a028095f2;p=thirdparty%2Fkernel%2Fstable-queue.git 3.18-stable patches added patches: nfsv4-fix-a-reference-leak-caused-warning-messages.patch --- diff --git a/queue-3.18/nfsv4-fix-a-reference-leak-caused-warning-messages.patch b/queue-3.18/nfsv4-fix-a-reference-leak-caused-warning-messages.patch new file mode 100644 index 00000000000..b215647aada --- /dev/null +++ b/queue-3.18/nfsv4-fix-a-reference-leak-caused-warning-messages.patch @@ -0,0 +1,72 @@ +From 366a1569bff3fe14abfdf9285e31e05e091745f5 Mon Sep 17 00:00:00 2001 +From: Kinglong Mee +Date: Mon, 6 Mar 2017 22:29:14 +0800 +Subject: NFSv4: fix a reference leak caused WARNING messages + +From: Kinglong Mee + +commit 366a1569bff3fe14abfdf9285e31e05e091745f5 upstream. + +Because nfs4_opendata_access() has close the state when access is denied, +so the state isn't leak. +Rather than revert the commit a974deee47, I'd like clean the strange state close. + +[ 1615.094218] ------------[ cut here ]------------ +[ 1615.094607] WARNING: CPU: 0 PID: 23702 at lib/list_debug.c:31 __list_add_valid+0x8e/0xa0 +[ 1615.094913] list_add double add: new=ffff9d7901d9f608, prev=ffff9d7901d9f608, next=ffff9d7901ee8dd0. +[ 1615.095458] Modules linked in: nfsv4(E) nfs(E) nfsd(E) tun bridge stp llc fuse ip_set nfnetlink vmw_vsock_vmci_transport vsock f2fs snd_seq_midi snd_seq_midi_event fscrypto coretemp ppdev crct10dif_pclmul crc32_pclmul ghash_clmulni_intel intel_rapl_perf vmw_balloon snd_ens1371 joydev gameport snd_ac97_codec ac97_bus snd_seq snd_pcm snd_rawmidi snd_timer snd_seq_device snd soundcore nfit parport_pc parport acpi_cpufreq tpm_tis tpm_tis_core tpm i2c_piix4 vmw_vmci shpchp auth_rpcgss nfs_acl lockd(E) grace sunrpc(E) xfs libcrc32c vmwgfx drm_kms_helper ttm drm crc32c_intel mptspi e1000 serio_raw scsi_transport_spi mptscsih mptbase ata_generic pata_acpi fjes [last unloaded: nfs] +[ 1615.097663] CPU: 0 PID: 23702 Comm: fstest Tainted: G W E 4.11.0-rc1+ #517 +[ 1615.098015] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 07/02/2015 +[ 1615.098807] Call Trace: +[ 1615.099183] dump_stack+0x63/0x86 +[ 1615.099578] __warn+0xcb/0xf0 +[ 1615.099967] warn_slowpath_fmt+0x5f/0x80 +[ 1615.100370] __list_add_valid+0x8e/0xa0 +[ 1615.100760] nfs4_put_state_owner+0x75/0xc0 [nfsv4] +[ 1615.101136] __nfs4_close+0x109/0x140 [nfsv4] +[ 1615.101524] nfs4_close_state+0x15/0x20 [nfsv4] +[ 1615.101949] nfs4_close_context+0x21/0x30 [nfsv4] +[ 1615.102691] __put_nfs_open_context+0xb8/0x110 [nfs] +[ 1615.103155] put_nfs_open_context+0x10/0x20 [nfs] +[ 1615.103586] nfs4_file_open+0x13b/0x260 [nfsv4] +[ 1615.103978] do_dentry_open+0x20a/0x2f0 +[ 1615.104369] ? nfs4_copy_file_range+0x30/0x30 [nfsv4] +[ 1615.104739] vfs_open+0x4c/0x70 +[ 1615.105106] ? may_open+0x5a/0x100 +[ 1615.105469] path_openat+0x623/0x1420 +[ 1615.105823] do_filp_open+0x91/0x100 +[ 1615.106174] ? __alloc_fd+0x3f/0x170 +[ 1615.106568] do_sys_open+0x130/0x220 +[ 1615.106920] ? __put_cred+0x3d/0x50 +[ 1615.107256] SyS_open+0x1e/0x20 +[ 1615.107588] entry_SYSCALL_64_fastpath+0x1a/0xa9 +[ 1615.107922] RIP: 0033:0x7fab599069b0 +[ 1615.108247] RSP: 002b:00007ffcf0600d78 EFLAGS: 00000246 ORIG_RAX: 0000000000000002 +[ 1615.108575] RAX: ffffffffffffffda RBX: 00007fab59bcfae0 RCX: 00007fab599069b0 +[ 1615.108896] RDX: 0000000000000200 RSI: 0000000000000200 RDI: 00007ffcf060255e +[ 1615.109211] RBP: 0000000000040010 R08: 0000000000000000 R09: 0000000000000016 +[ 1615.109515] R10: 00000000000006a1 R11: 0000000000000246 R12: 0000000000041000 +[ 1615.109806] R13: 0000000000040010 R14: 0000000000001000 R15: 0000000000002710 +[ 1615.110152] ---[ end trace 96ed63b1306bf2f3 ]--- + +Fixes: a974deee47 ("NFSv4: Fix memory and state leak in...") +Signed-off-by: Kinglong Mee +Signed-off-by: Anna Schumaker +Cc: Trond Myklebust +Signed-off-by: Greg Kroah-Hartman + +--- + fs/nfs/nfs4proc.c | 2 -- + 1 file changed, 2 deletions(-) + +--- a/fs/nfs/nfs4proc.c ++++ b/fs/nfs/nfs4proc.c +@@ -1995,8 +1995,6 @@ static int nfs4_opendata_access(struct r + if ((mask & ~cache.mask & (MAY_READ | MAY_EXEC)) == 0) + return 0; + +- /* even though OPEN succeeded, access is denied. Close the file */ +- nfs4_close_state(state, fmode); + return -EACCES; + } + diff --git a/queue-3.18/series b/queue-3.18/series index aba262bf0e8..c7f33199683 100644 --- a/queue-3.18/series +++ b/queue-3.18/series @@ -11,3 +11,4 @@ igmp-add-a-missing-spin_lock_init.patch ipv6-fix-calling-in6_ifa_hold-incorrectly-for-dad-work.patch decnet-always-not-take-dst-__refcnt-when-inserting-dst-into-hash-table.patch net-8021q-fix-one-possible-panic-caused-by-bug_on-in-free_netdev.patch +nfsv4-fix-a-reference-leak-caused-warning-messages.patch