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 8AB27C25B74 for ; Mon, 27 May 2024 13:30:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 211D26B00A1; Mon, 27 May 2024 09:30:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1C2016B00A2; Mon, 27 May 2024 09:30:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 089596B00A3; Mon, 27 May 2024 09:30:38 -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 E08B76B00A1 for ; Mon, 27 May 2024 09:30:37 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 98E221A1533 for ; Mon, 27 May 2024 13:30:37 +0000 (UTC) X-FDA: 82164260514.30.1A3CFA8 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf15.hostedemail.com (Postfix) with ESMTP id DFADAA0006 for ; Mon, 27 May 2024 13:30:35 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=ZpD51+ht; spf=pass (imf15.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1716816636; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=cJOmfU4A7i8laBFgv0Txi7r+RvkeHcrZOitR2GBmSIo=; b=JbhYBCQd6IRFU0wH2cSaaS8ygwFReJfvCu6oQ6J0IIhCu+5ccAUR4X6eSgU4o/VkZxdhJN dmIj3XupbxF6jstbm7tnqUFJD+tS6GNGvIx91/jGNm5YbTb8GQYaNWp6rX+/fmEqglpBOF 59gIU2VWIMMV+F46Tgm4AonKKc9VR80= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=ZpD51+ht; spf=pass (imf15.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1716816636; a=rsa-sha256; cv=none; b=N5pCxVrGEJX1z4LJDjJQvjza0SRZLAb1USDmCIjIW1AfxdmCEDEIMtXBARe/XS4G1danBP Ra+cya2kO5tmGfPsYeuaC37sPVCsaGRtLzKYhUoBjPw5Q7Umw5clF7h8S7PAqI+1j+/ayT z4nNQv94w1htbKycIbdBujcFzOthhX0= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id CE0996179E; Mon, 27 May 2024 13:30:34 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 86FF9C32789; Mon, 27 May 2024 13:30:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1716816634; bh=XKIExmxJ0QbTZF18xt6QtZCjep9rcJmkPdgH9omxsFs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=ZpD51+htCJ6SFNZuke4BoLNDvsbG3BwXps9XuSfgY/V7RDJK8uYWK6mMo74/X1Icx h+VP95NwwrBsKTJG9dhNotAvQhppQanZL4MNveYrxuY+7fVPPyBsQtRCk3ccH9ByUp fHUHV2WvCNAbAydO1Lsq1Ejk55SXEhpUfJ1Wa7hyKmtiAmZjv/LsjLEZAZ7nf/xHpp 5yIXXe0gYaYxNXFgVpEGHZKvMP32oStRf+3rEJreqskl6VLKbUXTJpMXc1Nh2z8tkx CMLIg0DckUDs4HJ0ZaIpkXiYAMjC4nJQSZZayCfl6hElOWhtLHV6Xhrf5gkCyQRW1g U+CWs9DdjZ1mA== Date: Mon, 27 May 2024 16:28:45 +0300 From: Mike Rapoport To: Daniel Borkmann Cc: Cong Wang , netdev@vger.kernel.org, linux-mm@kvack.org, Andrew Morton , bpf@vger.kernel.org, Cong Wang , Luis Chamberlain Subject: Re: [Patch bpf] vmalloc: relax is_vmalloc_or_module_addr() check Message-ID: References: <20240526230648.188550-1-xiyou.wangcong@gmail.com> <1f39f888-989f-658b-a107-90ffe1347d0f@iogearbox.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1f39f888-989f-658b-a107-90ffe1347d0f@iogearbox.net> X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: DFADAA0006 X-Stat-Signature: rit8mazohy8t3endnay14yfoctsnfpcf X-Rspam-User: X-HE-Tag: 1716816635-58060 X-HE-Meta: U2FsdGVkX19jgXC2Ug5eTrrRK3TH1ayaeAut9/prksJNFXN7wqofXAp2+5eJ7nVTyqkqQCus7qdDSVvtJadM25BVkDqscridG2s+HWE24+vvJjPd1JIcRq8sFUSVH7v6yPi+rp696h6VZ0m6Rjw8SpMyuB0BdHmQjlqmYvCifMNXTLZ/naUoF8G2xoTWc0VvCe6Hxuggs3SM8ZnsfXwrbL7S5JrQ0cQ1pBdh+3Lopz1+Lyuf6HozwQD3pm7wg14s6ABEYprFHkGckW7ukBKjmrYdesx9sIz9mb7MG8ingD97sHtA1madf7VTIsU1U6PgTFa376znnW72uB4/iM1HviyZtbVrxb8cqcqDZANLnTPd5IKj6wf3Xr03WUbLs/5UvnLl2gq7fhr4o+P1BSCVK9E/VWFYBF6tqXe2QN4FUgewexSMRLylc7EEzuJZ6QSoqYVQ7/M5j9DfaUUt7ckElHaGayPn9aFnHcH2ELAUTu9Ywe5wYVQeF8RFCcjSqzpp3lmnoVEr+j2nANSAwciyXdalIJtawx2hh16Eajzfe3iB+8uOhFMrWHQRcPqr9vH8eIPjXct+OQFKAh+wtbKIWUtbnCJ5p7S13dOhSgfs4DMf7P6txYfrozhgu2S1xZubHrYhnhVODTWgIiIqEySx2NlkpKHlWXCNA/KIpdyuoxOIOpVgENZHTeo9BA17Z+uNhwMrVW+r8SXJtfKTYhBVKNV/7xH72JE/iCB+jHjBCWBZIhlgNPoRZAQTDk/ElNMnQsSqp/+gCUEpS1qF1B14sGFJOnBGitkxH9v2xLJxwTkCJ9OQ9X1eVZEobLEzwIzBJvjalCpCPSh+fP21k0cC2vU9nAZNKgZiSdTNRYn+htaOe73Xpi7xt0llBltY9O2l3NePpIUrsMUt0D5OHkU6dO9UEVhRY2aN1G/yZ/KSMNO9yLAsROHmYmaTOB+e4xxV7cOZPLoRahqaPM2hR1B MfmlePJW YNNP8bwphMg+Asa4ElLArfqI5Np/st2bqBWTOYcj7TVZTj6zD0QGgaETb8xFTC7TZWKPvaGtFG4kLjdx8t7rlWqPGXgfmF0jedJol/WdoA7GluVuP37fQLaDPqvg7Li93CEerhkwxF8Z7d0ItaaeSNuxVjp0+JvyGsHBAtQunfr6CiWZKYoDPCQRAWXM01QjgUpdQWuzBNDRefl8qHZ6fG4d8QhbtbM8iIFVffv7+aGNJH8gSKHxVDK3YrOyE2ZYUgKkOUdEhTyewGsASlexUjcGpnCvglXubooPDpDVzAwCsloLcmazTp3KgXNWMlWDE1KCmvCKYBnidncjxNIGxv1mac5C8SkWQ5X0MyWSXH3k83jNWWgKhlUn5ydYP4Jlvv8LTigqf/Dvde5XPvagql3kq39/nOlYh1hViaZxpTLsb5xg= 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 Mon, May 27, 2024 at 03:11:50PM +0200, Daniel Borkmann wrote: > On 5/27/24 1:06 AM, Cong Wang wrote: > > From: Cong Wang > > > > After commit 2c9e5d4a0082 ("bpf: remove CONFIG_BPF_JIT dependency on CONFIG_MODULES of") > > CONFIG_BPF_JIT does not depend on CONFIG_MODULES any more and bpf jit > > also uses the MODULES_VADDR ~ MODULES_END memory region. But > > is_vmalloc_or_module_addr() still checks CONFIG_MODULES, which then > > returns false for a bpf jit memory region when CONFIG_MODULES is not > > defined. It leads to the following kernel BUG: > > > > [ 1.567023] ------------[ cut here ]------------ > > [ 1.567883] kernel BUG at mm/vmalloc.c:745! > > [ 1.568477] Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN NOPTI > > [ 1.569367] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.9.0+ #448 > > [ 1.570247] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.15.0-1 04/01/2014 > > [ 1.570786] RIP: 0010:vmalloc_to_page+0x48/0x1ec > > [ 1.570786] Code: 0f 00 00 e8 eb 1a 05 00 b8 37 00 00 00 48 ba fe ff ff ff ff 1f 00 00 4c 03 25 76 49 c6 02 48 c1 e0 28 48 01 e8 48 39 d0 76 02 <0f> 0b 4c 89 e7 e8 bf 1a 05 00 49 8b 04 24 48 a9 9f ff ff ff 0f 84 > > [ 1.570786] RSP: 0018:ffff888007787960 EFLAGS: 00010212 > > [ 1.570786] RAX: 000036ffa0000000 RBX: 0000000000000640 RCX: ffffffff8147e93c > > [ 1.570786] RDX: 00001ffffffffffe RSI: dffffc0000000000 RDI: ffffffff840e32c8 > > [ 1.570786] RBP: ffffffffa0000000 R08: 0000000000000000 R09: 0000000000000000 > > [ 1.570786] R10: ffff888007787a88 R11: ffffffff8475d8e7 R12: ffffffff83e80ff8 > > [ 1.570786] R13: 0000000000000640 R14: 0000000000000640 R15: 0000000000000640 > > [ 1.570786] FS: 0000000000000000(0000) GS:ffff88806cc00000(0000) knlGS:0000000000000000 > > [ 1.570786] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > > [ 1.570786] CR2: ffff888006a01000 CR3: 0000000003e80000 CR4: 0000000000350ef0 > > [ 1.570786] Call Trace: > > [ 1.570786] > > [ 1.570786] ? __die_body+0x1b/0x58 > > [ 1.570786] ? die+0x31/0x4b > > [ 1.570786] ? do_trap+0x9d/0x138 > > [ 1.570786] ? vmalloc_to_page+0x48/0x1ec > > [ 1.570786] ? do_error_trap+0xcd/0x102 > > [ 1.570786] ? vmalloc_to_page+0x48/0x1ec > > [ 1.570786] ? vmalloc_to_page+0x48/0x1ec > > [ 1.570786] ? handle_invalid_op+0x2f/0x38 > > [ 1.570786] ? vmalloc_to_page+0x48/0x1ec > > [ 1.570786] ? exc_invalid_op+0x2b/0x41 > > [ 1.570786] ? asm_exc_invalid_op+0x16/0x20 > > [ 1.570786] ? vmalloc_to_page+0x26/0x1ec > > [ 1.570786] ? vmalloc_to_page+0x48/0x1ec > > [ 1.570786] __text_poke+0xb6/0x458 > > [ 1.570786] ? __pfx_text_poke_memcpy+0x10/0x10 > > [ 1.570786] ? __pfx___mutex_lock+0x10/0x10 > > [ 1.570786] ? __pfx___text_poke+0x10/0x10 > > [ 1.570786] ? __pfx_get_random_u32+0x10/0x10 > > [ 1.570786] ? srso_return_thunk+0x5/0x5f > > [ 1.570786] text_poke_copy_locked+0x70/0x84 > > [ 1.570786] text_poke_copy+0x32/0x4f > > [ 1.570786] bpf_arch_text_copy+0xf/0x27 > > [ 1.570786] bpf_jit_binary_pack_finalize+0x26/0x5a > > [ 1.570786] bpf_int_jit_compile+0x576/0x8ad > > [ 1.570786] ? __pfx_bpf_int_jit_compile+0x10/0x10 > > [ 1.570786] ? srso_return_thunk+0x5/0x5f > > [ 1.570786] ? __kmalloc_node_track_caller+0x2b5/0x2e0 > > [ 1.570786] bpf_prog_select_runtime+0x7c/0x199 > > [ 1.570786] bpf_prepare_filter+0x1e9/0x25b > > [ 1.570786] ? __pfx_bpf_prepare_filter+0x10/0x10 > > [ 1.570786] ? srso_return_thunk+0x5/0x5f > > [ 1.570786] ? _find_next_bit+0x29/0x7e > > [ 1.570786] bpf_prog_create+0xb8/0xe0 > > [ 1.570786] ptp_classifier_init+0x75/0xa1 > > [ 1.570786] ? __pfx_ptp_classifier_init+0x10/0x10 > > [ 1.570786] ? srso_return_thunk+0x5/0x5f > > [ 1.570786] ? register_pernet_subsys+0x36/0x42 > > [ 1.570786] ? srso_return_thunk+0x5/0x5f > > [ 1.570786] sock_init+0x99/0xa3 > > [ 1.570786] ? __pfx_sock_init+0x10/0x10 > > [ 1.570786] do_one_initcall+0x104/0x2c4 > > [ 1.570786] ? __pfx_do_one_initcall+0x10/0x10 > > [ 1.570786] ? parameq+0x25/0x2d > > [ 1.570786] ? rcu_is_watching+0x1c/0x3c > > [ 1.570786] ? trace_kmalloc+0x81/0xb2 > > [ 1.570786] ? srso_return_thunk+0x5/0x5f > > [ 1.570786] ? __kmalloc+0x29c/0x2c7 > > [ 1.570786] ? srso_return_thunk+0x5/0x5f > > [ 1.570786] do_initcalls+0xf9/0x123 > > [ 1.570786] kernel_init_freeable+0x24f/0x289 > > [ 1.570786] ? __pfx_kernel_init+0x10/0x10 > > [ 1.570786] kernel_init+0x19/0x13a > > [ 1.570786] ret_from_fork+0x24/0x41 > > [ 1.570786] ? __pfx_kernel_init+0x10/0x10 > > [ 1.570786] ret_from_fork_asm+0x1a/0x30 > > [ 1.570786] > > [ 1.570819] ---[ end trace 0000000000000000 ]--- > > [ 1.571463] RIP: 0010:vmalloc_to_page+0x48/0x1ec > > [ 1.572111] Code: 0f 00 00 e8 eb 1a 05 00 b8 37 00 00 00 48 ba fe ff ff ff ff 1f 00 00 4c 03 25 76 49 c6 02 48 c1 e0 28 48 01 e8 48 39 d0 76 02 <0f> 0b 4c 89 e7 e8 bf 1a 05 00 49 8b 04 24 48 a9 9f ff ff ff 0f 84 > > [ 1.574632] RSP: 0018:ffff888007787960 EFLAGS: 00010212 > > [ 1.575129] RAX: 000036ffa0000000 RBX: 0000000000000640 RCX: ffffffff8147e93c > > [ 1.576097] RDX: 00001ffffffffffe RSI: dffffc0000000000 RDI: ffffffff840e32c8 > > [ 1.577084] RBP: ffffffffa0000000 R08: 0000000000000000 R09: 0000000000000000 > > [ 1.578077] R10: ffff888007787a88 R11: ffffffff8475d8e7 R12: ffffffff83e80ff8 > > [ 1.578810] R13: 0000000000000640 R14: 0000000000000640 R15: 0000000000000640 > > [ 1.579823] FS: 0000000000000000(0000) GS:ffff88806cc00000(0000) knlGS:0000000000000000 > > [ 1.580992] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > > [ 1.581869] CR2: ffff888006a01000 CR3: 0000000003e80000 CR4: 0000000000350ef0 > > [ 1.582800] Kernel panic - not syncing: Fatal exception > > [ 1.583765] ---[ end Kernel panic - not syncing: Fatal exception ]--- > > > > Fixes: 2c9e5d4a0082 ("bpf: remove CONFIG_BPF_JIT dependency on CONFIG_MODULES of") > > Cc: Luis Chamberlain > > Cc: Mike Rapoport (IBM) > > Signed-off-by: Cong Wang > > Thanks for the fix! > > Mike/Luis, do you plan to pick this up or rather prefer if we route it to > Linus (with your Ack assuming it looks good to you)? I'm fine with routing this via bpf, but usually vmalloc patches go via mm tree, so it's more up to Andrew. > Thanks, > Daniel -- Sincerely yours, Mike.