Commit 4d2deb40 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Paul E. McKenney

kernel: __rcu annotations

This adds annotations for RCU operations in core kernel components
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Al Viro <viro@ZenIV.linux.org.uk>
Cc: Jens Axboe <jens.axboe@oracle.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: default avatarJosh Triplett <josh@joshtriplett.org>
parent d2c2486b
...@@ -31,7 +31,7 @@ struct embedded_fd_set { ...@@ -31,7 +31,7 @@ struct embedded_fd_set {
struct fdtable { struct fdtable {
unsigned int max_fds; unsigned int max_fds;
struct file ** fd; /* current fd array */ struct file __rcu **fd; /* current fd array */
fd_set *close_on_exec; fd_set *close_on_exec;
fd_set *open_fds; fd_set *open_fds;
struct rcu_head rcu; struct rcu_head rcu;
...@@ -46,7 +46,7 @@ struct files_struct { ...@@ -46,7 +46,7 @@ struct files_struct {
* read mostly part * read mostly part
*/ */
atomic_t count; atomic_t count;
struct fdtable *fdt; struct fdtable __rcu *fdt;
struct fdtable fdtab; struct fdtable fdtab;
/* /*
* written part on a separate cache line in SMP * written part on a separate cache line in SMP
...@@ -55,7 +55,7 @@ struct files_struct { ...@@ -55,7 +55,7 @@ struct files_struct {
int next_fd; int next_fd;
struct embedded_fd_set close_on_exec_init; struct embedded_fd_set close_on_exec_init;
struct embedded_fd_set open_fds_init; struct embedded_fd_set open_fds_init;
struct file * fd_array[NR_OPEN_DEFAULT]; struct file __rcu * fd_array[NR_OPEN_DEFAULT];
}; };
#define rcu_dereference_check_fdtable(files, fdtfd) \ #define rcu_dereference_check_fdtable(files, fdtfd) \
......
...@@ -1380,7 +1380,7 @@ struct super_block { ...@@ -1380,7 +1380,7 @@ struct super_block {
* Saved mount options for lazy filesystems using * Saved mount options for lazy filesystems using
* generic_show_options() * generic_show_options()
*/ */
char *s_options; char __rcu *s_options;
}; };
extern struct timespec current_fs_time(struct super_block *sb); extern struct timespec current_fs_time(struct super_block *sb);
......
...@@ -129,8 +129,8 @@ struct blk_scsi_cmd_filter { ...@@ -129,8 +129,8 @@ struct blk_scsi_cmd_filter {
struct disk_part_tbl { struct disk_part_tbl {
struct rcu_head rcu_head; struct rcu_head rcu_head;
int len; int len;
struct hd_struct *last_lookup; struct hd_struct __rcu *last_lookup;
struct hd_struct *part[]; struct hd_struct __rcu *part[];
}; };
struct gendisk { struct gendisk {
...@@ -149,7 +149,7 @@ struct gendisk { ...@@ -149,7 +149,7 @@ struct gendisk {
* non-critical accesses use RCU. Always access through * non-critical accesses use RCU. Always access through
* helpers. * helpers.
*/ */
struct disk_part_tbl *part_tbl; struct disk_part_tbl __rcu *part_tbl;
struct hd_struct part0; struct hd_struct part0;
const struct block_device_operations *fops; const struct block_device_operations *fops;
......
...@@ -137,8 +137,8 @@ extern struct cred init_cred; ...@@ -137,8 +137,8 @@ extern struct cred init_cred;
.children = LIST_HEAD_INIT(tsk.children), \ .children = LIST_HEAD_INIT(tsk.children), \
.sibling = LIST_HEAD_INIT(tsk.sibling), \ .sibling = LIST_HEAD_INIT(tsk.sibling), \
.group_leader = &tsk, \ .group_leader = &tsk, \
.real_cred = &init_cred, \ RCU_INIT_POINTER(.real_cred, &init_cred), \
.cred = &init_cred, \ RCU_INIT_POINTER(.cred, &init_cred), \
.cred_guard_mutex = \ .cred_guard_mutex = \
__MUTEX_INITIALIZER(tsk.cred_guard_mutex), \ __MUTEX_INITIALIZER(tsk.cred_guard_mutex), \
.comm = "swapper", \ .comm = "swapper", \
......
...@@ -53,7 +53,7 @@ struct io_context { ...@@ -53,7 +53,7 @@ struct io_context {
struct radix_tree_root radix_root; struct radix_tree_root radix_root;
struct hlist_head cic_list; struct hlist_head cic_list;
void *ioc_data; void __rcu *ioc_data;
}; };
static inline struct io_context *ioc_task_link(struct io_context *ioc) static inline struct io_context *ioc_task_link(struct io_context *ioc)
......
...@@ -299,7 +299,7 @@ struct mm_struct { ...@@ -299,7 +299,7 @@ struct mm_struct {
* new_owner->mm == mm * new_owner->mm == mm
* new_owner->alloc_lock is held * new_owner->alloc_lock is held
*/ */
struct task_struct *owner; struct task_struct __rcu *owner;
#endif #endif
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment