Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp609683pxb; Mon, 25 Oct 2021 14:55:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxefiGRg9u1PlIuK5i1T32RiZHjJKy/Up2T37SDmRgH2W45yeMgh4CkgzOAnbkcXJ2QAj9g X-Received: by 2002:a17:902:9a04:b0:13a:1b2d:8a5c with SMTP id v4-20020a1709029a0400b0013a1b2d8a5cmr18939877plp.47.1635198911977; Mon, 25 Oct 2021 14:55:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635198911; cv=none; d=google.com; s=arc-20160816; b=LSqKk6Au8vmkBu290ts+oaSXDeJqTXF+9C6UMY0ns8NKPSDL+buvFOTEgPKjwMCImd ltQ+1Dodq8T/j8DWCstLNoi4qX2X5Vx87MiAErQ/X5cyon8wtXA6k+fbgoAlBqm+sXAM VpEP3qwK99FS+fLuYHYWKlzK8NKBinbMLvkkBPtvlI80JjMM2yb/AJTT7GW+FULbQo2q 7rQncxtpfGRPWxuNPFtBYR/LDJ1NUDqJFL52QCaRYy2ooMGM3MbkUbWNPeFDg1xbd3I+ Isf2obir7g8wcm33471QOCzkgljsn7hkjy46j7uiQ5ZJJKOnSxZIZdB6J/wjXMbRN05s iJ6g== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=nECS0NDdHfBMirl4E6JoZEQhKEQD5Wiuc/8ka64tx2Q=; b=ymYAU5w3F+HH+UesF65oWOebXEvV9EGpdOI39EpFaqfJTVIUSZ4v2SJpLXZp8xJ6II ztOwpr5Tiw3dC9TtjXw9cUlfMBr3Mki36wz+Kw3G4OprOLyBqBlX6nStz0lpieG40MmZ of6TE1WrVD3G49fNIyi5uxT6LdQxqoCmaPfCqXK9eTDfAVTEn2bmS6nfC6Yci7ZWy08L qN7zDf7TRoELAxmfj3D8zBC0sTt8D300hBhcunIJDz04IHgSGdjaQyD8SLUOgKr0Nrct u8xbdDnK1cq2Su9KbtP00X9LDhhIULktXIXcabMX5fHo5fLGTZvnUwdjHCkGKyDGdRCg HIQg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=XbTr21zw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b16si25675688pls.193.2021.10.25.14.54.59; Mon, 25 Oct 2021 14:55:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=XbTr21zw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231258AbhJYTT0 (ORCPT + 99 others); Mon, 25 Oct 2021 15:19:26 -0400 Received: from mail.kernel.org ([198.145.29.99]:36578 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234087AbhJYTSu (ORCPT ); Mon, 25 Oct 2021 15:18:50 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 076D660F70; Mon, 25 Oct 2021 19:16:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1635189387; bh=nHpmElIgjm6PRFonSP4b8cwbFdME/BCl8zsf809HFVM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XbTr21zwYpSenOvU6/tR363gSyqDwDOiG8PnfABGH/OeyJT5jHgav6tLnovU8Ue7C XFzlh3PhtHIZvXKM6zpGeCBXjJD9IByvqJTmmiYaZxt9qzjeRABFzjarsjYBEGEjkp GW6+lIh9oCRJT0ZvZR3Szi6QN8LrtlDMO5twcsy0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Xiaolong Huang , Arnd Bergmann , Jakub Kicinski Subject: [PATCH 4.4 35/44] isdn: cpai: check ctr->cnr to avoid array index out of bound Date: Mon, 25 Oct 2021 21:14:16 +0200 Message-Id: <20211025190935.831780647@linuxfoundation.org> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211025190928.054676643@linuxfoundation.org> References: <20211025190928.054676643@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Xiaolong Huang commit 1f3e2e97c003f80c4b087092b225c8787ff91e4d upstream. The cmtp_add_connection() would add a cmtp session to a controller and run a kernel thread to process cmtp. __module_get(THIS_MODULE); session->task = kthread_run(cmtp_session, session, "kcmtpd_ctr_%d", session->num); During this process, the kernel thread would call detach_capi_ctr() to detach a register controller. if the controller was not attached yet, detach_capi_ctr() would trigger an array-index-out-bounds bug. [ 46.866069][ T6479] UBSAN: array-index-out-of-bounds in drivers/isdn/capi/kcapi.c:483:21 [ 46.867196][ T6479] index -1 is out of range for type 'capi_ctr *[32]' [ 46.867982][ T6479] CPU: 1 PID: 6479 Comm: kcmtpd_ctr_0 Not tainted 5.15.0-rc2+ #8 [ 46.869002][ T6479] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-2 04/01/2014 [ 46.870107][ T6479] Call Trace: [ 46.870473][ T6479] dump_stack_lvl+0x57/0x7d [ 46.870974][ T6479] ubsan_epilogue+0x5/0x40 [ 46.871458][ T6479] __ubsan_handle_out_of_bounds.cold+0x43/0x48 [ 46.872135][ T6479] detach_capi_ctr+0x64/0xc0 [ 46.872639][ T6479] cmtp_session+0x5c8/0x5d0 [ 46.873131][ T6479] ? __init_waitqueue_head+0x60/0x60 [ 46.873712][ T6479] ? cmtp_add_msgpart+0x120/0x120 [ 46.874256][ T6479] kthread+0x147/0x170 [ 46.874709][ T6479] ? set_kthread_struct+0x40/0x40 [ 46.875248][ T6479] ret_from_fork+0x1f/0x30 [ 46.875773][ T6479] Signed-off-by: Xiaolong Huang Acked-by: Arnd Bergmann Link: https://lore.kernel.org/r/20211008065830.305057-1-butterflyhuangxx@gmail.com Signed-off-by: Jakub Kicinski Signed-off-by: Greg Kroah-Hartman --- drivers/isdn/capi/kcapi.c | 5 +++++ 1 file changed, 5 insertions(+) --- a/drivers/isdn/capi/kcapi.c +++ b/drivers/isdn/capi/kcapi.c @@ -564,6 +564,11 @@ int detach_capi_ctr(struct capi_ctr *ctr ctr_down(ctr, CAPI_CTR_DETACHED); + if (ctr->cnr < 1 || ctr->cnr - 1 >= CAPI_MAXCONTR) { + err = -EINVAL; + goto unlock_out; + } + if (capi_controller[ctr->cnr - 1] != ctr) { err = -EINVAL; goto unlock_out;