Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp50853rwb; Mon, 26 Sep 2022 14:35:07 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6pJiWjw4ncLRDdnxVSd+n0OR9le3lQsNJfsg88XQYA9GV8sM8Re7zBRI2OkILAAO2vOAxi X-Received: by 2002:a05:6402:1e92:b0:451:dcf:641d with SMTP id f18-20020a0564021e9200b004510dcf641dmr24780820edf.335.1664228107350; Mon, 26 Sep 2022 14:35:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664228107; cv=none; d=google.com; s=arc-20160816; b=T1jTXcWZyhBDp2CcdjN2RI7InuzmgLfMQa/N4IjOQyeOkEGjT3dcSXbhvqq0eTjU+t WeEMyyk67fXI7IVszaoBMNXxY1/nq5Y/4TX086YdTg137JtcCq/HEQKrJctmk54pMQij Yj18Ku8vL/gCqswFe1mKv0m7vyzFPy0XzpyKA+BS27m+tuIpuSg2Rb53xL4Q1xtB2RPH 1fnkTiiDDOgPHqQ/Bj9OfYTLqWGRTcqc0zwFnr3v1z0uCuVXieAlwzJ8DuDqWSxnEFYY MBV6000uyY+VZlUVAvPpSvfa3r1ko5TN0Ac6jSHf+jdbUwY8sMhhse/a2aprwsGn/fJu GkRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=wOCqP9mDpJwt9v/xIiVkrBeoGQeF5SHuPiddJ/jF30o=; b=WkxJACLIcqXTgau1YG3vu2ni1pByLRoI76at9fqipqig7FpwO7nyvZiWE7Ue+ngjm7 sECcGaJy9XBj3pzGoqlsQmIDobSAiPUUL1fdQHLxD3N5yceOcFGrHue1UlJugGkTtBnn Vueu0wznx4g4Oy+AsSLzHeRCinVSDGFqJW2JO8p9Y9y3YQfTW0ef5tmvc/KN7uGNwxog WpkcTfpTq3mEe7CiTrt0FZNYRSEQQG8FWaaEae76TomBE2gdco476pCTKa4rKyAQHJsR 1ihOzF7W839wy767HtawP98O676JLjors5QYM7CAR66bQUJNKUyMOITOxL1by56DVnAz djPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="f079x/7P"; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w9-20020a50c449000000b0044e702cd711si15854683edf.98.2022.09.26.14.34.25; Mon, 26 Sep 2022 14:35:07 -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; dkim=pass header.i=@gmail.com header.s=20210112 header.b="f079x/7P"; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231189AbiIZVdz (ORCPT + 99 others); Mon, 26 Sep 2022 17:33:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34912 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230420AbiIZVdp (ORCPT ); Mon, 26 Sep 2022 17:33:45 -0400 Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com [IPv6:2a00:1450:4864:20::12d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7AB11A284A; Mon, 26 Sep 2022 14:33:44 -0700 (PDT) Received: by mail-lf1-x12d.google.com with SMTP id d42so12999707lfv.0; Mon, 26 Sep 2022 14:33:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date; bh=wOCqP9mDpJwt9v/xIiVkrBeoGQeF5SHuPiddJ/jF30o=; b=f079x/7PD0ooMx+BbwrbuX0TF3RU75GJ6QOH1nuQoTYa0EXa3s58yyQe2cQ6SPCMf/ WYLLvlMlWz/TGqtyGLpKgsvBOObSVyqwsChs94mu1nZxY7cwh+E67HLSC18szX3simPa yHzlzj6wgMRcYjGQ91KJpDmjvHHQo6NOoDFheimghpZ1qkMyNe6TrSh3JAswI0JLdeML /MQqQ221RcTNtTcHndGO7OXYL7EFNX658cArw0Z+TVAHzsnPFJ4K/u45UlfGR52LT8zz WgkWc4030DVq0GwfktGBRdnOC1fGf39T0Uh5wtLEO3jg30FyIaYDPzUwLpFcTIG1IPYG Qikg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date; bh=wOCqP9mDpJwt9v/xIiVkrBeoGQeF5SHuPiddJ/jF30o=; b=ewl9eMiEJ7wHtXStofRig8JwbUF8tTssSHerTqEWAjgZ6Xy+zcGMXlIgk8DbU3VI19 4r9tu7ERtdVM+7v7JqyphcVKpuWxGYfOLKEoUDQ1HaYAAi46C+KnUdJTV8JIcI2ZKc0J rvRqphk3ZILatvDbSy4RdfpjlIJM5Pb16JBrBFS2SQgZC6iMxWHw4XacLz2Kq/wSm7sl 5k9ul62kvBkKA0Znj6BdBxL2PIDfJsYA11S98Z9ONhk/catiNkDYcO63aKA9XWt2TJ2a TQWr2hzTscoOna2VoknMDiWBYt4pJ6OgENkU3GDETZLUsW5hAUz1DPMfOHMxQxsXzVk3 dl8g== X-Gm-Message-State: ACrzQf0o7mP7QAKxURnJdVRoLQ0Yt1zHDBmTWF5b/SSz0N7VnY+jl9GD /gkOFPHjSH/Gtz7KBO2VdKu0mAO04HH6YVkY/gg= X-Received: by 2002:a05:6512:687:b0:4a1:d59f:dc7c with SMTP id t7-20020a056512068700b004a1d59fdc7cmr2400329lfe.564.1664228022638; Mon, 26 Sep 2022 14:33:42 -0700 (PDT) MIME-Version: 1.0 References: <20220926204657.3147968-1-iam@sung-woo.kim> In-Reply-To: <20220926204657.3147968-1-iam@sung-woo.kim> From: Luiz Augusto von Dentz Date: Mon, 26 Sep 2022 14:33:30 -0700 Message-ID: Subject: Re: [PATCH] Bluetooth: L2CAP: fix an illegal state transition from BT_DISCONN To: Sungwoo Kim Cc: syzkaller@googlegroups.com, Marcel Holtmann , Johan Hedberg , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-bluetooth@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham 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 Kim, On Mon, Sep 26, 2022 at 1:47 PM Sungwoo Kim wrote: > > Prevent an illegal state transition from BT_DISCONN to BT_CONFIG. > L2CAP_CONN_RSP and L2CAP_CREATE_CHAN_RSP events should be ignored > for BT_DISCONN state according to the Bluetooth Core v5.3 p.1096. > It is found by BTFuzz, a modified version of syzkaller. > > Signed-off-by: Sungwoo Kim > --- > net/bluetooth/l2cap_core.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c > index 2c9de67da..a15d64b13 100644 > --- a/net/bluetooth/l2cap_core.c > +++ b/net/bluetooth/l2cap_core.c > @@ -4307,6 +4307,9 @@ static int l2cap_connect_create_rsp(struct l2cap_conn *conn, > } > } Perhaps it would be better to switch to use l2cap_get_chan_by_scid and l2cap_get_chan_by_ident, since I suspect this is caused by the socket being terminated while the response is in course so the chan reference is already 0 thus why l2cap_chan_hold_unless_zero is probably preferable instead of checking the state directly. > + if (chan->state == BT_DISCONN) > + goto unlock; > + > err = 0; > > l2cap_chan_lock(chan); > -- > 2.25.1 > -- Luiz Augusto von Dentz