https://github.com/torvalds/linux
Revision 877f919e192a09e77962a13d7165783027dee5fd authored by Chunyu Hu on 09 June 2018, 19:51:24 UTC, committed by Al Viro on 28 June 2018, 00:44:38 UTC
kmemleak reported some memory leak on reading proc files. After adding some debug lines, find that proc_seq_fops is using seq_release as release handler, which won't handle the free of 'private' field of seq_file, while in fact the open handler proc_seq_open could create the private data with __seq_open_private when state_size is greater than zero. So after reading files created with proc_create_seq_private, such as /proc/timer_list and /proc/vmallocinfo, the private mem of a seq_file is not freed. Fix it by adding the paired proc_seq_release as the default release handler of proc_seq_ops instead of seq_release. Fixes: 44414d82cfe0 ("proc: introduce proc_create_seq_private") Reviewed-by: Christoph Hellwig <hch@lst.de> CC: Christoph Hellwig <hch@lst.de> Signed-off-by: Chunyu Hu <chuhu@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
1 parent ce397d2
Tip revision: 877f919e192a09e77962a13d7165783027dee5fd authored by Chunyu Hu on 09 June 2018, 19:51:24 UTC
proc: add proc_seq_release
proc: add proc_seq_release
Tip revision: 877f919
File | Mode | Size |
---|---|---|
partitions | ||
Kconfig | -rw-r--r-- | 6.2 KB |
Kconfig.iosched | -rw-r--r-- | 2.7 KB |
Makefile | -rw-r--r-- | 1.5 KB |
badblocks.c | -rw-r--r-- | 14.5 KB |
bfq-cgroup.c | -rw-r--r-- | 33.5 KB |
bfq-iosched.c | -rw-r--r-- | 184.2 KB |
bfq-iosched.h | -rw-r--r-- | 31.6 KB |
bfq-wf2q.c | -rw-r--r-- | 52.2 KB |
bio-integrity.c | -rw-r--r-- | 13.8 KB |
bio.c | -rw-r--r-- | 51.4 KB |
blk-cgroup.c | -rw-r--r-- | 38.7 KB |
blk-core.c | -rw-r--r-- | 104.6 KB |
blk-exec.c | -rw-r--r-- | 2.9 KB |
blk-flush.c | -rw-r--r-- | 17.3 KB |
blk-integrity.c | -rw-r--r-- | 12.1 KB |
blk-ioc.c | -rw-r--r-- | 11.0 KB |
blk-lib.c | -rw-r--r-- | 10.9 KB |
blk-map.c | -rw-r--r-- | 5.9 KB |
blk-merge.c | -rw-r--r-- | 20.7 KB |
blk-mq-cpumap.c | -rw-r--r-- | 1.6 KB |
blk-mq-debugfs.c | -rw-r--r-- | 24.2 KB |
blk-mq-debugfs.h | -rw-r--r-- | 2.1 KB |
blk-mq-pci.c | -rw-r--r-- | 1.7 KB |
blk-mq-rdma.c | -rw-r--r-- | 1.7 KB |
blk-mq-sched.c | -rw-r--r-- | 16.1 KB |
blk-mq-sched.h | -rw-r--r-- | 2.8 KB |
blk-mq-sysfs.c | -rw-r--r-- | 8.1 KB |
blk-mq-tag.c | -rw-r--r-- | 11.2 KB |
blk-mq-tag.h | -rw-r--r-- | 2.3 KB |
blk-mq-virtio.c | -rw-r--r-- | 1.7 KB |
blk-mq.c | -rw-r--r-- | 74.0 KB |
blk-mq.h | -rw-r--r-- | 5.6 KB |
blk-settings.c | -rw-r--r-- | 28.6 KB |
blk-softirq.c | -rw-r--r-- | 4.3 KB |
blk-stat.c | -rw-r--r-- | 4.7 KB |
blk-stat.h | -rw-r--r-- | 4.4 KB |
blk-sysfs.c | -rw-r--r-- | 24.1 KB |
blk-tag.c | -rw-r--r-- | 9.3 KB |
blk-throttle.c | -rw-r--r-- | 68.7 KB |
blk-timeout.c | -rw-r--r-- | 6.0 KB |
blk-wbt.c | -rw-r--r-- | 18.2 KB |
blk-wbt.h | -rw-r--r-- | 3.6 KB |
blk-zoned.c | -rw-r--r-- | 8.7 KB |
blk.h | -rw-r--r-- | 12.1 KB |
bounce.c | -rw-r--r-- | 6.8 KB |
bsg-lib.c | -rw-r--r-- | 8.7 KB |
bsg.c | -rw-r--r-- | 21.2 KB |
cfq-iosched.c | -rw-r--r-- | 126.6 KB |
cmdline-parser.c | -rw-r--r-- | 4.9 KB |
compat_ioctl.c | -rw-r--r-- | 10.9 KB |
deadline-iosched.c | -rw-r--r-- | 13.2 KB |
elevator.c | -rw-r--r-- | 27.4 KB |
genhd.c | -rw-r--r-- | 48.8 KB |
ioctl.c | -rw-r--r-- | 15.2 KB |
ioprio.c | -rw-r--r-- | 5.1 KB |
kyber-iosched.c | -rw-r--r-- | 25.3 KB |
mq-deadline.c | -rw-r--r-- | 20.0 KB |
noop-iosched.c | -rw-r--r-- | 2.6 KB |
opal_proto.h | -rw-r--r-- | 9.3 KB |
partition-generic.c | -rw-r--r-- | 16.9 KB |
scsi_ioctl.c | -rw-r--r-- | 19.1 KB |
sed-opal.c | -rw-r--r-- | 58.8 KB |
t10-pi.c | -rw-r--r-- | 4.9 KB |
Computing file changes ...