Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 341946
b: refs/heads/master
c: b96e9c6
h: refs/heads/master
v: v3
  • Loading branch information
Frédéric Dalleau authored and Gustavo Padovan committed Dec 3, 2012
1 parent 54f5a54 commit 3cc3d93
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b9b5ef188e5a2222cfc16ef62a4703080750b451
refs/heads/master: b96e9c671b05f95126753a22145d4509d45ca197
32 changes: 32 additions & 0 deletions trunk/net/bluetooth/sco.c
Original file line number Diff line number Diff line change
Expand Up @@ -666,12 +666,31 @@ static int sco_sock_setsockopt(struct socket *sock, int level, int optname, char
{
struct sock *sk = sock->sk;
int err = 0;
u32 opt;

BT_DBG("sk %p", sk);

lock_sock(sk);

switch (optname) {

case BT_DEFER_SETUP:
if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
err = -EINVAL;
break;
}

if (get_user(opt, (u32 __user *) optval)) {
err = -EFAULT;
break;
}

if (opt)
set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
else
clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
break;

default:
err = -ENOPROTOOPT;
break;
Expand Down Expand Up @@ -753,6 +772,19 @@ static int sco_sock_getsockopt(struct socket *sock, int level, int optname, char
lock_sock(sk);

switch (optname) {

case BT_DEFER_SETUP:
if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
err = -EINVAL;
break;
}

if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags),
(u32 __user *) optval))
err = -EFAULT;

break;

default:
err = -ENOPROTOOPT;
break;
Expand Down

0 comments on commit 3cc3d93

Please sign in to comment.