mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-17 00:36:42 +07:00
ice: Clean control queues only when they are initialized
Clean control queues only when they are initialized. One of the ways to validate if the basic initialization is done is by checking value of cq->sq.head and cq->rq.head variables that specify the register address. This patch adds a check to avoid NULL pointer dereference crash when tried to shutdown uninitialized control queue. Signed-off-by: Preethi Banala <preethi.banala@intel.com> Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> Tested-by: Tony Brelinski <tonyx.brelinski@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
f8ba7db850
commit
b29bc220e2
@ -597,10 +597,14 @@ static enum ice_status ice_init_check_adminq(struct ice_hw *hw)
|
||||
return 0;
|
||||
|
||||
init_ctrlq_free_rq:
|
||||
ice_shutdown_rq(hw, cq);
|
||||
ice_shutdown_sq(hw, cq);
|
||||
mutex_destroy(&cq->sq_lock);
|
||||
mutex_destroy(&cq->rq_lock);
|
||||
if (cq->rq.head) {
|
||||
ice_shutdown_rq(hw, cq);
|
||||
mutex_destroy(&cq->rq_lock);
|
||||
}
|
||||
if (cq->sq.head) {
|
||||
ice_shutdown_sq(hw, cq);
|
||||
mutex_destroy(&cq->sq_lock);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
@ -706,10 +710,14 @@ static void ice_shutdown_ctrlq(struct ice_hw *hw, enum ice_ctl_q q_type)
|
||||
return;
|
||||
}
|
||||
|
||||
ice_shutdown_sq(hw, cq);
|
||||
ice_shutdown_rq(hw, cq);
|
||||
mutex_destroy(&cq->sq_lock);
|
||||
mutex_destroy(&cq->rq_lock);
|
||||
if (cq->sq.head) {
|
||||
ice_shutdown_sq(hw, cq);
|
||||
mutex_destroy(&cq->sq_lock);
|
||||
}
|
||||
if (cq->rq.head) {
|
||||
ice_shutdown_rq(hw, cq);
|
||||
mutex_destroy(&cq->rq_lock);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user