Re: [PATCH] NFSv4: fix a reference leak caused WARNING messages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2017-03-06 at 22:29 +0800, Kinglong Mee wrote:
> 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 <kinglongmee@xxxxxxxxx>
> ---
>  fs/nfs/nfs4proc.c | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
> index 1b18368..c1f5369 100644
> --- a/fs/nfs/nfs4proc.c
> +++ b/fs/nfs/nfs4proc.c
> @@ -2258,8 +2258,6 @@ static int nfs4_opendata_access(struct rpc_cred
> *cred,
>  	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;
>  }
>  

Looks good.

-- 
Trond Myklebust
Linux NFS client maintainer, PrimaryData
trond.myklebust@xxxxxxxxxxxxxxx
��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux