Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Jul 2011 11:14:32 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Doug Barton <dougb@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Pan Tsu <inyaoo@gmail.com>
Subject:   Re: svn commit: r223917 - head/etc/rc.d
Message-ID:  <201107111114.33159.jhb@freebsd.org>
In-Reply-To: <4E1A498B.9080506@FreeBSD.org>
References:  <201107102347.p6ANl3qK066321__21248.7196004533$1310341655$gmane$org@svn.freebsd.org> <86ipr9sl4j.fsf@gmail.com> <4E1A498B.9080506@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday, July 10, 2011 8:53:31 pm Doug Barton wrote:
> On 07/10/2011 17:42, Pan Tsu wrote:
> > Doug Barton <dougb@FreeBSD.org> writes:
> > 
> >> Author: dougb
> >> Date: Sun Jul 10 23:47:03 2011
> >> New Revision: 223917
> >> URL: http://svn.freebsd.org/changeset/base/223917
> >>
> >> Log:
> >>   Make sure we load kernel modules from the same path as the running 
kernel
> >>
> >> Modified:
> >>   head/etc/rc.d/kld
> >>
> >> Modified: head/etc/rc.d/kld
> >> 
==============================================================================
> >> --- head/etc/rc.d/kld	Sun Jul 10 22:09:53 2011	(r223916)
> >> +++ head/etc/rc.d/kld	Sun Jul 10 23:47:03 2011	(r223917)
> >> @@ -41,11 +41,24 @@ kld_start()
> >>  {
> >>  	[ -n "$kld_list" ] || return
> >>  
> >> -	local _kld
> >> +	local _kernel_path _module_path _kld _path
> >> +
> >> +	_kernel_path=`$SYSCTL_N kern.bootfile`
> >> +	_kernel_path="${_kernel_path%/*}"
> >> +
> >> +	_module_path=`$SYSCTL_N kern.module_path`
> >> +	_module_path="${_module_path#*\;}"
> >> +	_module_path="$_kernel_path `ltr $_module_path \; ' '`"
> > [...]
> > 
> > Doesn't /boot/support.4th already populates kern.module_path with
> > the path of successfully booted kernel? How is this different?
> 
> When you test it, what happens?

If you do 'boot foo' at the loader prompt you get 
/boot/foo;/boot/kernel;/boot/modules.

It is arguably broken that the old /boot/kernel is still in the list, but that 
bug should be fixed in the loader, not here.  However, I've never had a 
problem with kldload doing the wrong thing when using 'boot foo'.  Do you have 
an actual use case that is broken?

Oh, and if you use 'nextboot -k foo' or set 'kernel=foo' in loader.conf then 
it will DTRT.  However, I would expect this script to be equivalent to a for 
loop of 'kldload foo', but now it isn't since you are using a divergent 
algorithm.  That violates POLA IMO.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201107111114.33159.jhb>