lkml.org 
[lkml]   [2006]   [Jul]   [12]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
FromKeith Owens <>
Subjectsparse annotation question
DateWed, 12 Jul 2006 15:47:03 +1000
This fragment of ia64 code calculates the address of a user space
location, starting from a kernel derived (i.e. not user supplied)
pointer.  put_user() has to be used because the code is running in
interrupt context and the calculated target address may be invalid or
paged out.

func (long regno, unsigned long *contents)
{
	unsigned long i, *bsp;
	mm_segment_t old_fs;
	bsp = <expression involving only kernel variables>;
	old_fs = set_fs(KERNEL_DS);
	for (i = 0; i < (regno - 32); ++i)
		bsp = ia64_rse_skip_regs(bsp, 1);
	put_user(*contents, bsp);
	set_fs(old_fs);
}
sparse is complaining that the second parameter to put_user() is not
marked as __user.  How do I tell sparse to ignore this case?  Marking
bsp as __user does not work, sparse then complains about incorrect type
in assignment (different address spaces).

-
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/

\
 
 \ /
  Last update: 2006-07-12 07:49    [from the cache]
©2003-2008