Commit 9cbf1233 authored by Junxian Huang's avatar Junxian Huang Committed by Chengchang Tang
Browse files

RDMA/hns: Fix unmatch exception handling when request_irq() fails

driver inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IBIJLS



----------------------------------------------------------------------

Only CEQ set the tasklet. AEQ doesn't need to kill the tasklet in
exception handler.

Fixes: 8cde9df3 ("RDMA/hns: Fix soft lockup under heavy CEQE load")
Signed-off-by: default avatarJunxian Huang <huangjunxian6@hisilicon.com>
Signed-off-by: default avatarXinghai Cen <cenxinghai@h-partners.com>
parent 75c81bcd
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -7138,12 +7138,14 @@ static int __hns_roce_request_irq(struct hns_roce_dev *hr_dev, int irq_num,
	return 0;

err_request_failed:
	for (j -= 1; j >= 0; j--)
	for (j -= 1; j >= 0; j--) {
		if (j < other_num) {
			free_irq(hr_dev->irq[j], hr_dev);
		} else {
			continue;
		}
		free_irq(eq_table->eq[j - other_num].irq,
			 &eq_table->eq[j - other_num]);
		if (j < other_num + comp_num)
			tasklet_kill(&eq_table->eq[j - other_num].tasklet);
	}