On 24.07.2025 18:23, Andrew Cooper wrote:
> --- a/xen/common/llc-coloring.c
> +++ b/xen/common/llc-coloring.c
> @@ -309,11 +309,8 @@ int domain_set_llc_colors(struct domain *d,
>  
>  void domain_llc_coloring_free(struct domain *d)
>  {
> -    if ( !llc_coloring_enabled || d->llc_colors == default_colors )
> -        return;
> -
> -    /* free pointer-to-const using __va(__pa()) */
> -    xfree(__va(__pa(d->llc_colors)));
> +    if ( d->llc_colors != default_colors )
> +        xfree(d->llc_colors);
>  }
>  
>  int __init domain_set_llc_colors_from_str(struct domain *d, const char *str)
> diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
> index fe53d4fab7ba..df23411869e6 100644
> --- a/xen/include/xen/sched.h
> +++ b/xen/include/xen/sched.h
> @@ -649,7 +649,7 @@ struct domain
>  
>  #ifdef CONFIG_LLC_COLORING
>      unsigned int num_llc_colors;
> -    const unsigned int *llc_colors;
> +    unsigned int *llc_colors;
>  #endif
>  
>      /* Console settings. */

Ah yes, I see. Yet no, I don't agree. The only sane course of action
to avoid odd transformations like the above (without using casts to
cast away const-ness) is to finally make xfree() et al take pointers
to const void. Arguments towards why this makes sense were given
before; I don't think they need repeating. Dropping the const here is
rather undesirable: Once set, the colors shouldn't be altered anymore.
Pointers like this hence want to be pointer-to-const, to make
accidental modification less likely. Which in turn calls for the
mentioned adjustment to xfree(). Which you keep objecting to for
reasons I sadly cannot follow.

Jan

Reply via email to