1 // SPDX-License-Identifier: GPL-2.0-only 1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 2 /* 3 * linux/init/version.c 3 * linux/init/version.c 4 * 4 * 5 * Copyright (C) 1992 Theodore Ts'o 5 * Copyright (C) 1992 Theodore Ts'o 6 * 6 * 7 * May be freely distributed as part of Linux 7 * May be freely distributed as part of Linux. 8 */ 8 */ 9 9 10 #include <generated/compile.h> 10 #include <generated/compile.h> 11 #include <linux/build-salt.h> 11 #include <linux/build-salt.h> 12 #include <linux/elfnote-lto.h> 12 #include <linux/elfnote-lto.h> 13 #include <linux/export.h> 13 #include <linux/export.h> 14 #include <linux/init.h> 14 #include <linux/init.h> 15 #include <linux/printk.h> 15 #include <linux/printk.h> 16 #include <linux/uts.h> 16 #include <linux/uts.h> 17 #include <linux/utsname.h> 17 #include <linux/utsname.h> >> 18 #include <generated/utsrelease.h> >> 19 #include <linux/version.h> 18 #include <linux/proc_ns.h> 20 #include <linux/proc_ns.h> 19 21 >> 22 struct uts_namespace init_uts_ns = { >> 23 .ns.count = REFCOUNT_INIT(2), >> 24 .name = { >> 25 .sysname = UTS_SYSNAME, >> 26 .nodename = UTS_NODENAME, >> 27 .release = UTS_RELEASE, >> 28 .version = UTS_VERSION, >> 29 .machine = UTS_MACHINE, >> 30 .domainname = UTS_DOMAINNAME, >> 31 }, >> 32 .user_ns = &init_user_ns, >> 33 .ns.inum = PROC_UTS_INIT_INO, >> 34 #ifdef CONFIG_UTS_NS >> 35 .ns.ops = &utsns_operations, >> 36 #endif >> 37 }; >> 38 EXPORT_SYMBOL_GPL(init_uts_ns); >> 39 20 static int __init early_hostname(char *arg) 40 static int __init early_hostname(char *arg) 21 { 41 { 22 size_t bufsize = sizeof(init_uts_ns.na 42 size_t bufsize = sizeof(init_uts_ns.name.nodename); 23 size_t maxlen = bufsize - 1; 43 size_t maxlen = bufsize - 1; 24 ssize_t arglen; !! 44 size_t arglen; 25 45 26 arglen = strscpy(init_uts_ns.name.node !! 46 arglen = strlcpy(init_uts_ns.name.nodename, arg, bufsize); 27 if (arglen < 0) { !! 47 if (arglen > maxlen) { 28 pr_warn("hostname parameter ex 48 pr_warn("hostname parameter exceeds %zd characters and will be truncated", 29 maxlen); 49 maxlen); 30 } 50 } 31 return 0; 51 return 0; 32 } 52 } 33 early_param("hostname", early_hostname); 53 early_param("hostname", early_hostname); 34 54 >> 55 /* FIXED STRINGS! Don't touch! */ >> 56 const char linux_banner[] = >> 57 "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@" >> 58 LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n"; >> 59 35 const char linux_proc_banner[] = 60 const char linux_proc_banner[] = 36 "%s version %s" 61 "%s version %s" 37 " (" LINUX_COMPILE_BY "@" LINUX_COMPIL 62 " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")" 38 " (" LINUX_COMPILER ") %s\n"; 63 " (" LINUX_COMPILER ") %s\n"; 39 64 40 BUILD_SALT; 65 BUILD_SALT; 41 BUILD_LTO_INFO; 66 BUILD_LTO_INFO; 42 << 43 /* << 44 * init_uts_ns and linux_banner contain the bu << 45 * which are really fixed at the very last ste << 46 * They are compiled with __weak first, and wi << 47 */ << 48 << 49 struct uts_namespace init_uts_ns __weak; << 50 const char linux_banner[] __weak; << 51 << 52 #include "version-timestamp.c" << 53 << 54 EXPORT_SYMBOL_GPL(init_uts_ns); << 55 67
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.