Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp2110003pxb; Fri, 25 Mar 2022 11:15:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJysgc5e70UF5zyRY28NijBsIzg70u4OeK2+SWzcY3JgzQJNLjT8qYylXcWvpCkf6nIPcqvE X-Received: by 2002:a05:6a00:24c2:b0:4f7:282c:4397 with SMTP id d2-20020a056a0024c200b004f7282c4397mr11484199pfv.78.1648232129821; Fri, 25 Mar 2022 11:15:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648232129; cv=none; d=google.com; s=arc-20160816; b=XLql1Y0UthAPpBZ7HVZRKN2Zd5YPSYtNMtEHh7HqZC+48ep6WGp251FVeSJ29830jy 7xDlqDWLPWm22XXxUnV/jRP/gOH8wacOv3hIG6jetngJ23SeEyvNWbUa9AVp4LIuFwZX u7Xr/l/rN4zz0rOhcqmiX6EdXBmWppz2vG3sp9fPqxbGhCN8dkkfn/h002jtbJG59gLV fL5KT5tC5finPrSgiDbdRqxb3n3V1XyzKPT6WpZbtgY+ahGHRA7x9KUaui6hxHd/Wyb7 5IXBFEE7PzeRJ9Zi/avjKTwpeOi1IYOeopOqQQqFg38Lna0vU0Vg5vg3cn0LqPcZm0oE 8KFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=Sr7J4vfXVHgXl/lrrjqeau5g6gjXQTlIBcP0OGTYE7A=; b=cnv/7S5CqNXJM7I4WYGlFo6c8OxL+9SDP59eYdVKPw8SeIjCo8k+N1WUOjjAjBnZek O8Mg+3vkrYktH6+eZdmIBNFJBehknEjt1jyIbHf5k+Nm87wu8MCGF7ta6lDU0YswCH1J eKZHPlrOMQxzwT99NAiJ5EwZlV5IuCdLKEF0u9Pws9gb6xjs+egvcV+gCkxELLha3BU/ sKM3nKiFkjf5FbmCN4gS4sa88R2LNnbrfYnno3vBMm7LfQKIIOQ0ZbitXIyPMweXoO+o P0n4jSFTt9n9akcXovYMIyCmw90ebRhFGbiHIiiTsw6g7LcAXksnsW2jKLH0PF262nkq pxtg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=ofKf+l9l; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id u21-20020a056a00159500b004faf33e46d4si4228843pfk.381.2022.03.25.11.15.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Mar 2022 11:15:29 -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=@google.com header.s=20210112 header.b=ofKf+l9l; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id C80DD14FFE8; Fri, 25 Mar 2022 10:44:46 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346593AbiCWX6L (ORCPT + 99 others); Wed, 23 Mar 2022 19:58:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41874 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240367AbiCWX6J (ORCPT ); Wed, 23 Mar 2022 19:58:09 -0400 Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com [IPv6:2a00:1450:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CCD906E369 for ; Wed, 23 Mar 2022 16:56:38 -0700 (PDT) Received: by mail-ed1-x535.google.com with SMTP id h1so3751812edj.1 for ; Wed, 23 Mar 2022 16:56:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Sr7J4vfXVHgXl/lrrjqeau5g6gjXQTlIBcP0OGTYE7A=; b=ofKf+l9lFhG9+K+rNIAmI2pVWAmDdvO4SuuOzCqfEAZh19RvYXvwX9dN95tGecz9zp cP8pKxJYxc+10Y5e867EQHrFkZoI0W/lkKNCZ22jgq5+fk7hymMoDNSvkSgDFiNd4Qun 8EnP08Pyj0kFbpC9eeT56GLMozN6uPUtGMvI0Cux46JSg1m1N5N4aVl0JllB9T2V9bUi H4iUnV2Qh6X3qWJPn6VnVkmZyy3N85cKj5vluNr0HZvBS+O7hCdhHE2ezLM52r86H3hS I+CeIidoIprZIiKiPll0gmrJet47VYgoUbYlAnMqJEdRTMRE/sYUfMVKo2UlHfPHZrMb pviA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Sr7J4vfXVHgXl/lrrjqeau5g6gjXQTlIBcP0OGTYE7A=; b=E26ao+mDLKXtMVHI9KPvTN2vfSI6bIrAJUzQUk4gG5ppOND2xlEBBfxtdCO0ux3S1o oKncFJwxZmFgBl5y/IEi+MChl2PgJ3AOzmDAupmVgFyB2k6gvzQbYFaLNP1GHai2WHBD f0NYxMZIKnA0gr1tuDZGvmPfOvWbTE/f0C3aM5zsCGdmHE0yIY63EqUrW78ZIJKFH8Rt RKKyj1Y2JSOA12tzGFaYU5++a/fxXkvnR2+stGQgkcelgL4NWo8rFS3/qBJ0UtLzJaXj buDa6O8uZMcYgJ03uLh3QdyJ0Ijecp7v4MO/kcOVdvc9XhzZ6g94ItUXSDJC6h4Clv09 JK6Q== X-Gm-Message-State: AOAM532HzD3tNodFTqjMFo11OSFQMXqi+YSqWpwzntN8tMBbFOuwf/RM VBIXQZbsC+16kxVQ30IH1eWzV+iM4JzD9fgUHnpeiw== X-Received: by 2002:a05:6402:1cc1:b0:413:2b12:fc49 with SMTP id ds1-20020a0564021cc100b004132b12fc49mr3463086edb.118.1648079797217; Wed, 23 Mar 2022 16:56:37 -0700 (PDT) MIME-Version: 1.0 References: <20220318064959.3298768-1-davidgow@google.com> In-Reply-To: <20220318064959.3298768-1-davidgow@google.com> From: Brendan Higgins Date: Wed, 23 Mar 2022 19:56:26 -0400 Message-ID: Subject: Re: [PATCH] kunit: Make kunit_remove_resource() idempotent To: David Gow Cc: Daniel Latypov , Shuah Khan , kunit-dev@googlegroups.com, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.5 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL 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 On Fri, Mar 18, 2022 at 2:50 AM David Gow wrote: > > The kunit_remove_resource() function is used to unlink a resource from > the list of resources in the test, making it no longer show up in > kunit_find_resource(). > > However, this could lead to a race condition if two threads called > kunit_remove_resource() on the same resource at the same time: the > resource would be removed from the list twice (causing a crash at the > second list_del()), and the refcount for the resource would be > decremented twice (instead of once, for the reference held by the > resource list). > > Fix both problems, the first by using list_del_init(), and the second by > checking if the resource has already been removed using list_empty(), > and only decrementing its refcount if it has not. > > Also add a KUnit test for the kunit_remove_resource() function which > tests this behaviour. > > Reported-by: Daniel Latypov > Signed-off-by: David Gow Reviewed-by: Brendan Higgins