struct irq_data *data = irq_get_irq_data(irq);
 
                if (irq_data_get_node(data) == cpu) {
-                       unsigned int newcpu = cpumask_any_and(data->affinity,
+                       struct cpumask *mask = irq_data_get_affinity_mask(data);
+                       unsigned int newcpu = cpumask_any_and(mask,
                                                              cpu_online_mask);
                        if (newcpu >= nr_cpu_ids) {
                                pr_info_ratelimited("IRQ%u no longer affine to CPU%u\n",
                                                    irq, cpu);
 
-                               cpumask_setall(data->affinity);
+                               cpumask_setall(mask);
                        }
-                       irq_set_affinity(irq, data->affinity);
+                       irq_set_affinity(irq, mask);
                }
        }
 }
 
 
        for (cpu = 0; cpu < SMP_NR(d, _INTC_ADDR_E(handle)); cpu++) {
 #ifdef CONFIG_SMP
-               if (!cpumask_test_cpu(cpu, data->affinity))
+               if (!cpumask_test_cpu(cpu, irq_data_get_affinity_mask(data)))
                        continue;
 #endif
                addr = INTC_REG(d, _INTC_ADDR_E(handle), cpu);
 
        for (cpu = 0; cpu < SMP_NR(d, _INTC_ADDR_D(handle)); cpu++) {
 #ifdef CONFIG_SMP
-               if (!cpumask_test_cpu(cpu, data->affinity))
+               if (!cpumask_test_cpu(cpu, irq_data_get_affinity_mask(data)))
                        continue;
 #endif
                addr = INTC_REG(d, _INTC_ADDR_D(handle), cpu);
        if (!cpumask_intersects(cpumask, cpu_online_mask))
                return -1;
 
-       cpumask_copy(data->affinity, cpumask);
+       cpumask_copy(irq_data_get_affinity_mask(data), cpumask);
 
        return IRQ_SET_MASK_OK_NOCOPY;
 }