Re: [PATCH 2/8] raw: Add missing annotations to raw_seq_start() and raw_seq_stop()
From: Jules Irenge <hidden>
Date: 2020-03-11 01:41:00
Also in:
bpf, lkml
On Tue, 10 Mar 2020, Eric Dumazet wrote:
On 3/10/20 6:09 PM, Jules Irenge wrote:quoted
Sparse reports warnings at raw_seq_start() and raw_seq_stop() warning: context imbalance in raw_seq_start() - wrong count at exit warning: context imbalance in raw_seq_stop() - unexpected unlock The root cause is the missing annotations at raw_seq_start() and raw_seq_stop() Add the missing __acquires(&h->lock) annotation Add the missing __releases(&h->lock) annotation Signed-off-by: Jules Irenge <redacted> --- net/ipv4/raw.c | 2 ++ 1 file changed, 2 insertions(+)diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c index 3183413ebc6c..47665919048f 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c@@ -1034,6 +1034,7 @@ static struct sock *raw_get_idx(struct seq_file *seq, loff_t pos) } void *raw_seq_start(struct seq_file *seq, loff_t *pos) + __acquires(&h->lock)I dunno, h variable is not yet defined/declared at this point, this looks weird.quoted
{ struct raw_hashinfo *h = PDE_DATA(file_inode(seq->file));@@ -1056,6 +1057,7 @@ void *raw_seq_next(struct seq_file *seq, void *v, loff_t *pos) EXPORT_SYMBOL_GPL(raw_seq_next); void raw_seq_stop(struct seq_file *seq, void *v) + __releases(&h->lock) { struct raw_hashinfo *h = PDE_DATA(file_inode(seq->file));
Thanks for the feedback, I think h is a pointer of type struct raw_hashinfo, in which member lock is initialized on line number 89. Kind regards