From: João Paulo Rechi Vita Date: Sat, 1 May 2010 19:15:42 +0000 (-0300) Subject: Bluetooth: Check if mode is supported on getsockopt X-Git-Tag: v2.6.35-rc1~473^2~194 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0041ecfa3025d7612fdaab12b2f07c9c3c09f42f;p=platform%2Fupstream%2Fkernel-adaptation-pc.git Bluetooth: Check if mode is supported on getsockopt Add this check to getsockopt makes possible to fail early instead of waiting until listen / connect. Signed-off-by: João Paulo Rechi Vita Acked-by: Gustavo F. Padovan Signed-off-by: Marcel Holtmann --- diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c index 1a32562..bf5bb7d 100644 --- a/net/bluetooth/l2cap.c +++ b/net/bluetooth/l2cap.c @@ -1814,9 +1814,22 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, char __us break; } + l2cap_pi(sk)->mode = opts.mode; + switch (l2cap_pi(sk)->mode) { + case L2CAP_MODE_BASIC: + break; + case L2CAP_MODE_ERTM: + case L2CAP_MODE_STREAMING: + if (enable_ertm) + break; + /* fall through */ + default: + err = -EINVAL; + break; + } + l2cap_pi(sk)->imtu = opts.imtu; l2cap_pi(sk)->omtu = opts.omtu; - l2cap_pi(sk)->mode = opts.mode; l2cap_pi(sk)->fcs = opts.fcs; l2cap_pi(sk)->max_tx = opts.max_tx; l2cap_pi(sk)->tx_win = (__u8)opts.txwin_size;