| From foo@baz Wed Jul 6 16:50:56 PDT 2016 |
| From: Jiri Slaby <jslaby@suse.cz> |
| Date: Mon, 20 Jun 2016 11:36:28 +0200 |
| Subject: kcm: fix /proc memory leak |
| |
| From: Jiri Slaby <jslaby@suse.cz> |
| |
| [ Upstream commit d19af0a76444fde629667ecb823c0ee28f9f67d8 ] |
| |
| Every open of /proc/net/kcm leaks 16 bytes of memory as is reported by |
| kmemleak: |
| unreferenced object 0xffff88059c0e3458 (size 192): |
| comm "cat", pid 1401, jiffies 4294935742 (age 310.720s) |
| hex dump (first 32 bytes): |
| 28 45 71 96 05 88 ff ff 00 10 00 00 00 00 00 00 (Eq............. |
| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ |
| backtrace: |
| [<ffffffff8156a2de>] kmem_cache_alloc_trace+0x16e/0x230 |
| [<ffffffff8162a479>] seq_open+0x79/0x1d0 |
| [<ffffffffa0578510>] kcm_seq_open+0x0/0x30 [kcm] |
| [<ffffffff8162a479>] seq_open+0x79/0x1d0 |
| [<ffffffff8162a8cf>] __seq_open_private+0x2f/0xa0 |
| [<ffffffff81712548>] seq_open_net+0x38/0xa0 |
| ... |
| |
| It is caused by a missing free in the ->release path. So fix it by |
| providing seq_release_net as the ->release method. |
| |
| Signed-off-by: Jiri Slaby <jslaby@suse.cz> |
| Fixes: cd6e111bf5 (kcm: Add statistics and proc interfaces) |
| Cc: "David S. Miller" <davem@davemloft.net> |
| Cc: Tom Herbert <tom@herbertland.com> |
| Cc: netdev@vger.kernel.org |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/kcm/kcmproc.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/net/kcm/kcmproc.c |
| +++ b/net/kcm/kcmproc.c |
| @@ -241,6 +241,7 @@ static const struct file_operations kcm_ |
| .open = kcm_seq_open, |
| .read = seq_read, |
| .llseek = seq_lseek, |
| + .release = seq_release_net, |
| }; |
| |
| static struct kcm_seq_muxinfo kcm_seq_muxinfo = { |