diff options
| author | Tommi Rantala <tt.rantala@gmail.com> | 2012-11-14 22:49:05 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2012-11-15 13:56:05 -0500 |
| commit | 0da9a0c2638c8476b4a5021841912f249e3187dc (patch) | |
| tree | 1ee9ef7eb473db6407f13d6bd1adf537fbc76344 /net | |
| parent | 80d11788fb8f4d9fcfae5ad508c7f1b65e8b28a3 (diff) | |
sctp: fix /proc/net/sctp/ memory leak
Commit 13d782f ("sctp: Make the proc files per network namespace.")
changed the /proc/net/sctp/ struct file_operations opener functions to
use single_open_net() and seq_open_net().
Avoid leaking memory by using single_release_net() and seq_release_net()
as the release functions.
Discovered with Trinity (the syscall fuzzer).
Signed-off-by: Tommi Rantala <tt.rantala@gmail.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
| -rw-r--r-- | net/sctp/proc.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/net/sctp/proc.c b/net/sctp/proc.c index c3bea269faf4..9966e7b16451 100644 --- a/net/sctp/proc.c +++ b/net/sctp/proc.c | |||
| @@ -102,7 +102,7 @@ static const struct file_operations sctp_snmp_seq_fops = { | |||
| 102 | .open = sctp_snmp_seq_open, | 102 | .open = sctp_snmp_seq_open, |
| 103 | .read = seq_read, | 103 | .read = seq_read, |
| 104 | .llseek = seq_lseek, | 104 | .llseek = seq_lseek, |
| 105 | .release = single_release, | 105 | .release = single_release_net, |
| 106 | }; | 106 | }; |
| 107 | 107 | ||
| 108 | /* Set up the proc fs entry for 'snmp' object. */ | 108 | /* Set up the proc fs entry for 'snmp' object. */ |
| @@ -251,7 +251,7 @@ static const struct file_operations sctp_eps_seq_fops = { | |||
| 251 | .open = sctp_eps_seq_open, | 251 | .open = sctp_eps_seq_open, |
| 252 | .read = seq_read, | 252 | .read = seq_read, |
| 253 | .llseek = seq_lseek, | 253 | .llseek = seq_lseek, |
| 254 | .release = seq_release, | 254 | .release = seq_release_net, |
| 255 | }; | 255 | }; |
| 256 | 256 | ||
| 257 | /* Set up the proc fs entry for 'eps' object. */ | 257 | /* Set up the proc fs entry for 'eps' object. */ |
| @@ -372,7 +372,7 @@ static const struct file_operations sctp_assocs_seq_fops = { | |||
| 372 | .open = sctp_assocs_seq_open, | 372 | .open = sctp_assocs_seq_open, |
| 373 | .read = seq_read, | 373 | .read = seq_read, |
| 374 | .llseek = seq_lseek, | 374 | .llseek = seq_lseek, |
| 375 | .release = seq_release, | 375 | .release = seq_release_net, |
| 376 | }; | 376 | }; |
| 377 | 377 | ||
| 378 | /* Set up the proc fs entry for 'assocs' object. */ | 378 | /* Set up the proc fs entry for 'assocs' object. */ |
| @@ -517,7 +517,7 @@ static const struct file_operations sctp_remaddr_seq_fops = { | |||
| 517 | .open = sctp_remaddr_seq_open, | 517 | .open = sctp_remaddr_seq_open, |
| 518 | .read = seq_read, | 518 | .read = seq_read, |
| 519 | .llseek = seq_lseek, | 519 | .llseek = seq_lseek, |
| 520 | .release = seq_release, | 520 | .release = seq_release_net, |
| 521 | }; | 521 | }; |
| 522 | 522 | ||
| 523 | int __net_init sctp_remaddr_proc_init(struct net *net) | 523 | int __net_init sctp_remaddr_proc_init(struct net *net) |
