Messages in this thread | | | Date | Sat, 28 Oct 2006 12:52:13 -0400 (EDT) | From | "Robert P. J. Day" <> | Subject | Re: why "probe_kernel_address()", not "probe_user_address()"? |
| |
On Sat, 28 Oct 2006, Andrew Morton wrote:
> On Sat, 28 Oct 2006 11:56:24 -0400 (EDT) > "Robert P. J. Day" <rpjday@mindspring.com> wrote: > > > > > it seems odd that the purpose of the "probe_kernel_address()" macro > > is, in fact, to probe a *user* address (from linux/uaccess.h): > > > > #define probe_kernel_address(addr, retval) \ > > ({ \ > > long ret; \ > > \ > > inc_preempt_count(); \ > > ret = __get_user(retval, addr); \ > > dec_preempt_count(); \ > > ret; \ > > }) > > > > given that that routine is referenced only 5 places in the > > entire source tree, wouldn't it be more meaningful to use a more > > appropriate name? > > You'll notice that all callers are indeed probing kernel addresses. > The function _could_ be used for user addresses and could perhaps be > called probe_address(). > > One of the reasons this wrapper exists is to communicate that the > __get_user() it is in fact not being used to access user memory.
um ... ok. i think. i agree that "probe_address()" would be a more appropriate name, but i'm still a bit confused as to why "__get_user()" would be used to access something *not* in user memory, given this seemingly unambiguous explanation in include/asm-i386/uaccess.h:
===== * get_user: - Get a simple variable from user space. * @x: Variable to store result. * @ptr: Source address, in user space. * * Context: User context only. This function may sleep. * * This macro copies a single simple variable from user space to kernel * space. It supports simple types like char and int, but not larger * data types like structures or arrays. ... =====
so having probe_kernel_address() invoke __get_user() does seem to be just a wee bit confusing for us newbies. in any event, i'll leave the clarification for someone much higher up the food chain.
rday - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |