diff options
| -rw-r--r-- | net/bluetooth/l2cap_sock.c | 4 | ||||
| -rw-r--r-- | net/bluetooth/rfcomm/sock.c | 3 | ||||
| -rw-r--r-- | net/bluetooth/sco.c | 5 | ||||
| -rw-r--r-- | security/security.c | 1 |
4 files changed, 12 insertions, 1 deletions
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c index 61f1f623091d..e8292369cdcf 100644 --- a/net/bluetooth/l2cap_sock.c +++ b/net/bluetooth/l2cap_sock.c | |||
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | /* Bluetooth L2CAP sockets. */ | 27 | /* Bluetooth L2CAP sockets. */ |
| 28 | 28 | ||
| 29 | #include <linux/security.h> | ||
| 30 | |||
| 29 | #include <net/bluetooth/bluetooth.h> | 31 | #include <net/bluetooth/bluetooth.h> |
| 30 | #include <net/bluetooth/hci_core.h> | 32 | #include <net/bluetooth/hci_core.h> |
| 31 | #include <net/bluetooth/l2cap.h> | 33 | #include <net/bluetooth/l2cap.h> |
| @@ -933,6 +935,8 @@ static void l2cap_sock_init(struct sock *sk, struct sock *parent) | |||
| 933 | chan->force_reliable = pchan->force_reliable; | 935 | chan->force_reliable = pchan->force_reliable; |
| 934 | chan->flushable = pchan->flushable; | 936 | chan->flushable = pchan->flushable; |
| 935 | chan->force_active = pchan->force_active; | 937 | chan->force_active = pchan->force_active; |
| 938 | |||
| 939 | security_sk_clone(parent, sk); | ||
| 936 | } else { | 940 | } else { |
| 937 | 941 | ||
| 938 | switch (sk->sk_type) { | 942 | switch (sk->sk_type) { |
diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c index 482722bbc7a0..5417f6127323 100644 --- a/net/bluetooth/rfcomm/sock.c +++ b/net/bluetooth/rfcomm/sock.c | |||
| @@ -42,6 +42,7 @@ | |||
| 42 | #include <linux/device.h> | 42 | #include <linux/device.h> |
| 43 | #include <linux/debugfs.h> | 43 | #include <linux/debugfs.h> |
| 44 | #include <linux/seq_file.h> | 44 | #include <linux/seq_file.h> |
| 45 | #include <linux/security.h> | ||
| 45 | #include <net/sock.h> | 46 | #include <net/sock.h> |
| 46 | 47 | ||
| 47 | #include <asm/system.h> | 48 | #include <asm/system.h> |
| @@ -264,6 +265,8 @@ static void rfcomm_sock_init(struct sock *sk, struct sock *parent) | |||
| 264 | 265 | ||
| 265 | pi->sec_level = rfcomm_pi(parent)->sec_level; | 266 | pi->sec_level = rfcomm_pi(parent)->sec_level; |
| 266 | pi->role_switch = rfcomm_pi(parent)->role_switch; | 267 | pi->role_switch = rfcomm_pi(parent)->role_switch; |
| 268 | |||
| 269 | security_sk_clone(parent, sk); | ||
| 267 | } else { | 270 | } else { |
| 268 | pi->dlc->defer_setup = 0; | 271 | pi->dlc->defer_setup = 0; |
| 269 | 272 | ||
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c index 8270f05e3f1f..a324b009e34b 100644 --- a/net/bluetooth/sco.c +++ b/net/bluetooth/sco.c | |||
| @@ -41,6 +41,7 @@ | |||
| 41 | #include <linux/debugfs.h> | 41 | #include <linux/debugfs.h> |
| 42 | #include <linux/seq_file.h> | 42 | #include <linux/seq_file.h> |
| 43 | #include <linux/list.h> | 43 | #include <linux/list.h> |
| 44 | #include <linux/security.h> | ||
| 44 | #include <net/sock.h> | 45 | #include <net/sock.h> |
| 45 | 46 | ||
| 46 | #include <asm/system.h> | 47 | #include <asm/system.h> |
| @@ -403,8 +404,10 @@ static void sco_sock_init(struct sock *sk, struct sock *parent) | |||
| 403 | { | 404 | { |
| 404 | BT_DBG("sk %p", sk); | 405 | BT_DBG("sk %p", sk); |
| 405 | 406 | ||
| 406 | if (parent) | 407 | if (parent) { |
| 407 | sk->sk_type = parent->sk_type; | 408 | sk->sk_type = parent->sk_type; |
| 409 | security_sk_clone(parent, sk); | ||
| 410 | } | ||
| 408 | } | 411 | } |
| 409 | 412 | ||
| 410 | static struct proto sco_proto = { | 413 | static struct proto sco_proto = { |
diff --git a/security/security.c b/security/security.c index 0e4fccfef12c..d9e153390926 100644 --- a/security/security.c +++ b/security/security.c | |||
| @@ -1097,6 +1097,7 @@ void security_sk_clone(const struct sock *sk, struct sock *newsk) | |||
| 1097 | { | 1097 | { |
| 1098 | security_ops->sk_clone_security(sk, newsk); | 1098 | security_ops->sk_clone_security(sk, newsk); |
| 1099 | } | 1099 | } |
| 1100 | EXPORT_SYMBOL(security_sk_clone); | ||
| 1100 | 1101 | ||
| 1101 | void security_sk_classify_flow(struct sock *sk, struct flowi *fl) | 1102 | void security_sk_classify_flow(struct sock *sk, struct flowi *fl) |
| 1102 | { | 1103 | { |
