Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp927057pxb; Wed, 6 Apr 2022 04:31:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyeWLGZG0nZa+CNxoYtpH9ecxI1QdO4bWyqWlWMI0pIqjYfC5ygV1oyJP7O5gEx0b3cOGuB X-Received: by 2002:a05:6a00:1908:b0:4f7:8813:b2cb with SMTP id y8-20020a056a00190800b004f78813b2cbmr8405285pfi.54.1649244676538; Wed, 06 Apr 2022 04:31:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649244676; cv=none; d=google.com; s=arc-20160816; b=Kq/A+9A+itFz52Dx0fwZYgRYxd4PO7B5CUpeXYYY88KGYnNVCJiyBDwYABuMkDeLOS ZOE9E/BQayA4XlFEv47eCWxhbGVACHMJFPF7ikx35t8+OKANi68eieFglz+iLpFqbtbB aWGEqhLe3y1uFQ8H/3mM1eh1BAB27K+s8oFsPvEGSmfFZ8M5cxc5QxX38e+vjeURiieq Bd1ayTAX/68Kjwpa/ITVfEB+z9vAULoQtlC8iaKfk12LFKo3bGjWqfiZmXlt6dcU0zvg +N9tI/Ciw8CRtDlfGDNieA2HGCYCtda0wUiLVzrHpngEdYgALW2Ezu6R/ImCR6rjDo4J fDbw== 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=f6TJ02DvSNkED+aK1fEswOWywnfrZJiO/x0QTJpqV+s=; b=QPXkVRPPiCBdfc6km/iOolpv0x/5g0ygkaPd1eUibbzDj+AzEeNi7Gx6STfLAp5/eV GfgPR722aD6xfWwyg4U50JNuFahPvXV1T+rPMhK81fAO+oTsAo/J2qKfWkl5gcVvTqqf suDZgT5Qw0y36UdRPkMGcxb1JVIohLjhqTzQzjuyzL3qe/qbZ4LNm6GhVwlNcyG5G+KW 1LdXNfyMtDnyidOdgOqhcvWoYI4OSNWCdcet+BKVzCw+Pjb2kXOJb5qn/tCYgNM4bKPB UPspwTVv5TMyPf4mJ7V2acm429+RPJ+KyYpHA2zK3ciDP/x1v17xlz6tXqkVxEmxcT0l GW8g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=REATpm8l; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 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 lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id j6-20020a170903024600b00153b2d16442si15983418plh.74.2022.04.06.04.31.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Apr 2022 04:31:16 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=REATpm8l; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id D0090606677; Wed, 6 Apr 2022 02:53:11 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346825AbiDEVJ0 (ORCPT + 99 others); Tue, 5 Apr 2022 17:09:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50650 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1357252AbiDEKZ5 (ORCPT ); Tue, 5 Apr 2022 06:25:57 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DEB41424A0; Tue, 5 Apr 2022 03:09:52 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 4CF5D6179E; Tue, 5 Apr 2022 10:09:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5DAAEC385A0; Tue, 5 Apr 2022 10:09:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649153391; bh=ueapUc85Of3/Cvqvv//FCEs2fr5rsCIo9e2Rfc8HXr0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=REATpm8l7AAHH298ix2BFtTP285mU16lkDWGl3kLpupGO0/mjpyCmquh75PAcMJZH B54KCWhuk0ZhHil8CaphqyhvZnFR437b2ZESJ2zR6zotnqADwdygUZHQ2mitlFffNw 1w2WQh7nlilRje9hHu2oWACm0jSXxe9IvscfhfQM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Krzysztof Kozlowski , Alim Akhtar , Daniel Lezcano , Sasha Levin Subject: [PATCH 5.10 158/599] clocksource/drivers/exynos_mct: Handle DTS with higher number of interrupts Date: Tue, 5 Apr 2022 09:27:32 +0200 Message-Id: <20220405070303.544064840@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220405070258.802373272@linuxfoundation.org> References: <20220405070258.802373272@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE 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-kernel@vger.kernel.org From: Krzysztof Kozlowski [ Upstream commit ab8da93dc06d82f464c47ab30e6c75190702f369 ] The driver statically defines maximum number of interrupts it can handle, however it does not respect that limit when configuring them. When provided with a DTS with more interrupts than assumed, the driver will overwrite static array mct_irqs leading to silent memory corruption. Validate the interrupts coming from DTS to avoid this. This does not change the fact that such DTS might not boot at all, because it is simply incompatible, however at least some warning will be printed. Fixes: 36ba5d527e95 ("ARM: EXYNOS: add device tree support for MCT controller driver") Signed-off-by: Krzysztof Kozlowski Reviewed-by: Alim Akhtar Link: https://lore.kernel.org/r/20220220103815.135380-1-krzysztof.kozlowski@canonical.com Signed-off-by: Daniel Lezcano Signed-off-by: Sasha Levin --- drivers/clocksource/exynos_mct.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c index 5533c9afc088..df194b05e944 100644 --- a/drivers/clocksource/exynos_mct.c +++ b/drivers/clocksource/exynos_mct.c @@ -531,6 +531,11 @@ static int __init exynos4_timer_interrupts(struct device_node *np, * irqs are specified. */ nr_irqs = of_irq_count(np); + if (nr_irqs > ARRAY_SIZE(mct_irqs)) { + pr_err("exynos-mct: too many (%d) interrupts configured in DT\n", + nr_irqs); + nr_irqs = ARRAY_SIZE(mct_irqs); + } for (i = MCT_L0_IRQ; i < nr_irqs; i++) mct_irqs[i] = irq_of_parse_and_map(np, i); @@ -543,11 +548,14 @@ static int __init exynos4_timer_interrupts(struct device_node *np, mct_irqs[MCT_L0_IRQ], err); } else { for_each_possible_cpu(cpu) { - int mct_irq = mct_irqs[MCT_L0_IRQ + cpu]; + int mct_irq; struct mct_clock_event_device *pcpu_mevt = per_cpu_ptr(&percpu_mct_tick, cpu); pcpu_mevt->evt.irq = -1; + if (MCT_L0_IRQ + cpu >= ARRAY_SIZE(mct_irqs)) + break; + mct_irq = mct_irqs[MCT_L0_IRQ + cpu]; irq_set_status_flags(mct_irq, IRQ_NOAUTOEN); if (request_irq(mct_irq, -- 2.34.1