释放非堆内存

3
static struct ipv6_devconf ipv6_devconf_dflt __read_mostly = {
    .forwarding     = 0,
    .hop_limit      = IPV6_DEFAULT_HOPLIMIT,
    .mtu6           = IPV6_MIN_MTU,
};

static int __net_init addrconf_init_net(struct net *net)
{
    struct ipv6_devconf *dflt;
    dflt = &ipv6_devconf_dflt;
    kfree(dflt);
}

ipv6_devconf_dflt 是一个静态结构体变量。将 ipv6_devconf_dflt 的地址分配给本地变量,然后使用 kfree() 释放。

可以释放非堆内存吗?

1个回答

4

我需要的代码是Linux内核版本3.0.22。 - shunty
根据我所看到的,这段代码在3.4.4版本中仍然存在,因此这仍然是一个未解决的错误。 - Asherah
你能否提供一个修复建议? - shunty
1
@Len:我并不怀疑这个 bug 的真实性。我只是好奇这样一个明显的 bug 怎么会被发布到稳定版的 Linux 内核中。 - ciphor
1
处理失败路径总是最容易出现错误的代码。我猜测__addrconf_sysctl_register从不失败,因此这段代码永远不会被执行。如果它在启动期间运行,应该有足够的空闲内存和没有失败的原因。 - ugoren
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接