This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / net / bluetooth / hci_sock.c
index ceee707..4d16b40 100644 (file)
    SOFTWARE IS DISCLAIMED.
 */
 
-/*
- * Bluetooth HCI socket layer.
- *
- * $Id: hci_sock.c,v 1.4 2002/04/18 22:26:14 maxk Exp $
- */
+/* Bluetooth HCI sockets. */
 
 #include <linux/config.h>
 #include <linux/module.h>
@@ -56,7 +52,7 @@
 
 #ifndef CONFIG_BT_HCI_SOCK_DEBUG
 #undef  BT_DBG
-#define BT_DBG( A... )
+#define BT_DBG(D...)
 #endif
 
 /* ----- HCI socket interface ----- */
@@ -139,7 +135,6 @@ void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb)
 
                if (sock_queue_rcv_skb(sk, nskb))
                        kfree_skb(nskb);
-               
        }
        read_unlock(&hci_sk_list.lock);
 }
@@ -318,14 +313,14 @@ static inline void hci_sock_cmsg(struct sock *sk, struct msghdr *msg, struct sk_
        __u32 mask = hci_pi(sk)->cmsg_mask;
 
        if (mask & HCI_CMSG_DIR)
-               put_cmsg(msg, SOL_HCI, HCI_CMSG_DIR, sizeof(int), &bt_cb(skb)->incoming);
+               put_cmsg(msg, SOL_HCI, HCI_CMSG_DIR, sizeof(int), &bt_cb(skb)->incoming);
 
        if (mask & HCI_CMSG_TSTAMP)
-               put_cmsg(msg, SOL_HCI, HCI_CMSG_TSTAMP, sizeof(skb->stamp), &skb->stamp);
+               put_cmsg(msg, SOL_HCI, HCI_CMSG_TSTAMP, sizeof(skb->stamp), &skb->stamp);
 }
  
 static int hci_sock_recvmsg(struct kiocb *iocb, struct socket *sock, 
-                           struct msghdr *msg, size_t len, int flags)
+                               struct msghdr *msg, size_t len, int flags)
 {
        int noblock = flags & MSG_DONTWAIT;
        struct sock *sk = sock->sk;
@@ -355,7 +350,7 @@ static int hci_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
        err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied);
 
        hci_sock_cmsg(sk, msg, skb);
-       
+
        skb_free_datagram(sk, skb);
 
        return err ? : copied;
@@ -406,7 +401,7 @@ static int hci_sock_sendmsg(struct kiocb *iocb, struct socket *sock,
 
                if (((ogf > HCI_SFLT_MAX_OGF) ||
                                !hci_test_bit(ocf & HCI_FLT_OCF_BITS, &hci_sec_filter.ocf_mask[ogf])) &&
-                                       !capable(CAP_NET_RAW)) {
+                                       !capable(CAP_NET_RAW)) {
                        err = -EPERM;
                        goto drop;
                }
@@ -439,7 +434,7 @@ drop:
        goto done;
 }
 
-int hci_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int len)
+int hci_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int len)
 {
        struct hci_ufilter uf = { .opcode = 0 };
        struct sock *sk = sock->sk;
@@ -451,7 +446,7 @@ int hci_sock_setsockopt(struct socket *sock, int level, int optname, char *optva
 
        switch (optname) {
        case HCI_DATA_DIR:
-               if (get_user(opt, (int *)optval)) {
+               if (get_user(opt, (int __user *)optval)) {
                        err = -EFAULT;
                        break;
                }
@@ -463,7 +458,7 @@ int hci_sock_setsockopt(struct socket *sock, int level, int optname, char *optva
                break;
 
        case HCI_TIME_STAMP:
-               if (get_user(opt, (int *)optval)) {
+               if (get_user(opt, (int __user *)optval)) {
                        err = -EFAULT;
                        break;
                }
@@ -487,9 +482,9 @@ int hci_sock_setsockopt(struct socket *sock, int level, int optname, char *optva
                        uf.event_mask[1] &= *((u32 *) hci_sec_filter.event_mask + 1);
                }
 
-               {       
+               {
                        struct hci_filter *f = &hci_pi(sk)->filter;
-               
+
                        f->type_mask = uf.type_mask;
                        f->opcode    = uf.opcode;
                        *((u32 *) f->event_mask + 0) = uf.event_mask[0];
@@ -501,12 +496,12 @@ int hci_sock_setsockopt(struct socket *sock, int level, int optname, char *optva
                err = -ENOPROTOOPT;
                break;
        }
-       
+
        release_sock(sk);
        return err;
 }
 
-int hci_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen)
+int hci_sock_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen)
 {
        struct hci_ufilter uf;
        struct sock *sk = sock->sk;
@@ -539,7 +534,7 @@ int hci_sock_getsockopt(struct socket *sock, int level, int optname, char *optva
        case HCI_FILTER:
                {
                        struct hci_filter *f = &hci_pi(sk)->filter;
-               
+
                        uf.type_mask = f->type_mask;
                        uf.opcode    = f->opcode;
                        uf.event_mask[0] = *((u32 *) f->event_mask + 0);
@@ -560,23 +555,23 @@ int hci_sock_getsockopt(struct socket *sock, int level, int optname, char *optva
 }
 
 struct proto_ops hci_sock_ops = {
-       .family =       PF_BLUETOOTH,
-       .owner =        THIS_MODULE,
-       .release =      hci_sock_release,
-       .bind =         hci_sock_bind,
-       .getname =      hci_sock_getname,
-       .sendmsg =      hci_sock_sendmsg,
-       .recvmsg =      hci_sock_recvmsg,
-       .ioctl =        hci_sock_ioctl,
-       .poll =         datagram_poll,
-       .listen =       sock_no_listen,
-       .shutdown =     sock_no_shutdown,
-       .setsockopt =   hci_sock_setsockopt,
-       .getsockopt =   hci_sock_getsockopt,
-       .connect =      sock_no_connect,
-       .socketpair =   sock_no_socketpair,
-       .accept =       sock_no_accept,
-       .mmap =         sock_no_mmap
+       .family         = PF_BLUETOOTH,
+       .owner          = THIS_MODULE,
+       .release        = hci_sock_release,
+       .bind           = hci_sock_bind,
+       .getname        = hci_sock_getname,
+       .sendmsg        = hci_sock_sendmsg,
+       .recvmsg        = hci_sock_recvmsg,
+       .ioctl          = hci_sock_ioctl,
+       .poll           = datagram_poll,
+       .listen         = sock_no_listen,
+       .shutdown       = sock_no_shutdown,
+       .setsockopt     = hci_sock_setsockopt,
+       .getsockopt     = hci_sock_getsockopt,
+       .connect        = sock_no_connect,
+       .socketpair     = sock_no_socketpair,
+       .accept         = sock_no_accept,
+       .mmap           = sock_no_mmap
 };
 
 static int hci_sock_create(struct socket *sock, int protocol)
@@ -597,7 +592,7 @@ static int hci_sock_create(struct socket *sock, int protocol)
        sk_set_owner(sk, THIS_MODULE);
 
        sock->state = SS_UNCONNECTED;
-       sk->sk_state   = BT_OPEN;
+       sk->sk_state = BT_OPEN;
 
        bt_sock_link(&hci_sk_list, sk);
        return 0;
@@ -607,14 +602,14 @@ static int hci_sock_dev_event(struct notifier_block *this, unsigned long event,
 {
        struct hci_dev *hdev = (struct hci_dev *) ptr;
        struct hci_ev_si_device ev;
-       
+
        BT_DBG("hdev %s event %ld", hdev->name, event);
 
        /* Send event to sockets */
        ev.event  = event;
        ev.dev_id = hdev->id;
        hci_si_event(NULL, HCI_EV_SI_DEVICE, sizeof(ev), &ev);
-       
+
        if (event == HCI_DEV_UNREG) {
                struct sock *sk;
                struct hlist_node *node;
@@ -640,9 +635,9 @@ static int hci_sock_dev_event(struct notifier_block *this, unsigned long event,
 }
 
 struct net_proto_family hci_sock_family_ops = {
-       .family = PF_BLUETOOTH,
+       .family = PF_BLUETOOTH,
        .owner  = THIS_MODULE,
-       .create = hci_sock_create,
+       .create = hci_sock_create,
 };
 
 struct notifier_block hci_sock_nblock = {