diff options
Diffstat (limited to 'net/bluetooth')
| -rw-r--r-- | net/bluetooth/hci_sock.c | 10 | ||||
| -rw-r--r-- | net/bluetooth/rfcomm/core.c | 13 |
2 files changed, 17 insertions, 6 deletions
diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c index bdb6458c6bd5..97bdec73d17e 100644 --- a/net/bluetooth/hci_sock.c +++ b/net/bluetooth/hci_sock.c | |||
| @@ -143,13 +143,15 @@ void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb) | |||
| 143 | static int hci_sock_release(struct socket *sock) | 143 | static int hci_sock_release(struct socket *sock) |
| 144 | { | 144 | { |
| 145 | struct sock *sk = sock->sk; | 145 | struct sock *sk = sock->sk; |
| 146 | struct hci_dev *hdev = hci_pi(sk)->hdev; | 146 | struct hci_dev *hdev; |
| 147 | 147 | ||
| 148 | BT_DBG("sock %p sk %p", sock, sk); | 148 | BT_DBG("sock %p sk %p", sock, sk); |
| 149 | 149 | ||
| 150 | if (!sk) | 150 | if (!sk) |
| 151 | return 0; | 151 | return 0; |
| 152 | 152 | ||
| 153 | hdev = hci_pi(sk)->hdev; | ||
| 154 | |||
| 153 | bt_sock_unlink(&hci_sk_list, sk); | 155 | bt_sock_unlink(&hci_sk_list, sk); |
| 154 | 156 | ||
| 155 | if (hdev) { | 157 | if (hdev) { |
| @@ -311,14 +313,18 @@ static int hci_sock_getname(struct socket *sock, struct sockaddr *addr, int *add | |||
| 311 | { | 313 | { |
| 312 | struct sockaddr_hci *haddr = (struct sockaddr_hci *) addr; | 314 | struct sockaddr_hci *haddr = (struct sockaddr_hci *) addr; |
| 313 | struct sock *sk = sock->sk; | 315 | struct sock *sk = sock->sk; |
| 316 | struct hci_dev *hdev = hci_pi(sk)->hdev; | ||
| 314 | 317 | ||
| 315 | BT_DBG("sock %p sk %p", sock, sk); | 318 | BT_DBG("sock %p sk %p", sock, sk); |
| 316 | 319 | ||
| 320 | if (!hdev) | ||
| 321 | return -EBADFD; | ||
| 322 | |||
| 317 | lock_sock(sk); | 323 | lock_sock(sk); |
| 318 | 324 | ||
| 319 | *addr_len = sizeof(*haddr); | 325 | *addr_len = sizeof(*haddr); |
| 320 | haddr->hci_family = AF_BLUETOOTH; | 326 | haddr->hci_family = AF_BLUETOOTH; |
| 321 | haddr->hci_dev = hci_pi(sk)->hdev->id; | 327 | haddr->hci_dev = hdev->id; |
| 322 | 328 | ||
| 323 | release_sock(sk); | 329 | release_sock(sk); |
| 324 | return 0; | 330 | return 0; |
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c index 0d89d6434136..5b4253c61f62 100644 --- a/net/bluetooth/rfcomm/core.c +++ b/net/bluetooth/rfcomm/core.c | |||
| @@ -46,13 +46,15 @@ | |||
| 46 | #include <net/bluetooth/l2cap.h> | 46 | #include <net/bluetooth/l2cap.h> |
| 47 | #include <net/bluetooth/rfcomm.h> | 47 | #include <net/bluetooth/rfcomm.h> |
| 48 | 48 | ||
| 49 | #define VERSION "1.6" | ||
| 50 | |||
| 51 | #ifndef CONFIG_BT_RFCOMM_DEBUG | 49 | #ifndef CONFIG_BT_RFCOMM_DEBUG |
| 52 | #undef BT_DBG | 50 | #undef BT_DBG |
| 53 | #define BT_DBG(D...) | 51 | #define BT_DBG(D...) |
| 54 | #endif | 52 | #endif |
| 55 | 53 | ||
| 54 | #define VERSION "1.7" | ||
| 55 | |||
| 56 | static unsigned int l2cap_mtu = RFCOMM_MAX_L2CAP_MTU; | ||
| 57 | |||
| 56 | static struct task_struct *rfcomm_thread; | 58 | static struct task_struct *rfcomm_thread; |
| 57 | 59 | ||
| 58 | static DECLARE_MUTEX(rfcomm_sem); | 60 | static DECLARE_MUTEX(rfcomm_sem); |
| @@ -623,7 +625,7 @@ static struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst | |||
| 623 | /* Set L2CAP options */ | 625 | /* Set L2CAP options */ |
| 624 | sk = sock->sk; | 626 | sk = sock->sk; |
| 625 | lock_sock(sk); | 627 | lock_sock(sk); |
| 626 | l2cap_pi(sk)->imtu = RFCOMM_MAX_L2CAP_MTU; | 628 | l2cap_pi(sk)->imtu = l2cap_mtu; |
| 627 | release_sock(sk); | 629 | release_sock(sk); |
| 628 | 630 | ||
| 629 | s = rfcomm_session_add(sock, BT_BOUND); | 631 | s = rfcomm_session_add(sock, BT_BOUND); |
| @@ -1868,7 +1870,7 @@ static int rfcomm_add_listener(bdaddr_t *ba) | |||
| 1868 | /* Set L2CAP options */ | 1870 | /* Set L2CAP options */ |
| 1869 | sk = sock->sk; | 1871 | sk = sock->sk; |
| 1870 | lock_sock(sk); | 1872 | lock_sock(sk); |
| 1871 | l2cap_pi(sk)->imtu = RFCOMM_MAX_L2CAP_MTU; | 1873 | l2cap_pi(sk)->imtu = l2cap_mtu; |
| 1872 | release_sock(sk); | 1874 | release_sock(sk); |
| 1873 | 1875 | ||
| 1874 | /* Start listening on the socket */ | 1876 | /* Start listening on the socket */ |
| @@ -2070,6 +2072,9 @@ static void __exit rfcomm_exit(void) | |||
| 2070 | module_init(rfcomm_init); | 2072 | module_init(rfcomm_init); |
| 2071 | module_exit(rfcomm_exit); | 2073 | module_exit(rfcomm_exit); |
| 2072 | 2074 | ||
| 2075 | module_param(l2cap_mtu, uint, 0644); | ||
| 2076 | MODULE_PARM_DESC(l2cap_mtu, "Default MTU for the L2CAP connection"); | ||
| 2077 | |||
| 2073 | MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>, Marcel Holtmann <marcel@holtmann.org>"); | 2078 | MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>, Marcel Holtmann <marcel@holtmann.org>"); |
| 2074 | MODULE_DESCRIPTION("Bluetooth RFCOMM ver " VERSION); | 2079 | MODULE_DESCRIPTION("Bluetooth RFCOMM ver " VERSION); |
| 2075 | MODULE_VERSION(VERSION); | 2080 | MODULE_VERSION(VERSION); |
