On 01/17/2013 06:20:03 PM, Alexander Graf wrote:

On 18.01.2013, at 01:11, Scott Wood wrote:

> On 01/17/2013 04:50:39 PM, Alexander Graf wrote:
>> @@ -1024,9 +1001,11 @@ void kvmppc_mmu_map(struct kvm_vcpu *vcpu, u64 eaddr, gpa_t gpaddr,
>> {
>>        struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu);
>>        struct tlbe_priv *priv;
>> -      struct kvm_book3e_206_tlb_entry *gtlbe, stlbe;
>> +      struct kvm_book3e_206_tlb_entry *gtlbe, stlbe = {};
>
> Is there a code path in which stlbe gets used but not fully filled in
> without this?

I am hoping not, but when I wrote this patch gcc suddenly jumped at me claiming that the whole struct can get used uninitialized:

arch/powerpc/kvm/e500_mmu_host.c: In function ‘kvmppc_mmu_map’:
arch/powerpc/kvm/e500_mmu_host.c:533: error: ‘stlbe.mas1’ may be used uninitialized in this function arch/powerpc/kvm/e500_mmu_host.c:533: error: ‘stlbe.mas2’ may be used uninitialized in this function arch/powerpc/kvm/e500_mmu_host.c:533: error: ‘stlbe.mas7_3’ may be used uninitialized in this function arch/powerpc/kvm/e500_mmu_host.c:533: error: ‘stlbe.mas8’ may be used uninitialized in this function

If you have any idea where this could come from, please let me know :).

I can't reproduce with either GCC 4.5.1 or GCC 4.7.2. Maybe from a non-final version of the patch? It would be nice to not have this, and have GCC be able to detect if we're actually missing something rather than have it get zeroed.

BTW, it's "stlbe = {}" in this patch but after the file split, somehow come out as "stlbe = { }". Was that patch supposed to be just a simple cut and paste of part of the file?

-Scott
--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to