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 BD210C3DA59 for ; Tue, 16 Jul 2024 01:12:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4FB366B0085; Mon, 15 Jul 2024 21:12:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4AACF6B0088; Mon, 15 Jul 2024 21:12:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 399D06B0089; Mon, 15 Jul 2024 21:12:46 -0400 (EDT) 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 1CC1F6B0085 for ; Mon, 15 Jul 2024 21:12:46 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id C5ADAA02FB for ; Tue, 16 Jul 2024 01:12:45 +0000 (UTC) X-FDA: 82343841090.05.C37BD60 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by imf20.hostedemail.com (Postfix) with ESMTP id 5FF711C000F for ; Tue, 16 Jul 2024 01:12:41 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=none; spf=pass (imf20.hostedemail.com: domain of mawupeng1@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=mawupeng1@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1721092345; 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; bh=k5Fs9EJaG2ycw6HyMlnqOSxi/81mTzAWC8Qpq3EoJv4=; b=bJyBEIoPwfepzyVWXgAUZGeO421TUfJniivzHV3TIWomLAaA8FP2m8RDaX11BAtU8M4lPt KIg8zR6B2DFRmg+xkWOrJRNLBsGv9hEkNWcc39kegdBMaCd+ySyWqEhevnRF1+HB28vezI 2r8X8z450EuXbjuNM9FyhiL4easkjZM= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=none; spf=pass (imf20.hostedemail.com: domain of mawupeng1@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=mawupeng1@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721092345; a=rsa-sha256; cv=none; b=1M1grU2CaVp5UK54ZrYYbUA0z6nOtk10RYNvAqCIv3zG2BtC3lIU0IbBI8f7xaq7Q6meBt i6J2U9f4ElIiY/wN5ixdgap3X3+0n4pIuZX2xFOBCHxakqEIwGrpWkz5OOIANuZidhZm6p sLXV5yPZ6l0ZgbQk64qKjmSQhX3NCTY= Received: from mail.maildlp.com (unknown [172.19.88.194]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4WNLXK095bzxSmp; Tue, 16 Jul 2024 09:07:45 +0800 (CST) Received: from dggpemd200001.china.huawei.com (unknown [7.185.36.224]) by mail.maildlp.com (Postfix) with ESMTPS id 1EAA8140795; Tue, 16 Jul 2024 09:12:35 +0800 (CST) Received: from [10.174.178.120] (10.174.178.120) by dggpemd200001.china.huawei.com (7.185.36.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.34; Tue, 16 Jul 2024 09:12:34 +0800 Message-ID: <50385bd0-f47a-46b3-a196-a93ec8f040f6@huawei.com> Date: Tue, 16 Jul 2024 09:12:34 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird CC: , , , , , , , , Subject: Re: [Question] race during kasan_populate_vmalloc_pte To: References: <20240618064022.1990814-1-mawupeng1@huawei.com> Content-Language: en-US From: mawupeng In-Reply-To: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [10.174.178.120] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To dggpemd200001.china.huawei.com (7.185.36.224) X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 5FF711C000F X-Stat-Signature: se5t3nsxnp5jerjn79fcoqhudxmdg783 X-HE-Tag: 1721092361-641174 X-HE-Meta: U2FsdGVkX19pWENjXP+Tppi1KmWpA8QM04PeoBlNDhmYOu3rGx5aAUpAY8RzKJx9ycDeA87WnE4/Og+zefuXmMTIH1gcRftdijStrAu3RResiXAyYL+AekcV2v/dTb/YKGB0pIAK9rcDhOTtXeL5BGMMKt5bLZ25ewTKTOihfrfpn2O7r9hSHz9w7vuLhryxK4P6dPUtgd6w2TKinIhFIO0mKXurxEgLfR2yOzxTLiQVDpxEzvAd2RTyhPdbEVAUs75An+bd+IiPHWa8Zp50b2HeurifVBasUaXWdRBmb2HdPqUjUbMbf9H6yXvBe/ZUuEYJHfhBpS4IGlF2S5HqwOdjUAHWJJrPOOntDBvA8hUSc3ppGqqH3vPsky8egV33Ih1m7n76xXkGwJC3vCeiYmjB5TM3JOr1vUJYNE0xqWw4iRbMDmZjZFsEDBPkShMshD4J2TqAC505UlPzO3RkfcFuNyigX1MQamitHvTaOP4+HCIoi9lopRSccjjY8dtG7sQlc78L8KaJ3PmgXzSBArzjIh5mEpWU4HBoPGWTKza5gLVPiGEBoamGfLFTZUVShJaUTYLPWHRqXjspwaKf7LaAT0iZmeZDAtXC0DE/iAVXFJ28y71LTAamrbS79EagoncJlT/cTaYc10FL7mA/pvmoVQ4XufqEeYlBqSLqfEoMHYG7PCdT1kJURb3/lIE9Dc73p8A7RUWv3J2NZRIEHS4HFuz0qPJYutcpxPvLesQonuK/uSzygx6dTqoU6KkH4WruApwXSA40t5tQnAHePb4DTS424/IBP9V2BfYZUgBBsEq5RhKJosu4VTCB/ZejSNyQdOLAJRiSbSSptjU6A0rQkApw7/GFVUi14lsOGs503+gr2FV3JuvbeV7k90Q6xR0aKFg4ZZW5e8IKuhlRb+gJ58K2libobY/NUHyt5hq+k7h8mZVsLcthLiec/wrih9oLlsgo8AKbprkLpeg zJLa9Zcb O2Xn7xM3TTqhW5GWFLTuxGxyiZeRdb/zRH2hr/DTF9CAMW9LjpwUNe4OwHDLqq+VU5QJpjvi2KPlj+WygvCr95C3gQ4q9/P4E+668NSMH5X7c5Y0gZDA2okspWXQ2Fr5A4t++qf6xY6vWfFYKiEesfPE+1E/VbSmdpYOk5Q7CTXinISvQy32+3yNAuVTtcrMduIn6/GkUYn+U0fPA/W+QXM4yZCIavJtPGVwKNY9nAq54LyCzkD7tEFj5dmvyIs5grdFOlgZ0GtlMamRV/0CZXLJTGkFQZjr4p0XBAiV+qkQc82W/w8ZefICro0t43vuQQaRbsVTTt5SxGlPvScsuQ82Arw== 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 2024/7/16 1:19, Alexander Potapenko wrote: > On Fri, Jul 12, 2024 at 4:08 AM mawupeng wrote: >> >> Hi maintainers, >> >> kingly ping. >> >> On 2024/6/18 14:40, Wupeng Ma wrote: >>> Hi maintainers, >>> >>> During our testing, we discovered that kasan vmalloc may trigger a false >>> vmalloc-out-of-bounds warning due to a race between kasan_populate_vmalloc_pte >>> and kasan_depopulate_vmalloc_pte. >>> >>> cpu0 cpu1 cpu2 >>> kasan_populate_vmalloc_pte kasan_populate_vmalloc_pte kasan_depopulate_vmalloc_pte >>> spin_unlock(&init_mm.page_table_lock); >>> pte_none(ptep_get(ptep)) >>> // pte is valid here, return here >>> pte_clear(&init_mm, addr, ptep); >>> pte_none(ptep_get(ptep)) >>> // pte is none here try alloc new pages >>> spin_lock(&init_mm.page_table_lock); >>> kasan_poison >>> // memset kasan shadow region to 0 >>> page = __get_free_page(GFP_KERNEL); >>> __memset((void *)page, KASAN_VMALLOC_INVALID, PAGE_SIZE); >>> pte = pfn_pte(PFN_DOWN(__pa(page)), PAGE_KERNEL); >>> spin_lock(&init_mm.page_table_lock); >>> set_pte_at(&init_mm, addr, ptep, pte); >>> spin_unlock(&init_mm.page_table_lock); >>> >>> >>> Since kasan shadow memory in cpu0 is set to 0xf0 which means it is not >>> initialized after the race in cpu1. Consequently, a false vmalloc-out-of-bounds >>> warning is triggered when a user attempts to access this memory region. >>> >>> The root cause of this problem is the pte valid check at the start of >>> kasan_populate_vmalloc_pte should be removed since it is not protected by >>> page_table_lock. However, this may result in severe performance degradation >>> since pages will be frequently allocated and freed. >>> >>> Is there have any thoughts on how to solve this issue? >>> >>> Thank you. > > I am going to take a closer look at this issue. Any chance you have a > reproducer for it? So far not good. I am trying to get a reproducer, but there is little progress in it. >