patch-2_6_7-vs1_9_1_12
[linux-2.6.git] / net / key / af_key.c
index 6f360a6..645b425 100644 (file)
@@ -1059,7 +1059,7 @@ static struct xfrm_state * pfkey_msg2xfrm_state(struct sadb_msg *hdr,
                struct sadb_address *addr = ext_hdrs[SADB_EXT_ADDRESS_PROXY-1];
 
                /* Nobody uses this, but we try. */
-               pfkey_sadb_addr2xfrm_addr(addr, &x->sel.saddr);
+               x->sel.family = pfkey_sadb_addr2xfrm_addr(addr, &x->sel.saddr);
                x->sel.prefixlen_s = addr->sadb_address_prefixlen;
        }
 
@@ -1976,7 +1976,7 @@ static int pfkey_spddelete(struct sock *sk, struct sk_buff *skb, struct sadb_msg
        memset(&sel, 0, sizeof(sel));
 
        sa = ext_hdrs[SADB_EXT_ADDRESS_SRC-1], 
-       pfkey_sadb_addr2xfrm_addr(sa, &sel.saddr);
+       sel.family = pfkey_sadb_addr2xfrm_addr(sa, &sel.saddr);
        sel.prefixlen_s = sa->sadb_address_prefixlen;
        sel.proto = pfkey_proto_to_xfrm(sa->sadb_address_proto);
        sel.sport = ((struct sockaddr_in *)(sa+1))->sin_port;
@@ -2726,7 +2726,7 @@ static int pfkey_recvmsg(struct kiocb *kiocb,
        int copied, err;
 
        err = -EINVAL;
-       if (flags & ~(MSG_PEEK|MSG_DONTWAIT|MSG_TRUNC))
+       if (flags & ~(MSG_PEEK|MSG_DONTWAIT|MSG_TRUNC|MSG_CMSG_COMPAT))
                goto out;
 
        msg->msg_namelen = 0;