Thread (7 messages) read the whole thread 7 messages, 4 authors, 2017-05-04

Re: net/dccp: dccp_create_openreq_child freed held lock

From: Dmitry Vyukov <dvyukov@google.com>
Date: 2017-03-02 13:03:22
Also in: lkml

On Wed, Mar 1, 2017 at 4:35 PM, Arnaldo Carvalho de Melo
[off-list ref] wrote:
quoted hunk ↗ jump to hunk
Em Wed, Mar 01, 2017 at 10:38:54AM +0100, Dmitry Vyukov escreveu:
quoted
Hello,

I've got the following report while running syzkaller fuzzer on
86292b33d4b79ee03e2f43ea0381ef85f077c760:


It seems that dccp_create_openreq_child needs to unlock the sock if
dccp_feat_activate_values fails.
Yeah, can you please use the patch below, that mimics the error paths in
sk_clone_new(), from where I think even the comment about it being a raw
copy came, but the bh_unlock_sock() didn't?

- Arnaldo
diff --git a/net/dccp/minisocks.c b/net/dccp/minisocks.c
index 53eddf99e4f6..d20d948a98ed 100644
--- a/net/dccp/minisocks.c
+++ b/net/dccp/minisocks.c
@@ -122,6 +122,7 @@ struct sock *dccp_create_openreq_child(const struct sock *sk,
                        /* It is still raw copy of parent, so invalidate
                         * destructor and make plain sk_free() */
                        newsk->sk_destruct = NULL;
+                       bh_unlock_sock(newsk);
                        sk_free(newsk);
                        return NULL;
                }

Applied the patch on bots. Will report if it happens again.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help