Skip site navigation (1)Skip section navigation (2)
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>