From: Josh Triplett e_start acquires svc_export_cache.hash_lock, and e_stop releases it. Add lock annotations to these two functions so that sparse can check callers for lock pairing, and so that sparse will not complain about these functions since they intentionally use locks in this manner. Signed-off-by: Josh Triplett Cc: Neil Brown Signed-off-by: Andrew Morton --- fs/nfsd/export.c | 2 ++ 1 file changed, 2 insertions(+) diff -puN fs/nfsd/export.c~nfsd-add-lock-annotations-to-e_start-and-e_stop fs/nfsd/export.c --- a/fs/nfsd/export.c~nfsd-add-lock-annotations-to-e_start-and-e_stop +++ a/fs/nfsd/export.c @@ -1078,6 +1078,7 @@ exp_pseudoroot(struct auth_domain *clp, /* Iterator */ static void *e_start(struct seq_file *m, loff_t *pos) + __acquires(svc_export_cache.hash_lock) { loff_t n = *pos; unsigned hash, export; @@ -1131,6 +1132,7 @@ static void *e_next(struct seq_file *m, } static void e_stop(struct seq_file *m, void *p) + __releases(svc_export_cache.hash_lock) { read_unlock(&svc_export_cache.hash_lock); exp_readunlock(); _