Message ID | 20161102125454.754267793@openvz.org |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On 11/2/16 6:36 AM, Cyrill Gorcunov wrote: > I managed to miss that sk_for_each is called under "for" > cycle so need to use goto here to return matching socket. > > CC: David S. Miller <davem@davemloft.net> > CC: Eric Dumazet <eric.dumazet@gmail.com> > CC: David Ahern <dsa@cumulusnetworks.com> > CC: Andrey Vagin <avagin@openvz.org> > CC: Stephen Hemminger <stephen@networkplumber.org> > Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org> > --- > net/ipv4/raw_diag.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) Acked-by: David Ahern <dsa@cumulusnetworks.com>
Index: linux-ml.git/net/ipv4/raw_diag.c =================================================================== --- linux-ml.git.orig/net/ipv4/raw_diag.c +++ linux-ml.git/net/ipv4/raw_diag.c @@ -79,10 +79,11 @@ static struct sock *raw_sock_get(struct * hashinfo->lock here. */ sock_hold(sk); - break; + goto out_unlock; } } } +out_unlock: read_unlock(&hashinfo->lock); return sk ? sk : ERR_PTR(-ENOENT);
I managed to miss that sk_for_each is called under "for" cycle so need to use goto here to return matching socket. CC: David S. Miller <davem@davemloft.net> CC: Eric Dumazet <eric.dumazet@gmail.com> CC: David Ahern <dsa@cumulusnetworks.com> CC: Andrey Vagin <avagin@openvz.org> CC: Stephen Hemminger <stephen@networkplumber.org> Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org> --- net/ipv4/raw_diag.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)