"Huge?" That's rather an unusual thing to say about kernel memory.
Kernel-level code can access memory in userspace by any one of several mechanisms.
Perhaps if you explained in more detail what it is you are proposing to do?
Probably the most common mechanism is to set up a virtual device, which the user-side application can talk to.
Perhaps the user-side application that actually talks to the kernel device is itself a "root" (or a specific, non-root userid) daemon that is the one that's mainly responsible for providing services to other user-side applications, employing the kernel device as part of its means for doing so.
In your kernel-side code, you definitely want to avoid duplication of data .. and you must be careful not to blindly trust the addresses provided by any user-side code. Usually, the actual programming that's on the kernel side is quite small and specialized: it's on the kernel side only because it cannot be anywhere else.
Last edited by sundialsvcs; 11-28-2006 at 11:20 PM.