aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVinicius Costa Gomes <vinicius.gomes@openbossa.org>2011-07-08 18:31:46 -0300
committerJaikumar Ganesh <jaikumar@google.com>2011-07-11 11:59:42 -0700
commit89daa34bcd42062221247172ea2653521dc89e6c (patch)
treefd6c25eab6ff386327a9a1494728bd1035a59cf6
parent1fa2de3b1af303eb0b1c04c302bb5f62b4b4c596 (diff)
downloadkernel_samsung_espresso10-89daa34bcd42062221247172ea2653521dc89e6c.zip
kernel_samsung_espresso10-89daa34bcd42062221247172ea2653521dc89e6c.tar.gz
kernel_samsung_espresso10-89daa34bcd42062221247172ea2653521dc89e6c.tar.bz2
Bluetooth: Add support for returning the encryption key size
This will be useful when userspace wants to restrict some kinds of operations based on the length of the key size used to encrypt the link. Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@openbossa.org> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
-rw-r--r--include/net/bluetooth/bluetooth.h1
-rw-r--r--net/bluetooth/l2cap_sock.c4
2 files changed, 5 insertions, 0 deletions
diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h
index 0cfa75b..e727555 100644
--- a/include/net/bluetooth/bluetooth.h
+++ b/include/net/bluetooth/bluetooth.h
@@ -56,6 +56,7 @@
#define BT_SECURITY 4
struct bt_security {
__u8 level;
+ __u8 key_size;
};
#define BT_SECURITY_SDP 0
#define BT_SECURITY_LOW 1
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
index 146b614..5c36b3e 100644
--- a/net/bluetooth/l2cap_sock.c
+++ b/net/bluetooth/l2cap_sock.c
@@ -422,8 +422,12 @@ static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, ch
break;
}
+ memset(&sec, 0, sizeof(sec));
sec.level = chan->sec_level;
+ if (sk->sk_state == BT_CONNECTED)
+ sec.key_size = chan->conn->hcon->enc_key_size;
+
len = min_t(unsigned int, len, sizeof(sec));
if (copy_to_user(optval, (char *) &sec, len))
err = -EFAULT;