* [PATCH] kvm: disable uninitialized var warning
@ 2012-06-03 8:34 Michael S. Tsirkin
2012-06-06 12:26 ` Avi Kivity
0 siblings, 1 reply; 2+ messages in thread
From: Michael S. Tsirkin @ 2012-06-03 8:34 UTC (permalink / raw)
To: kvm, yoshikawa.takuya
I see this in 3.5-rc1:
arch/x86/kvm/mmu.c: In function ‘kvm_test_age_rmapp’:
arch/x86/kvm/mmu.c:1271: warning: ‘iter.desc’ may be used uninitialized in this function
The line in question was introduced by commit
1e3f42f03c38c29c1814199a6f0a2f01b919ea3f
static int kvm_test_age_rmapp(struct kvm *kvm, unsigned long *rmapp,
unsigned long data)
{
- u64 *spte;
+ u64 *sptep;
+ struct rmap_iterator iter; <- line 1271
int young = 0;
/*
The reason I think is that the compiler assumes that
the rmap value could be 0, so
static u64 *rmap_get_first(unsigned long rmap, struct rmap_iterator
*iter)
{
if (!rmap)
return NULL;
if (!(rmap & 1)) {
iter->desc = NULL;
return (u64 *)rmap;
}
iter->desc = (struct pte_list_desc *)(rmap & ~1ul);
iter->pos = 0;
return iter->desc->sptes[iter->pos];
}
will not initialize iter.desc, but the compiler isn't
smart enough to see that
for (sptep = rmap_get_first(*rmapp, &iter); sptep;
sptep = rmap_get_next(&iter)) {
will immediately exit in this case.
I checked by adding
if (!*rmapp)
goto out;
on top which is clearly equivalent but disables the warning.
This patch uses uninitialized_var to disable the warning without
increasing code size.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index be3cea4..dc83761 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -1238,7 +1238,7 @@ static int kvm_age_rmapp(struct kvm *kvm, unsigned long *rmapp,
unsigned long data)
{
u64 *sptep;
- struct rmap_iterator iter;
+ struct rmap_iterator uninitialized_var(iter);
int young = 0;
/*
--
MST
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] kvm: disable uninitialized var warning
2012-06-03 8:34 [PATCH] kvm: disable uninitialized var warning Michael S. Tsirkin
@ 2012-06-06 12:26 ` Avi Kivity
0 siblings, 0 replies; 2+ messages in thread
From: Avi Kivity @ 2012-06-06 12:26 UTC (permalink / raw)
To: Michael S. Tsirkin; +Cc: kvm, yoshikawa.takuya
On 06/03/2012 11:34 AM, Michael S. Tsirkin wrote:
> I see this in 3.5-rc1:
>
> arch/x86/kvm/mmu.c: In function ‘kvm_test_age_rmapp’:
> arch/x86/kvm/mmu.c:1271: warning: ‘iter.desc’ may be used uninitialized in this function
>
Thanks, applied.
--
error compiling committee.c: too many arguments to function
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-06-06 12:26 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-03 8:34 [PATCH] kvm: disable uninitialized var warning Michael S. Tsirkin
2012-06-06 12:26 ` Avi Kivity
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).