lkml.org 
[lkml]   [2003]   [Mar]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [CHECKER] potential dereference of user pointer errors
Date
Hi,

"David S. Miller" <davem@redhat.com> writes:

> On Mon, 2003-03-24 at 14:28, Raja R Harinath wrote:
>> Something like
>>
>> /* struct user_space should never be defined. */
>> typedef struct user_space user_space;
>>
>> int copy_to_user (user_space *to, char *from, size_t len);
>> int copy_from_user (char *to, user_space *from, size_t len);
>> /* ... */
>>
>> #define TREAT_AS_USER_SPACE_POINTER(p) \
>> ({ \
>> BUG_ON(get_fs() != get_gs()); \
>> (user_space *)p; \
>> })
>
> A great idea, we'd need to use this struct user_space at every
> system call,

Which is good, I think. It annotates the source.

> and it doesn't work to well when pointers are embedded inside of a
> structure.

I don't understand this point. 'struct user_space' will never be
defined. The C compiler ensure that 'struct user_space *p' cannot be
dereferenced then, since it will be a pointer to an incomplete type.

I don't see any difference between

struct foo { char *p; };
and

struct foo { user_space *p; };
in terms of the code generated. (On second reading, I don't think
this was your point though).

- Hari
--
Raja R Harinath ------------------------------ harinath@cs.umn.edu
-
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: 2005-03-22 13:34    [from the cache]
©2003-2011 Jasper Spaans