Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8024bb24 authored by Luiz Capitulino's avatar Luiz Capitulino Committed by David S. Miller
Browse files

[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: default avatarLuiz Capitulino <lcapitulino@mandriva.com.br>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 12e18723
Loading
Loading
Loading
Loading
+14 −1
Original line number Original line Diff line number Diff line
@@ -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;
}
}