Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Oct 2014 14:49:55 +0200
From:      =?UTF-8?B?SmVhbi1Tw6liYXN0aWVuIFDDqWRyb24=?= <dumbbell@FreeBSD.org>
To:        svn-src-all@freebsd.org, Colin Percival <cperciva@FreeBSD.org>
Subject:   Re: svn commit: r273487 - head/sys/kern
Message-ID:  <5448F973.8050102@FreeBSD.org>
In-Reply-To: <201410222335.s9MNZW62045167@svn.freebsd.org>
References:  <201410222335.s9MNZW62045167@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--5siMQmWpgiEsfB9Vd6lr0NHwUw6hjAWRB
Content-Type: multipart/mixed;
 boundary="------------080404040809030003020701"

This is a multi-part message in MIME format.
--------------080404040809030003020701
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hi!

The following change triggers a kernel trap 12 when env is NULL:

> @@ -260,8 +262,10 @@ void
>  freeenv(char *env)
>  {
> =20
> -	if (dynamic_kenv)
> +	if (dynamic_kenv) {
> +		memset(env, 0, strlen(env));
>  		free(env, M_KENV);
> +	}
>  }

This happens very early in boot for me, just after the lines:
    WARNING: WITNESS option enabled, expect reduced performance.
    VT: running with driver "vga".

The attached simple patch fixes the problem.

What I don't know is if the same problem can occur in kern_unsetenv():

> @@ -437,6 +441,7 @@ kern_unsetenv(const char *name)
>  			kenvp[i++] =3D kenvp[j];
>  		kenvp[i] =3D NULL;
>  		mtx_unlock(&kenv_lock);
> +		memset(oldenv, 0, strlen(oldenv));
>  		free(oldenv, M_KENV);
>  		return (0);
>  	}

--=20
Jean-S=C3=A9bastien P=C3=A9dron

--------------080404040809030003020701
Content-Type: text/x-patch;
 name="kern_freeenv-trap12.patch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
 filename="kern_freeenv-trap12.patch"

Index: sys/kern/kern_environment.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- sys/kern/kern_environment.c	(revision 273540)
+++ sys/kern/kern_environment.c	(working copy)
@@ -262,7 +262,7 @@
 freeenv(char *env)
 {
=20
-	if (dynamic_kenv) {
+	if (dynamic_kenv && env !=3D NULL) {
 		memset(env, 0, strlen(env));
 		free(env, M_KENV);
 	}

--------------080404040809030003020701--

--5siMQmWpgiEsfB9Vd6lr0NHwUw6hjAWRB
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQJ8BAEBCgBmBQJUSPl9XxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQ2NzA4N0ZEMUFFQUUwRTEyREJDNkE2RjAz
OUU5OTc2MUE1RkQ5NENDAAoJEDnpl2Gl/ZTMz2UP/jGE7gokzqLfafFummHJ/FJd
tmWOsL5T84kY+rrPw8WfLo5gTH962WqIRTEXivKoxFEAV442gAfYyrd+/HYvXStf
3NKMx2LLuTAjNcfx17EkJgh3zk96+OR9NvrZQvXYV0XyOAIKgOuUjR3PNrr26WCa
KSg80lOrlA52WdE3spuv5V/mXiaFUIydAZE4/fkCE1x928Ta3k0J5Jo73aqQOmG/
dQTljh2ClqOZ6mOmL9pzsJJGRc4G/EkgzqjdqZQE7nXJMZIgIKjpfRGDCaHt6uGO
EmhSh2e/o1V0RedFT4Wy2uzpenYQJXkM1K7kwK4p8bX8Swz9yumigkUQltgLWxlD
+6Bi1VU6BnLqzsHUXerMOPQQWCy0McbyQqj+B6rtsG/whkgPq2b5IvmMw8F137FW
xVPczD/aF3h3/uAKI9wKeAoSAWtU1M2zQimFGFKgpGsG3Xr6FWxjdPOhA8QsLHng
Vb28Vkel0DrHisfxEcJ4Tf1Nyy2is+slzNgkwUZgqPlKwJRE69kFmSVJFtSbaFtp
Ey8xK1BsbrertlkLlQ0HwhJobmk9Q9UjXte5L1hwk/ZJZ1qxainQm7bPcPlvJTw8
dzJdm+m9yYJAGE1H4Z/Q0RCoZzQYId/w4AbWymzVM1qs2rHtEgxfV9g0mGwINrhR
WHsOVrEjMdad906WlMqR
=wQkS
-----END PGP SIGNATURE-----

--5siMQmWpgiEsfB9Vd6lr0NHwUw6hjAWRB--



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