ipmr, ip6mr: fix scheduling while atomic and a deadlock with ipmr_get_route
[pandora-kernel.git] / net / ipv6 / ip6mr.c
index 02b3c82..7a3923b 100644 (file)
@@ -2137,8 +2137,8 @@ rtattr_failure:
        return -EMSGSIZE;
 }
 
-int ip6mr_get_route(struct net *net,
-                   struct sk_buff *skb, struct rtmsg *rtm, int nowait)
+int ip6mr_get_route(struct net *net, struct sk_buff *skb, struct rtmsg *rtm,
+                   int nowait, u32 portid)
 {
        int err;
        struct mr6_table *mrt;
@@ -2176,6 +2176,7 @@ int ip6mr_get_route(struct net *net,
                        return -ENOMEM;
                }
 
+               NETLINK_CB(skb2).pid = portid;
                skb_reset_transport_header(skb2);
 
                skb_put(skb2, sizeof(struct ipv6hdr));