lkml.org 
[lkml]   [2010]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] ipv4/ip_sockglue.c: copy msg_control optval from user to kernel space
    Date
    ipv4/ip_sockglue.c: copy msg_control optval from user to kernel space

    In do_ip_getsockopt the char __user *optval is used directly in
    IP_PKTOPTIONS for the msg.msg_control and not copied from
    user to kernel address space. This produces a sparse warning:

    warning: incorrect type in assignment (different address spaces)
    expected void *msg_control
    got char [noderef] <asn:1>*optval

    Fix this by using copy _from_user to set msg.msg_control.

    Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
    Cc: "Pekka Savola (ipv6)" <pekkas@netcore.fi>
    Cc: James Morris <jmorris@namei.org>
    Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
    Cc: Patrick McHardy <kaber@trash.net>

    ---

    diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
    index cafad9b..8065456 100644
    --- a/net/ipv4/ip_sockglue.c
    +++ b/net/ipv4/ip_sockglue.c
    @@ -1173,7 +1173,8 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname,
    if (sk->sk_type != SOCK_STREAM)
    return -ENOPROTOOPT;

    - msg.msg_control = optval;
    + if (copy_from_user(msg.msg_control, optval, len))
    + return -EFAULT;
    msg.msg_controllen = len;
    msg.msg_flags = 0;


    \
     
     \ /
      Last update: 2010-01-15 18:27    [W:0.019 / U:30.852 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site