From: Pavel Machek <pavel@ucw.cz>
To: Subrata Modak <subrata@linux.vnet.ibm.com>
Cc: x86@kernel.org, Sachin P Sant <sachinp@linux.vnet.ibm.com>,
"H. Peter Anvin" <hpa@zytor.com>,
Andi Kleen <andi@firstfloor.org>,
Thomas Gleixner <tglx@linutronix.de>,
Linux Kernel <linux-kernel@vger.kernel.org>,
Ingo Molnar <mingo@redhat.com>,
Balbir Singh <balbir@linux.vnet.ibm.com>
Subject: Re: [PATCH] Remove indirect variable usage at arch/x86/kernel/tsc.c
Date: Sun, 24 May 2009 21:42:55 +0200 [thread overview]
Message-ID: <20090524194255.GD1337@ucw.cz> (raw)
In-Reply-To: <20090519180302.603.3124.sendpatchset@subratamodak.linux.ibm.com>
Hi!
> CC arch/x86/kernel/tsc.o
> arch/x86/kernel/tsc.c: In function 'time_cpufreq_notifier':
> arch/x86/kernel/tsc.c:634: warning: 'dummy' may be used uninitialized in this function
>
> However, there seems to be no practical usage of variable 'dummy'
> in the following piece of code:
>
> 630 static int time_cpufreq_notifier(struct notifier_block *nb, unsigned long val,
> 631 void *data)
> 632 {
> 633 struct cpufreq_freqs *freq = data;
> 634 unsigned long *lpj, dummy;
> 635
> 636 if (cpu_has(&cpu_data(freq->cpu), X86_FEATURE_CONSTANT_TSC))
> 637 return 0;
> 638
> 639 lpj = &dummy;
> 640 if (!(freq->flags & CPUFREQ_CONST_LOOPS))
> 641 #ifdef CONFIG_SMP
> 642 lpj = &cpu_data(freq->cpu).loops_per_jiffy;
> 643 #else
> 644 lpj = &boot_cpu_data.loops_per_jiffy;
> 645 #endif
> 646
>
> 'lpj' probably will get to point to some address after this if() statement.
>
> 647 if (!ref_freq) {
> 648 ref_freq = freq->old;
> 649 loops_per_jiffy_ref = *lpj;
>
> And, if it does, then "loops_per_jiffy_ref" will have a proper value,
> else, even with "lpj = &dummy" will not gurantee "loops_per_jiffy_ref = *lpj"
> to have the expected value.
But that's a bug to be fixed, I'd say? ... actually I believe you are
introducing a bug here. Yes, old code would put random numbers in
loops_per_jiffy_ref for !CPUFREQ_CONST_LOOPS, but you are introducing
oops there.
Have you tested the code?
> @@ -631,12 +631,11 @@ static int time_cpufreq_notifier(struct
> void *data)
> {
> struct cpufreq_freqs *freq = data;
> - unsigned long *lpj, dummy;
> + unsigned long *lpj = NULL;
>
> if (cpu_has(&cpu_data(freq->cpu), X86_FEATURE_CONSTANT_TSC))
> return 0;
>
> - lpj = &dummy;
> if (!(freq->flags & CPUFREQ_CONST_LOOPS))
> #ifdef CONFIG_SMP
> lpj = &cpu_data(freq->cpu).loops_per_jiffy;
>
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
prev parent reply other threads:[~2009-05-24 19:43 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-19 18:03 [PATCH] Remove indirect variable usage at arch/x86/kernel/tsc.c Subrata Modak
2009-05-19 18:53 ` Frans Pop
2009-05-20 6:10 ` Subrata Modak
2009-05-24 19:42 ` Pavel Machek [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090524194255.GD1337@ucw.cz \
--to=pavel@ucw.cz \
--cc=andi@firstfloor.org \
--cc=balbir@linux.vnet.ibm.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=sachinp@linux.vnet.ibm.com \
--cc=subrata@linux.vnet.ibm.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.