• Chunyu Hu's avatar
    proc: add proc_seq_release · 877f919e
    Chunyu Hu authored
    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: 44414d82 ("proc: introduce proc_create_seq_private")
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    CC: Christoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarChunyu Hu <chuhu@redhat.com>
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    877f919e
generic.c 17.4 KB