2012-06-28 5 views
2
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().Освобождение памяти без кучи

Разрешено ли освобождать память без кучи?

ответ

4

Нет-не имеет смысла освобождать память за пределами кучи, потому что kfree() работает только для освобождения памяти в контексте kmalloc() ed chunks!

Timeline:

+0

Код Я ищу версию ядра Linux версии 3.0.22. – shunty

+0

Из того, что я вижу, этот код [все еще присутствует в 3.4.4] (http://lxr.linux.no/linux+v3.4.4/net/ipv6/addrconf.c#L4721), поэтому он по-прежнему выдающийся ошибка. – Ashe

+0

Можете ли вы предложить исправление? – shunty