Subject: Re: hard lockups with -current and Netscape
To: KANETA Shin-ichi <kaneta@atmos.cr.chiba-u.ac.jp>
From: Jun-ichiro itojun Hagino <itojun@iijlab.net>
List: current-users
Date: 03/22/2001 07:17:58
>Unfortunately, I got a panic with your patch (and StarOffice5.2). I
>attached kernel stack information below.
there was a change on March 15, to sys/compat/linux/common/linux_exec.c,
which we always will see null pointer dereference. whoever made
the change, please fix...
notice that, p->p_emuldata is set to null in linux_e_proc_fork(),
and linux_e_proc_exec() touches it.
itojun
---
static void
linux_e_proc_exec(p, epp)
struct proc *p;
struct exec_package *epp;
{
if (!p->p_emuldata) {
/* allocate new Linux emuldata */
MALLOC(p->p_emuldata, void *, sizeof(struct linux_emuldata),
M_EMULDATA, M_WAITOK);
}
memset(p->p_emuldata, '\0', sizeof(struct linux_emuldata));
/* Set the process idea of the break to the real value */ <- added
((struct linux_emuldata*)(p->p_emuldata))->p_break = <-
p->p_vmspace->vm_daddr + ctob(p->p_vmspace->vm_dsize); <-
}
/*
* Emulation fork hook.
*/
static void
linux_e_proc_fork(p, parent)
struct proc *p, *parent;
{
/*
* It could be desirable to copy some stuff from parent's
* emuldata. We don't need anything like that for now.
* So just allocate new emuldata for the new process.
*/
p->p_emuldata = NULL;
linux_e_proc_exec(p, NULL);
}