]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - net/ipv6/udp.c
Merge branch 'next' of git://git.monstr.eu/linux-2.6-microblaze
[mv-sheeva.git] / net / ipv6 / udp.c
index 4f96b5c636856eef46c0ec3a0dd990ae997ee7b0..37b0699e95e5331dffb186f6971411d2d16c88c8 100644 (file)
@@ -342,7 +342,7 @@ int udpv6_recvmsg(struct kiocb *iocb, struct sock *sk,
        struct inet_sock *inet = inet_sk(sk);
        struct sk_buff *skb;
        unsigned int ulen, copied;
-       int peeked;
+       int peeked, off = 0;
        int err;
        int is_udplite = IS_UDPLITE(sk);
        int is_udp4;
@@ -359,7 +359,7 @@ int udpv6_recvmsg(struct kiocb *iocb, struct sock *sk,
 
 try_again:
        skb = __skb_recv_datagram(sk, flags | (noblock ? MSG_DONTWAIT : 0),
-                                 &peeked, &err);
+                                 &peeked, &off, &err);
        if (!skb)
                goto out;
 
@@ -1130,7 +1130,8 @@ do_udp_sendmsg:
        if (!fl6.flowi6_oif && ipv6_addr_is_multicast(&fl6.daddr)) {
                fl6.flowi6_oif = np->mcast_oif;
                connected = 0;
-       }
+       } else if (!fl6.flowi6_oif)
+               fl6.flowi6_oif = np->ucast_oif;
 
        security_sk_classify_flow(sk, flowi6_to_flowi(&fl6));