[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 0/9] valgrind/i386/s390x: memcheck false positiv
From: |
Christian Borntraeger |
Subject: |
Re: [Qemu-devel] [PATCH 0/9] valgrind/i386/s390x: memcheck false positives |
Date: |
Thu, 30 Oct 2014 14:20:09 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.8.0 |
Am 30.10.2014 14:03, schrieb Paolo Bonzini:
> On 10/30/2014 10:36 AM, Christian Borntraeger wrote:
>> Some of these things could
>> also be fixed in valgrind, but it will take a while until these changes
>> hit a release or distros.
>
> Ok, it's sensible to have it fixed in QEMU if it's temporary. Which
> could not be fixed in valgrind?
This is a tricky question. A typical annotation in valgrind for an more complex
ioctl looks like
case VKI_SIOCGMIIREG: /* get hardware entry registers */
PRE_MEM_RASCIIZ( "ioctl(SIOCGIFMIIREG)",
(Addr)((struct vki_ifreq *)ARG3)->vki_ifr_name );
PRE_MEM_READ( "ioctl(SIOCGIFMIIREG)",
(Addr)&((struct vki_mii_ioctl_data *)&((struct vki_ifreq
*)ARG3)->vki_ifr_data)->phy_id,
sizeof(((struct vki_mii_ioctl_data *)&((struct vki_ifreq
*)ARG3)->vki_ifr_data)->phy_id) );
PRE_MEM_READ( "ioctl(SIOCGIFMIIREG)",
(Addr)&((struct vki_mii_ioctl_data *)&((struct vki_ifreq
*)ARG3)->vki_ifr_data)->reg_num,
sizeof(((struct vki_mii_ioctl_data *)&((struct vki_ifreq
*)ARG3)->vki_ifr_data)->reg_num) );
PRE_MEM_WRITE( "ioctl(SIOCGIFMIIREG)", ARG3,
sizeof(struct vki_ifreq));
break;
This scheme works fine as long as the ioctl is unchanged.
So any ioctl that has padding and no flags this should be doable.
For all KVM ioctls with reserved fields that might become used on certain
flags, we have two options:
a: we would instruct valgrind to not check the reserved fields
Whenever we start using them, we would still not check those field
b: we would instruct valgrind to not check the reserved fields if flags has a
certain value (e.g. 0), otherwise all reserved fields would be checked.
Whenever we start using the reserved fields, valgrind would complain unless we
write all. So in that case we have to modify valgrind again
In essence a will cause false negatives, b will cause false positives
I think b is preferred
Christian
- [Qemu-devel] [PATCH 7/9] valgrind/i386: avoid false positives on KVM_GET_MSRS ioctl, (continued)
- [Qemu-devel] [PATCH 7/9] valgrind/i386: avoid false positives on KVM_GET_MSRS ioctl, Christian Borntraeger, 2014/10/30
- [Qemu-devel] [PATCH 9/9] valgrind/s390x: avoid false positives on KVM_SET_FPU ioctl, Christian Borntraeger, 2014/10/30
- [Qemu-devel] [PATCH 3/9] valgrind/i386: avoid false positives on KVM_SET_PIT ioctl, Christian Borntraeger, 2014/10/30
- [Qemu-devel] [PATCH 5/9] valgrind/i386: avoid false positives on KVM_SET_MSRS ioctl, Christian Borntraeger, 2014/10/30
- [Qemu-devel] [PATCH 4/9] valgrind/i386: avoid false positives on KVM_SET_XCRS ioctl, Christian Borntraeger, 2014/10/30
- Re: [Qemu-devel] [PATCH 0/9] valgrind/i386/s390x: memcheck false positives, Peter Maydell, 2014/10/30
- Re: [Qemu-devel] [PATCH 0/9] valgrind/i386/s390x: memcheck false positives, Paolo Bonzini, 2014/10/31
- Re: [Qemu-devel] [PATCH 0/9] valgrind/i386/s390x: memcheck false positives,
Christian Borntraeger <=