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    [W:0.058 / U:0.076 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site