| From ae0c585d93dfaf923d2c7eb44b2c3ab92854ea9b Mon Sep 17 00:00:00 2001 |
| From: Brian King <brking@linux.vnet.ibm.com> |
| Date: Fri, 17 Nov 2017 11:05:45 -0600 |
| Subject: ixgbevf: Use smp_rmb rather than read_barrier_depends |
| |
| From: Brian King <brking@linux.vnet.ibm.com> |
| |
| commit ae0c585d93dfaf923d2c7eb44b2c3ab92854ea9b upstream. |
| |
| The original issue being fixed in this patch was seen with the ixgbe |
| driver, but the same issue exists with ixgbevf as well, as the code is |
| very similar. read_barrier_depends is not sufficient to ensure |
| loads following it are not speculatively loaded out of order |
| by the CPU, which can result in stale data being loaded, causing |
| potential system crashes. |
| |
| Signed-off-by: Brian King <brking@linux.vnet.ibm.com> |
| Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com> |
| Tested-by: Andrew Bowers <andrewx.bowers@intel.com> |
| Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c |
| +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c |
| @@ -249,7 +249,7 @@ static bool ixgbevf_clean_tx_irq(struct |
| break; |
| |
| /* prevent any other reads prior to eop_desc */ |
| - read_barrier_depends(); |
| + smp_rmb(); |
| |
| /* if DD is not set pending work has not been completed */ |
| if (!(eop_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD))) |