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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id DFAA1C02194 for ; Fri, 7 Feb 2025 19:52:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7984A280004; Fri, 7 Feb 2025 14:52:09 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7484E280001; Fri, 7 Feb 2025 14:52:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 640C6280004; Fri, 7 Feb 2025 14:52:09 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 42CE9280001 for ; Fri, 7 Feb 2025 14:52:09 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id EB5EE1220F6 for ; Fri, 7 Feb 2025 19:52:08 +0000 (UTC) X-FDA: 83094194736.17.0839214 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by imf24.hostedemail.com (Postfix) with ESMTP id 076AC18000D for ; Fri, 7 Feb 2025 19:52:06 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=VnO5uX0h; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf24.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.218.41 as permitted sender) smtp.mailfrom=mjguzik@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738957927; a=rsa-sha256; cv=none; b=fqnufgvCFailasEVovO085uq2e2bUiQmVmlxupD85l0MJ6SdMaiAdTiRrfRgZ7CjszgGvp su/JfEub6RhqF0APPwjUiYQSwX0Ss0wD1AmjPgvGlsojQCRppFkJTQkeQySvHuQeMglmBE NyTZkvlgCbkhk7+mLHOysNLziDJUPhs= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=VnO5uX0h; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf24.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.218.41 as permitted sender) smtp.mailfrom=mjguzik@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738957927; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=keLo2wpOh9lWmNzWyPyJnra8Q4vBk1oRCRMn1xCXayc=; b=j6AwsBJIvPfv55PHJFcACRot2qYSiin6tnzWN+MADgZsjDI9JQOunVddzygjuONfe6iM84 MF0nkMszMYFicBBhGb4/J+QwKpw2UlSvLLfrJ0lBtwllaMnA/tpYdKOX0+wF1KYL9wIouO Mc8PAziiRrumqP5dWNl8Sa4X+ugsTqs= Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-ab7917fc0c2so130224566b.0 for ; Fri, 07 Feb 2025 11:52:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738957925; x=1739562725; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=keLo2wpOh9lWmNzWyPyJnra8Q4vBk1oRCRMn1xCXayc=; b=VnO5uX0h2+rf7VUVVVplhJGNfNifNmgIkZTRdE3MBs6O4R+0owBLMBpkuj3yfx/jIQ COShc9q5MAJUGTVqNOeC6cmhNbECMgfwMU2gf9Py3nnARn+dfkc9bYEMBivREO43Iqgq zxjGxbrK6XbWq9oxMKbzRGTdEkMZlFS+yGNWxzNRny91mLwLnEuHkGp5tZLvoMcnYRuh 5BUCQyF3oEkoecYCxeq9sakSN5KXqB/3KXVmSh6xF8bTqATPSpas0UnD+48UZfbrY6Z+ KCOtclhXlFUTMx6QU8HgmUPBYFCIJ4Ihm2JIOtS/KZrDCq3D/zDpNMFFkbeHn5GLf/sx PSLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738957925; x=1739562725; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=keLo2wpOh9lWmNzWyPyJnra8Q4vBk1oRCRMn1xCXayc=; b=uLEe2EXJdpHcvUE6Z1yYp2nPPrLulBgC/rW95y23QUS3M9Ggy+zQG8GuElt/QdSTs9 xFmZbjwLKqh7OK0B2CdjV/a3UN17Qq0+FbRt2Bfng+mnQexDYDI1G56qXRxXO+dndjgk A0isyQy1yWAy9u5+gtQ4We2nxFN+Z1i20q7ZigETKVjVcX4r8lOqca0ZSc3OKuc9TwmR 4err26HFtCck3L4ILZl6fir98dwb5tqjHn1POihsH1fhF0YvoJ4VCtuw4to1G8HwCtS2 CoildMbGMSwPOkx1aOMAVvll38aWLGbRHN6LF6UwSf6bFQAzFtEs+QAuJg4bhj3BLb52 8pGA== X-Forwarded-Encrypted: i=1; AJvYcCXIGJq+Wg0ga+NvX4/hlCJ9HmYckElv0It/X3czjxaF7bpfPqAIC/HI0RMxv55w/1vQ5vV9dm92tg==@kvack.org X-Gm-Message-State: AOJu0YwK7fQS+wLlTAWDUVBed+fNkUAHl+pHEcRUgGUtojQpoXdq/gH4 uAcc7VXQYNYp82FM8xCzwN0vlXPk9rZA6S0o1MyDsTMCvurvEYGzv6eXN3i3eQNqSELWQeMlqOL ur4+mKn5FAunbvk2LvOmrtgM0HTc= X-Gm-Gg: ASbGncvEYZs6y3Up2pc7CtMuEMmMV7n6lOvrnQ8vX9JpSAVlY9TKuFyvBYm9DuuCLRb DXk1iveNLuNWXLYapf+bOTegQzt9MkX8kX4oURD8ib0sQ8okkBa9+G7Mu4O/d9AhJ69BcynvD X-Google-Smtp-Source: AGHT+IHpzaRddZ+PPABkNWGPjSsZrZcy6igoVBIF7a/dq6b6n1q4tSl39D8rGI4lx0V+a4VBriFpa48cj1CCp6kpWx8= X-Received: by 2002:a17:907:7b81:b0:ab6:8537:60d6 with SMTP id a640c23a62f3a-ab789b29dfamr448250466b.7.1738957922992; Fri, 07 Feb 2025 11:52:02 -0800 (PST) MIME-Version: 1.0 References: <20250205200929.406568-1-mjguzik@gmail.com> <20250205200929.406568-5-mjguzik@gmail.com> In-Reply-To: From: Mateusz Guzik Date: Fri, 7 Feb 2025 20:51:51 +0100 X-Gm-Features: AWEUYZlELocH-db9u8RuxRqcHGIJr3xu2ynXdCf_9Sg4jXl-VQqQx-qeZUiz5BM Message-ID: Subject: Re: [PATCH v5 4/5] pid: perform free_pid() calls outside of tasklist_lock To: Mark Brown Cc: ebiederm@xmission.com, oleg@redhat.com, brauner@kernel.org, akpm@linux-foundation.org, Liam.Howlett@oracle.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Aishwarya.TCV@arm.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Queue-Id: 076AC18000D X-Rspamd-Server: rspam12 X-Stat-Signature: td9ewjzupgfb31z1ujhx9qq7fw6mjaxg X-HE-Tag: 1738957926-833552 X-HE-Meta: U2FsdGVkX1+STkC4yR1MENfrvX1RkO/cbFzUymHQnWMnOv4W7JgZMzuE2LPb/ub3Ms0eXNJxCMYBoGMFsKOTUFacha0ouy0pTbMzbJyMn3XgVWs//8WTr5cTH9E6naRIH3kat0kZ3u2B+EdzAQBk4A184zZHkb9DoxqH7mFbuvvy4p94+0tXChGZ9u0yJkTA59y2VJBYdb3iwwVRNGLc35DIHei7hdTeOAohI+XK142lfMU69MJWt2SUQZpVFMTMFkS5FjxuZXlaZVB5lKv4Q6YsPy4ekCvE94Dq8ua3RnqHWLtClDRCaOlXHUzvntXPFpJXppkKrdDLbcQwUQN/dEBri7Vgj9IYXY55cMp4QdyFmVy/xqjGzh0WIDLMSiL5En01kUad6gaxsEfJoThw/z51s6aN5vHHHcMvU6Kik6oEIxI57R0WcFWay9RHMISAvTQ97nUua14zXzZZWGhKcmGmAl2BaCGsfLWqYT2E1pUt3XJAkLRZfTZbVW+gdhoseESR7R4BRDMFG3VuQ5yuLMNb3RIItv6rit9MyY3zVW3BzkuN43RgjVUNfYULsYWyTXXmwfLpKNCQfHbwyBIv31WieDg1oLHVSTZmCDHeA3W5U1L6lykMcbS4m/o/pmZgM2LuficWOY4s7I8WOKuhXgJEttswrs71vkkM5p57ELJ+ABBXoTALrTwW835C059KVkWqm3MDEk8KvP6kZhSFdFoqmhUQxpXg5lK2MuV/1QNEWELs8TJoLpQ03YR7U2kg8mrxNPSOPyxQLmg2UTIWqv/WGaJiOUbK5zYXd+IUYNO5zrBZlNcBVnmMGTnbW5QYsMO5dlEkoXDebPyzRKDqnlsxAC/Ym96oovHKvyNSpoiTWzYY7CV6mxdoEQfWVSwA6OVZprnUuyCECv+fS47WbnwTc2KuCo4Cb9+ABUO6tDYfvs5JdNVbyhA5Z6BQVih585SjaH2sdq/imomiDQD jlRh6kCa cFThx5skLAiCs+vPq1URAtDZo23POIzyKHQysIgeTXkExQMqazamNZjxSDS4fBmpCQ3tX2pLwKmdFUxieYtWOsZTo2up9wj4lYt8r0qhiZuk4+pVGgmlrVr+mRmIRhq7mu+zmiyA+CXnKrPPv+3O6mZ1Hl9UN23mfuHYXH1gxCE/Zxd7Z065EiL2MXcP4PM1zNEnehwQ3bhhtA0I8z/BIqmS/F4T7y81MMPmAK6mki3Eap5HB3NBb75L6U8tmLha3fhq4Vlc4LuJCsAxCjzlWknxSA32I3MzjZTKn18xGGic6TbSQ/01d9TMedf/Lv8EnEG5dM8ynQFjDGDZ7adrEZq33ftMGihlrupw7toN6w3Ty5WYqURDF8iLLEHvNtTNn1RicS9HZ61srqnGxcoA91h017yjclX9+lKTFlyk9lL4M6OzCvrBCMU4fEwf4yxPPQVK7ZKMk9UDwpONDcgpoHtz5BMjUHU5bi/lmDeBvlspzv2bZiRLy7OXAdMUaCGu+7ngLVLJyd3WfKxs= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000013, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: ... and found next-20250207 is somehow missing a call to free_pids() in release_task(). There was some fat-fingering in v5 and maybe previous versions which made the call land in the wrong commit, I presume there was further crappery elsewhere which concluded in the call not being present to begin with. I just confirmed the version is is intended to land has the call in the right place: https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git/commit/?h=3Dker= nel-6.15.tasklist_lock&id=3D7903f907a226058ed99f86e9924e082aea57fc45 As in this chunk fell out in -next: diff --git a/kernel/exit.c b/kernel/exit.c index b4fc3cc96ea4..0d6df671c8a8 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -289,6 +289,7 @@ void release_task(struct task_struct *p) put_pid(thread_pid); add_device_randomness(&p->se.sum_exec_runtime, sizeof(p->se.sum_exec_runtime)); + free_pids(post.pids); release_thread(p); put_task_struct_rcu_user(p); On Fri, Feb 7, 2025 at 7:31=E2=80=AFPM Mark Brown wrot= e: > > On Wed, Feb 05, 2025 at 09:09:28PM +0100, Mateusz Guzik wrote: > > As the clone side already executes pid allocation with only pidmap_lock > > held, issuing free_pid() while still holding tasklist_lock exacerbates > > total hold time of the latter. > > > > The pid array is smuggled through newly added release_task_post struct > > so that any extra things want to get moved out have means to do it. > > We are seeing failures in -next with the clone3 clone3_set_tid selftest > on at least arm and arm64 systems which have been bisected to this > commit, in -next as 88dec855ce117f52bcf88748ddcbb25b10f4f2fc (same > bisect for both): > > For arm64 we're seeing a bunch of new failures including: > > # # [389] Trying clone3() with CLONE_SET_TID to 391 and 0x0 > # # File exists - Failed to create new process > # # [389] clone3() with CLONE_SET_TID 391 says: -17 - expected 0 > # not ok 19 reallocate child TID with 1 TIDs and flags 0x0 > > # # [389] Trying clone3() with CLONE_SET_TID to 1 and 0x20000000 > # # File exists - Failed to create new process > # # [389] clone3() with CLONE_SET_TID 1 says: -17 - expected 0 > # not ok 21 create PID 1 in new NS with 2 TIDs and flags 0x20000000 > > # # [1] Trying clone3() with CLONE_SET_TID to 43 and 0x0 > # # File exists - Failed to create new process > # # [1] clone3() with CLONE_SET_TID 43 says: -17 - expected 0 > # not ok 24 check leak on invalid specific TID with 2 TIDs and flags 0x0 > > but there's more, 32 bit only seems to see one new failure (at least on > Beaglebone Black which is where I have that test running). > > Full log for a run on arm64: > > https://lava.sirena.org.uk/scheduler/job/1102114 > > and arm: > > https://lava.sirena.org.uk/scheduler/job/1102088 > > Bisect log, the start is my tooling feeding in test results it already > has to hand in the commit range to seed the bisect: > > # bad: [ed58d103e6da15a442ff87567898768dc3a66987] Add linux-next specific= files for 20250207 > # good: [653cd79f296fc6fa592cb9fa2f7b8494d5573a43] Merge branch 'for-linu= x-next-fixes' of https://gitlab.freedesktop.org/drm/misc/kernel.git > # good: [4c7518062d638837cea915e0ffe30f846780639a] ASoC: SOF: ipc4: Add s= upport for split firmware releases > # good: [0a7c85b516830c0bb088b0bdb2f2c50c76fc531a] regulator: ad5398: Fix= incorrect power down bit mask > # good: [215705db51eb23052c73126d2efb6acbc2db0424] spi: Replace custom fs= leep() implementation > # good: [6603c5133daadbb3277fbd93be0d0d5b8ec928e8] ASoC: dt-bindings: atm= el,at91-ssc: Convert to YAML format > # good: [25fac20edd09b60651eabcc57c187b1277f43d08] spi: gpio: Support a s= ingle always-selected device > # good: [652ffad172d089acb1a20e5fde1b66e687832b06] spi: fsi: Batch TX ope= rations > # good: [6eab7034579917f207ca6d8e3f4e11e85e0ab7d5] ASoC: soc-core: Stop u= sing of_property_read_bool() for non-boolean properties > # good: [f5aab0438ef17f01c5ecd25e61ae6a03f82a4586] regulator: pca9450: Fi= x enable register for LDO5 > # good: [c1ac98492d1584d31f335d233a5cd7a4d4116e5a] spi: realtek-rtl-snand= : Drop unneeded assignment for cache_type > # good: [5a6a461079decea452fdcae955bccecf92e07e97] regulator: ad5398: Add= device tree support > # good: [995cf0e014b0144edf1125668a97c252c5ab775e] regmap: Reorder 'struc= t regmap' > # good: [89785306453ce6d949e783f6936821a0b7649ee2] spi: zynqmp-gqspi: Alw= ays acknowledge interrupts > # good: [0e11f2076e7fa3efa3e0a694bc4d30ef185f0f7d] Merge branch 'for-5.19= /cleanup' into for-next > git bisect start 'ed58d103e6da15a442ff87567898768dc3a66987' '653cd79f296f= c6fa592cb9fa2f7b8494d5573a43' '4c7518062d638837cea915e0ffe30f846780639a' '0= a7c85b516830c0bb088b0bdb2f2c50c76fc531a' '215705db51eb23052c73126d2efb6acbc= 2db0424' '6603c5133daadbb3277fbd93be0d0d5b8ec928e8' '25fac20edd09b60651eabc= c57c187b1277f43d08' '652ffad172d089acb1a20e5fde1b66e687832b06' '6eab7034579= 917f207ca6d8e3f4e11e85e0ab7d5' 'f5aab0438ef17f01c5ecd25e61ae6a03f82a4586' '= c1ac98492d1584d31f335d233a5cd7a4d4116e5a' '5a6a461079decea452fdcae955bccecf= 92e07e97' '995cf0e014b0144edf1125668a97c252c5ab775e' '89785306453ce6d949e78= 3f6936821a0b7649ee2' '0e11f2076e7fa3efa3e0a694bc4d30ef185f0f7d' > # bad: [ed58d103e6da15a442ff87567898768dc3a66987] Add linux-next specific= files for 20250207 > git bisect bad ed58d103e6da15a442ff87567898768dc3a66987 > # bad: [5a44f71c6ba5b0a7623c25047ac61ed852afbd84] Merge branch 'for-linux= -next' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.= git > git bisect bad 5a44f71c6ba5b0a7623c25047ac61ed852afbd84 > # bad: [953e43d94b2048d260774e9ddbfd3f378aa2c256] Merge branch 'fs-next' = of linux-next > git bisect bad 953e43d94b2048d260774e9ddbfd3f378aa2c256 > # good: [2ab7baf7ebddff9faff6846648fd0753e5ee58c1] Merge branch 'for-next= ' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux.git > git bisect good 2ab7baf7ebddff9faff6846648fd0753e5ee58c1 > # good: [09c7fd0d4465df7fd6cda5668bd32267884b6cbf] Merge branch '9p-next'= of git://github.com/martinetd/linux > git bisect good 09c7fd0d4465df7fd6cda5668bd32267884b6cbf > # bad: [7a1f00b09c09aadbf33660a31f3f3d8ee6302c45] Merge branch 'vfs-6.15.= iomap' into vfs.all > git bisect bad 7a1f00b09c09aadbf33660a31f3f3d8ee6302c45 > # good: [9bc19073026d0dce6b7d17d22e74643c80283f8f] Merge branch 'vfs-6.15= .mount' into vfs.all > git bisect good 9bc19073026d0dce6b7d17d22e74643c80283f8f > # bad: [ba734a751d30f59e3b10d6792a1e1b50e7b1fc0c] Merge branch 'kernel-6.= 15.tasklist_lock' into vfs.all > git bisect bad ba734a751d30f59e3b10d6792a1e1b50e7b1fc0c > # good: [d7c340391cb0f0882bc8d5d9798ef32b577a89bc] Merge branch 'vfs-6.15= .pipe' into vfs.all > git bisect good d7c340391cb0f0882bc8d5d9798ef32b577a89bc > # good: [e88fed94388f62a28acfef4954348abe79557d19] pid: sprinkle tasklist= _lock asserts > git bisect good e88fed94388f62a28acfef4954348abe79557d19 > # bad: [5ca27e0557d722dd648f949dde6e4997f6255f18] pid: drop irq disableme= nt around pidmap_lock > git bisect bad 5ca27e0557d722dd648f949dde6e4997f6255f18 > # bad: [88dec855ce117f52bcf88748ddcbb25b10f4f2fc] pid: perform free_pid()= calls outside of tasklist_lock > git bisect bad 88dec855ce117f52bcf88748ddcbb25b10f4f2fc > # first bad commit: [88dec855ce117f52bcf88748ddcbb25b10f4f2fc] pid: perfo= rm free_pid() calls outside of tasklist_lock --=20 Mateusz Guzik