On Tue, 10 Oct 2017, Marc Zyngier wrote:
>  int its_alloc_vcpu_irqs(struct its_vm *vm)
>  {
>       int vpe_base_irq, i;
>  
> +     vm->affinity_masks = kzalloc(vm->nr_vpes * sizeof(*vm->affinity_masks),
> +                                  GFP_KERNEL);
> +     if (!vm->affinity_masks)
> +             goto err;
> +
> +     for (i = 0; i < vm->nr_vpes; i++) {
> +             if (!alloc_cpumask_var(&vm->affinity_masks[i], GFP_KERNEL))
> +                     goto err;
> +
> +             cpumask_copy(vm->affinity_masks[i], cpu_possible_mask);

That looks a bit like abuse of managed interrupts as you don't use any of
the managing parts, i.e. the managed shutdown/startup on cpu hotplug.

You can prevent user space from fiddling with the affinities by flagging
these interrupts with IRQ_NO_BALANCING.

Thanks,

        tglx




Reply via email to