From patchwork Thu Jul 21 00:22:33 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brenden Blanco X-Patchwork-Id: 650957 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3rvvdL614Vz9t5b for ; Thu, 21 Jul 2016 10:23:18 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=plumgrid-com.20150623.gappssmtp.com header.i=@plumgrid-com.20150623.gappssmtp.com header.b=Tla5+Rix; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753750AbcGUAXK (ORCPT ); Wed, 20 Jul 2016 20:23:10 -0400 Received: from mail-pa0-f43.google.com ([209.85.220.43]:36413 "EHLO mail-pa0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753646AbcGUAXH (ORCPT ); Wed, 20 Jul 2016 20:23:07 -0400 Received: by mail-pa0-f43.google.com with SMTP id pp5so22901193pac.3 for ; Wed, 20 Jul 2016 17:23:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=plumgrid-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ZKpoKzO1S+CnRcw+Axlc15UPfPkmGdP57TrzVPGpJ24=; b=Tla5+Rixgh4eCu4UXDKm3soyWaxJeYELtPTUuCokB0gcSIPrlpGPjfZGQC56xPA3EN 5MgO42COEy8CGVX1rfUzp0SqI7gSAW1s9DtlsDeXffrdlr3w6DHP8uTMIvVWMys2+AQs bRSMBizLjU6xON62g0nqNDrvHdjx1feipTXgbBz3OMHnmTBebhBQQhM/De0lx5Lo1lT+ 3KgEB75P5Z42JyJjZdQqjw8s/NKzpo/29Z/ddURdTL8thtLPYQQR+xUWDufEFU27dJYZ 7ZfEsvuTAXDHuRUUIN3ZCHsaTQzJWvutVcYLeg5JgEshlUwZ01s/Le6mOk3Xf3PiFMmu uGng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ZKpoKzO1S+CnRcw+Axlc15UPfPkmGdP57TrzVPGpJ24=; b=EK/e49PytOH8ivR7/2AmAgT0vtgU3LzrKeScX2Y7AA3irmy+CN8crtASLn9NIOnITH Y2c+pfervPV/kZOh9IN5pxH/Jqplo7CZXkliVzb1Uj0hzRNKlnZBiJK2Tfbw+rtnvzjU BawJUfJYNclZFxHrvrwqy1lJmDbRqaCAV84WfDywHxC03iINCi2xNxyd+P6SAvbGAHq5 0sCZSv8pUUPP9Rk8a4mYlNo129QahA4CXbNQwzm3NnZjmnhvOQEjTNcRmgofgeyzi3So W4eubIh1cL8HXYYr8QctudTD+GNHPGkgEfFqhfoBpxzj99Hi+GfwVlhh68onzpTr4kug hOcw== X-Gm-Message-State: ALyK8tKusckH4QQQ64b/7Zh6ASTxbHw8r1oEMOvEbbhHpyVFqnGXedUiOYht03pXOKYS3FGs X-Received: by 10.66.181.16 with SMTP id ds16mr30367158pac.102.1469060586807; Wed, 20 Jul 2016 17:23:06 -0700 (PDT) Received: from iovisor-test1.plumgrid.com ([12.97.19.201]) by smtp.gmail.com with ESMTPSA id l128sm1773651pfl.21.2016.07.20.17.23.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 20 Jul 2016 17:23:06 -0700 (PDT) From: Brenden Blanco To: davem@davemloft.net, netdev@vger.kernel.org Cc: Brenden Blanco , Daniel Borkmann , Alexei Starovoitov , Tariq Toukan Subject: [PATCH net-next 1/3] net/mlx4_en: use READ_ONCE when freeing xdp_prog Date: Wed, 20 Jul 2016 17:22:33 -0700 Message-Id: <1469060555-20250-2-git-send-email-bblanco@plumgrid.com> X-Mailer: git-send-email 2.8.2 In-Reply-To: <1469060555-20250-1-git-send-email-bblanco@plumgrid.com> References: <1469060555-20250-1-git-send-email-bblanco@plumgrid.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org For consistency, and in order to hint at the synchronous nature of the xdp_prog field, use READ_ONCE in the destroy path of the ring. All occurrences should now use either READ_ONCE or xchg. Signed-off-by: Brenden Blanco Acked-by: Alexei Starovoitov --- drivers/net/ethernet/mellanox/mlx4/en_rx.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c index 11d88c8..a02dec6 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c @@ -535,9 +535,11 @@ void mlx4_en_destroy_rx_ring(struct mlx4_en_priv *priv, { struct mlx4_en_dev *mdev = priv->mdev; struct mlx4_en_rx_ring *ring = *pring; + struct bpf_prog *old_prog; - if (ring->xdp_prog) - bpf_prog_put(ring->xdp_prog); + old_prog = READ_ONCE(ring->xdp_prog); + if (old_prog) + bpf_prog_put(old_prog); mlx4_free_hwq_res(mdev->dev, &ring->wqres, size * stride + TXBB_SIZE); vfree(ring->rx_info); ring->rx_info = NULL;