Module Name: src Committed By: tsutsui Date: Mon Oct 28 15:26:09 UTC 2019
Modified Files: src/sys/arch/zaurus/stand/zbsdmod: compat_linux.h zbsdmod.c Log Message: Make sure to clear bss before jumping to a kernel copied from load buffer. This will fix yet another boot failure issue "screen white-out after loading a kernel" https://mail-index.netbsd.org/port-zaurus/2019/10/26/msg000072.html Should be pulled up to netbsd-8 and netbsd-9. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/zaurus/stand/zbsdmod/compat_linux.h cvs rdiff -u -r1.10 -r1.11 src/sys/arch/zaurus/stand/zbsdmod/zbsdmod.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/zaurus/stand/zbsdmod/compat_linux.h diff -u src/sys/arch/zaurus/stand/zbsdmod/compat_linux.h:1.6 src/sys/arch/zaurus/stand/zbsdmod/compat_linux.h:1.7 --- src/sys/arch/zaurus/stand/zbsdmod/compat_linux.h:1.6 Sun Dec 11 14:05:39 2011 +++ src/sys/arch/zaurus/stand/zbsdmod/compat_linux.h Mon Oct 28 15:26:09 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: compat_linux.h,v 1.6 2011/12/11 14:05:39 nonaka Exp $ */ +/* $NetBSD: compat_linux.h,v 1.7 2019/10/28 15:26:09 tsutsui Exp $ */ /* $OpenBSD: compat_linux.h,v 1.5 2006/01/15 17:58:27 deraadt Exp $ */ /* @@ -64,6 +64,7 @@ extern int register_chrdev(unsigned int, extern int unregister_chrdev(unsigned int, const char *); extern void printk(const char *, ...) __printflike(1, 2); extern void *memcpy(void *, const void *, size_t); +extern void *memset(void *, int, size_t); /* procfs support */ struct proc_dir_entry { Index: src/sys/arch/zaurus/stand/zbsdmod/zbsdmod.c diff -u src/sys/arch/zaurus/stand/zbsdmod/zbsdmod.c:1.10 src/sys/arch/zaurus/stand/zbsdmod/zbsdmod.c:1.11 --- src/sys/arch/zaurus/stand/zbsdmod/zbsdmod.c:1.10 Sat Oct 26 09:58:40 2019 +++ src/sys/arch/zaurus/stand/zbsdmod/zbsdmod.c Mon Oct 28 15:26:09 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: zbsdmod.c,v 1.10 2019/10/26 09:58:40 tsutsui Exp $ */ +/* $NetBSD: zbsdmod.c,v 1.11 2019/10/28 15:26:09 tsutsui Exp $ */ /* $OpenBSD: zbsdmod.c,v 1.7 2005/05/02 02:45:29 uwe Exp $ */ /* @@ -262,6 +262,10 @@ elf32bsdboot(void) (((char *)elf) + phdr[i].p_offset)[sz]; } } + if (IS_BSS(phdr[i])) { + memset((void *)(phdr[i].p_vaddr + phdr[i].p_filesz), 0, + phdr[i].p_memsz - phdr[i].p_filesz); + } } addr = (int *)(elf->e_entry);