Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp3865501rwb; Fri, 30 Sep 2022 09:19:03 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6Yv1EK00qKvrySiMgdLuVN6WMkkZy1GygDyc9pVLjZExEY9Bv+KUhUGJ8kQfwtMKZACv7v X-Received: by 2002:a17:907:2d88:b0:782:a33f:2832 with SMTP id gt8-20020a1709072d8800b00782a33f2832mr6899932ejc.251.1664554742969; Fri, 30 Sep 2022 09:19:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664554742; cv=none; d=google.com; s=arc-20160816; b=QkMnUYQPnnI5jm928PJKSYdi1M+mj39ljPkf9OOkhZqCvfqvqNX0aez04qpxt+plLM rr0vB0BiJI3bivSAoFVO0UGa16MLC1/OA5bv4DQLzK4okDL1dxpOpWfgARy7J3q9LaTM CDy3DjOCR96h1deyjTSEn1bcl19tVNKxfE1Hku/LvrLo2lZHsodIqP19MNxuDig/lPDu VLAP2VmDBbxN2wcqXNnfXwaQPuz4TZwooaXPantLKu7DyMObUeQX5782HDXDS5uF53Lo GtOth7+zSNPW0s7mDo1HAc3G8aUg4EZRXWaQ1HMAxaPEZYMavI4zdGpbIgPZHwNv/+m/ JW5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=zNh+fWMDwTGcr2BpFoXyyeGxIhB+H3qzeZZ4m5l8+ik=; b=dcamh7287zL5cMK5Q5jXCdZguLQBARl0l7VXNa6HHGGecHWO1TGLx08hLNEP1dVWEf qTOQRJCyiWv5Evc17FJgwCmhhxLKTX1+qsAabYrVL7He3n1pMddL6QLBY5IHsWvI6p+6 ZqO/5OcNN09T34FFT2pnPGYN+q6ykjVvbi9WUns3ubblt2miGN7b++2drv7ALVYOTrf9 mZ16RsMmqqXFEBSbXo+Kn2L/UjF42q/e8tYDpuIvB/xK1JAniSthTaxW+rqa+HeZc+QV aJQNxfx/LB61TFKKcyaLoITmnHLmd0KDA2HU8GyzsLnlpxXKB1r9O0asYe8Cz78kM70c QzoA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id lc23-20020a170906dff700b0072b7fac8a7asi1814710ejc.926.2022.09.30.09.18.21; Fri, 30 Sep 2022 09:19:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230438AbiI3QJt (ORCPT + 99 others); Fri, 30 Sep 2022 12:09:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33266 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231237AbiI3QJq (ORCPT ); Fri, 30 Sep 2022 12:09:46 -0400 Received: from mail-il1-f172.google.com (mail-il1-f172.google.com [209.85.166.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8BA7A23BDE; Fri, 30 Sep 2022 09:09:44 -0700 (PDT) Received: by mail-il1-f172.google.com with SMTP id j7so2413970ilu.7; Fri, 30 Sep 2022 09:09:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=zNh+fWMDwTGcr2BpFoXyyeGxIhB+H3qzeZZ4m5l8+ik=; b=xUAxd5m1BXT4Co8TGgACxwuigyj0I04zKdSaziqHAUuksQrLTryIVcQ73jmOqQtlcN tiPFfGbZkFPOQo0i7qajAwZJ27AMpwjCU8RL11UY0tDd0dNdWlKf4Xrxap7IUMj3jxxp LT8xhZEEgldXUC8Cq2rXmKI3WpMkU8kpKzFuB9QbzLlyEpNBj/JAbd0TtoRC3kxLvPwL q0Abfq1M3g5DWY3Ck4JHb22vwhiS2XVlO92lanqYzZJTW6ak4a27JMLWXkD05GHw5wiE vnDDwpkmDlDCB3Pv0YSy3n/aaDc1yernkWdQSSo2d+SuxpIyfTOHBVpxgcbqGPQG8jEb 4UGQ== X-Gm-Message-State: ACrzQf2jX9TkHk87GSUxxCs5Gzj9Ak5m46orCDFh1kO7Cp47ydat0Aoq ZDOWMqE/i8LKVLZAoa9DBj6bl7G70yOcDQ== X-Received: by 2002:a05:6e02:148c:b0:2f7:5790:7c3c with SMTP id n12-20020a056e02148c00b002f757907c3cmr4630125ilk.150.1664554183826; Fri, 30 Sep 2022 09:09:43 -0700 (PDT) Received: from noodle.cs.purdue.edu (switch-lwsn2133-z1r11.cs.purdue.edu. [128.10.127.250]) by smtp.googlemail.com with ESMTPSA id t2-20020a056e02060200b002eae6cf8898sm1093832ils.30.2022.09.30.09.09.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Sep 2022 09:09:43 -0700 (PDT) From: Sungwoo Kim To: luiz.dentz@gmail.com Cc: davem@davemloft.net, edumazet@google.com, iam@sung-woo.kim, johan.hedberg@gmail.com, kuba@kernel.org, linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, marcel@holtmann.org, netdev@vger.kernel.org, pabeni@redhat.com, syzkaller@googlegroups.com Subject: Re: KASAN: use-after-free in __mutex_lock Date: Fri, 30 Sep 2022 12:08:44 -0400 Message-Id: <20220930160843.818893-1-iam@sung-woo.kim> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Hi Dentz, How about to use l2cap_get_chan_by_scid because it looks resposible to handle ref_cnt. Signed-off-by: Sungwoo Kim --- net/bluetooth/l2cap_core.c | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index 2c9de67da..d3a074cbc 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -4291,26 +4291,18 @@ static int l2cap_connect_create_rsp(struct l2cap_conn *conn, BT_DBG("dcid 0x%4.4x scid 0x%4.4x result 0x%2.2x status 0x%2.2x", dcid, scid, result, status); - mutex_lock(&conn->chan_lock); - if (scid) { - chan = __l2cap_get_chan_by_scid(conn, scid); - if (!chan) { - err = -EBADSLT; - goto unlock; - } + chan = l2cap_get_chan_by_scid(conn, scid); + if (!chan) + return -EBADSLT; } else { - chan = __l2cap_get_chan_by_ident(conn, cmd->ident); - if (!chan) { - err = -EBADSLT; - goto unlock; - } + chan = l2cap_get_chan_by_ident(conn, cmd->ident); + if (!chan) + return -EBADSLT; } err = 0; - l2cap_chan_lock(chan); - switch (result) { case L2CAP_CR_SUCCESS: l2cap_state_change(chan, BT_CONFIG); @@ -4336,9 +4328,7 @@ static int l2cap_connect_create_rsp(struct l2cap_conn *conn, } l2cap_chan_unlock(chan); - -unlock: - mutex_unlock(&conn->chan_lock); + l2cap_chan_put(chan); return err; } -- 2.25.1