Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
40ffe67d
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
161
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看板
提交
40ffe67d
编写于
3月 14, 2012
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
switch unix_sock to struct path
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
38eff289
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
19 addition
and
29 deletion
+19
-29
include/net/af_unix.h
include/net/af_unix.h
+1
-2
net/unix/af_unix.c
net/unix/af_unix.c
+15
-20
net/unix/diag.c
net/unix/diag.c
+1
-1
security/lsm_audit.c
security/lsm_audit.c
+2
-6
未找到文件。
include/net/af_unix.h
浏览文件 @
40ffe67d
...
...
@@ -49,8 +49,7 @@ struct unix_sock {
/* WARNING: sk has to be the first member */
struct
sock
sk
;
struct
unix_address
*
addr
;
struct
dentry
*
dentry
;
struct
vfsmount
*
mnt
;
struct
path
path
;
struct
mutex
readlock
;
struct
sock
*
peer
;
struct
sock
*
other
;
...
...
net/unix/af_unix.c
浏览文件 @
40ffe67d
...
...
@@ -293,7 +293,7 @@ static struct sock *unix_find_socket_byinode(struct inode *i)
spin_lock
(
&
unix_table_lock
);
sk_for_each
(
s
,
node
,
&
unix_socket_table
[
i
->
i_ino
&
(
UNIX_HASH_SIZE
-
1
)])
{
struct
dentry
*
dentry
=
unix_sk
(
s
)
->
dentry
;
struct
dentry
*
dentry
=
unix_sk
(
s
)
->
path
.
dentry
;
if
(
dentry
&&
dentry
->
d_inode
==
i
)
{
sock_hold
(
s
);
...
...
@@ -377,8 +377,7 @@ static void unix_sock_destructor(struct sock *sk)
static
int
unix_release_sock
(
struct
sock
*
sk
,
int
embrion
)
{
struct
unix_sock
*
u
=
unix_sk
(
sk
);
struct
dentry
*
dentry
;
struct
vfsmount
*
mnt
;
struct
path
path
;
struct
sock
*
skpair
;
struct
sk_buff
*
skb
;
int
state
;
...
...
@@ -389,10 +388,9 @@ static int unix_release_sock(struct sock *sk, int embrion)
unix_state_lock
(
sk
);
sock_orphan
(
sk
);
sk
->
sk_shutdown
=
SHUTDOWN_MASK
;
dentry
=
u
->
dentry
;
u
->
dentry
=
NULL
;
mnt
=
u
->
mnt
;
u
->
mnt
=
NULL
;
path
=
u
->
path
;
u
->
path
.
dentry
=
NULL
;
u
->
path
.
mnt
=
NULL
;
state
=
sk
->
sk_state
;
sk
->
sk_state
=
TCP_CLOSE
;
unix_state_unlock
(
sk
);
...
...
@@ -425,10 +423,8 @@ static int unix_release_sock(struct sock *sk, int embrion)
kfree_skb
(
skb
);
}
if
(
dentry
)
{
dput
(
dentry
);
mntput
(
mnt
);
}
if
(
path
.
dentry
)
path_put
(
&
path
);
sock_put
(
sk
);
...
...
@@ -628,8 +624,8 @@ static struct sock *unix_create1(struct net *net, struct socket *sock)
sk
->
sk_max_ack_backlog
=
net
->
unx
.
sysctl_max_dgram_qlen
;
sk
->
sk_destruct
=
unix_sock_destructor
;
u
=
unix_sk
(
sk
);
u
->
dentry
=
NULL
;
u
->
mnt
=
NULL
;
u
->
path
.
dentry
=
NULL
;
u
->
path
.
mnt
=
NULL
;
spin_lock_init
(
&
u
->
lock
);
atomic_long_set
(
&
u
->
inflight
,
0
);
INIT_LIST_HEAD
(
&
u
->
link
);
...
...
@@ -789,9 +785,9 @@ static struct sock *unix_find_other(struct net *net,
u
=
unix_find_socket_byname
(
net
,
sunname
,
len
,
type
,
hash
);
if
(
u
)
{
struct
dentry
*
dentry
;
dentry
=
unix_sk
(
u
)
->
dentry
;
dentry
=
unix_sk
(
u
)
->
path
.
dentry
;
if
(
dentry
)
touch_atime
(
unix_sk
(
u
)
->
mnt
,
dentry
);
touch_atime
(
unix_sk
(
u
)
->
path
.
mnt
,
dentry
);
}
else
goto
fail
;
}
...
...
@@ -897,8 +893,7 @@ static int unix_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
list
=
&
unix_socket_table
[
addr
->
hash
];
}
else
{
list
=
&
unix_socket_table
[
dentry
->
d_inode
->
i_ino
&
(
UNIX_HASH_SIZE
-
1
)];
u
->
dentry
=
path
.
dentry
;
u
->
mnt
=
path
.
mnt
;
u
->
path
=
path
;
}
err
=
0
;
...
...
@@ -1180,9 +1175,9 @@ static int unix_stream_connect(struct socket *sock, struct sockaddr *uaddr,
atomic_inc
(
&
otheru
->
addr
->
refcnt
);
newu
->
addr
=
otheru
->
addr
;
}
if
(
otheru
->
dentry
)
{
newu
->
dentry
=
dget
(
otheru
->
dentry
);
newu
->
mnt
=
mntget
(
otheru
->
mnt
)
;
if
(
otheru
->
path
.
dentry
)
{
path_get
(
&
otheru
->
path
);
newu
->
path
=
otheru
->
path
;
}
/* Set credentials */
...
...
net/unix/diag.c
浏览文件 @
40ffe67d
...
...
@@ -29,7 +29,7 @@ static int sk_diag_dump_name(struct sock *sk, struct sk_buff *nlskb)
static
int
sk_diag_dump_vfs
(
struct
sock
*
sk
,
struct
sk_buff
*
nlskb
)
{
struct
dentry
*
dentry
=
unix_sk
(
sk
)
->
dentry
;
struct
dentry
*
dentry
=
unix_sk
(
sk
)
->
path
.
dentry
;
struct
unix_diag_vfs
*
uv
;
if
(
dentry
)
{
...
...
security/lsm_audit.c
浏览文件 @
40ffe67d
...
...
@@ -313,12 +313,8 @@ static void dump_common_audit_data(struct audit_buffer *ab,
}
case
AF_UNIX
:
u
=
unix_sk
(
sk
);
if
(
u
->
dentry
)
{
struct
path
path
=
{
.
dentry
=
u
->
dentry
,
.
mnt
=
u
->
mnt
};
audit_log_d_path
(
ab
,
" path="
,
&
path
);
if
(
u
->
path
.
dentry
)
{
audit_log_d_path
(
ab
,
" path="
,
&
u
->
path
);
break
;
}
if
(
!
u
->
addr
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录