Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
6f239284
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6f239284
编写于
5月 04, 2011
作者:
J
James Morris
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-linus' of
git://git.infradead.org/users/eparis/selinux
into for-linus
上级
609cfda5
bf69d41d
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
26 addition
and
13 deletion
+26
-13
Documentation/flexible-arrays.txt
Documentation/flexible-arrays.txt
+2
-2
include/linux/flex_array.h
include/linux/flex_array.h
+1
-1
lib/flex_array.c
lib/flex_array.c
+18
-6
security/selinux/hooks.c
security/selinux/hooks.c
+2
-1
security/selinux/ss/policydb.c
security/selinux/ss/policydb.c
+3
-3
未找到文件。
Documentation/flexible-arrays.txt
浏览文件 @
6f239284
...
@@ -66,10 +66,10 @@ trick is to ensure that any needed memory allocations are done before
...
@@ -66,10 +66,10 @@ trick is to ensure that any needed memory allocations are done before
entering atomic context, using:
entering atomic context, using:
int flex_array_prealloc(struct flex_array *array, unsigned int start,
int flex_array_prealloc(struct flex_array *array, unsigned int start,
unsigned int
end
, gfp_t flags);
unsigned int
nr_elements
, gfp_t flags);
This function will ensure that memory for the elements indexed in the range
This function will ensure that memory for the elements indexed in the range
defined by start and
end
has been allocated. Thereafter, a
defined by start and
nr_elements
has been allocated. Thereafter, a
flex_array_put() call on an element in that range is guaranteed not to
flex_array_put() call on an element in that range is guaranteed not to
block.
block.
...
...
include/linux/flex_array.h
浏览文件 @
6f239284
...
@@ -61,7 +61,7 @@ struct flex_array {
...
@@ -61,7 +61,7 @@ struct flex_array {
struct
flex_array
*
flex_array_alloc
(
int
element_size
,
unsigned
int
total
,
struct
flex_array
*
flex_array_alloc
(
int
element_size
,
unsigned
int
total
,
gfp_t
flags
);
gfp_t
flags
);
int
flex_array_prealloc
(
struct
flex_array
*
fa
,
unsigned
int
start
,
int
flex_array_prealloc
(
struct
flex_array
*
fa
,
unsigned
int
start
,
unsigned
int
end
,
gfp_t
flags
);
unsigned
int
nr_elements
,
gfp_t
flags
);
void
flex_array_free
(
struct
flex_array
*
fa
);
void
flex_array_free
(
struct
flex_array
*
fa
);
void
flex_array_free_parts
(
struct
flex_array
*
fa
);
void
flex_array_free_parts
(
struct
flex_array
*
fa
);
int
flex_array_put
(
struct
flex_array
*
fa
,
unsigned
int
element_nr
,
void
*
src
,
int
flex_array_put
(
struct
flex_array
*
fa
,
unsigned
int
element_nr
,
void
*
src
,
...
...
lib/flex_array.c
浏览文件 @
6f239284
...
@@ -232,10 +232,10 @@ EXPORT_SYMBOL(flex_array_clear);
...
@@ -232,10 +232,10 @@ EXPORT_SYMBOL(flex_array_clear);
/**
/**
* flex_array_prealloc - guarantee that array space exists
* flex_array_prealloc - guarantee that array space exists
* @fa: the flex array for which to preallocate parts
* @fa:
the flex array for which to preallocate parts
* @start: index of first array element for which space is allocated
* @start:
index of first array element for which space is allocated
* @
end: index of last (inclusive) element
for which space is allocated
* @
nr_elements: number of elements
for which space is allocated
* @flags: page allocation flags
* @flags:
page allocation flags
*
*
* This will guarantee that no future calls to flex_array_put()
* This will guarantee that no future calls to flex_array_put()
* will allocate memory. It can be used if you are expecting to
* will allocate memory. It can be used if you are expecting to
...
@@ -245,14 +245,24 @@ EXPORT_SYMBOL(flex_array_clear);
...
@@ -245,14 +245,24 @@ EXPORT_SYMBOL(flex_array_clear);
* Locking must be provided by the caller.
* Locking must be provided by the caller.
*/
*/
int
flex_array_prealloc
(
struct
flex_array
*
fa
,
unsigned
int
start
,
int
flex_array_prealloc
(
struct
flex_array
*
fa
,
unsigned
int
start
,
unsigned
int
end
,
gfp_t
flags
)
unsigned
int
nr_elements
,
gfp_t
flags
)
{
{
int
start_part
;
int
start_part
;
int
end_part
;
int
end_part
;
int
part_nr
;
int
part_nr
;
unsigned
int
end
;
struct
flex_array_part
*
part
;
struct
flex_array_part
*
part
;
if
(
start
>=
fa
->
total_nr_elements
||
end
>=
fa
->
total_nr_elements
)
if
(
!
start
&&
!
nr_elements
)
return
0
;
if
(
start
>=
fa
->
total_nr_elements
)
return
-
ENOSPC
;
if
(
!
nr_elements
)
return
0
;
end
=
start
+
nr_elements
-
1
;
if
(
end
>=
fa
->
total_nr_elements
)
return
-
ENOSPC
;
return
-
ENOSPC
;
if
(
elements_fit_in_base
(
fa
))
if
(
elements_fit_in_base
(
fa
))
return
0
;
return
0
;
...
@@ -343,6 +353,8 @@ int flex_array_shrink(struct flex_array *fa)
...
@@ -343,6 +353,8 @@ int flex_array_shrink(struct flex_array *fa)
int
part_nr
;
int
part_nr
;
int
ret
=
0
;
int
ret
=
0
;
if
(
!
fa
->
total_nr_elements
)
return
0
;
if
(
elements_fit_in_base
(
fa
))
if
(
elements_fit_in_base
(
fa
))
return
ret
;
return
ret
;
for
(
part_nr
=
0
;
part_nr
<
FLEX_ARRAY_NR_BASE_PTRS
;
part_nr
++
)
{
for
(
part_nr
=
0
;
part_nr
<
FLEX_ARRAY_NR_BASE_PTRS
;
part_nr
++
)
{
...
...
security/selinux/hooks.c
浏览文件 @
6f239284
...
@@ -1578,7 +1578,8 @@ static int may_create(struct inode *dir,
...
@@ -1578,7 +1578,8 @@ static int may_create(struct inode *dir,
return
rc
;
return
rc
;
if
(
!
newsid
||
!
(
sbsec
->
flags
&
SE_SBLABELSUPP
))
{
if
(
!
newsid
||
!
(
sbsec
->
flags
&
SE_SBLABELSUPP
))
{
rc
=
security_transition_sid
(
sid
,
dsec
->
sid
,
tclass
,
NULL
,
&
newsid
);
rc
=
security_transition_sid
(
sid
,
dsec
->
sid
,
tclass
,
&
dentry
->
d_name
,
&
newsid
);
if
(
rc
)
if
(
rc
)
return
rc
;
return
rc
;
}
}
...
...
security/selinux/ss/policydb.c
浏览文件 @
6f239284
...
@@ -502,7 +502,7 @@ static int policydb_index(struct policydb *p)
...
@@ -502,7 +502,7 @@ static int policydb_index(struct policydb *p)
goto
out
;
goto
out
;
rc
=
flex_array_prealloc
(
p
->
type_val_to_struct_array
,
0
,
rc
=
flex_array_prealloc
(
p
->
type_val_to_struct_array
,
0
,
p
->
p_types
.
nprim
-
1
,
GFP_KERNEL
|
__GFP_ZERO
);
p
->
p_types
.
nprim
,
GFP_KERNEL
|
__GFP_ZERO
);
if
(
rc
)
if
(
rc
)
goto
out
;
goto
out
;
...
@@ -519,7 +519,7 @@ static int policydb_index(struct policydb *p)
...
@@ -519,7 +519,7 @@ static int policydb_index(struct policydb *p)
goto
out
;
goto
out
;
rc
=
flex_array_prealloc
(
p
->
sym_val_to_name
[
i
],
rc
=
flex_array_prealloc
(
p
->
sym_val_to_name
[
i
],
0
,
p
->
symtab
[
i
].
nprim
-
1
,
0
,
p
->
symtab
[
i
].
nprim
,
GFP_KERNEL
|
__GFP_ZERO
);
GFP_KERNEL
|
__GFP_ZERO
);
if
(
rc
)
if
(
rc
)
goto
out
;
goto
out
;
...
@@ -2375,7 +2375,7 @@ int policydb_read(struct policydb *p, void *fp)
...
@@ -2375,7 +2375,7 @@ int policydb_read(struct policydb *p, void *fp)
goto
bad
;
goto
bad
;
/* preallocate so we don't have to worry about the put ever failing */
/* preallocate so we don't have to worry about the put ever failing */
rc
=
flex_array_prealloc
(
p
->
type_attr_map_array
,
0
,
p
->
p_types
.
nprim
-
1
,
rc
=
flex_array_prealloc
(
p
->
type_attr_map_array
,
0
,
p
->
p_types
.
nprim
,
GFP_KERNEL
|
__GFP_ZERO
);
GFP_KERNEL
|
__GFP_ZERO
);
if
(
rc
)
if
(
rc
)
goto
bad
;
goto
bad
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录