From: Roger Pau Monné Date: Tue, 29 Apr 2025 09:43:12 +0000 (+0200) Subject: xen/rangeset: fix incorrect subtraction X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=6b399ed19fd36cca92745a55901a89c3b5fb747f;p=xen.git xen/rangeset: fix incorrect subtraction Given the following rangset operation: { [0, 1], [4, 5] } - { [3, 4] } The current rangeset logic will output a rangeset: { [0, 2], [5, 5] } This is incorrect, and also has the undesirable property of being bogus in a way that the resulting rangeset is expanded. Fix this by making sure the bounds are correctly checked before modifying the previous range. Fixes: 484a058c4828 ('Add auto-destructing per-domain rangeset data structure...') Signed-off-by: Roger Pau Monné Reviewed-by: Jan Beulich master commit: e118fc98e7ae652a188d227bd7ea22f132724150 master date: 2025-04-11 12:20:10 +0200 --- diff --git a/xen/common/rangeset.c b/xen/common/rangeset.c index b75590f907..e758710390 100644 --- a/xen/common/rangeset.c +++ b/xen/common/rangeset.c @@ -227,7 +227,8 @@ int rangeset_remove_range( if ( x->s < s ) { - x->e = s - 1; + if ( x->e >= s ) + x->e = s - 1; x = next_range(r, x); }