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 22416C77B7F for ; Tue, 16 May 2023 21:20:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 94FC6900004; Tue, 16 May 2023 17:20:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8FFCC900002; Tue, 16 May 2023 17:20:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7EF37900004; Tue, 16 May 2023 17:20:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 649B8900002 for ; Tue, 16 May 2023 17:20:42 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 3D81F1C7149 for ; Tue, 16 May 2023 21:20:42 +0000 (UTC) X-FDA: 80797387524.09.6F6EFC1 Received: from out-26.mta0.migadu.com (out-26.mta0.migadu.com [91.218.175.26]) by imf05.hostedemail.com (Postfix) with ESMTP id 4C435100008 for ; Tue, 16 May 2023 21:20:40 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=SibD303e; spf=pass (imf05.hostedemail.com: domain of kent.overstreet@linux.dev designates 91.218.175.26 as permitted sender) smtp.mailfrom=kent.overstreet@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684272040; 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=dbkTng8H6hiTn8uKTCVsk8fFMRZsv0G437tHoNcRdyw=; b=HiGybUAS5W78qMNdUr3iygbJPNKMP/cIC+sk1WwY06qpDtzz7HSVTrM+VHDXozYcH+QMiE A8ZowW+wJUpEwjClFAvLiz+Mo2I8fMs70lOhdeHKIyhNb9zCNHf6KzKkISkHPfDsuNzjDq BaekqMKB2Iz3Kn3SG2UwV4sgMxpDqfQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684272040; a=rsa-sha256; cv=none; b=Qa125piBfN5jkl0PXu+Ldzhgje+/gG7nF8SLwff2kaXBJJ1coB5UUFG9dDpijlo/VLCVy7 rikWr3ls1b9pobM95YwkBlmxb+ImwlABNL/SqB+Tpbz07w6HP4Dnahpvl8l5QEjJ8FArAR 0JWr21rxNYv4cFwxjKILxTsvhMGMlLI= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=SibD303e; spf=pass (imf05.hostedemail.com: domain of kent.overstreet@linux.dev designates 91.218.175.26 as permitted sender) smtp.mailfrom=kent.overstreet@linux.dev; dmarc=pass (policy=none) header.from=linux.dev Date: Tue, 16 May 2023 17:20:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1684272038; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=dbkTng8H6hiTn8uKTCVsk8fFMRZsv0G437tHoNcRdyw=; b=SibD303eoaJKDw/Qhvvh03L8pvarBF0nYUklNoNZHgjjEpZ53aMlv5snN9FpqFXPEHQbx0 LHXWrEV8byrPRslwxSNZj55hzeuxAFGK+ubsNu2p2v/2BFgQ2akuSeiuhIiYnhMwXR9Doi pF/mjBYG4GZWtq5+dZGjxFVscbKXIck= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Kent Overstreet To: Kees Cook Cc: Johannes Thumshirn , "linux-kernel@vger.kernel.org" , "linux-fsdevel@vger.kernel.org" , "linux-bcachefs@vger.kernel.org" , Kent Overstreet , Andrew Morton , Uladzislau Rezki , "hch@infradead.org" , "linux-mm@kvack.org" , "linux-hardening@vger.kernel.org" Subject: Re: [PATCH 07/32] mm: Bring back vmalloc_exec Message-ID: References: <20230509165657.1735798-1-kent.overstreet@linux.dev> <20230509165657.1735798-8-kent.overstreet@linux.dev> <3508afc0-6f03-a971-e716-999a7373951f@wdc.com> <202305111525.67001E5C4@keescook> <202305161401.F1E3ACFAC@keescook> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202305161401.F1E3ACFAC@keescook> X-Migadu-Flow: FLOW_OUT X-Rspamd-Queue-Id: 4C435100008 X-Stat-Signature: qf4bsshpsddzg9kf1q5pkf84qi3zuhp5 X-Rspam-User: X-Rspamd-Server: rspam09 X-HE-Tag: 1684272040-494928 X-HE-Meta: U2FsdGVkX18lWlrZQMjZ2RJtOoKepLhZdU+xBEFnmht4aSPeF1ozT2eeRYEZTDCa8hd7bSCJWAWjd5b7Xmf3rUdvQ6tO5rD1UwHY0CGkWGAi4oPX0em+QnN6zwUgQL6HRAxw0MFZIKUYA16RQw4dKENXgSNV9FF6H9FdXlxoQPZrsjdjvBlg97ddMHc/GBHkh4ntcRWnxvCZs/EfUc/LMsLEqi2uGMBO14tD9UbSA/M0aSELuVK34XGzDyNtCOBIOCHo30r7VD95zXbP7pgZiJmz1GJm3tacmnsDaOebV7L6OCfrRAlIwFCC1JuSLSXQFKiXSaYfBiAnSXC1FXHJ2JtjAtP5yvfO2BRpRU31JefA9xmFyLNFZktm8UEC/RLk3UQAYCxCdPVMiawpUIuXGHOXGiDl346SuAafVBO62OfoYz5XhhO7CfgLiqQMFBIzDtrMbXvmyNpPAyv7IHMDueY4L71nrZ+bumrSnZYG1u4uCRz4zUnJdZDOZ3nWI5bO/eNDKdrsnzWd2qhJrykIalEw2SbrT51zW9vSJeDWW5TnpC+yquKI7SKXOfMdaGtFc2VDwiTrtsUvrw/vz0gMaorV2nQ+LBcI5sD/0H49+q5lZR9WKJjJ5rAOJ5YoSI7sBpQ1M3xeMv0VnnwhLw4s8vZEXlLrPAN9rkNv2Ulhv5wj8fGtmXsoO/wnZZKq7VQHE1GL7nuwqiXW2N+wyKBuD3JXwlA1aXbyn6U5z4qcUKDcgU1tVOisw7EYr3ZDbB10yYDHBFeLHWQMtfy1igQNGqQ9fb9GoA14sCIprTriRZChM/Sa6LculYEi2kfiz0cHNo0A5EtxWwS3gGkvBT4rl0cWCaO6i0Nr66kThJ0XJXgoZeLtXW5lOF5j9QLQt1qkCrepM5mxVUkKo1ImRLny3UUkkrDIzNSquZxF+96q4GVQLoNwL6FtDKYlKgL+2MSP5YdQzp6in/08btreFxQ GCOn9FzN 0y7//IX2vZC3i+7w4pQOAn8LZRUDiVPasJHH+xSdlZuz8VQiqsTcSb7FTUNSlsxo9FryJ6t/W6GTdn2uV9pUDu2Cc0Wz2GgmoPEXhz6FvTc/E4LQLt9Mw0+GfUBeqkzLYwsatHgFwlhlWQ2CO9pqL8S06Ouc4ZKWMFAQorUu6+NFPeAu9SxXZ2ikpLhzdjTKrz6WEanfm9VViZjM= 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 Tue, May 16, 2023 at 02:02:11PM -0700, Kees Cook wrote: > For something that small, why not use the text_poke API? This looks like it's meant for patching existing kernel text, which isn't what I want - I'm generating new functions on the fly, one per btree node. I'm working up a new allocator - a (very simple) slab allocator where you pass a buffer, and it gives you a copy of that buffer mapped executable, but not writeable. It looks like we'll be able to convert bpf, kprobes, and ftrace trampolines to it; it'll consolidate a fair amount of code (particularly in bpf), and they won't have to burn a full page per allocation anymore. bpf has a neat trick where it maps the same page in two different locations, one is the executable location and the other is the writeable location - I'm stealing that. external api will be: void *jit_alloc(void *buf, size_t len, gfp_t gfp); void jit_free(void *buf); void jit_update(void *buf, void *new_code, size_t len); /* update an existing allocation */