Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp6019792iob; Tue, 10 May 2022 08:36:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwknvlkg4B6zQnLKNTMCD0UV1nykFN3wSgkkR/zj38JnoCevGp+6z7l/WxnfmVxqiA+bZ52 X-Received: by 2002:a17:902:7006:b0:156:3cbe:6b04 with SMTP id y6-20020a170902700600b001563cbe6b04mr20941651plk.68.1652196983319; Tue, 10 May 2022 08:36:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652196983; cv=none; d=google.com; s=arc-20160816; b=BHf3HlVWsc2+2FhTMNAAksmQbmG6blxIZ4LTZmV5V67Qatxuf2V2ItIx5MrAdTMljO hwZrgF69aE+QMSyYg27/BVRQBlQgfzQZJn4N8FbG1Ib6ECI/MyCgXFvxvFi8Cn5sgBwZ WaPPhNBc9W5f3YTmqP4QJqhlAjGX4XVeTqgjJAzGM6VvEbyDJOajs0laUs8KHwSKeVU4 D3I7c/tcXdQGFmfeU3vJzcPq8U4FfB/UMbOUlfv9AXk6Wqgd2jWcSI0KXxcUNjclpyIo p5X9Qr23SrHlumNnWgjR+Hs0dczJay3qfD1MGVuD496xL87GNsPlHoH5LWpAbquHESj0 O1/g== 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=XnZSeQnm90kXd0y1prp3oUwCnJ+akQIRlGfNX8O4JNQ=; b=f2iu8pkCXV5JKmPprLUAf3XYFE+8A6KTRrdq4VQmkAzCg+5tdQvXiqqlSSiUzFnr0j 4uuYzefXrqWSXlaqs7ZczEx8wTMvcdbe76hxNp2/huQo/BtIJ+FZ/buicaU1J43gEX/s JWFLjof4xuJ6vuaQQMVbTHlYg8Fr61+b5xGUkMa13ZUVVbnuxIIH5LlJEUzndFonj4NG nO14vlbO20STHkCDOFlmBhzlzFQPlT2g5JZjoRJPK54VJFPwIH3Awr68ZAbyXsNKudcz I/dMWhTusq8VUcUQDJWHeBeP+PJX65JK4RVcoFZX1tEmlu350Bgo96yRwyQ1aSF+4g+i RB8g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=CNJVO6bc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b16-20020a170902d51000b001583459615esi4212040plg.86.2022.05.10.08.36.06; Tue, 10 May 2022 08:36:23 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=CNJVO6bc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S244552AbiEJNzg (ORCPT + 99 others); Tue, 10 May 2022 09:55:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56366 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244785AbiEJNiD (ORCPT ); Tue, 10 May 2022 09:38:03 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B20B15BD09; Tue, 10 May 2022 06:26:22 -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 C6CFA615C8; Tue, 10 May 2022 13:26:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C89D4C385A6; Tue, 10 May 2022 13:26:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1652189181; bh=abmYuJArJqRPZKjjiUnONxxuXLGmX/tmZAbp6sJlbwo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CNJVO6bc8pyCy5lfiWIZ/HFhEg945nsOH012FTd0va2z9rbrqUVCj36IvDNEri7cU 0BJpnuunxgvOhR4BXQALtXTaPMFFK7O1s30qzZ+fDC1SWVPjmjwR63bXk8JQZP/KIl CnUCr7PYWytcb7/FbaHgTUD4zbeoTG3wExGjPdhs= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Oz Shlomo , Paul Blakey , Saeed Mahameed Subject: [PATCH 5.10 39/70] net/mlx5e: CT: Fix queued up restore put() executing after relevant ft release Date: Tue, 10 May 2022 15:07:58 +0200 Message-Id: <20220510130734.007929518@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220510130732.861729621@linuxfoundation.org> References: <20220510130732.861729621@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=-7.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham 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: Paul Blakey commit b069e14fff46c8da9fcc79957f8acaa3e2dfdb6b upstream. __mlx5_tc_ct_entry_put() queues release of tuple related to some ct FT, if that is the last reference to that tuple, the actual deletion of the tuple can happen after the FT is already destroyed and freed. Flush the used workqueue before destroying the ct FT. Fixes: a2173131526d ("net/mlx5e: CT: manage the lifetime of the ct entry object") Reviewed-by: Oz Shlomo Signed-off-by: Paul Blakey Signed-off-by: Saeed Mahameed Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c | 4 ++++ 1 file changed, 4 insertions(+) --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c @@ -1629,6 +1629,8 @@ mlx5_tc_ct_flush_ft_entry(void *ptr, voi static void mlx5_tc_ct_del_ft_cb(struct mlx5_tc_ct_priv *ct_priv, struct mlx5_ct_ft *ft) { + struct mlx5e_priv *priv; + if (!refcount_dec_and_test(&ft->refcount)) return; @@ -1638,6 +1640,8 @@ mlx5_tc_ct_del_ft_cb(struct mlx5_tc_ct_p rhashtable_free_and_destroy(&ft->ct_entries_ht, mlx5_tc_ct_flush_ft_entry, ct_priv); + priv = netdev_priv(ct_priv->netdev); + flush_workqueue(priv->wq); mlx5_tc_ct_free_pre_ct_tables(ft); mapping_remove(ct_priv->zone_mapping, ft->zone_restore_id); kfree(ft);