> On 9. Jul 2020, at 20:46, Julien Grall <jul...@xen.org> wrote:
> 
> 
> From: Julien Grall <jgr...@amazon.com>
> 
> XenStore response can be bigger than the response ring. In this case,
> it is possible to have the ring full (e.g cons = 19 and prod = 1043).
> 
> However, XTF will consider that there is no data and therefore wait for
> more input. This will result to block indefinitely as the ring is full.
> 
> This can be solved by avoiding to mask the difference between prod and
> cons.
> 
> Signed-off-by: Julien Grall <jgr...@amazon.com>
> ---
> common/xenbus.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/common/xenbus.c b/common/xenbus.c
> index 24fff4872372..f3bb30ac693f 100644
> --- a/common/xenbus.c
> +++ b/common/xenbus.c
> @@ -75,7 +75,7 @@ static void xenbus_read(void *data, size_t len)
>         uint32_t prod = ACCESS_ONCE(xb_ring->rsp_prod);
>         uint32_t cons = ACCESS_ONCE(xb_ring->rsp_cons);
> 
> -        part = mask_xenbus_idx(prod - cons);
> +        part = prod - cons;
> 
>         /* No data?  Kick xenstored and wait for it to produce some data. */
>         if ( !part )
> —
> 2.17.1
> 

Reviewed-by: Pawel Wieczorkiewicz <wipa...@amazon.de>



Amazon Development Center Germany GmbH
Krausenstr. 38
10117 Berlin
Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss
Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B
Sitz: Berlin
Ust-ID: DE 289 237 879


Reply via email to