net: mana: Add rmb after checking owner bits
commit6fd2c68da5
upstream. Per GDMA spec, rmb is necessary after checking owner_bits, before reading EQ or CQ entries. Add rmb in these two places to comply with the specs. Cc: stable@vger.kernel.org Fixes:ca9c54d2d6
("net: mana: Add a driver for Microsoft Azure Network Adapter (MANA)") Reported-by: Sinan Kaya <Sinan.Kaya@microsoft.com> Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com> Reviewed-by: Dexuan Cui <decui@microsoft.com> Link: https://lore.kernel.org/r/1662928805-15861-1-git-send-email-haiyangz@microsoft.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
19aea370fd
Коммит
71075d7d46
|
@ -368,6 +368,11 @@ static void mana_gd_process_eq_events(void *arg)
|
|||
break;
|
||||
}
|
||||
|
||||
/* Per GDMA spec, rmb is necessary after checking owner_bits, before
|
||||
* reading eqe.
|
||||
*/
|
||||
rmb();
|
||||
|
||||
mana_gd_process_eqe(eq);
|
||||
|
||||
eq->head++;
|
||||
|
@ -1096,6 +1101,11 @@ static int mana_gd_read_cqe(struct gdma_queue *cq, struct gdma_comp *comp)
|
|||
if (WARN_ON_ONCE(owner_bits != new_bits))
|
||||
return -1;
|
||||
|
||||
/* Per GDMA spec, rmb is necessary after checking owner_bits, before
|
||||
* reading completion info
|
||||
*/
|
||||
rmb();
|
||||
|
||||
comp->wq_num = cqe->cqe_info.wq_num;
|
||||
comp->is_sq = cqe->cqe_info.is_sq;
|
||||
memcpy(comp->cqe_data, cqe->cqe_data, GDMA_COMP_DATA_SIZE);
|
||||
|
|
Загрузка…
Ссылка в новой задаче