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 DF799C77B70 for ; Tue, 4 Apr 2023 08:42:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 63E67900003; Tue, 4 Apr 2023 04:42:11 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5C688900002; Tue, 4 Apr 2023 04:42:11 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3F235900003; Tue, 4 Apr 2023 04:42:11 -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 2D803900002 for ; Tue, 4 Apr 2023 04:42:11 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id E3F8C160125 for ; Tue, 4 Apr 2023 08:42:10 +0000 (UTC) X-FDA: 80643066420.09.F2D27B9 Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by imf20.hostedemail.com (Postfix) with ESMTP id 9254E1C0018 for ; Tue, 4 Apr 2023 08:42:06 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=none; spf=pass (imf20.hostedemail.com: domain of zhangqing@loongson.cn designates 114.242.206.163 as permitted sender) smtp.mailfrom=zhangqing@loongson.cn; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1680597728; 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=bK9gLMxjKISsmIbyAXMDAt9NQo6Xkgz6c17HqxCv4xE=; b=ydtpRmgarE4UOP6xpFHNzQf2WuJNTKpIffdE3y6YrSyO38uX1C/izbHTSvk8Z7CZyrp1PB N17RnSETPSPU9JMHdV7OPIjaiLMosF6Y9x3CIUpCZPnvhz6AuzPUhvutSurVnzWPq8fz6x s3IMotD3tMQcM+JjXCqQPHT/GJR9rEE= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=none; spf=pass (imf20.hostedemail.com: domain of zhangqing@loongson.cn designates 114.242.206.163 as permitted sender) smtp.mailfrom=zhangqing@loongson.cn; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1680597728; a=rsa-sha256; cv=none; b=VnQDCVip40h64J/Ug3eC9vY2pQgKo1bG2VpQBorgadDhUaPmQuOD/R5TniZonmMcDigXbb 24FhfLLYRi+GdrZOnlb9eHv5Ua1LgxHMTbnQNl4Rf3+mklK09S2IWbSSf9bZdSbgzah7gJ 2dlwNX7XhOykeM2fviSRObxC9/NFHos= Received: from loongson.cn (unknown [113.200.148.30]) by gateway (Coremail) with SMTP id _____8BxONnZ4itkPV0WAA--.34377S3; Tue, 04 Apr 2023 16:42:01 +0800 (CST) Received: from localhost.localdomain (unknown [113.200.148.30]) by localhost.localdomain (Coremail) with SMTP id AQAAf8DxwOTW4itkYRYVAA--.55009S3; Tue, 04 Apr 2023 16:42:00 +0800 (CST) From: Qing Zhang To: Andrey Ryabinin , Jonathan Corbet , Huacai Chen , Andrew Morton Cc: Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , WANG Xuerui , Jiaxun Yang , kasan-dev@googlegroups.com, linux-doc@vger.kernel.org, linux-mm@kvack.org, loongarch@lists.linux.dev, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH v2 1/6] LoongArch: Simplified randomization layout after jump new kernel processing Date: Tue, 4 Apr 2023 16:41:43 +0800 Message-Id: <20230404084148.744-2-zhangqing@loongson.cn> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20230404084148.744-1-zhangqing@loongson.cn> References: <20230404084148.744-1-zhangqing@loongson.cn> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-CM-TRANSID:AQAAf8DxwOTW4itkYRYVAA--.55009S3 X-CM-SenderInfo: x2kd0wptlqwqxorr0wxvrqhubq/ X-Coremail-Antispam: 1Uk129KBjvJXoWxCFy5JFyUAw4rur18urW7Arb_yoW5AF45pr y7Zw1kJr45Grs7J34qqa4Dury5XwnrWw1aganrK34rZr12qFy5Xw1kurnrWFWjq3yFgr4S qFyrKF9Iva1UJ3DanT9S1TB71UUUUj7qnTZGkaVYY2UrUUUUj1kv1TuYvTs0mT0YCTnIWj qI5I8CrVACY4xI64kE6c02F40Ex7xfYxn0WfASr-VFAUDa7-sFnT9fnUUIcSsGvfJTRUUU bSxYFVCjjxCrM7AC8VAFwI0_Jr0_Gr1l1xkIjI8I6I8E6xAIw20EY4v20xvaj40_Wr0E3s 1l1IIY67AEw4v_JF0_JFyl8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xv wVC0I7IYx2IY67AKxVW5JVW7JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8JVWxJwA2z4 x0Y4vEx4A2jsIE14v26r4UJVWxJr1l84ACjcxK6I8E87Iv6xkF7I0E14v26r4UJVWxJr1l n4kS14v26r126r1DM2AIxVAIcxkEcVAq07x20xvEncxIr21l57IF6xkI12xvs2x26I8E6x ACxx1l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1q6rW5McIj6I8E 87Iv67AKxVW8JVWxJwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41lc7CjxV Aaw2AFwI0_JF0_Jw1l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1l4IxY O2xFxVAFwI0_JF0_Jw1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGV WUWwC2zVAF1VAY17CE14v26r4a6rW5MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_ Gr0_Xr1lIxAIcVC0I7IYx2IY6xkF7I0E14v26r4j6F4UMIIF0xvE42xK8VAvwI8IcIk0rV WUJVWUCwCI42IY6I8E87Iv67AKxVW8JVWxJwCI42IY6I8E87Iv6xkF7I0E14v26r4j6r4U JbIYCTnIWIevJa73UjIFyTuYvjxU4eMKDUUUU X-Stat-Signature: 9ac3p4qwr39uj95buee8978mx6tz6tpq X-Rspam-User: X-Rspamd-Queue-Id: 9254E1C0018 X-Rspamd-Server: rspam06 X-HE-Tag: 1680597726-550288 X-HE-Meta: U2FsdGVkX19TDWkKfTFORiBWFVf8eJOH/RXuTvs6yBp/S4l9nYLU46EJBJU1nTQjVNOfruFHANdv89S8IOQscrLc/Fqi4vo1aPHflU48vgse19uBjgQsVSXPDHASASIQODt6B5kQZXJqs7nhRWFNwVbH1JhOIkwkjIAmwmZr2L+CO9x6I0xa+K7DRC5De+nxgt3qUF4Sa1G7XaLyqIzr0eTDiqFmAVFBQFUWHLcWrKDGuv0DFdrBS1ccBiHTSgMFw2miqx8fDQg2cCZSes2hS4cWBEujhfwkqrOSVV474TA7vlG/y1uQbgStdTRKXU1M927reaYsVyrJaYQjeFZLl8q9yQIwQICtNLw56ru3oxsWtG2yRvtk0JUmX9NBq8sR8Cshjc8rmBU1EfKs1WOtgo87724i7Px9UqjOmYIk0mqwjCmkzyeU2X4of2egCNyPzG9H1uIYL0JAGQOG82e4deZ3sDFkWfPrBJbDEgLHM2zuWs+HuTv3ZMeV4/Latxhya8yQVkZJP4Ovyw6vOgea1ATwPV/PVU2PT8wE5iykaQ+zCfzc149+bqvqQ8PPrTysnS4gl3B7VA1GtPgtL/34GALYavJiTsWO9ZBfaqt3y34iGeSKSKzVSK+PX2ypYjjzmaaRLKqQgYBJOUiVQqCnDRmEVekLB2Z7FQx9IcK1cFGIR7Vjyf3UDx8CoUv6x+SsCh6OWHJYXqhK32sEhLUmuHw3qsHGZGmFEtSoRCHTdQFTRd95SjEISGlwCafGFoTY9PM0Ky4FQ8HJ1SnR+hahwGP/ieBfkYwyEobHlgbXCVk0TeYTIZ+ayyPyE39yT1h85m1Nnt2SE3Vev0hBdYZQSEHC1CG411Xh5GSnGcD0haVwCQ1icAHn/jDyu9Fp9Xy1yooxl0jBbRPJr7m/L006AieazWkMrVnahKErYuHQhyj669BrmdRnKHjeKFeynKPilyx+GHQvVjW5vShH1hW PTTDGIZE tRO2VQf+mY/gDKISvLn4mOD7vOPVG9zIY9M3R+KCeYzFLjB6PeOVtx7jbL68Y5zUCXGTur7MBI8sTLXlJWCeM6DPd6t5spi7cHWamE3E/wluo1/bzUnt91jyKRTr4rpvfygE9xxySrf+XWmA= 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: Modified relocate_kernel is not returned directly new kernel's entry point, instead, we share start_kernel processing with the normal kernel, which avoids calling 'jr a0' directly and we can do other operations(eg: kasan_early_init) before start_kernel when CONFIG_RANDOMIZE_BASE is turned on. Signed-off-by: Qing Zhang --- arch/loongarch/include/asm/setup.h | 2 +- arch/loongarch/kernel/head.S | 10 +++++----- arch/loongarch/kernel/relocate.c | 8 ++------ 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/arch/loongarch/include/asm/setup.h b/arch/loongarch/include/asm/setup.h index be05c0e706a2..2dca0d1dd90a 100644 --- a/arch/loongarch/include/asm/setup.h +++ b/arch/loongarch/include/asm/setup.h @@ -33,7 +33,7 @@ extern long __la_abs_end; extern long __rela_dyn_begin; extern long __rela_dyn_end; -extern void * __init relocate_kernel(void); +extern unsigned long __init relocate_kernel(void); #endif diff --git a/arch/loongarch/kernel/head.S b/arch/loongarch/kernel/head.S index aa64b179744f..35c4a78614c3 100644 --- a/arch/loongarch/kernel/head.S +++ b/arch/loongarch/kernel/head.S @@ -95,12 +95,12 @@ SYM_CODE_START(kernel_entry) # kernel entry point PTR_LI sp, (_THREAD_SIZE - PT_SIZE) PTR_ADD sp, sp, tp set_saved_sp sp, t0, t1 -#endif - - /* relocate_kernel() returns the new kernel entry point */ - jr a0 - ASM_BUG() + /* Jump to new kernel: new_pc = current_pc + random_offset */ + pcaddi t0, 0 + add.d t0, t0, a0 + jirl zero, t0, 0xc +#endif #endif bl start_kernel diff --git a/arch/loongarch/kernel/relocate.c b/arch/loongarch/kernel/relocate.c index 01f94d1e3edf..6c3eff9af9fb 100644 --- a/arch/loongarch/kernel/relocate.c +++ b/arch/loongarch/kernel/relocate.c @@ -157,12 +157,11 @@ static inline void __init update_reloc_offset(unsigned long *addr, long random_o *new_addr = (unsigned long)reloc_offset; } -void * __init relocate_kernel(void) +unsigned long __init relocate_kernel(void) { unsigned long kernel_length; unsigned long random_offset = 0; void *location_new = _text; /* Default to original kernel start */ - void *kernel_entry = start_kernel; /* Default to original kernel entry point */ char *cmdline = early_ioremap(fw_arg1, COMMAND_LINE_SIZE); /* Boot command line is passed in fw_arg1 */ strscpy(boot_command_line, cmdline, COMMAND_LINE_SIZE); @@ -190,9 +189,6 @@ void * __init relocate_kernel(void) reloc_offset += random_offset; - /* Return the new kernel's entry point */ - kernel_entry = RELOCATED_KASLR(start_kernel); - /* The current thread is now within the relocated kernel */ __current_thread_info = RELOCATED_KASLR(__current_thread_info); @@ -204,7 +200,7 @@ void * __init relocate_kernel(void) relocate_absolute(random_offset); - return kernel_entry; + return random_offset; } /* -- 2.20.1