]> Pileus Git - ~andy/linux/blobdiff - net/bluetooth/af_bluetooth.c
[NEIGHBOUR]: Use proc_create() to setup ->proc_fops first
[~andy/linux] / net / bluetooth / af_bluetooth.c
index c7228cfc6218b031e17a5f2779595ea365499ce4..1220d8a41eb5ff52d6726250238c975f4cef4e8a 100644 (file)
@@ -95,10 +95,13 @@ int bt_sock_unregister(int proto)
 }
 EXPORT_SYMBOL(bt_sock_unregister);
 
-static int bt_sock_create(struct socket *sock, int proto)
+static int bt_sock_create(struct net *net, struct socket *sock, int proto)
 {
        int err;
 
+       if (net != &init_net)
+               return -EAFNOSUPPORT;
+
        if (proto < 0 || proto >= BT_MAX_PROTO)
                return -EINVAL;
 
@@ -113,7 +116,7 @@ static int bt_sock_create(struct socket *sock, int proto)
        read_lock(&bt_proto_lock);
 
        if (bt_proto[proto] && try_module_get(bt_proto[proto]->owner)) {
-               err = bt_proto[proto]->create(sock, proto);
+               err = bt_proto[proto]->create(net, sock, proto);
                module_put(bt_proto[proto]->owner);
        }
 
@@ -221,7 +224,7 @@ int bt_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
                copied = len;
        }
 
-       skb->h.raw = skb->data;
+       skb_reset_transport_header(skb);
        err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied);
 
        skb_free_datagram(sk, skb);