Date: Wed, 22 Feb 2012 20:06:20 -0500 From: Ryan Stone <rysto32@gmail.com> To: Ian Lepore <freebsd@damnhippie.dyndns.org> Cc: freebsd-hackers@freebsd.org, Svetlin Manavski <svetlin.manavski@itrinegy.com> Subject: Re: How to access kernel memory from user space Message-ID: <CAFMmRNx_f4pPzPKipC_3gORHkbauhi1jqMmOY7z_Pf8kdit_pw@mail.gmail.com> In-Reply-To: <1329938141.21804.4.camel@revolution.hippie.lan> References: <CACRNAiv_huiJuzXHsEKNHdFdnpFuAK7fimjWbVVfmdRth2nVDA@mail.gmail.com> <1329938141.21804.4.camel@revolution.hippie.lan>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Feb 22, 2012 at 2:15 PM, Ian Lepore <freebsd@damnhippie.dyndns.org> wrote: > I've never done this, but if I needed to, I think the first thing I'd > try is to use an mmap(2) of /dev/kmem to map the memory you need into > userspace (of course your userspace app will need to be running with > root privs to do this). > > That leaves the interesting problem of locating what offset within the > kernel virtual address space you need to map to get at your data. =A0Two > things come to mind... have your kernel module export the address in a > sysctl (that feels kind of hack-ish but it should be quick and easy to > do), or use libkvm's kvm_nlist() function to locate the symbol within > your module (I think that should be possible; again I've never actually > done any of this). A far easier way to do this is to have the module create its own device in /dev that exports the memory by implementing the mmap interface in the cdev.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFMmRNx_f4pPzPKipC_3gORHkbauhi1jqMmOY7z_Pf8kdit_pw>