linux c 内存泄漏,c – linux内核中潜在的内存泄漏?

如果你看seq_release:

int seq_release(struct inode *inode, struct file *file)

{

struct seq_file *m = file->private_data;

kvfree(m->buf);

kfree(m);

return 0;

}

它有效地做了kfree(file-> private_data)

现在,file-> private_data在mounts_open_common中设置为

file->private_data = &p->m;

这就是你问题中的kmalloc.

m成员不是指针,因此不应该允许释放.但是,它是struct proc_mounts的1.成员

struct proc_mounts {

struct seq_file m;

struct mnt_namespace *ns;

struct path root;

int (*show)(struct seq_file *, struct vfsmount *);

void *cached_mount;

u64 cached_event;

loff_t cached_index;

};

所以seq_release()对m成员的地址执行kfree(),这与使用p = kmalloc(sizeof(struct proc_mounts),GFP_KERNEL)获得的地址相同;

我想这对静态分析仪来说不是很友好.但是没有内存泄漏.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值