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 D20BCD2E9D1 for ; Mon, 11 Nov 2024 10:08:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 58E456B0085; Mon, 11 Nov 2024 05:08:20 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 518036B0088; Mon, 11 Nov 2024 05:08:20 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 391F66B0089; Mon, 11 Nov 2024 05:08:20 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 1AD516B0085 for ; Mon, 11 Nov 2024 05:08:20 -0500 (EST) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 9FC5B417F7 for ; Mon, 11 Nov 2024 10:08:19 +0000 (UTC) X-FDA: 82773388152.15.A6BC294 Received: from mail-oi1-f177.google.com (mail-oi1-f177.google.com [209.85.167.177]) by imf28.hostedemail.com (Postfix) with ESMTP id A60C5C000D for ; Mon, 11 Nov 2024 10:07:36 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=bjzBJRom; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf28.hostedemail.com: domain of adrianhuang0701@gmail.com designates 209.85.167.177 as permitted sender) smtp.mailfrom=adrianhuang0701@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1731319523; a=rsa-sha256; cv=none; b=QfyznboHp0vvDNWarTasYZS7zUPCq6/R78IZXQJIOmgPYZrzS6cpWaVL6eDFZbnhSYD6q9 cSAR+3sQlH5Eg8rJBchji6XXcdqKuBniClGlspUrOr43jfHisjDBPt5tnwrH5ibkNW0D1P bP3BTqMkqMkts/56UjlOw66M4WK+/iQ= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=bjzBJRom; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf28.hostedemail.com: domain of adrianhuang0701@gmail.com designates 209.85.167.177 as permitted sender) smtp.mailfrom=adrianhuang0701@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1731319523; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=XVV67UX8szQopArKm82MAjjGixRj07cehfuIHdEYCD4=; b=O9zWpE+qU7TT6fR0prz4kWyAMSwWUtcV8EIEpI+afs7Ysz/PNSuu8sc5dms+pJTghdgAm2 KFMDxCdR9QGsodkfW0FEGdWXh98m7Dfmlpy7YZpKpXVMfDA9o3T5nny1KongMvXug7IcVn +LpnWfPAH2i1zA15ItUGzfiqIEzTZCs= Received: by mail-oi1-f177.google.com with SMTP id 5614622812f47-3e600add5dcso1958221b6e.2 for ; Mon, 11 Nov 2024 02:08:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731319697; x=1731924497; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XVV67UX8szQopArKm82MAjjGixRj07cehfuIHdEYCD4=; b=bjzBJRom2ITFtN8ytKP5QDTeBYH5Wa/JCmwHJzdDRLjGoCwgtU7Mqxp7FurjiaMD0r p3c0B54pr15B6H/FP8/pT3LnKb9BYWjjKXp7ZzqFHFJptJ/9AogRAbWYIyq37upcHJ3g 3CyhKviYQT4C3h0eY73AZsvrqDFPKBPIiCg0F9ESJi4DMlIN+dWGXUJuYF6jT5+r0AGY l5eNULGsBW/CzXmDXgCCq/QEftGHIeNEtBTD3Zjftv6riJuCglhja1pAOwHdZS1WxLyr 5aPScDWO9vyIyKpXxZ9Z3tR203dHvK3/xD/9ZDqy7zsryiNDQBom7367Uxv6fvuCUNdj IY/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731319697; x=1731924497; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XVV67UX8szQopArKm82MAjjGixRj07cehfuIHdEYCD4=; b=Nt6zw9PtGEze/oTXd992upxUpUbfWdP52RMJRZ/dWxVrL+0ax4HWkKnO+/fRHUZxeg pUYxVWjGYTIP0V43KD0cuHqzIsnsj6EIVV7qs0UtqCa+ieRrhPhK0GdaQjkiFOxTOe/t iUBtkFJjKDS6h9sxTOaTBKAN5JiJ8zZcgQxvTKrBxHs6qDt62gimSLwD/JOiud1OjOuG CEHCN0U6UdU285LHRyBN691pQJGHBgW7XLTKUZ7y7KI6rCL6V1vgP1xgUr93zOiH/2B0 jb3zFXh8sw2oV4jXk1RmNZgomXlrdKPESlZ/foMfXCXZ2BWaGXTqGvtiinENlgrDBXUD gk1g== X-Forwarded-Encrypted: i=1; AJvYcCUYsU0dnnG2AFqqxsjoltneaojtUor7xCinCxhvqwtoR31YlEUcS0sYOA124zkOT6d2C5UNvKR5gA==@kvack.org X-Gm-Message-State: AOJu0YzPjxStCj2Zhr6K9B4vu/rwPlO/r3tYO6er9d9wPCLlAQhqR3H6 9Sb6SGOai8xgYpkiklO0J7TeO7vAxJXqlNtAVxXDFxl8n8njej6J X-Google-Smtp-Source: AGHT+IHdS0HHCkNkWJvTtC1XmxF9ix+W4f0GEUid4prXEQ56YfoEMyaS1O59/E/pcK+xPrwGu/RjtA== X-Received: by 2002:a05:6808:144c:b0:3e6:5908:1745 with SMTP id 5614622812f47-3e7946ae3ecmr9723453b6e.21.1731319696639; Mon, 11 Nov 2024 02:08:16 -0800 (PST) Received: from AHUANG12-3ZHH9X.lenovo.com (111-254-34-70.dynamic-ip.hinet.net. [111.254.34.70]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-7f41f5ba191sm8097063a12.22.2024.11.11.02.08.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Nov 2024 02:08:16 -0800 (PST) From: Adrian Huang X-Google-Original-From: Adrian Huang To: raghavendra.kt@amd.com Cc: adrianhuang0701@gmail.com, ahuang12@lenovo.com, akpm@linux-foundation.org, bsegall@google.com, dietmar.eggemann@arm.com, juri.lelli@redhat.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, mgorman@suse.de, mingo@redhat.com, peterz@infradead.org, rostedt@goodmis.org, sunjw10@lenovo.com, vincent.guittot@linaro.org, vschneid@redhat.com Subject: Re: [PATCH 1/1] sched/numa: Fix memory leak due to the overwritten vma->numab_state Date: Mon, 11 Nov 2024 18:08:09 +0800 Message-Id: <20241111100809.20527-1-ahuang12@lenovo.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <1794be3c-358c-4cdc-a43d-a1f841d91ef7@amd.com> References: <1794be3c-358c-4cdc-a43d-a1f841d91ef7@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: krkcubcch8y9zdsww9o1zkgqji8nr6f8 X-Rspamd-Queue-Id: A60C5C000D X-Rspamd-Server: rspam08 X-Rspam-User: X-HE-Tag: 1731319656-58782 X-HE-Meta: U2FsdGVkX196zRAzg2fa8wWGLPWB1jtxL1v2sHvbyhohbLxvOhzC4bfedrZ+62rWvorU8KwFcXm7dZkVBFFwSal3YR9J6AFG1Q0RTezlfDC8QNcvG5dywmCLLna0IDDZmw4DMOKVthHZ/NEJVI2wqSpcBZiVCfVExb3+hyf0dq5dJrPC68ZnMrc3BcemCnZabHto05L7DAKnqKTgsjkD7K76HAODLoXtc5ITmmWzllglbbnGppHYmeZypYmhW3YGZ0eifRNIyxwfGJyjyWswO7Si7BzxU2ByGXNQfDi19R+NnNMeyHUuEPNd7fwECG6eYTz4AONZIguSPvzOrPKBZ83mYvQNxPc2UCCAHvhgYS7V5xZ3HIVISMi/fwX+iCRggWbfzonRAUdXVF6swoAEM7fYap2N4t6WUNglLqtYuWNvzwbFHpj8N0nC1c0eU7oWdrrMLOmoDobbxnP+/nEmdvv2Euy6jMVei1sKc2M+G5NEIprIeVyR2mHAvG1fzxi4XsJRgJXg4SP0WSuVskAm44ITZpeLb8wv8N41gvMtJok6NkdamFJMwbiypcBkRKRQ/c8zn0EMSlfKZyAzmBEXMlh6y3fjHhNw+yU4snjuND0KjQ5q0jYVF7tqgEm0onCuCPxk55gleks3uTfuoERyA43M9VvbyJyHZyWgLuEVVsOgdb2Svkqiw3tWftIJUZQ7WM7W19ai0D/SzBeuwGurIy0a6tUpdLORQpY6MBysHd4g/jFGcLDI7GlHiENwsqKvBxsGKWVaLZZeSfu6xB85io1t9H8P0ACp222wjDk7iwZFF0s4stEo2Ok339JyGGe+5CX1AWQtCPHx4H5E2jqIe/n/WGgyVMm/3Z9B+fDADXM7n8LEyBoJSMx1fYCcGlV5MYKV8iBCPKYSOCdqdWDZzTgMxoiuYe5zRpuLjWy3GqiNoW+K5wXd97JiT5rNyk9uT/Ao75/5t1JBG8MURLi Lt8W02vY DV9vW5DfeLe8eIRAQhWqhWJNjps0ykxThLMYJxMNeTg5XvOnjV1AsdAagWxA4ocLXbqATcPpTM1MO8md74Y8a6JrRKzuu/vISSa1JT4833PcJuJyFtF5jWULm/D44Qjmi2LlToazwW/6VOsEDtD01igBNIvd4rinMmNOS5EII7ZPfQEwFE51a5fjaGIR7a8HRdxXNYonX+0k8cAOn/uymtGvLR86fCK2DMubCOIeOpz2FB9buYGI6FZjyJVzDRFPlYBqpKX8I3D2bccrVkMqe8ApXQuFkySOCVN5HT3orT2PgCHuylVbnsrWRy8XXn7Hy620eaQujZY34Ck4IsH/j25LieNYFyWjLOYjLUuxslNRSpKI= 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: List-Subscribe: List-Unsubscribe: >However since there are 800 threads, I see there might be an opportunity >for another thread to enter in the next 'numa_scan_period' while >we have not gotten till numab_state allocation. > >There should be simpler ways to overcome like Vlastimil already pointed >in the other thread, and having lock is an overkill. > >for e.g., >numab_state = kzalloc(..) > >if we see that some other thread able to successfully assign >vma->numab_state with their allocation (with cmpxchg), simply >free your allocation. > >Can you please check if my understanding is correct? Thanks for Vlastimil's and Raghu's reviews and comments. Yes, your understanding is correct. Before submitting this patch, I had two internal proposals: lock and cmpxchg. Here is the my cmpxchg version (Test passed). If you're ok with this cmpxchg version, may I have your reviewed-by? I'll send a v2 then. --- diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 3356315d7e64..7f99df294583 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -3399,10 +3399,16 @@ static void task_numa_work(struct callback_head *work) /* Initialise new per-VMA NUMAB state. */ if (!vma->numab_state) { - vma->numab_state = kzalloc(sizeof(struct vma_numab_state), - GFP_KERNEL); - if (!vma->numab_state) + struct vma_numab_state *ptr; + + ptr = kzalloc(sizeof(*ptr), GFP_KERNEL); + if (!ptr) + continue; + + if (cmpxchg(&vma->numab_state, NULL, ptr)) { + kfree(ptr); continue; + } vma->numab_state->start_scan_seq = mm->numa_scan_seq;