Commit 00e0afb6 authored by Jules Irenge's avatar Jules Irenge Committed by Jan Kara

fsnotify: Add missing annotation for fsnotify_finish_user_wait() and for...

fsnotify: Add missing annotation for fsnotify_finish_user_wait() and for fsnotify_prepare_user_wait()

Sparse reports warnings at fsnotify_prepare_user_wait()
	and at fsnotify_finish_user_wait()

warning: context imbalance in fsnotify_finish_user_wait()
	- wrong count at exit
warning: context imbalance in fsnotify_prepare_user_wait()
	- unexpected unlock

The root cause is the missing annotation at fsnotify_finish_user_wait()
	and at fsnotify_prepare_user_wait()
fsnotify_prepare_user_wait() has an extra annotation __release()
 that only tell Sparse and not GCC to shutdown the warning

Add the missing  __acquires(&fsnotify_mark_srcu) annotation
Add the missing __releases(&fsnotify_mark_srcu) annotation
Add the __release(&fsnotify_mark_srcu) annotation.

Link: https://lore.kernel.org/r/20200413214240.15245-1-jbi.octave@gmail.comSigned-off-by: default avatarJules Irenge <jbi.octave@gmail.com>
Signed-off-by: default avatarJan Kara <jack@suse.cz>
parent 8632e9b5
...@@ -325,14 +325,17 @@ static void fsnotify_put_mark_wake(struct fsnotify_mark *mark) ...@@ -325,14 +325,17 @@ static void fsnotify_put_mark_wake(struct fsnotify_mark *mark)
} }
bool fsnotify_prepare_user_wait(struct fsnotify_iter_info *iter_info) bool fsnotify_prepare_user_wait(struct fsnotify_iter_info *iter_info)
__releases(&fsnotify_mark_srcu)
{ {
int type; int type;
fsnotify_foreach_obj_type(type) { fsnotify_foreach_obj_type(type) {
/* This can fail if mark is being removed */ /* This can fail if mark is being removed */
if (!fsnotify_get_mark_safe(iter_info->marks[type])) if (!fsnotify_get_mark_safe(iter_info->marks[type])) {
__release(&fsnotify_mark_srcu);
goto fail; goto fail;
} }
}
/* /*
* Now that both marks are pinned by refcount in the inode / vfsmount * Now that both marks are pinned by refcount in the inode / vfsmount
...@@ -350,6 +353,7 @@ bool fsnotify_prepare_user_wait(struct fsnotify_iter_info *iter_info) ...@@ -350,6 +353,7 @@ bool fsnotify_prepare_user_wait(struct fsnotify_iter_info *iter_info)
} }
void fsnotify_finish_user_wait(struct fsnotify_iter_info *iter_info) void fsnotify_finish_user_wait(struct fsnotify_iter_info *iter_info)
__acquires(&fsnotify_mark_srcu)
{ {
int type; int type;
......
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