diff options
Diffstat (limited to 'net/bluetooth/rfcomm/sock.c')
-rw-r--r-- | net/bluetooth/rfcomm/sock.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c index c4d3d423f89b..0be7619c5e5e 100644 --- a/net/bluetooth/rfcomm/sock.c +++ b/net/bluetooth/rfcomm/sock.c | |||
@@ -739,8 +739,9 @@ static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, c | |||
739 | static int rfcomm_sock_getsockopt_old(struct socket *sock, int optname, char __user *optval, int __user *optlen) | 739 | static int rfcomm_sock_getsockopt_old(struct socket *sock, int optname, char __user *optval, int __user *optlen) |
740 | { | 740 | { |
741 | struct sock *sk = sock->sk; | 741 | struct sock *sk = sock->sk; |
742 | struct sock *l2cap_sk; | ||
743 | struct l2cap_conn *conn; | ||
742 | struct rfcomm_conninfo cinfo; | 744 | struct rfcomm_conninfo cinfo; |
743 | struct l2cap_conn *conn = l2cap_pi(sk)->chan->conn; | ||
744 | int len, err = 0; | 745 | int len, err = 0; |
745 | u32 opt; | 746 | u32 opt; |
746 | 747 | ||
@@ -783,6 +784,9 @@ static int rfcomm_sock_getsockopt_old(struct socket *sock, int optname, char __u | |||
783 | break; | 784 | break; |
784 | } | 785 | } |
785 | 786 | ||
787 | l2cap_sk = rfcomm_pi(sk)->dlc->session->sock->sk; | ||
788 | conn = l2cap_pi(l2cap_sk)->chan->conn; | ||
789 | |||
786 | memset(&cinfo, 0, sizeof(cinfo)); | 790 | memset(&cinfo, 0, sizeof(cinfo)); |
787 | cinfo.hci_handle = conn->hcon->handle; | 791 | cinfo.hci_handle = conn->hcon->handle; |
788 | memcpy(cinfo.dev_class, conn->hcon->dev_class, 3); | 792 | memcpy(cinfo.dev_class, conn->hcon->dev_class, 3); |