diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c index 822a6b2ed5..eb7c72b240 100644 --- a/xen/common/llc-coloring.c +++ b/xen/common/llc-coloring.c @@ -76,8 +76,9 @@ static int __init parse_color_config(const char *buf, unsigned int colors[], else /* Single value */ end = start; - if ( start > end || (end - start) > (UINT_MAX - *num_colors) || - (*num_colors + (end - start)) >= max_num_colors ) + if ( end >= NR_LLC_COLORS || start > end || + (end - start) >= (UINT_MAX - *num_colors) || + (*num_colors + (end - start + 1)) >= max_num_colors ) return -EINVAL; /* Colors are range checked in check_colors() */