]> www.infradead.org Git - users/dwmw2/linux.git/commit
idpf: add read memory barrier when checking descriptor done bit
authorEmil Tantilov <emil.s.tantilov@intel.com>
Fri, 22 Nov 2024 04:40:59 +0000 (20:40 -0800)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Fri, 24 Jan 2025 18:03:39 +0000 (10:03 -0800)
commit396f0165672c6a74d7379027d344b83b5f05948c
tree0b0934c79d8d1414423cf7a5e5209296bdc39db8
parent15a901361ec3fb1c393f91880e1cbf24ec0a88bd
idpf: add read memory barrier when checking descriptor done bit

Add read memory barrier to ensure the order of operations when accessing
control queue descriptors. Specifically, we want to avoid cases where loads
can be reordered:

1. Load #1 is dispatched to read descriptor flags.
2. Load #2 is dispatched to read some other field from the descriptor.
3. Load #2 completes, accessing memory/cache at a point in time when the DD
   flag is zero.
4. NIC DMA overwrites the descriptor, now the DD flag is one.
5. Any fields loaded before step 4 are now inconsistent with the actual
   descriptor state.

Add read memory barrier between steps 1 and 2, so that load #2 is not
executed until load #1 has completed.

Fixes: 8077c727561a ("idpf: add controlq init and reset checks")
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Reviewed-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
Suggested-by: Lance Richardson <rlance@google.com>
Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Tested-by: Krishneil Singh <krishneil.k.singh@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/idpf/idpf_controlq.c