Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
44bfce5c
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
44bfce5c
编写于
2月 08, 2010
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6
上级
bcf4d812
15c697ce
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
38 addition
and
28 deletion
+38
-28
drivers/bluetooth/btmrvl_sdio.c
drivers/bluetooth/btmrvl_sdio.c
+1
-0
net/bluetooth/hci_conn.c
net/bluetooth/hci_conn.c
+3
-0
net/bluetooth/hci_event.c
net/bluetooth/hci_event.c
+1
-0
net/bluetooth/hidp/core.c
net/bluetooth/hidp/core.c
+24
-25
net/bluetooth/hidp/hidp.h
net/bluetooth/hidp/hidp.h
+3
-1
net/bluetooth/rfcomm/core.c
net/bluetooth/rfcomm/core.c
+6
-2
未找到文件。
drivers/bluetooth/btmrvl_sdio.c
浏览文件 @
44bfce5c
...
...
@@ -808,6 +808,7 @@ static int btmrvl_sdio_host_to_card(struct btmrvl_private *priv,
exit:
sdio_release_host
(
card
->
func
);
kfree
(
tmpbuf
);
return
ret
;
}
...
...
net/bluetooth/hci_conn.c
浏览文件 @
44bfce5c
...
...
@@ -377,6 +377,9 @@ struct hci_conn *hci_connect(struct hci_dev *hdev, int type, bdaddr_t *dst, __u8
if
(
acl
->
state
==
BT_CONNECTED
&&
(
sco
->
state
==
BT_OPEN
||
sco
->
state
==
BT_CLOSED
))
{
acl
->
power_save
=
1
;
hci_conn_enter_active_mode
(
acl
);
if
(
lmp_esco_capable
(
hdev
))
hci_setup_sync
(
sco
,
acl
->
handle
);
else
...
...
net/bluetooth/hci_event.c
浏览文件 @
44bfce5c
...
...
@@ -1699,6 +1699,7 @@ static inline void hci_sync_conn_complete_evt(struct hci_dev *hdev, struct sk_bu
break
;
case
0x1c
:
/* SCO interval rejected */
case
0x1a
:
/* Unsupported Remote Feature */
case
0x1f
:
/* Unspecified error */
if
(
conn
->
out
&&
conn
->
attempt
<
2
)
{
conn
->
pkt_type
=
(
hdev
->
esco_type
&
SCO_ESCO_MASK
)
|
...
...
net/bluetooth/hidp/core.c
浏览文件 @
44bfce5c
...
...
@@ -703,29 +703,9 @@ static void hidp_close(struct hid_device *hid)
static
int
hidp_parse
(
struct
hid_device
*
hid
)
{
struct
hidp_session
*
session
=
hid
->
driver_data
;
struct
hidp_connadd_req
*
req
=
session
->
req
;
unsigned
char
*
buf
;
int
ret
;
buf
=
kmalloc
(
req
->
rd_size
,
GFP_KERNEL
);
if
(
!
buf
)
return
-
ENOMEM
;
if
(
copy_from_user
(
buf
,
req
->
rd_data
,
req
->
rd_size
))
{
kfree
(
buf
);
return
-
EFAULT
;
}
ret
=
hid_parse_report
(
session
->
hid
,
buf
,
req
->
rd_size
);
kfree
(
buf
);
if
(
ret
)
return
ret
;
session
->
req
=
NULL
;
return
0
;
return
hid_parse_report
(
session
->
hid
,
session
->
rd_data
,
session
->
rd_size
);
}
static
int
hidp_start
(
struct
hid_device
*
hid
)
...
...
@@ -770,12 +750,24 @@ static int hidp_setup_hid(struct hidp_session *session,
bdaddr_t
src
,
dst
;
int
err
;
session
->
rd_data
=
kzalloc
(
req
->
rd_size
,
GFP_KERNEL
);
if
(
!
session
->
rd_data
)
return
-
ENOMEM
;
if
(
copy_from_user
(
session
->
rd_data
,
req
->
rd_data
,
req
->
rd_size
))
{
err
=
-
EFAULT
;
goto
fault
;
}
session
->
rd_size
=
req
->
rd_size
;
hid
=
hid_allocate_device
();
if
(
IS_ERR
(
hid
))
return
PTR_ERR
(
hid
);
if
(
IS_ERR
(
hid
))
{
err
=
PTR_ERR
(
hid
);
goto
fault
;
}
session
->
hid
=
hid
;
session
->
req
=
req
;
hid
->
driver_data
=
session
;
baswap
(
&
src
,
&
bt_sk
(
session
->
ctrl_sock
->
sk
)
->
src
);
...
...
@@ -806,6 +798,10 @@ static int hidp_setup_hid(struct hidp_session *session,
hid_destroy_device
(
hid
);
session
->
hid
=
NULL
;
fault:
kfree
(
session
->
rd_data
);
session
->
rd_data
=
NULL
;
return
err
;
}
...
...
@@ -900,6 +896,9 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock,
session
->
hid
=
NULL
;
}
kfree
(
session
->
rd_data
);
session
->
rd_data
=
NULL
;
purge:
skb_queue_purge
(
&
session
->
ctrl_transmit
);
skb_queue_purge
(
&
session
->
intr_transmit
);
...
...
net/bluetooth/hidp/hidp.h
浏览文件 @
44bfce5c
...
...
@@ -154,7 +154,9 @@ struct hidp_session {
struct
sk_buff_head
ctrl_transmit
;
struct
sk_buff_head
intr_transmit
;
struct
hidp_connadd_req
*
req
;
/* Report descriptor */
__u8
*
rd_data
;
uint
rd_size
;
};
static
inline
void
hidp_schedule
(
struct
hidp_session
*
session
)
...
...
net/bluetooth/rfcomm/core.c
浏览文件 @
44bfce5c
...
...
@@ -252,7 +252,6 @@ static void rfcomm_session_timeout(unsigned long arg)
BT_DBG
(
"session %p state %ld"
,
s
,
s
->
state
);
set_bit
(
RFCOMM_TIMED_OUT
,
&
s
->
flags
);
rfcomm_session_put
(
s
);
rfcomm_schedule
(
RFCOMM_SCHED_TIMEO
);
}
...
...
@@ -1151,7 +1150,11 @@ static int rfcomm_recv_ua(struct rfcomm_session *s, u8 dlci)
break
;
case
BT_DISCONN
:
rfcomm_session_put
(
s
);
/* When socket is closed and we are not RFCOMM
* initiator rfcomm_process_rx already calls
* rfcomm_session_put() */
if
(
s
->
sock
->
sk
->
sk_state
!=
BT_CLOSED
)
rfcomm_session_put
(
s
);
break
;
}
}
...
...
@@ -1920,6 +1923,7 @@ static inline void rfcomm_process_sessions(void)
if
(
test_and_clear_bit
(
RFCOMM_TIMED_OUT
,
&
s
->
flags
))
{
s
->
state
=
BT_DISCONN
;
rfcomm_send_disc
(
s
,
0
);
rfcomm_session_put
(
s
);
continue
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录