mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 02:12:00 -04:00
IB/hfi1: Race hazard avoidance in user SDMA driver
Set the errcode before the state and add the smb_wmb() to avoid a potential race condition with the user. Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Michael Ruhl <michael.j.ruhl@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
committed by
Doug Ledford
parent
ec8a142327
commit
0519c520dc
@@ -1615,9 +1615,10 @@ static inline void set_comp_state(struct hfi1_user_sdma_pkt_q *pq,
|
||||
{
|
||||
hfi1_cdbg(SDMA, "[%u:%u:%u:%u] Setting completion status %u %d",
|
||||
pq->dd->unit, pq->ctxt, pq->subctxt, idx, state, ret);
|
||||
cq->comps[idx].status = state;
|
||||
if (state == ERROR)
|
||||
cq->comps[idx].errcode = -ret;
|
||||
smp_wmb(); /* make sure errcode is visible first */
|
||||
cq->comps[idx].status = state;
|
||||
trace_hfi1_sdma_user_completion(pq->dd, pq->ctxt, pq->subctxt,
|
||||
idx, state, ret);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user