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.
This commit is contained in:
tsutsui 2019-10-28 15:26:09 +00:00
parent 3ed59424a4
commit 0239d27890
2 changed files with 7 additions and 2 deletions

View File

@ -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, const char *, struct file_operations *)
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 {

View File

@ -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);