lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1287242272.16971.53.camel@gandalf.stny.rr.com>
Date:	Sat, 16 Oct 2010 11:17:52 -0400
From:	Steven Rostedt <rostedt@...dmis.org>
To:	Frederic Weisbecker <fweisbec@...il.com>
Cc:	Robin Holt <holt@....com>, Ingo Molnar <mingo@...hat.com>,
	linux-kernel@...r.kernel.org
Subject: Re: ftrace does not work on cpus > 999.

On Sat, 2010-10-16 at 16:45 +0200, Frederic Weisbecker wrote:

> diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
> index 9ec59f5..3565f9e 100644
> --- a/kernel/trace/trace.c
> +++ b/kernel/trace/trace.c
> @@ -3999,7 +3999,7 @@ static void tracing_init_debugfs_percpu(long cpu)
>  	/* strlen(cpu) + MAX(log10(cpu)) + '\0' */
>  	char cpu_dir[7];
>  
> -	if (cpu > 999 || cpu < 0)
> +	if (cpu < 0)
>  		return;
>  
>  	sprintf(cpu_dir, "cpu%ld", cpu);

You need to change the size of cpu_dir, otherwise this will overflow.

The other case is to dynamically allocate cpu_dir.

	char *cpu_dir;
	int count = cpu;
	int size;

	if (cpu < 0)
		return;

	/* log10 sizeof cpu */
	for (size = 0; count > 0; count /= 10, size++)
		;

	cpu_dir = kmalloc(size + 4, GFP_KERNEL);

	if (!cpu_dir)
		return;

	snprintf(cpu_dir, size + 4, "cpu%ld", cpu);

	[...]

	kfree(cpu_dir);

-- Steve


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ