All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sowmini Varadhan <sowmini.varadhan@oracle.com>
To: Guoqing Jiang <gqjiang@suse.com>
Cc: davem@davemloft.net, netdev@vger.kernel.org
Subject: Re: WARN_ON in commit 0ffdaf5 "net/sock: add WARN_ON(parent->sk) in sock_graft()"
Date: Fri, 4 Aug 2017 07:19:29 -0400	[thread overview]
Message-ID: <20170804111929.GD16796@oracle.com> (raw)
In-Reply-To: <598456CE.7020702@suse.com>

On (08/04/17 19:13), Guoqing Jiang wrote:
> 
> HI,
> 
> With commit 0ffdaf5b41cf4435ece14d1d3e977ce69012a20d "net/sock: add
> WARN_ON(parent->sk) in sock_graft()",
> I can see the WARN_ON is triggered easily by dlm subsystem.
> 
> tcp_accept_from_sock() in  fs/dlm/lowcomms.c has the following snippet:
> 
> 1.    result = sock_create_kern(&init_net, dlm_local_addr[0]->ss_family,
>                                       SOCK_STREAM, IPPROTO_TCP, &newsock);
>         sk is set by the path "sock_create_kern -> __sock_creat ->
> pf->create => inet_create -> sock_init_data"
>     ...
> 2.    result = con->sock->ops->accept(con->sock, newsock, O_NONBLOCK, true);
>         Then sock_graft is called by "con->sock->ops->accept => inet_accept
> -> sock_graft "
> 
> Does it mean call accept() after the just created socket is not a acceptable
> behavior? Any comment will be appreciate, thanks.
> 

It means that you have a sk leak, just like rds-tcp did. See
	https://patchwork.ozlabs.org/patch/780356/
for a discussion.

You should be calling sock_create_lite, instead of sock_create_kern.

The ->sk that triggers the WARN_ON is the one that is leaking (you will
see that the ->sk befrore the ->accept (i.e., the one set up by  sock_create_kern)
is different than the one after ->accept)

--Sowmini

      reply	other threads:[~2017-08-04 11:19 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-04 11:13 WARN_ON in commit 0ffdaf5 "net/sock: add WARN_ON(parent->sk) in sock_graft()" Guoqing Jiang
2017-08-04 11:19 ` Sowmini Varadhan [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170804111929.GD16796@oracle.com \
    --to=sowmini.varadhan@oracle.com \
    --cc=davem@davemloft.net \
    --cc=gqjiang@suse.com \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.