Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp789240pxb; Tue, 5 Apr 2022 23:24:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw4AH0DX42uJnaInXcPa5yZPttAlk0RW763QKBWfLLx+UzW43x+gp3nTn0FpByTZZm9glfd X-Received: by 2002:a17:90a:db50:b0:1ca:9af1:f54f with SMTP id u16-20020a17090adb5000b001ca9af1f54fmr8534994pjx.32.1649226248638; Tue, 05 Apr 2022 23:24:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649226248; cv=none; d=google.com; s=arc-20160816; b=m/NI9Y8aGln4tCm2Tm3fguTGPi5SSf87trAwUUnMRpRklYINwxDXfnaFzn09MoPdHY R9vvpCDlstjS+bZIMQ8UycdnPALJ0dZRTlT3uxmAFWIZapKFZBjx95f5I3JSw7Wz8QIE BIQN6oO3bdv8yHh3pMsyi61P5wLPMZA9fGZFOZNYFhvrImAMvcZEwKUZCTqImiT1fx61 XqfSq8S0aZ9RP7E9HWRprQ21rrXRkHTeU1ndEfJyx1k+ZOkKtsfs3OhSiDzx4a+z2l21 H0ArP0PFIx3hqO9LLa0v3f9cXHoC4tMNt/adky9l7lfI9Hlqiqy6SLBDEh8RWG0nKwlA 3YpA== 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=1sebDrEalxdSUSpmcvQ9Js/fqlWRGJhteCEE+fwoUqE=; b=FvpkI14dNruBVBK3ZGdBsU9oOVGZBXspLmZ1L/0akYZ08i1mqNZeXf0SJkxhtSUBJC FZCIaHLiW6kLcqRPZvcf82UjERag7mwNDO9Nd/z4E6sz+WcPY0Hzjc0O5TUYU/88UC3W B9gyEy2rVv+R3DnnqJholQraQGaUFz9suQdJ7VIYTS+Ooh6vqXu6pK/kqECU0kLZ8Fws UyN65osiRLFHOqX5r7vF442EnYYsaMMntOsWkz4skG/EGon9VrvuC0QUdRYJo/rrR7am 4i9JqItl3cTUEodnerL9VJGa/MC2ioMcJJMTV7o3/c1HDdxqHil0UByVH+E0mqKoMmWU 9M0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=EzlFj5JM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1: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 lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id h5-20020a170902f54500b00156c0b0a42asi5527164plf.113.2022.04.05.23.24.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Apr 2022 23:24:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=EzlFj5JM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1: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: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id D4F473BF8A2; Tue, 5 Apr 2022 23:22:52 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350863AbiDEVEr (ORCPT + 99 others); Tue, 5 Apr 2022 17:04:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54826 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354037AbiDEKLD (ORCPT ); Tue, 5 Apr 2022 06:11:03 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7B8AB4FC62; Tue, 5 Apr 2022 02:56:52 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 048456157A; Tue, 5 Apr 2022 09:56:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 13D86C385A2; Tue, 5 Apr 2022 09:56:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649152611; bh=s1EScRk8aHxvIE1cwg4n5HdDlYcT5jXxGT3URTDhO2g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EzlFj5JMoEMIm6b5U+jf5AHKlcjxLHIawFnZ8S85QTuFmLoU9zKEI/Nb2BF2pYqih /7Fzjr7dISEbhpxNRtwANu8iu49rB7QQT11Haokq1c182nzCzBVo7TEJB4p4tCgUZk PP7creXq/p2v7I4idFZl+I9umFLFyZWNhOmiRUYU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Yufeng Mo , Guangbin Huang , Paolo Abeni Subject: [PATCH 5.15 840/913] net: hns3: fix the concurrency between functions reading debugfs Date: Tue, 5 Apr 2022 09:31:42 +0200 Message-Id: <20220405070405.008748302@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220405070339.801210740@linuxfoundation.org> References: <20220405070339.801210740@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Yufeng Mo commit 9c9a04212fa380d2e7d1412bb281309955c0a781 upstream. Currently, the debugfs mechanism is that all functions share a global variable to save the pointer for obtaining data. When different functions concurrently access the same file node, repeated release exceptions occur. Therefore, the granularity of the pointer for storing the obtained data is adjusted to be private for each function. Fixes: 5e69ea7ee2a6 ("net: hns3: refactor the debugfs process") Signed-off-by: Yufeng Mo Signed-off-by: Guangbin Huang Signed-off-by: Paolo Abeni Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/hisilicon/hns3/hnae3.h | 1 + drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c | 15 +++++++++++---- drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.h | 1 - 3 files changed, 12 insertions(+), 5 deletions(-) --- a/drivers/net/ethernet/hisilicon/hns3/hnae3.h +++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.h @@ -835,6 +835,7 @@ struct hnae3_handle { struct dentry *hnae3_dbgfs; /* protects concurrent contention between debugfs commands */ struct mutex dbgfs_lock; + char **dbgfs_buf; /* Network interface message level enabled bits */ u32 msg_enable; --- a/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c @@ -1022,7 +1022,7 @@ static ssize_t hns3_dbg_read(struct file return ret; mutex_lock(&handle->dbgfs_lock); - save_buf = &hns3_dbg_cmd[index].buf; + save_buf = &handle->dbgfs_buf[index]; if (!test_bit(HNS3_NIC_STATE_INITED, &priv->state) || test_bit(HNS3_NIC_STATE_RESETTING, &priv->state)) { @@ -1127,6 +1127,13 @@ int hns3_dbg_init(struct hnae3_handle *h int ret; u32 i; + handle->dbgfs_buf = devm_kcalloc(&handle->pdev->dev, + ARRAY_SIZE(hns3_dbg_cmd), + sizeof(*handle->dbgfs_buf), + GFP_KERNEL); + if (!handle->dbgfs_buf) + return -ENOMEM; + hns3_dbg_dentry[HNS3_DBG_DENTRY_COMMON].dentry = debugfs_create_dir(name, hns3_dbgfs_root); handle->hnae3_dbgfs = hns3_dbg_dentry[HNS3_DBG_DENTRY_COMMON].dentry; @@ -1175,9 +1182,9 @@ void hns3_dbg_uninit(struct hnae3_handle u32 i; for (i = 0; i < ARRAY_SIZE(hns3_dbg_cmd); i++) - if (hns3_dbg_cmd[i].buf) { - kvfree(hns3_dbg_cmd[i].buf); - hns3_dbg_cmd[i].buf = NULL; + if (handle->dbgfs_buf[i]) { + kvfree(handle->dbgfs_buf[i]); + handle->dbgfs_buf[i] = NULL; } mutex_destroy(&handle->dbgfs_lock); --- a/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.h +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.h @@ -47,7 +47,6 @@ struct hns3_dbg_cmd_info { enum hnae3_dbg_cmd cmd; enum hns3_dbg_dentry_type dentry; u32 buf_len; - char *buf; int (*init)(struct hnae3_handle *handle, unsigned int cmd); };