Re: [kvm-unit-tests PATCH] lib/alloc_page: Zero allocated pages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 02, 2019 at 08:40:38AM -0700, nadav.amit@xxxxxxxxx wrote:
> From: Nadav Amit <nadav.amit@xxxxxxxxx>
> 
> One of the most important properties of tests is reproducibility. For
> tests to be reproducible, the same environment should be set on each
> test invocation.
> 
> When it comes to memory content, this is not exactly the case in
> kvm-unit-tests. The tests might, mistakenly or intentionally, assume
> that memory is zeroed, which apparently is the case after seabios runs.
> However, failures might not be reproducible if this assumption is
> broken.
> 
> As an example, consider x86 do_iret(), which mistakenly does not push
> SS:RSP onto the stack on 64-bit mode, although they are popped
> unconditionally.
> 
> Do not assume that memory is zeroed. Clear it once it is allocated to
> allow tests to easily be reproducible.
> 
> Signed-off-by: Nadav Amit <nadav.amit@xxxxxxxxx>
> ---
>  lib/alloc_page.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/lib/alloc_page.c b/lib/alloc_page.c
> index 730f2b5..b0f4515 100644
> --- a/lib/alloc_page.c
> +++ b/lib/alloc_page.c
> @@ -65,6 +65,7 @@ void *alloc_page()
>  	freelist = *(void **)freelist;
>  	spin_unlock(&lock);
>  
> +	memset(p, 0, PAGE_SIZE);
>  	return p;
>  }
>  
> -- 
> 2.17.1
>

I think this is reasonable, but if we make this change then we should
remove the now redundant page zeroing too. A quick grep shows 20
instances

 $ git grep -A1 alloc_page | grep memset | grep 0, | wc -l
 20

There may be more.

Thanks,
drew



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux