memleek: using single_open/seq_read and single_release in pair
authorJiamin Ma <jiamin.ma@amlogic.com>
Wed, 16 Aug 2017 11:58:00 +0000 (19:58 +0800)
committerJianxin Pan <jianxin.pan@amlogic.com>
Tue, 19 Sep 2017 06:55:39 +0000 (23:55 -0700)
PD#149178: memleek when single_open/seq_readwithout single_release

single_open/seq_read will apply for one page and two small
slab memory. If we do not release them in single_release,
the system will crash for memory leeking

Change-Id: I2b74a0c6faec415e96164d0c20ba0676836e55eb
Signed-off-by: Jiamin Ma <jiamin.ma@amlogic.com>
drivers/amlogic/bluetooth/bluesleep.c
drivers/amlogic/clk/clk_measure.c
drivers/amlogic/mmc/emmc_partitions.c
drivers/amlogic/reg_access/reg_access.c

index 9814640..9631491 100644 (file)
@@ -779,11 +779,13 @@ static const struct file_operations bluesleep_proc_readwrite_fops = {
        .open   = bluesleep_proc_open,
        .read   = seq_read,
        .write  = bluesleep_proc_write,
+       .release = single_release,
 };
 static const struct file_operations bluesleep_proc_read_fops = {
        .owner  = THIS_MODULE,
        .open   = bluesleep_proc_open,
        .read   = seq_read,
+       .release = single_release,
 };
 
 /**
index b213397..ed1581d 100644 (file)
@@ -636,6 +636,7 @@ static const struct file_operations clkmsr_file_ops = {
        .read           = seq_read,
        .write          = clkmsr_write,
        .llseek         = seq_lseek,
+       .release        = single_release,
 };
 
 static int aml_clkmsr_probe(struct platform_device *pdev)
index 702030f..99b1851 100644 (file)
@@ -252,6 +252,7 @@ static const struct file_operations dtb_ops = {
        .read = mmc_dtb_read,
        .write = mmc_dtb_write,
        .unlocked_ioctl = mmc_dtb_ioctl,
+       .release = single_release,
 };
 
 int amlmmc_dtb_init(struct mmc_card *card)
@@ -737,7 +738,7 @@ static const struct file_operations card_proc_fops = {
        .open = card_proc_open,
        .read = seq_read,
        .llseek = seq_lseek,
-       .release = seq_release,
+       .release = single_release,
 };
 
 static int add_emmc_partition(struct gendisk *disk,
index 030222c..3ae2bc1 100644 (file)
@@ -178,6 +178,7 @@ static const struct file_operations dump_file_ops = {
        .read           = seq_read,
        .write          = dump_write_file,
        .llseek         = seq_lseek,
+       .release        = single_release,
 };
 static int __init aml_debug_init(void)
 {