From owner-freebsd-hackers@FreeBSD.ORG Mon Jun 25 19:31:49 2007 Return-Path: X-Original-To: freebsd-hackers@freebsd.org Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id CED4D16A47B; Mon, 25 Jun 2007 19:31:49 +0000 (UTC) (envelope-from danny@cs.huji.ac.il) Received: from cs1.cs.huji.ac.il (cs1.cs.huji.ac.il [132.65.16.10]) by mx1.freebsd.org (Postfix) with ESMTP id 8126B13C44B; Mon, 25 Jun 2007 19:31:49 +0000 (UTC) (envelope-from danny@cs.huji.ac.il) Received: from pampa.cs.huji.ac.il ([132.65.80.32]) by cs1.cs.huji.ac.il with esmtp id 1I2uHq-000DkP-E7; Mon, 25 Jun 2007 22:31:46 +0300 X-Mailer: exmh version 2.7.2 01/07/2005 with nmh-1.2 To: Julian Elischer In-reply-to: Your message of Mon, 25 Jun 2007 12:20:06 -0700 . Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Mon, 25 Jun 2007 22:31:46 +0300 From: Danny Braniss Message-ID: Cc: freebsd-hackers@freebsd.org, freebsd-current@FreeBSD.ORG Subject: Re: KSE was Re: open/close/ioctl api change? X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jun 2007 19:31:50 -0000 > Danny Braniss wrote: > >> Danny Braniss wrote: > >>>> actually it's the struct thread *tp where my problems are, > >>>> this code works fine under 6.2, and did work till some days ago under current. > >>>> > >>>> static int > >>>> iscsi_open(struct cdev *dev, int flags, int otype, struct thread *td) > >>>> { > >>>> ... > >>>> debug(3, "td->td_proc=%p", td->td_proc); > >>>> debug(3, "td->td_proc->p_pid=%d pid=%d", > >>>> td->td_proc->p_pid, curproc->p_pid); > >>>> ... > >>>> > >>>> the first debug prints out td->td_proc=0 and the next one panics. > >>> found the problem, 'option KSE' which is defined now in DEFAULTS, > >>> and i'm compiling a module! which does not include DEFAULTS! > >>> > >> even so it shouldnt' happen.. > >> > > why? I'm compiling outside the source tree. > > I agree that it shouldn't, specially, since it took me a long > > time to find the problem :-), but I can't see how config options > > can be exported. Unless, the make file is made aware of the KERNCONF file. > > there should be no place in the source at any time where a thread > that is not on the free list could have a td_proc of NULL. > it doesn't matter about where a module came from etc.. the fact that > it happened is a bug somewhere. Julian, I compiled the kernel, and DEFAULT contains option KSE then I compiled the loadable module, outside the source tree, where KSE is not defined, the thread structure has #ifdef KSE ... #endif so my module sees a different thread structure. The real arguable issue is that the #ifdef KSE is below the *td_proc, So td->proc should not be affected by the ifdef. BTW, it was NULL when compiled for i386, garbage for amd64. danny