[PKTGEN]: Fix Initialization fail leak.
Even if pktgen's thread initialization fails for all CPUs, the module will be successfully loaded. This patch changes that behaivor, by returning an error on module load time, and also freeing all the resources allocated. It also prints a warning if a thread initialization has failed. Signed-off-by: Luiz Capitulino <lcapitulino@mandriva.com.br> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
12e1872328
Коммит
8024bb2454
|
@ -3216,11 +3216,24 @@ static int __init pg_init(void)
|
||||||
register_netdevice_notifier(&pktgen_notifier_block);
|
register_netdevice_notifier(&pktgen_notifier_block);
|
||||||
|
|
||||||
for_each_online_cpu(cpu) {
|
for_each_online_cpu(cpu) {
|
||||||
|
int err;
|
||||||
char buf[30];
|
char buf[30];
|
||||||
|
|
||||||
sprintf(buf, "kpktgend_%i", cpu);
|
sprintf(buf, "kpktgend_%i", cpu);
|
||||||
pktgen_create_thread(buf, cpu);
|
err = pktgen_create_thread(buf, cpu);
|
||||||
|
if (err)
|
||||||
|
printk("pktgen: WARNING: Cannot create thread for cpu %d (%d)\n",
|
||||||
|
cpu, err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (list_empty(&pktgen_threads)) {
|
||||||
|
printk("pktgen: ERROR: Initialization failed for all threads\n");
|
||||||
|
unregister_netdevice_notifier(&pktgen_notifier_block);
|
||||||
|
remove_proc_entry(PGCTRL, pg_proc_dir);
|
||||||
|
proc_net_remove(PG_PROC_DIR);
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче