From: Nuno Das Neves <[email protected]> Sent: Thursday, July 3, 2025 3:45 PM > > Accessing cpu_online_mask here is problematic because the cpus read lock > is not held in this context. > > However, cpu_online_mask isn't needed here since the effective affinity > mask is guaranteed to be valid in this callback. So, just use > cpumask_first() to get the cpu instead of ANDing it with cpus_online_mask > unnecessarily. > > Fixes: e39397d1fd68 ("x86/hyperv: implement an MSI domain for root partition") > Reported-by: Michael Kelley <[email protected]> > Closes: > https://lore.kernel.org/linux-hyperv/sn6pr02mb4157639630f8ad2d8fd8f52fd4...@sn6pr02mb4157.namprd02.prod.outlook.com/ > Suggested-by: Thomas Gleixner <[email protected]> > Signed-off-by: Nuno Das Neves <[email protected]> > --- > arch/x86/hyperv/irqdomain.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/arch/x86/hyperv/irqdomain.c b/arch/x86/hyperv/irqdomain.c > index 31f0d29cbc5e..e28c317ac9e8 100644 > --- a/arch/x86/hyperv/irqdomain.c > +++ b/arch/x86/hyperv/irqdomain.c > @@ -192,7 +192,6 @@ static void hv_irq_compose_msi_msg(struct irq_data *data, > struct msi_msg *msg) > struct pci_dev *dev; > struct hv_interrupt_entry out_entry, *stored_entry; > struct irq_cfg *cfg = irqd_cfg(data); > - const cpumask_t *affinity; > int cpu; > u64 status; > > @@ -204,8 +203,7 @@ static void hv_irq_compose_msi_msg(struct irq_data *data, > struct msi_msg *msg) > return; > } > > - affinity = irq_data_get_effective_affinity_mask(data); > - cpu = cpumask_first_and(affinity, cpu_online_mask); > + cpu = cpumask_first(irq_data_get_effective_affinity_mask(data)); > > if (data->chip_data) { > /* > -- > 2.34.1
Reviewed-by: Michael Kelley <[email protected]>
