Kernel Space Memory Allocation

Mark Tinguely marktinguely at
Thu Oct 27 13:20:09 UTC 2011

On 10/27/2011 3:31 AM, Daniel Grech wrote:
> 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 *)
> {
>          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
> _______________________________________________
> freebsd-hackers at mailing list
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at"

Be careful if using user virtual addresses in DMA POST commands, because 
the interrupt handler may not have the the same address space as the 
caller. For example: BUS_DMASYNC_POSTREAD copying a bounce buffer to a 
user VA.

--Mark Tinguely

More information about the freebsd-hackers mailing list