Received: by 2002:a05:6a10:eb17:0:0:0:0 with SMTP id hx23csp267224pxb; Wed, 8 Sep 2021 23:59:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzCaPhr6Z1FBoRDgOtVPLz0F2wXcqGku6o5XX5r9dsWO2pc1OX17UBVQKGdCeKufFZ5sthh X-Received: by 2002:a05:6402:205:: with SMTP id t5mr1629069edv.81.1631170744402; Wed, 08 Sep 2021 23:59:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631170744; cv=none; d=google.com; s=arc-20160816; b=oq6hLFnjQ8+QNH0sCJj7/vdZpWmcWymXuIki4b1IyswawKLwqwXZFdkDb7v2HfxVKn akOUkY7i6Vjqw/4C2wTxncIv2GnGAemyV919rrnifF/t37gPmwofTHG6EZuKx6kZXDup sM0V2P10DVaGTCeVG3dYZC2WJnmdkT/UNcTmWAGo1gmq1jL+6i84UqXJofrR3q0nJoJL +CCJTN8FrqUiwOFJt/Qff7dFaZLjh/ZIp/ayTSh08/Ci2jnEQF1WTOWTw2gpLzB3LH2J mEKxu3CnRGF2k1vODsXe0Avr+uHtzvwgzrwZujY1yYQcqoZ5dbjKDSvXrA10BNnEV/FN i4FA== 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=PdyHdIGTIcExNI9r9vt6KvD+sKOV7iT7d1j4FssidJk=; b=pyR0Er1+8Mw8TyoXWaUgG0FeVUGb17lWK7eJzEXNLY8YvV73LLcSY2Cb/CQgvSxFP2 dAtn8+nOOFlgwriU5iSpVE1QWwZbCQttOofuMcAj9p6f5cV00dqjpk/7wbqbinhiQMn6 YoBY2Hv9VjzfrgGMy0xrYEdltbnv6tkC2TTM9e1zaFZWp5J7FQKH65GDmfQttaQVDfMW H4Kz/58dwxDKz8axc1M+vtLOox+nAPzf2cFARuf7oBSiJCkX/yjvIg+YgydV6ygWaGnk WxsD1UNJHLOfZ43+JnDP5pbI0g0oaY+lGg/RkQ27d2scCwWJzV2Y6mphoKEHs3IqL/Cb w81g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=NEGnnOBV; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id qb27si867579ejc.208.2021.09.08.23.58.40; Wed, 08 Sep 2021 23:59:04 -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=@google.com header.s=20210112 header.b=NEGnnOBV; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350839AbhIIGzZ (ORCPT + 99 others); Thu, 9 Sep 2021 02:55:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55560 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231176AbhIIGzY (ORCPT ); Thu, 9 Sep 2021 02:55:24 -0400 Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A787BC061575 for ; Wed, 8 Sep 2021 23:54:15 -0700 (PDT) Received: by mail-wr1-x430.google.com with SMTP id m9so966702wrb.1 for ; Wed, 08 Sep 2021 23:54:15 -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=PdyHdIGTIcExNI9r9vt6KvD+sKOV7iT7d1j4FssidJk=; b=NEGnnOBV9RPUC15x/R1lIz4hVZL5OPCHBQAFWpmM/ROy7YTqLjYPBccHng0uAFC9nZ YIVBE0eRwPBPhVcPMyv0sZ6Pra3+jQTN0duyhpRK8DI+VEgbMoBrSrq71HElVr4TY8tE bX5Q7TsNXhmk7DrIrfhswRWxNZs702q45KCTHmVLRb7YU9ky0jkzfs6NL+3Xr0wuVgnc Q9uAjZlAM58BupaV7tnSxeIwq0AZ19CHkDqLpJc//2CD6XxeEKdQQLZCph5h8Zax1Bi6 fzG4EmnbEwAuPeyVkO6dgrdvaEcrVq9RPZiXSnbH0qx11K4KSsgTpLED26jhZU2BbEyd 819g== 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=PdyHdIGTIcExNI9r9vt6KvD+sKOV7iT7d1j4FssidJk=; b=c0WKxzvwjLWQj86C/fmygbOy5j5Zb6EHWiKW36UnUSTlvS7nCe4z2CCyLpBKTnWf1H 8dGtsDDZFVW69v1AYFtR5ZkHl22XNgGtitusa4IzaOvS9pEae8qFDkh5ObxlmMwfELIs FfD6fLSieFDFwJhIiG/tv5DMShGKPqSlISujkSHZMKtqg7DrB1toeulF5W11APSaaYfm aVX8Krh/BkXmU1Zv2lTnZhXuAI+szkQAhk2iTaQjMOUsnJio4wnizUWpmXQbC1jG5cFa h6XeLQLnAOvEvWMUnJhjAk54CSEvjMrHcALhc4xW3XYt0pmshphbyRhL5e4OaMGOHYPM Rm5g== X-Gm-Message-State: AOAM530lsTVmNkkb9FanZ8QNrjCGJy7jtBVSe1QItnOIBGmBJ5rguZB+ xYVQAszZ2rWSLFrVYX0Loaa0JBIQ3C1w4in9L29sfw== X-Received: by 2002:a5d:6909:: with SMTP id t9mr1639256wru.44.1631170454168; Wed, 08 Sep 2021 23:54:14 -0700 (PDT) MIME-Version: 1.0 References: <1631165296-81082-1-git-send-email-xiyuyang19@fudan.edu.cn> In-Reply-To: <1631165296-81082-1-git-send-email-xiyuyang19@fudan.edu.cn> From: David Gow Date: Thu, 9 Sep 2021 14:54:03 +0800 Message-ID: Subject: Re: [PATCH] kunit: fix reference count leak in kfree_at_end To: Xiyu Yang Cc: Brendan Higgins , "open list:KERNEL SELFTEST FRAMEWORK" , KUnit Development , Linux Kernel Mailing List , yuanxzhang@fudan.edu.cn, Xin Tan , Daniel Latypov Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Sep 9, 2021 at 1:28 PM 'Xiyu Yang' via KUnit Development wrote: > > The reference counting issue happens in the normal path of > kfree_at_end(). When kunit_alloc_and_get_resource() is invoked, the > function forgets to handle the returned resource object, whose refcount > increased inside, causing a refcount leak. > > Fix this issue by calling kunit_put_resource() at the end of function. > > Signed-off-by: Xiyu Yang > Signed-off-by: Xin Tan > --- Thanks for looking into this. + Daniel -- any thoughts? > lib/kunit/executor_test.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/lib/kunit/executor_test.c b/lib/kunit/executor_test.c > index cdbe54b16501..3af30abad826 100644 > --- a/lib/kunit/executor_test.c > +++ b/lib/kunit/executor_test.c > @@ -113,11 +113,13 @@ static void kfree_res_free(struct kunit_resource *res) > */ > static void kfree_at_end(struct kunit *test, const void *to_free) > { > + struct kunit_resource *res; > /* kfree() handles NULL already, but avoid allocating a no-op cleanup. */ > if (IS_ERR_OR_NULL(to_free)) > return; > - kunit_alloc_and_get_resource(test, NULL, kfree_res_free, GFP_KERNEL, > + res = kunit_alloc_and_get_resource(test, NULL, kfree_res_free, GFP_KERNEL, > (void *)to_free); > + kunit_put_resource(res); Why not just change this to kunit_alloc_resource()? > } > > static struct kunit_suite *alloc_fake_suite(struct kunit *test, > -- > 2.7.4 > > -- > You received this message because you are subscribed to the Google Groups "KUnit Development" group. > To unsubscribe from this group and stop receiving emails from it, send an email to kunit-dev+unsubscribe@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgid/kunit-dev/1631165296-81082-1-git-send-email-xiyuyang19%40fudan.edu.cn.