Received: by 2002:a05:7412:31a9:b0:e2:908c:2ebd with SMTP id et41csp3286023rdb; Wed, 13 Sep 2023 07:44:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEZKVDADngHjK86Kjx3y7L06mVY0ndcwiF0ftSZwcOLAElyhk9SbIbtX7hFwMHVzDHm8sfR X-Received: by 2002:a17:902:db12:b0:1c3:25ba:e204 with SMTP id m18-20020a170902db1200b001c325bae204mr3132954plx.54.1694616278341; Wed, 13 Sep 2023 07:44:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694616278; cv=none; d=google.com; s=arc-20160816; b=UM4cMGUqN3cVFVhEFEawhjLZbxDsdBwCo7Zw4lj3sK+aTT2F92Esr59p4CDTuzL+2A J6yK05ScoQcwYOPSFkQKVK4NdOMYFiTIVBoraW//OBotxjEOWZtX1NSrWq4RgkQWprBK wAaNcr8zp6aMzUo8JyGON1KtqqI8fL1FxA+w7RHaG5YgHTozjpk9e12QmzE/cewheQWT EeJl5mVMfp+McScg0qqhmr2s414u2EFynhqkudyGVm1hJY5zQBW2VSsQnFIJPpkB9kxB nENpqaepuwtVOlcZ3FR5Tv+unAworcT2kO9kg7YcJE45W18KbNPx7av8vykuoujYFRvu qwQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:date:from:dkim-signature; bh=uxHREX+DfFbZVDMZZ/4KkcGbn8iDpZ57JJu1dj7n5kU=; fh=6zDBtJtPp1v7UOIiHT8XBWb+dgWdy8Ec+sY5E7KbkAY=; b=q1wXaS0mKmDOiN+fvrVoY2kG3cueQ34akQixKMIyL9a+9hRBMglogfkX4DGj2fepX2 Cd+RNrgbfFBC2+HzIIVCorA5SaLpqQ27+bP7iINerZ97ZXS6thFGKbwwpB1NLU9KPgZL l7UV42w1gMiJrHQZaF0oMZkQe1a7QwNJzPohlAA7R4RZCak7s90K28X23W+jgkpbmVtV 1pWnnBFnKFs4XPu0wsLbOJDfuvSYgb+bcvbEo00U0SMRFXsgTytfBPMDbu7E5WDuIa/l 481ldZb5jArML9WQKrQ3EL20iYYRD0QzBopnP5bS7LlJdjJOctcOVnFBqHu8vcjU1Mvh kWkg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=foaaS8V8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from pete.vger.email (pete.vger.email. [2620:137:e000::3:6]) by mx.google.com with ESMTPS id j5-20020a170902f24500b001b8ba81d04dsi9914431plc.395.2023.09.13.07.44.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Sep 2023 07:44:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) client-ip=2620:137:e000::3:6; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=foaaS8V8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id 2589782C9DA2; Wed, 13 Sep 2023 07:41:32 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240133AbjIMOl3 (ORCPT + 99 others); Wed, 13 Sep 2023 10:41:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36458 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232390AbjIMOl3 (ORCPT ); Wed, 13 Sep 2023 10:41:29 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1F56490 for ; Wed, 13 Sep 2023 07:41:25 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 66DD2C433C8; Wed, 13 Sep 2023 14:41:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1694616084; bh=keiQAhGl1KiQuI4EQlUBS5t1hZLSooT0aQknqkd3RNw=; h=From:Date:To:Cc:Subject:References:In-Reply-To:From; b=foaaS8V8By/GEEvlESL1FRYWFDGeHe79QknknqA+frVW/9g7ijSn5WU+r1LQ1lGZW 9D3l/CGQXnabSLR/8ORf3cw8GXVj/9n7zoREKf1z4tmjPJctX5dxL4XT8I2wkc/KLI XyZmlBSSd072qdV2KWsOuZUTE73bIUkX+48pptf/YKLX0B7PLFUb99f5kMH1Le1qpb 9OhaBaU2RJCS1ncyZnSglj87zrPz1N3NGoVO5+mo3zpyWOko5+6YH9zmbrY8mpcqEB wljLjxQBKh0muJW8qtW6alwzc4WnOkXMuGlqvPEqdWopZuD7YUYuk7BYAhTVwoDbHk aC9GcvW4hHkow== From: mripard@kernel.org Date: Wed, 13 Sep 2023 16:41:22 +0200 To: =?utf-8?B?Sm9zw6k=?= Pekkarinen Cc: airlied@gmail.com, daniel@ffwll.ch, christian.koenig@amd.com, dakr@redhat.com, boris.brezillon@collabora.com, alexander.deucher@amd.com, arthurgrillo@riseup.net, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-kernel-mentees@lists.linuxfoundation.org Subject: Re: [PATCH] drm/tests: provide exit function Message-ID: <4epqmvfgjlj4sz7zj6wy5z2qkezif2te3teiwhbf5wv3g3nkeo@36wbg7ksnpy4> References: <20230913083223.28684-1-jose.pekkarinen@foxhound.fi> <63yq44aikrrymqz5e5mg5mwwnaetud7sdxju2lgtsupq52b7hm@fydwmsm4yh54> <46d60d7e69c470e9550a2e7b7c750f12@foxhound.fi> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="upz45bzpjfn2lqwm" Content-Disposition: inline In-Reply-To: <46d60d7e69c470e9550a2e7b7c750f12@foxhound.fi> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Wed, 13 Sep 2023 07:41:32 -0700 (PDT) X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email --upz45bzpjfn2lqwm Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Sep 13, 2023 at 05:01:40PM +0300, Jos=E9 Pekkarinen wrote: > On 2023-09-13 12:50, Maxime Ripard wrote: > > Hi, > >=20 > > On Wed, Sep 13, 2023 at 11:32:23AM +0300, Jos=E9 Pekkarinen wrote: > > > Running drm_exec_test by modprobing the module I > > > observe the following output: > > >=20 > > > [ 424.471936] KTAP version 1 > > > [ 424.471942] 1..1 > > > [ 424.472446] KTAP version 1 > > > [ 424.472450] # Subtest: drm_exec > > > [ 424.472453] # module: drm_exec_test > > > [ 424.472459] 1..7 > > > [ 424.479082] > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > > [ 424.479095] BUG: KASAN: slab-use-after-free in > > > drm_dev_put.part.0+0x4b/0x90 [drm] > > > [ 424.479426] Read of size 8 at addr ffff888132d3e028 by task > > > kunit_try_catch/1866 > > > [ 424.479436] > > > [ 424.479442] CPU: 1 PID: 1866 Comm: kunit_try_catch Tainted: G > > > N 6.6.0-rc1-dirty #2 > >=20 > > That's suspicious > >=20 > > > [ 424.479446] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), > > > BIOS 0.0.0 02/06/2015 > > > [ 424.479446] Call Trace: > > > [ 424.479446] > > > [ 424.479446] dump_stack_lvl+0x43/0x60 > > > [ 424.479446] print_report+0xcf/0x660 > > > [ 424.479446] ? __virt_addr_valid+0xd9/0x160 > > > [ 424.479446] ? drm_dev_put.part.0+0x4b/0x90 [drm] > > > [ 424.479446] kasan_report+0xda/0x110 > > > [ 424.479446] ? drm_dev_put.part.0+0x4b/0x90 [drm] > > > [ 424.479446] drm_dev_put.part.0+0x4b/0x90 [drm] > > > [ 424.479446] release_nodes+0x83/0x160 > > > [ 424.479446] devres_release_all+0xe6/0x130 > > > [ 424.479446] ? __pfx_devres_release_all+0x10/0x10 > > > [ 424.479446] ? mutex_unlock+0x80/0xd0 > > > [ 424.479446] ? __pfx_mutex_unlock+0x10/0x10 > > > [ 424.479446] device_unbind_cleanup+0x16/0xc0 > > > [ 424.479446] device_release_driver_internal+0x28b/0x2e0 > > > [ 424.479446] bus_remove_device+0x124/0x1d0 > > > [ 424.479446] device_del+0x23d/0x580 > > > [ 424.479446] ? __pfx_device_del+0x10/0x10 > > > [ 424.479446] ? kasan_set_track+0x21/0x30 > > > [ 424.479446] ? _raw_spin_lock_irqsave+0x98/0xf0 > > > [ 424.479446] platform_device_del.part.0+0x19/0xe0 > > > [ 424.479446] kunit_remove_resource+0xfa/0x140 [kunit] > > > [ 424.479446] kunit_cleanup+0x47/0xa0 [kunit] > > > [ 424.479446] ? __pfx_kunit_try_run_case_cleanup+0x10/0x10 [kunit] > > > [ 424.479446] ? __pfx_kunit_generic_run_threadfn_adapter+0x10/0x10 > > > [kunit] > > > [ 424.479446] kunit_generic_run_threadfn_adapter+0x29/0x50 [kunit] > > > [ 424.479446] kthread+0x184/0x1c0 > > > [ 424.479446] ? __pfx_kthread+0x10/0x10 > > > [ 424.479446] ret_from_fork+0x30/0x50 > > > [ 424.479446] ? __pfx_kthread+0x10/0x10 > > > [ 424.479446] ret_from_fork_asm+0x1b/0x30 > > > [ 424.479446] > > > [ 424.479446] > > > [ 424.479446] Allocated by task 1865: > > > [ 424.479446] kasan_save_stack+0x2f/0x50 > > > [ 424.479446] kasan_set_track+0x21/0x30 > > > [ 424.479446] __kasan_kmalloc+0xa6/0xb0 > > > [ 424.479446] __kmalloc+0x5d/0x160 > > > [ 424.479446] kunit_kmalloc_array+0x1c/0x50 [kunit] > > > [ 424.479446] drm_exec_test_init+0xef/0x260 [drm_exec_test] > > > [ 424.479446] kunit_try_run_case+0x6e/0x100 [kunit] > > > [ 424.479446] kunit_generic_run_threadfn_adapter+0x29/0x50 [kunit] > > > [ 424.479446] kthread+0x184/0x1c0 > > > [ 424.479446] ret_from_fork+0x30/0x50 > > > [ 424.479446] ret_from_fork_asm+0x1b/0x30 > > > [ 424.479446] > > > [ 424.479446] Freed by task 1866: > > > [ 424.479446] kasan_save_stack+0x2f/0x50 > > > [ 424.479446] kasan_set_track+0x21/0x30 > > > [ 424.479446] kasan_save_free_info+0x27/0x40 > > > [ 424.479446] ____kasan_slab_free+0x166/0x1c0 > > > [ 424.479446] slab_free_freelist_hook+0x9f/0x1e0 > > > [ 424.479446] __kmem_cache_free+0x187/0x2d0 > > > [ 424.479446] kunit_remove_resource+0xfa/0x140 [kunit] > > > [ 424.479446] kunit_cleanup+0x47/0xa0 [kunit] > > > [ 424.479446] kunit_generic_run_threadfn_adapter+0x29/0x50 [kunit] > > > [ 424.479446] kthread+0x184/0x1c0 > > > [ 424.479446] ret_from_fork+0x30/0x50 > > > [ 424.479446] ret_from_fork_asm+0x1b/0x30 > > > [ 424.479446] > > > [ 424.479446] The buggy address belongs to the object at > > > ffff888132d3e000 > > > [ 424.479446] which belongs to the cache kmalloc-256 of size 256 > > > [ 424.479446] The buggy address is located 40 bytes inside of > > > [ 424.479446] freed 256-byte region [ffff888132d3e000, > > > ffff888132d3e100) > > > [ 424.479446] > > > [ 424.479446] The buggy address belongs to the physical page: > > > [ 424.479446] page:0000000092ff6551 refcount:1 mapcount:0 > > > mapping:0000000000000000 index:0xffff888132d3f600 pfn:0x132d3c > > > [ 424.479446] head:0000000092ff6551 order:2 entire_mapcount:0 > > > nr_pages_mapped:0 pincount:0 > > > [ 424.479446] ksm flags: > > > 0x17ffffc0000840(slab|head|node=3D0|zone=3D2|lastcpupid=3D0x1fffff) > > > [ 424.479446] page_type: 0xffffffff() > > > [ 424.479446] raw: 0017ffffc0000840 ffff888100042b40 > > > ffffea00042c8000 dead000000000003 > > > [ 424.479446] raw: ffff888132d3f600 000000008020001f > > > 00000001ffffffff 0000000000000000 > > > [ 424.479446] page dumped because: kasan: bad access detected > > > [ 424.479446] > > > [ 424.479446] Memory state around the buggy address: > > > [ 424.479446] ffff888132d3df00: fc fc fc fc fc fc fc fc fc fc fc > > > fc fc fc fc fc > > > [ 424.479446] ffff888132d3df80: fc fc fc fc fc fc fc fc fc fc fc > > > fc fc fc fc fc > > > [ 424.479446] >ffff888132d3e000: fa fb fb fb fb fb fb fb fb fb fb > > > fb fb fb fb fb > > > [ 424.479446] ^ > > > [ 424.479446] ffff888132d3e080: fb fb fb fb fb fb fb fb fb fb fb > > > fb fb fb fb fb > > > [ 424.479446] ffff888132d3e100: fc fc fc fc fc fc fc fc fc fc fc > > > fc fc fc fc fc > > > [ 424.479446] > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > > [ 424.481686] Disabling lock debugging due to kernel taint > > > [ 424.484124] not ok 1 sanitycheck > > > [ 424.492981] ok 2 test_lock > > > [ 424.503610] ok 3 test_lock_unlock > > > [ 424.515058] ok 4 test_duplicates > > > [ 424.530453] ok 5 test_prepare > > > [ 424.539099] ok 6 test_prepare_array > > > [ 424.550730] ok 7 test_multiple_loops > > > [ 424.550743] # drm_exec: pass:6 fail:1 skip:0 total:7 > > > [ 424.550750] # Totals: pass:6 fail:1 skip:0 total:7 > > > [ 424.550756] not ok 5 drm_exec > > >=20 > > > The ouptut suggest the init function is allocating a drm_device > > > that is not being freed. This patch provides the function and > > > add it to the kunit_suite to produce the following result of > > > the test: > > >=20 > > > [ 3363.342560] KTAP version 1 > > > [ 3363.342571] 1..1 > > > [ 3363.343090] KTAP version 1 > > > [ 3363.343095] # Subtest: drm_exec > > > [ 3363.343098] # module: drm_exec_test > > > [ 3363.343103] 1..7 > > > [ 3363.353659] ok 1 sanitycheck > > > [ 3363.364281] ok 2 test_lock > > > [ 3363.375616] ok 3 test_lock_unlock > > > [ 3363.388741] ok 4 test_duplicates > > > [ 3363.402544] ok 5 test_prepare > > > [ 3363.413163] ok 6 test_prepare_array > > > [ 3363.424614] ok 7 test_multiple_loops > > > [ 3363.424630] # drm_exec: pass:7 fail:0 skip:0 total:7 > > > [ 3363.424637] # Totals: pass:7 fail:0 skip:0 total:7 > > > [ 3363.424643] ok 1 drm_exec > > >=20 > > > Signed-off-by: Jos=E9 Pekkarinen > > > --- > > > drivers/gpu/drm/tests/drm_exec_test.c | 14 ++++++++++++++ > > > 1 file changed, 14 insertions(+) > > >=20 > > > diff --git a/drivers/gpu/drm/tests/drm_exec_test.c > > > b/drivers/gpu/drm/tests/drm_exec_test.c > > > index 563949d777dd..7ff6bc6467d4 100644 > > > --- a/drivers/gpu/drm/tests/drm_exec_test.c > > > +++ b/drivers/gpu/drm/tests/drm_exec_test.c > > > @@ -42,6 +42,19 @@ static int drm_exec_test_init(struct kunit *test) > > > return 0; > > > } > > >=20 > > > +static void drm_exec_test_exit(struct kunit *test) > > > +{ > > > + struct drm_exec_priv *priv =3D test->priv; > > > + > > > + drm_kunit_helper_free_device(test, priv->dev); > > > + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, priv->dev); > >=20 > > This shouldn't be necessary at all since 4f2b0b583baa. >=20 > > Reading this suggested patch I see only references to > platform_driver_unregister, platform_device_put, and > platform_device_del, not the ones used in this patch. I mean, what is drm_kunit_helper_free_device calling? Maxime --upz45bzpjfn2lqwm Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQRcEzekXsqa64kGDp7j7w1vZxhRxQUCZQHKDAAKCRDj7w1vZxhR xRy0AQD64PRpRQr2oE8ifP25UReMHkkoQA+V4DFE3ifHwC4JlwD/Q97uVJogsdT6 Up2HFbxP7eQYpBketEKT0iSsQs6qxwQ= =et4w -----END PGP SIGNATURE----- --upz45bzpjfn2lqwm--