Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp677048pxb; Mon, 25 Oct 2021 16:28:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxXvlChc7418T10aZzKCV4S2Zp181k2lmjr3r6j67rOn6Ib1tT1zfYTyOiXWxlyZI+u72Mx X-Received: by 2002:a05:6402:13c2:: with SMTP id a2mr4055824edx.320.1635204520708; Mon, 25 Oct 2021 16:28:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635204520; cv=none; d=google.com; s=arc-20160816; b=GhkxbT7W33vHaqd/rHb7zS2LGzmrJll3sssiskHdWeC+emBXB0lqNp2o1PAo1fCHyY gz52qqyP8melJh9t9F08niwi6sMLr2Xorm5UXfbOU2NJY8YZoXOXCefffpwv9orcxZ0U V36wTbPjbHsYyQC9Y8YqXJNlLdGRegJYuiGbpyUrD1ZQhkpsZJLsC1b1e1gfPqozY4OB cI8qagiiiZhTkjSDQpEw/gWb5mL6L9fABUUzWWZ+Ht8+OeNV2P+pQ+wNjUE7Me6BKQgN mAEg13+8EXWioCYpMnpMAvhU+CbKpsXpoucwI38vpHkUwrCVKDCb8fKgBmyFPkB9fbsP HrwA== 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=t3WWQqAr6wdiTMJ/O51kx/296PNCH1o2ssPSnDl5ig/gPls6jddXhFt4J+e4Lo0cai yysaKN+HxhbtBzbz9ELCD50ApaYBhmngy/UwfIKy3fX5Pn57jZ+5U8XbG8o3R0h+GFG3 cGk5alvENZmP3jlleW6A6h3XJD6opKrj6+AYHPbFblZKq1qTrcCFCUSMQrhDQSc/JURq fmDhuaZKCdlEqZmVO2FHbVhdHSYXdwGQomUUknugw676QBXYesPE/TUWFxl2fwmaUY8W KPC5rxGBgox/lnAnQS8ZiBnXPVgKRPkEmbiFOySi/L+LTi5FO+8xKDTmawjFI9d2uWB5 WvEw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="AntoZ/6S"; 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 ji21si30768416ejc.604.2021.10.25.16.28.14; Mon, 25 Oct 2021 16:28:40 -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="AntoZ/6S"; 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 S234740AbhJYT2F (ORCPT + 99 others); Mon, 25 Oct 2021 15:28:05 -0400 Received: from mail.kernel.org ([198.145.29.99]:42630 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234637AbhJYTZS (ORCPT ); Mon, 25 Oct 2021 15:25:18 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 69872601FF; Mon, 25 Oct 2021 19:22:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1635189753; bh=nHpmElIgjm6PRFonSP4b8cwbFdME/BCl8zsf809HFVM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AntoZ/6SZyBbhY2X6T8kBkhnf4c0jO4ovaAaX2BSnrX7PaYvlkJI5la2udXAO6u0z BkJryMHtWjZK4VMGfzgLgtwI30ngG48KpkrNFdioaiiHUvKLAXySg13WoSPOtbWsaW vaSt9xiVpPUT5dFsuq7FZrtgedgjtRKWuXK2gYAA= 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.14 18/30] isdn: cpai: check ctr->cnr to avoid array index out of bound Date: Mon, 25 Oct 2021 21:14:38 +0200 Message-Id: <20211025190927.359212666@linuxfoundation.org> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211025190922.089277904@linuxfoundation.org> References: <20211025190922.089277904@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;