--- zzzz-none-000/linux-2.6.19.2/net/ipv4/raw.c 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5505/linux-2.6.19.2/net/ipv4/raw.c 2007-01-11 07:38:19.000000000 +0000 @@ -329,7 +329,7 @@ return err; } -static int raw_probe_proto_opt(struct flowi *fl, struct msghdr *msg) +static void raw_probe_proto_opt(struct flowi *fl, struct msghdr *msg) { struct iovec *iov; u8 __user *type = NULL; @@ -338,7 +338,7 @@ unsigned int i; if (!msg->msg_iov) - return 0; + return; for (i = 0; i < msg->msg_iovlen; i++) { iov = &msg->msg_iov[i]; @@ -360,9 +360,8 @@ code = iov->iov_base; if (type && code) { - if (get_user(fl->fl_icmp_type, type) || - get_user(fl->fl_icmp_code, code)) - return -EFAULT; + get_user(fl->fl_icmp_type, type); + get_user(fl->fl_icmp_code, code); probed = 1; } break; @@ -373,7 +372,6 @@ if (probed) break; } - return 0; } static int raw_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, @@ -482,11 +480,8 @@ .proto = inet->hdrincl ? IPPROTO_RAW : sk->sk_protocol, }; - if (!inet->hdrincl) { - err = raw_probe_proto_opt(&fl, msg); - if (err) - goto done; - } + if (!inet->hdrincl) + raw_probe_proto_opt(&fl, msg); security_sk_classify_flow(sk, &fl); err = ip_route_output_flow(&rt, &fl, sk, !(msg->msg_flags&MSG_DONTWAIT));