Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
6f239284
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
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看板
提交
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
entering atomic context, using:
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
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
block.
...
...
include/linux/flex_array.h
浏览文件 @
6f239284
...
...
@@ -61,7 +61,7 @@ struct flex_array {
struct
flex_array
*
flex_array_alloc
(
int
element_size
,
unsigned
int
total
,
gfp_t
flags
);
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_parts
(
struct
flex_array
*
fa
);
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);
/**
* flex_array_prealloc - guarantee that array space exists
* @fa: the flex array for which to preallocate parts
* @start: index of first array element for which space is allocated
* @
end: index of last (inclusive) element
for which space is allocated
* @flags: page allocation flags
* @fa:
the flex array for which to preallocate parts
* @start:
index of first array element for which space is allocated
* @
nr_elements: number of elements
for which space is allocated
* @flags:
page allocation flags
*
* This will guarantee that no future calls to flex_array_put()
* will allocate memory. It can be used if you are expecting to
...
...
@@ -245,14 +245,24 @@ EXPORT_SYMBOL(flex_array_clear);
* Locking must be provided by the caller.
*/
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
end_part
;
int
part_nr
;
unsigned
int
end
;
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
;
if
(
elements_fit_in_base
(
fa
))
return
0
;
...
...
@@ -343,6 +353,8 @@ int flex_array_shrink(struct flex_array *fa)
int
part_nr
;
int
ret
=
0
;
if
(
!
fa
->
total_nr_elements
)
return
0
;
if
(
elements_fit_in_base
(
fa
))
return
ret
;
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,
return
rc
;
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
)
return
rc
;
}
...
...
security/selinux/ss/policydb.c
浏览文件 @
6f239284
...
...
@@ -502,7 +502,7 @@ static int policydb_index(struct policydb *p)
goto
out
;
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
)
goto
out
;
...
...
@@ -519,7 +519,7 @@ static int policydb_index(struct policydb *p)
goto
out
;
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
);
if
(
rc
)
goto
out
;
...
...
@@ -2375,7 +2375,7 @@ int policydb_read(struct policydb *p, void *fp)
goto
bad
;
/* 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
);
if
(
rc
)
goto
bad
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录