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 8A87EC3ABBC for ; Tue, 6 May 2025 14:56:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F0E0A6B0085; Tue, 6 May 2025 10:56:39 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E970B6B0088; Tue, 6 May 2025 10:56:39 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D372A6B0089; Tue, 6 May 2025 10:56:39 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id AF40C6B0085 for ; Tue, 6 May 2025 10:56:39 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id D702D160200 for ; Tue, 6 May 2025 14:56:40 +0000 (UTC) X-FDA: 83412784560.21.EAC572D Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.42]) by imf30.hostedemail.com (Postfix) with ESMTP id CAC388000D for ; Tue, 6 May 2025 14:56:38 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=NV1D5GMb; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf30.hostedemail.com: domain of ryabinin.a.a@gmail.com designates 209.85.167.42 as permitted sender) smtp.mailfrom=ryabinin.a.a@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746543398; a=rsa-sha256; cv=none; b=2z667gUe7YA492rJAUI7NKWBKSm+gW/rYojvl1C00aXfAx79Uwq4W/79YjFRhaseUJuP/L pBtmEBXHxOZcDiVdqaCZkRBXhMwWml1ZfS9IO8nMd4MU6TdP4LQl0144F4ACjHRgy7+WNL vppc8woGJ2b9ZGSy8TFzk17ILCE61+U= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=NV1D5GMb; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf30.hostedemail.com: domain of ryabinin.a.a@gmail.com designates 209.85.167.42 as permitted sender) smtp.mailfrom=ryabinin.a.a@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746543398; 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=zGl6sg7j0zxSLThVkHoNmDxdriQ/RPO7fP3JuwQs5eI=; b=rqmFKjO6kxI6dh2uvWZEv+3W5w6M3EkWDLrICB4BdNFpzdL87RfhnVnlTOz3RoPsa7t0WU q6FlijXN2DSuoOWKkNGWWvRmxUnG4ngRoARCBbkBpkKF2oW56jyNaA9IRkSZitE6Y526Gb kHY0X3nO5xq1pC88JwwKMyyI4fHeb4Q= Received: by mail-lf1-f42.google.com with SMTP id 2adb3069b0e04-54d72d40343so1364528e87.3 for ; Tue, 06 May 2025 07:56:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746543397; x=1747148197; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=zGl6sg7j0zxSLThVkHoNmDxdriQ/RPO7fP3JuwQs5eI=; b=NV1D5GMbsB5BmMPz7YTM8BhIH88Qf/GXaLqVtuWRvhrQNxkd698GQBdunrpv5SY7wN 9if0lWLGibC79Wufc3N0K533nW45x6cjcK/LmjUIRFz+WKDfR1aqHn8ZJ1XbMlDkad1w lzIU+/FDXMLeuKNkmE+vNo3FZKMuy69873P4yMwHzIJ1z0tWA4Onzizx0YY2xLtnEkmb TzVmyll0rFxG/7PS9+MIc7HWlKTeDFGlzQlJOCbQBVu8lDDFu/ho5WkuxYXTEf+8SUcR 4VKFS+Q3XmNJVnCuBeR/cTdfPUrA0bTOC8wdly0SyDpIHqYzAfO96PHTpkhIEXBQaSfd TGiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746543397; x=1747148197; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=zGl6sg7j0zxSLThVkHoNmDxdriQ/RPO7fP3JuwQs5eI=; b=XEkF1+8if5TiJrYhRpAkYX33g3JyZ3TRBlz1mNsQhoseQS6hAwOYT8py8xboZTASQr FEVuYlXe90IesAT66ojOJAXf9mU2NNvA4ru7WT1l958kTdToiqCgZ5yeC+eVoTRlIDIu qj48sA5VULAPQmQ+0g/o9qmgt6FsD/D5RZX4MLzEhTFZ5BXCx2qg5aagMixaDzlcZphW APUHgSb2witChBs4M0qKHJMMLVfGMdLzG2XYUSNfBW0IbYKvQeH1TAaettBOB01+qoYd z1nEEAbXEZVIP3mXNAD/jKPflvbqQIFo765v8Cxc7/UWhU1OQaK3977BXrOpyeR6yRqG Gy2A== X-Forwarded-Encrypted: i=1; AJvYcCUSHI0amWQLRTg67kqk+X5MxBG1+yYaqAAcJfBaeT84WyTo+VyN0bIlJZApKVPpG1qQ1oWECnKnYw==@kvack.org X-Gm-Message-State: AOJu0Yy7RCjxoh6CtyeTK6anQasWUbssWx834883bzpUUD/WvmXkbpNB j1Q9Aykdp4XmuI671P29wJKTP+qHKVUdVpNEWsMqut8TxJgxQ0Pa X-Gm-Gg: ASbGncu9LgbBSZNc2Uh/OdWBr7o0hzSuTW0qYtFaOA8d+Bw6SLp9BB8FJM9SuGU6KYp 4yA6L4I2YaRRp8ybDIblRi00UA/ajhiYAw636r/qjFJPZXCrLRuEy5BLHlBjHwufWu9idl9ozvn OCcksOEZgXiQ+Sm/CRqI9K+bevWVin3gsdNtX0T1eM4n4IKQvNcNUbmIJBgqMGVvm0zsvvyXY/9 ikxtDOZUcI5ziiBGJtHx1U2994N8nCx0qv0PSmrUH71fKdqkE2QkPB5drlKERYp2tiLHZVOH7gA b5ebGYdVasFBmVxSBRydkZHLA+PXDrT/fEW/0+IZfWiYHw0= X-Google-Smtp-Source: AGHT+IHIniqK0Dw2iKq/2KeW3kBL4LRttdpuvsbiEa+Br6r8BEN70vWNoWz8zaAHodNkwnZWIPSYvA== X-Received: by 2002:a05:6512:159a:b0:549:8f39:3e63 with SMTP id 2adb3069b0e04-54eac20dcbdmr1776226e87.9.1746543396571; Tue, 06 May 2025 07:56:36 -0700 (PDT) Received: from [10.214.35.248] ([80.93.240.68]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54ea94b16b6sm2071820e87.12.2025.05.06.07.56.35 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 06 May 2025 07:56:35 -0700 (PDT) Message-ID: Date: Tue, 6 May 2025 16:55:20 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 1/1] kasan: Avoid sleepable page allocation from atomic context To: Alexander Gordeev , Harry Yoo Cc: Andrew Morton , Daniel Axtens , linux-kernel@vger.kernel.org, linux-mm@kvack.org, kasan-dev@googlegroups.com, linux-s390@vger.kernel.org, stable@vger.kernel.org References: <573a823565734e1eac3aa128fb9d3506ec918a72.1745940843.git.agordeev@linux.ibm.com> Content-Language: en-US From: Andrey Ryabinin In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: CAC388000D X-Stat-Signature: 1gzmk4pkeaagozkimzodnddhpqoybq6y X-Rspam-User: X-HE-Tag: 1746543398-432162 X-HE-Meta: U2FsdGVkX1+L9LJmYE06Hc9hBtq9yXxREEFtuQjqHxRoUckVwT5cXBuqmLXDX3wJUCvp6IadAmzBV72zJ2xuf0jfT2oXH3GzvLRLBdD3j69u9tQ+EbSD8KnibxRZKjHCPFfnIJ4nPZpvn0iMPgt95+mPO04AXNaC5ykspKsd8a2pPl80wCLmA4/iCm4NAy6ivUihIz1nOzJg2jiy9v5SS5DzFpTEyk0eH5PXqd0WXePIdRb5KGOirUO43YEWOFiw7Gliex4zKkLlKAsnF/7uOCBlGjzWFYK5zEI+581jm+ehnnXBJRX9HFrWXUQAC3tsTZixry/+CP+prTNX+/PontdBRY0xqhuTI7APF3BGCsSxr4JlSyktDxWYXxZXgMNcoauuYeViJnc0V125cDix6DBg4CfX6ItatsASm/JVcTEh1+o7Hy1nXsOh4tl9sRjwsUMMsydCV5VCEYHCxyF5gNDf+GDIKsA0BLvt4zwAP3Sy+fLFdGAv1AdqK+GE7829IjNnWqcIjnVv6mSB5/d4QSn5hgxU5zrRU1HU0VvloAr1+Mo3jFTPhjrq0e7SD8LceYhSIXrworfvNz+tDauNBZ/lYMjQFFWxm/hm4BWKwgZR9vkRIv1s2X5O3qKxfUYPut2TjmHZrNfZ19rfDWxIvJ16rOW8Q/e7q4rT0uSBKn9vw+u94Djgc/5cF09KpJn8LDIWjFScG6BI328dwbV8D4bghpQnjboxOwMBprSVEk9iDdAHXHAmEkYm4adS8TVcG6V8lj9LXIYswfptYuxYv3oFlqJ1wCcWeKaGbi214Q72eFb4566qVvOHyit1ZshOvciUMq9jnEvEUE9bLsLfiJRSDcj3HpAI9IwfG0QeT+OMhgkDv47zZj+TqHwUJiOLDh+auDTZZKttvaFaLzY0Ju1an5T1drvDlyACvq+++rQVZ4sjGk8AcOklA18d+W35f/rAFo3fO9HyTVOOkWZ g41gdTND h69XHw30g9ELyiWKCJ6Z7XLhK8rhNJtF9WX7UrupkLAg5bsCrBeNQKw6+TE7R9+c6ldQu0boNGBhg45XV+g2KfIEp9IXsxUU0IfPal2YIFyNDgI40octWjcaBUkQZq58Rfwk163g/vZsNHJNQm+H2A4pRUHZANg/MUE30dVgedq5X3lE1KwfRw7y5jEDLJnJNo7gVp5qF3nivzFKWqn8i/TXtB77T3IpEy+IPRmy+cV5wmGeF/sksz8q502ec96McxlmcqhfPhPCVnTOeBJ20Hxi4ywdZdo8boIhTFOVG9c2yvATz5fzll3I0nZswWQnb093cpUk5KkWLLe/E3zeJoN2C+JzNSjYF1qo1nv5O4APNrvRxCBsMdy5VfCUXLMT6sNlD89klK/k8lIhOdF/BDS2QYpniuDO1J/OPKFzoPMiHa52zRHJSaiQ4ng== 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: On 5/6/25 2:52 PM, Alexander Gordeev wrote: > On Wed, Apr 30, 2025 at 08:04:40AM +0900, Harry Yoo wrote: > >>> >>> +struct vmalloc_populate_data { >>> + unsigned long start; >>> + struct page **pages; >>> +}; >>> + >>> static int kasan_populate_vmalloc_pte(pte_t *ptep, unsigned long addr, >>> - void *unused) >>> + void *_data) >>> { >>> - unsigned long page; >>> + struct vmalloc_populate_data *data = _data; >>> + struct page *page; >>> + unsigned long pfn; >>> pte_t pte; >>> >>> if (likely(!pte_none(ptep_get(ptep)))) >>> return 0; >>> >>> - page = __get_free_page(GFP_KERNEL); >>> - if (!page) >>> - return -ENOMEM; >>> - >>> - __memset((void *)page, KASAN_VMALLOC_INVALID, PAGE_SIZE); >>> - pte = pfn_pte(PFN_DOWN(__pa(page)), PAGE_KERNEL); >>> + page = data->pages[PFN_DOWN(addr - data->start)]; >>> + pfn = page_to_pfn(page); >>> + __memset(pfn_to_virt(pfn), KASAN_VMALLOC_INVALID, PAGE_SIZE); >>> + pte = pfn_pte(pfn, PAGE_KERNEL); >>> >>> spin_lock(&init_mm.page_table_lock); >>> - if (likely(pte_none(ptep_get(ptep)))) { >>> + if (likely(pte_none(ptep_get(ptep)))) >>> set_pte_at(&init_mm, addr, ptep, pte); >>> - page = 0; >> >> With this patch, now if the pte is already set, the page is leaked? > > Yes. But currently it is leaked for previously allocated pages anyway, > so no change in behaviour (unless I misread the code). Current code doesn't even allocate page if pte set, and if set pte discovered only after taking spinlock, the page will be freed, not leaked. Whereas, this patch leaks page for every single !pte_none case. This will build up over time as long as vmalloc called. > >> Should we set data->pages[PFN_DOWN(addr - data->start)] = NULL >> and free non-null elements later in __kasan_populate_vmalloc()? > > Should the allocation fail on boot, the kernel would not fly anyway. This is not boot code, it's called from vmalloc() code path. > If for whatever reason we want to free, that should be a follow-up > change, as far as I am concerned. > We want to free it, because we don't want unbound memory leak.