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 C1441C7619A for ; Thu, 30 Mar 2023 19:56:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 516C96B0075; Thu, 30 Mar 2023 15:56:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4C7376B0078; Thu, 30 Mar 2023 15:56:08 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3B61C6B007B; Thu, 30 Mar 2023 15:56:08 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 299126B0075 for ; Thu, 30 Mar 2023 15:56:08 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 01F1A40123 for ; Thu, 30 Mar 2023 19:56:07 +0000 (UTC) X-FDA: 80626620774.25.B2FBD73 Received: from smtpout.efficios.com (smtpout.efficios.com [167.114.26.122]) by imf04.hostedemail.com (Postfix) with ESMTP id BE5864000F for ; Thu, 30 Mar 2023 19:56:05 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=efficios.com header.s=smtpout1 header.b=GC8dpnFq; spf=pass (imf04.hostedemail.com: domain of mathieu.desnoyers@efficios.com designates 167.114.26.122 as permitted sender) smtp.mailfrom=mathieu.desnoyers@efficios.com; dmarc=pass (policy=none) header.from=efficios.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1680206166; 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=1JPav1LRxHbxcAVe80oMtfxxLc0TI8wCCFsyCjHz+Ys=; b=KMyKuQTyI/NiyVJLZvbzK3YYxeRr71D4SzKppdQ5Bx4isrOvLan68kgbHiwy6LO0JllVrC kZuj0Gu1pU8q3iWIoawKlYwINX48LFvq7nPw87ifdJVnjOtd/sajMi83pKJfN5YKWXU82q 7tODi0Yt/msA9yUutuYlchWchsNl3CM= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=efficios.com header.s=smtpout1 header.b=GC8dpnFq; spf=pass (imf04.hostedemail.com: domain of mathieu.desnoyers@efficios.com designates 167.114.26.122 as permitted sender) smtp.mailfrom=mathieu.desnoyers@efficios.com; dmarc=pass (policy=none) header.from=efficios.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1680206166; a=rsa-sha256; cv=none; b=FiHIJ+ZUyjoJJ2/i+chwbRPMn89SX6mbv2KCZRqwZcYpQh0msCl7iKhZg/KXRWix4dojy3 8HcHuHfd4GtphUs+lPImD0/+LDhqDaQP+a/LJa0uwg6QNadE001Hi+FPDWRXVcv7scMxvE E5DAXduYR9/Oc1f20dZ/C3b1khHh5+c= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=efficios.com; s=smtpout1; t=1680206164; bh=ccdCK8cB1yDs2Qew7hb2Qs/bMNJYZZtrVs8VhxEJ4v8=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=GC8dpnFqcrogDv720XejMUUpwoNhZrhNHwZHtxeA8YFLTRkrdizktLBcyp7sIj5A/ kEO1vhD1f0m2q8TJL+J/VZ4NcjitpLNEkWCL5OV4AMYlwe7uU1+Qj13S76ECZZ36xx aXwgwAMQ+O7Qyl+77CukTcWbChw7OS6vxS003VtdwEaCkC8ztqEJ4u8glCNLFzDERo SzjTLMvRxnPMQ3L1jLr08URNU07TrX+Vat/oTCk4e2RwuIMOTCCnTo4wH5vZ3dNXE9 vkEvtxkqMIhRUN4outwRjTX0IhsQqBS0GX1qvOsMiiOdm2npBWrokJR6W2d5OifJHe ULM1EJJgyXr1Q== Received: from [172.16.0.188] (192-222-143-198.qc.cable.ebox.net [192.222.143.198]) by smtpout.efficios.com (Postfix) with ESMTPSA id 4PnZ103kdcztBL; Thu, 30 Mar 2023 15:56:04 -0400 (EDT) Message-ID: <91a414dd-9d21-01a1-536a-fee698080f1a@efficios.com> Date: Thu, 30 Mar 2023 15:56:18 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH 1/1] mm: Fix memory leak on mm_init error handling Content-Language: en-US To: Andrew Morton Cc: linux-kernel@vger.kernel.org, Shakeel Butt , Marek Szyprowski , linux-mm@kvack.org, stable@vger.kernel.org References: <20230330133822.66271-1-mathieu.desnoyers@efficios.com> <20230330124230.9f3d4f63374eb15a3b990ff8@linux-foundation.org> From: Mathieu Desnoyers In-Reply-To: <20230330124230.9f3d4f63374eb15a3b990ff8@linux-foundation.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: 3bix3zbkdby9t5de1oqbd3xzun6g7coc X-Rspamd-Queue-Id: BE5864000F X-HE-Tag: 1680206165-666577 X-HE-Meta: U2FsdGVkX1+9DApy1DJm2RbL6/AmQ7c+uBFnYjqTNWlP5gdiengYuqhC2Cch2XJ/UNGsW6Spo3C9HMetFgL6B6eBqfZcnwTkWGMsBs4Hje9PKSn0Awvw62BGnpSEtM8y64Aso2blYlPYsWpulPZ1lT/hkviv+hDDFrIK7ucWt6KIYFQUyfzTMOBYWlx/LR3EEysS33qjWtBj2VJy+DquD9b9RfgV6PsoV8E4tkcl3wJMrCmw5iiOjlm/1d1cP9gbh+zwRApCS7+96eNjKNtIURzUy2bECeFc11KH3zFbBuscrHQ9HizMERHKm8DfgDJ/6FZKyN4tcbKJ1PHu1U4gaOEJUuA4AZe2LIsIszJ7htrzGpfgPU42Eh4tA0KS+bMxTwh1h1iRsBN36YfNQ2xNNlNWk0wZMM15UbYuuPVUcDlhrza1earcTlPfIxZK7WlzBa2WfuoVI9fzQ6d4bEEj7QREhrdHpNJ8AT9KXDPHaVOIAl28aPrn+kW4S4V9amDH5kF+NlPSv4fdY1pzr12Gpz0GOLbXdkdQFA7Im7PAmQX8p99zq1h8LSiTc6yBqytyGDiurRVNI/hOlwfbjRAAjBvC7aFiMwxg6heIklb/ufrCviu1NG2zDe9h6TmrbhiozseDAl0Pa0E8qJJWN4aPFJTF1olRPLvO0z1mabx/pE/PQTgA5VsosstN6DodUlNrVu6niv2euZM0X/ffPHaH3F4uH3SJdV+2WGKrEZXNDmBraXefg8ozNdttLpPZ3noILt4F+k9R8qnlPR5G7mocQ0ox8ulXPDEQbD0uhadohlwbsZva4L4nXTo5XTUmcSGpRZjiYnEoHApVG/Dhd8VKP3Q18BdPiS7M3ppUXCcUB+AOcsRwfyC72AAJK3DC/61LUSWkT6i0pAFMBLTAtDbnDPgswvoNjRiV1hPSjLZNVKYinG564X00WvaIi+esF1atz9YBbxcJTlIBYOMyW+X elhGSPo3 tr6sY3RKMxHTfRZGrkammbOjP2uro+bUGUEjw2JGhiqRKBjX+vbe8ZDuRVOq6/y9FWxnjo7D3sQLiIxOBK3+fL7qOGT0WAss94+Zk/wN8UXycaP6Vt3VrNBn76irF8ghQYPsW0K/3zc4j352O7vj4gWTcXuIc6OhL9Ywx98W8Fq7DfVcq4gakI+hMslQl07ML7lZB8bheNS9cJGv0hEcl4i06uAXgKM4XAaSOBvsHa9F7ge0VCwWtggILgS6jb+rTs/shmzn5qeDjwQM59U9tGmh2nukFzP7TEj3RqSqTwhxX9xPE8nlNNt0lh224FbGJLMgn X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On 2023-03-30 15:42, Andrew Morton wrote: > On Thu, 30 Mar 2023 09:38:22 -0400 Mathieu Desnoyers wrote: > >> commit f1a7941243c1 ("mm: convert mm's rss stats into percpu_counter") >> introduces a memory leak by missing a call to destroy_context() when a >> percpu_counter fails to allocate. >> >> Before introducing the per-cpu counter allocations, init_new_context() >> was the last call that could fail in mm_init(), and thus there was no >> need to ever invoke destroy_context() in the error paths. Adding the >> following percpu counter allocations adds error paths after >> init_new_context(), which means its associated destroy_context() needs >> to be called when percpu counters fail to allocate. >> >> ... >> >> --- a/kernel/fork.c >> +++ b/kernel/fork.c >> @@ -1171,6 +1171,7 @@ static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p, >> fail_pcpu: >> while (i > 0) >> percpu_counter_destroy(&mm->rss_stat[--i]); >> + destroy_context(mm); >> fail_nocontext: >> mm_free_pgd(mm); >> fail_nopgd: > > Is there really a leak? I wasn't able to find a version of > init_new_context() which performs allocation. AFAIU, at least on powerpc: arch/powerpc/mm/book3s64/mmu_context.c: init_new_context() calls radix__init_new_context() or hash__init_new_context() which leak IDs through ida_alloc_range. Thanks, Mathieu -- Mathieu Desnoyers EfficiOS Inc. https://www.efficios.com