diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-06-27 03:07:19 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-07-22 15:57:56 -0400 |
commit | 67d1214551e800f9fe7dc7c47a346d2df0fafed5 (patch) | |
tree | ffcc93af9390339adda36668255e617073b724a1 /include | |
parent | 158e1645e07f3e9f7e4962d7a0997f5c3b98311b (diff) |
merge task_work and rcu_head, get rid of separate allocation for keyring case
task_work and rcu_head are identical now; merge them (calling the result
struct callback_head, rcu_head #define'd to it), kill separate allocation
in security/keys since we can just use cred->rcu now.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/sched.h | 2 | ||||
-rw-r--r-- | include/linux/task_work.h | 14 | ||||
-rw-r--r-- | include/linux/types.h | 9 |
3 files changed, 10 insertions, 15 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index b9216ebc2789..af3555cc760f 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -1405,7 +1405,7 @@ struct task_struct { | |||
1405 | int (*notifier)(void *priv); | 1405 | int (*notifier)(void *priv); |
1406 | void *notifier_data; | 1406 | void *notifier_data; |
1407 | sigset_t *notifier_mask; | 1407 | sigset_t *notifier_mask; |
1408 | void *task_works; | 1408 | struct callback_head *task_works; |
1409 | 1409 | ||
1410 | struct audit_context *audit_context; | 1410 | struct audit_context *audit_context; |
1411 | #ifdef CONFIG_AUDITSYSCALL | 1411 | #ifdef CONFIG_AUDITSYSCALL |
diff --git a/include/linux/task_work.h b/include/linux/task_work.h index 3b3e2c8d037b..fb46b03b1852 100644 --- a/include/linux/task_work.h +++ b/include/linux/task_work.h | |||
@@ -4,22 +4,16 @@ | |||
4 | #include <linux/list.h> | 4 | #include <linux/list.h> |
5 | #include <linux/sched.h> | 5 | #include <linux/sched.h> |
6 | 6 | ||
7 | struct task_work; | 7 | typedef void (*task_work_func_t)(struct callback_head *); |
8 | typedef void (*task_work_func_t)(struct task_work *); | ||
9 | |||
10 | struct task_work { | ||
11 | struct task_work *next; | ||
12 | task_work_func_t func; | ||
13 | }; | ||
14 | 8 | ||
15 | static inline void | 9 | static inline void |
16 | init_task_work(struct task_work *twork, task_work_func_t func) | 10 | init_task_work(struct callback_head *twork, task_work_func_t func) |
17 | { | 11 | { |
18 | twork->func = func; | 12 | twork->func = func; |
19 | } | 13 | } |
20 | 14 | ||
21 | int task_work_add(struct task_struct *task, struct task_work *twork, bool); | 15 | int task_work_add(struct task_struct *task, struct callback_head *twork, bool); |
22 | struct task_work *task_work_cancel(struct task_struct *, task_work_func_t); | 16 | struct callback_head *task_work_cancel(struct task_struct *, task_work_func_t); |
23 | void task_work_run(void); | 17 | void task_work_run(void); |
24 | 18 | ||
25 | static inline void exit_task_work(struct task_struct *task) | 19 | static inline void exit_task_work(struct task_struct *task) |
diff --git a/include/linux/types.h b/include/linux/types.h index 9c1bd539ea70..bf0dd7524b2a 100644 --- a/include/linux/types.h +++ b/include/linux/types.h | |||
@@ -246,14 +246,15 @@ struct ustat { | |||
246 | }; | 246 | }; |
247 | 247 | ||
248 | /** | 248 | /** |
249 | * struct rcu_head - callback structure for use with RCU | 249 | * struct callback_head - callback structure for use with RCU and task_work |
250 | * @next: next update requests in a list | 250 | * @next: next update requests in a list |
251 | * @func: actual update function to call after the grace period. | 251 | * @func: actual update function to call after the grace period. |
252 | */ | 252 | */ |
253 | struct rcu_head { | 253 | struct callback_head { |
254 | struct rcu_head *next; | 254 | struct callback_head *next; |
255 | void (*func)(struct rcu_head *head); | 255 | void (*func)(struct callback_head *head); |
256 | }; | 256 | }; |
257 | #define rcu_head callback_head | ||
257 | 258 | ||
258 | #endif /* __KERNEL__ */ | 259 | #endif /* __KERNEL__ */ |
259 | #endif /* __ASSEMBLY__ */ | 260 | #endif /* __ASSEMBLY__ */ |