Date: Wed, 27 May 2009 17:38:02 +0300 From: Kostik Belousov <kostikbel@gmail.com> To: Stacey Son <sson@freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r192859 - in head: share/man/man4 sys/conf sys/dev/ksyms sys/kern sys/modules sys/modules/ksyms sys/sys Message-ID: <20090527143802.GJ1927@deviant.kiev.zoral.com.ua> In-Reply-To: <4A1D4EE1.5040902@freebsd.org> References: <200905262139.n4QLd9pI074530@svn.freebsd.org> <20090527111741.GH1927@deviant.kiev.zoral.com.ua> <4A1D4EE1.5040902@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--eC/ZNrsTjQGziECw Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, May 27, 2009 at 09:32:01AM -0500, Stacey Son wrote: > Kostik Belousov wrote: > >On Tue, May 26, 2009 at 09:39:09PM +0000, Stacey Son wrote: > > =20 > >>Author: sson > >>Date: Tue May 26 21:39:09 2009 > >>New Revision: 192859 > >>URL: http://svn.freebsd.org/changeset/base/192859 > >> > >>Log: > >> Add the ksyms(4) pseudo driver. The ksyms driver allows a process to > >> get a quick snapshot of the kernel's symbol table including the symbo= ls > >> from any loaded modules (the symbols are all merged into one symbol > >> table). Unlike like other implementations, this ksyms driver maps > >> memory in the process memory space to store the snapshot at the time > >> /dev/ksyms is opened. It also checks to see if the process has alrea= dy > >> a snapshot open and won't allow it to open /dev/ksyms it again until = it > >> closes first. This prevents kernel and process memory from being > >> exhausted. Note that /dev/ksyms is used by the lockstat(1) command. > >> =20 > >> Reviewed by: gallatin kib (freebsd-arch) > >> Approved by: gnn (mentor) > >> =20 > > > >What is the reason to have ksyms_unmap() ? >=20 >=20 > ksyms_unmap() is used to free the mapping of the memory when /dev/ksyms= =20 > is closed or if the driver fails to create the symbol table snapshot. That was introduction sentence for the next question. And actually, it should be formulated as "why you did not used vm_map_remove()". >=20 > >Why do you think that checking > >for the present mapping of the freed region is neccessary ? >=20 > ksyms_unmap() does check to make sure the memory region is mapped since= =20 > it is possible that the process could have unmap it or changed its=20 > protection before calling close(). I haven't looked at vm_map_delete()= =20 > closely but maybe it make makes this check as well. If so, this check=20 > might be redundant. How this check verifies that process did not unmapped the region and then mapped something other over it ? My point is that this check is not needed at all. If user mode unmapped this area, so be it. If it mapped something over it, then it should be ready to loose the mapping on ksyms close. Replace the ksyms_unmap() with vm_map_remove. --eC/ZNrsTjQGziECw Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (FreeBSD) iEYEARECAAYFAkodUEkACgkQC3+MBN1Mb4iSQgCeMPSPiCOMr78jgxn8dIjiml8c rv0AoIJRTlobWNVFdxDvbMqzDw9/W7n5 =w6fj -----END PGP SIGNATURE----- --eC/ZNrsTjQGziECw--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090527143802.GJ1927>