Skip to content

Commit f2edf79

Browse files
HaiyangLuoThomas Gleixner
authored andcommitted
irqchip/riscv-imsic: Revert "Remove redundant irq_data lookups"
Commit c475c0b("irqchip/riscv-imsic: Remove redundant irq_data lookups") leads to a NULL pointer deference in imsic_msi_update_msg(): virtio_blk virtio1: 8/0/0 default/read/poll queues Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000 Current kworker/u32:2 pgtable: 4K pagesize, 48-bit VAs, pgdp=0x0000000081c33000 [0000000000000000] pgd=0000000000000000, p4d=0000000000000000 CPU: 5 UID: 0 PID: 75 Comm: kworker/u32:2 Not tainted 6.19.0-rc4-next-20260109 #1 NONE epc : 0x0 ra : imsic_irq_set_affinity+0x110/0x130 The irq_data argument of imsic_irq_set_affinity() is associated with the imsic domain and not with the top-level MSI domain. As a consequence the code dereferences the wrong interrupt chip, which has the irq_write_msi_msg() callback not populated. Signed-off-by: Luo Haiyang <luo.haiyang@zte.com.cn> Signed-off-by: Thomas Gleixner <tglx@kernel.org> Link: https://patch.msgid.link/20260113111930821RrC26avITHWSFCN0bYbgI@zte.com.cn
1 parent 0f61b18 commit f2edf79

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

drivers/irqchip/irq-riscv-imsic-platform.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,11 +158,11 @@ static int imsic_irq_set_affinity(struct irq_data *d, const struct cpumask *mask
158158
tmp_vec.local_id = new_vec->local_id;
159159

160160
/* Point device to the temporary vector */
161-
imsic_msi_update_msg(d, &tmp_vec);
161+
imsic_msi_update_msg(irq_get_irq_data(d->irq), &tmp_vec);
162162
}
163163

164164
/* Point device to the new vector */
165-
imsic_msi_update_msg(d, new_vec);
165+
imsic_msi_update_msg(irq_get_irq_data(d->irq), new_vec);
166166

167167
/* Update irq descriptors with the new vector */
168168
d->chip_data = new_vec;

0 commit comments

Comments
 (0)