From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F1075C4320A for ; Fri, 6 Aug 2021 13:43:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D2EDE61104 for ; Fri, 6 Aug 2021 13:43:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344389AbhHFNnr (ORCPT ); Fri, 6 Aug 2021 09:43:47 -0400 Received: from mail.kernel.org ([198.145.29.99]:46068 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244377AbhHFNnp (ORCPT ); Fri, 6 Aug 2021 09:43:45 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 527BA61078; Fri, 6 Aug 2021 13:43:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1628257409; bh=xB3Efw0KXOZkZsJCIwg4mugkxOXkw3lNVMttVabtPSA=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=kGqpxt97w3mtx0+CKwBdCQ/SbUmUaTJDs7BbKjB6R6Y0XrjDTmUECv/YzfEntiPst xP10VhgKHno40Ix6Jkk41Q/z+yOKopmGf0SeiLl0IACwOjoZYd6F/XTXux4+GC4//p HUdfZ7g5JiBxqZkIkxV76Y71WSlv5ZOOoEjCsItlMYtZQgRjV1W2wIGWmrvE760a6Z uqh3eQ9+NkfZoEN/hzHtQVYDC7/yYMVGjylHEUFrvS0F/O/AZRaQldzcojwCS95Zk3 aOko5fafiyQhvZnTwQ6pjRCNkyaLV3SSdaJyvc811BqE9LJVfjCALJ6re7Lyz1VTp8 qYTI/3iJAXq4Q== Date: Fri, 6 Aug 2021 06:43:28 -0700 From: Jakub Kicinski To: Kefeng Wang , Cc: , , , , , Daniel Borkmann , "Eric Dumazet" , Minmin chen Subject: Re: [PATCH v2] once: Fix panic when module unload Message-ID: <20210806064328.1b54a7f0@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com> In-Reply-To: <20210806082124.96607-1-wangkefeng.wang@huawei.com> References: <20210806082124.96607-1-wangkefeng.wang@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 6 Aug 2021 16:21:24 +0800 Kefeng Wang wrote: > DO_ONCE > DEFINE_STATIC_KEY_TRUE(___once_key); > __do_once_done > once_disable_jump(once_key); > INIT_WORK(&w->work, once_deferred); > struct once_work *w; > w->key = key; > schedule_work(&w->work); module unload > //*the key is > destroy* > process_one_work > once_deferred > BUG_ON(!static_key_enabled(work->key)); > static_key_count((struct static_key *)x) //*access key, crash* > > When module uses DO_ONCE mechanism, it could crash due to the above > concurrency problem, we could reproduce it with link[1]. > > Fix it by add/put module refcount in the once work process. > > [1] https://lore.kernel.org/netdev/eaa6c371-465e-57eb-6be9-f4b16b9d7cbf@huawei.com/ Seems reasonable. Greg does it look good to you? I think we can take it thru networking since nobody cared to pick up v1.