Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Oct 2011 10:31:43 +0200
From:      Daniel Grech <dgre090@gmail.com>
To:        freebsd-hackers@freebsd.org
Subject:   Kernel Space Memory Allocation
Message-ID:  <CAG167sYaz3=Qvv0YYP7YvSkgm2HKkdP-XDu=HBUMv8TV1QUd5A@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi,

I am allocating memory from a device driver in the kernel and passing it on
to another driver. In the other driver it is neccessary for me to determine
whether the address passed is from user space or kernel space as this driver
can also be called from user space. I am currently using the following check
to determine if the address is in kernel space or userspace :

if ( ( (char *) VM_MIN_KERNEL_ADDRESS <= address) &&  (address <= (char *)
VM_MAX_KERNEL_ADDRESS) )
{
        KERNEL SPACE
}
else
{
       USER SPACE
}

However, this does not always work. Sometimes although I allocate memory in
the kernel using the malloc macro, this returns an address which is not in
the above range. Is there any workaround for this problem?

Thanks in advance for your help.

Daniel



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAG167sYaz3=Qvv0YYP7YvSkgm2HKkdP-XDu=HBUMv8TV1QUd5A>