Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp1010250pxb; Wed, 1 Sep 2021 15:12:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx1IXGNy6JHIz87nHXhTpx4XlMZNPc2vEdxPxBRv3+gCHNcNjqI2Pe0BXWar4n740Tl2h5V X-Received: by 2002:a05:6638:d43:: with SMTP id d3mr96070jak.138.1630534346085; Wed, 01 Sep 2021 15:12:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1630534346; cv=none; d=google.com; s=arc-20160816; b=cLXweGLL8kR52hnG96/Pj8BfAqHRB/lxKNhbhXPihXuR3jwLW+Qyf5SUaCcuCzLP0+ aMdEZFRm7C1MXhuqTkheBnffNZDmCcE4I3L8al8ShJcDZdQSk9pZ4UbYvVfdnKpITTcg BHO69Ek/fGCM9oa+yEpqRfbqRPdOa6Yxrgxuq1/dcTWGMQ6G48CyBf6mOzul/f5u/q6M a1T8j2nnLgu1455x5GNPzcyfO2N7RDCih/TvIhOTsJGxJUeeIEJFJ2LjI9tbyWnuVyh6 18+k1IxTb1WTbFJcwZToPCnzw4KiijB1eRrM/P8pGQcSOkVaMtge3gMXyuFT8RH8uBrg NJ+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=31vhrwrXLU7mBT0vM6AFbovrNlNzNI2Q91TiAqtVtpE=; b=Bc9YThDUoJbEa26769W0QVOE6OFKnKi/LjJdjFLJjxt8jF9rp3aBCmIhPH31mfDGBI 9BA+3tzEwrtGgUC2idHArRvaaNysLCYRtCvyCRKUl1t9kChFRmGvM83BHSBKrVQt1izV /qlgc/MBa4o+JfbyVnSeC8j+vVw23F3CpustiBRFEqAw2ex2SW5+vFosWKis6k8ZCmFc ioak7C3P3Dq22qhRcj8Qvu7lT8EVtgYkEFPTroeYASVWrINvQXF6tbdO5mFSfMlcXDFd 68Rz8tHGMTHGJZkl07IVjz4eOBmQOnge8itUITay1pVC3jYXkpQDFLlZISAd9DqLOSNd 6j+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Ue4YI4YK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x8si842742iom.11.2021.09.01.15.12.14; Wed, 01 Sep 2021 15:12:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Ue4YI4YK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343896AbhIAMxv (ORCPT + 99 others); Wed, 1 Sep 2021 08:53:51 -0400 Received: from mail.kernel.org ([198.145.29.99]:54322 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346405AbhIAMuL (ORCPT ); Wed, 1 Sep 2021 08:50:11 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id A237561104; Wed, 1 Sep 2021 12:41:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1630500094; bh=sL1J6GCX0cXYB6pTbhNmDiPsvxDkc/vNW2Pl3uUkdy8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ue4YI4YK65/pecEGNNdIIFHcmM86gQFhI1yi8lRCij2gJLAXNko894cArvt9bWPVu VsWQFEAjytWd71n5StdZaN1hfosFf9rAKf+lz0S9QMzD+MEijqRoU153ncyFIkgmwN P3o+uECdWrxOXt590osM4Gpgo5Q7Os/SCXoAPjOY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Xiaoliang Yang , "David S. Miller" , Sasha Levin Subject: [PATCH 5.13 067/113] net: stmmac: add mutex lock to protect est parameters Date: Wed, 1 Sep 2021 14:28:22 +0200 Message-Id: <20210901122304.222144856@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210901122301.984263453@linuxfoundation.org> References: <20210901122301.984263453@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Xiaoliang Yang [ Upstream commit b2aae654a4794ef898ad33a179f341eb610f6b85 ] Add a mutex lock to protect est structure parameters so that the EST parameters can be updated by other threads. Signed-off-by: Xiaoliang Yang Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c | 12 +++++++++++- include/linux/stmmac.h | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c index 4e70efc45458..fb5207dcbcaa 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c @@ -775,14 +775,18 @@ static int tc_setup_taprio(struct stmmac_priv *priv, GFP_KERNEL); if (!plat->est) return -ENOMEM; + + mutex_init(&priv->plat->est->lock); } else { memset(plat->est, 0, sizeof(*plat->est)); } size = qopt->num_entries; + mutex_lock(&priv->plat->est->lock); priv->plat->est->gcl_size = size; priv->plat->est->enable = qopt->enable; + mutex_unlock(&priv->plat->est->lock); for (i = 0; i < size; i++) { s64 delta_ns = qopt->entries[i].interval; @@ -813,6 +817,7 @@ static int tc_setup_taprio(struct stmmac_priv *priv, priv->plat->est->gcl[i] = delta_ns | (gates << wid); } + mutex_lock(&priv->plat->est->lock); /* Adjust for real system time */ priv->ptp_clock_ops.gettime64(&priv->ptp_clock_ops, ¤t_time); current_time_ns = timespec64_to_ktime(current_time); @@ -837,8 +842,10 @@ static int tc_setup_taprio(struct stmmac_priv *priv, priv->plat->est->ctr[0] = do_div(ctr, NSEC_PER_SEC); priv->plat->est->ctr[1] = (u32)ctr; - if (fpe && !priv->dma_cap.fpesel) + if (fpe && !priv->dma_cap.fpesel) { + mutex_unlock(&priv->plat->est->lock); return -EOPNOTSUPP; + } /* Actual FPE register configuration will be done after FPE handshake * is success. @@ -847,6 +854,7 @@ static int tc_setup_taprio(struct stmmac_priv *priv, ret = stmmac_est_configure(priv, priv->ioaddr, priv->plat->est, priv->plat->clk_ptp_rate); + mutex_unlock(&priv->plat->est->lock); if (ret) { netdev_err(priv->dev, "failed to configure EST\n"); goto disable; @@ -862,9 +870,11 @@ static int tc_setup_taprio(struct stmmac_priv *priv, return 0; disable: + mutex_lock(&priv->plat->est->lock); priv->plat->est->enable = false; stmmac_est_configure(priv, priv->ioaddr, priv->plat->est, priv->plat->clk_ptp_rate); + mutex_unlock(&priv->plat->est->lock); priv->plat->fpe_cfg->enable = false; stmmac_fpe_configure(priv, priv->ioaddr, diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h index 0db36360ef21..cb7fbd747ae1 100644 --- a/include/linux/stmmac.h +++ b/include/linux/stmmac.h @@ -115,6 +115,7 @@ struct stmmac_axi { #define EST_GCL 1024 struct stmmac_est { + struct mutex lock; int enable; u32 btr_offset[2]; u32 btr[2]; -- 2.30.2