Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3586995pxb; Mon, 24 Jan 2022 12:54:27 -0800 (PST) X-Google-Smtp-Source: ABdhPJxguP1AXliNCeBmZJMulJpdsq3MalV/ltAfmI/4QB/U5TeTvMK9dqWp3yWWglc6wTJ4h8YD X-Received: by 2002:a17:902:8211:b0:14a:fd00:201a with SMTP id x17-20020a170902821100b0014afd00201amr15739801pln.153.1643057667312; Mon, 24 Jan 2022 12:54:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643057667; cv=none; d=google.com; s=arc-20160816; b=GX/0SvPfIZ3czzg5RVMqVvhJ2RrhdLEtGWF5UwokbFlMS2CtG3UtsROerIhe/OMn69 mLeKbqpHHyeXVCxPwm7XLUHxrJmAiRMFSBZeqJNXYdf1GdQ0et4Q1pq6JDgsTa7GVHAH qPEWz8kaPmtXbkeaebu8cMFI2/ZyxMl4DEv+cfYtAxBoj+4gxamEBAhvfJNOpi3eAequ 5NO/WzBhR3c3q3/TlvjLbPh7lMImgSxGM617qfG0Vo5AZTp0NWAhoxa687DLI+uoNEjl fA/mrSmYgEmrj+7joN1FsG7VnG+OHxhxoBRN7jmYzihFLUivPeI1g1Npm9OGs2rEGHPR UctQ== 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=YIq1anSxomuuDyTbtjVic0+R1sqGPVTP2BG8Z9JHu88=; b=S4Bx+N7QynE5BwGfGerLA9iixn5LAPaDN/EpZmeFpKuryuULYEbFgcSLOr/uwxPHza rs0Ip92iUqXAFsBzysIrCJ3I8kCdyPB8THEj2qTcPURGMtsUGD4u98NJxlGDgwVcjXmt VCYYTXyMKmysvZtXAVU1RbripOMouXjl86z+Dp0UBcz6W6Es7DmPSBI0qSK3ntzZqb98 +wRdoBn627KtXKCYenfb++L01zjBL/k23gfqmFMDhh5/ZqWinAEH9MgB7XuxPYuRTA1g joLcgmhRnBL9VlI1rIZToGvUyXzovsIC1pRwPyJkMNoFPzCZwcKPRhSoAcjGACBnUKc3 E9SA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Q7cvptfE; 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 w15si329096pjb.175.2022.01.24.12.54.15; Mon, 24 Jan 2022 12:54:27 -0800 (PST) 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=Q7cvptfE; 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 S1380347AbiAXUQK (ORCPT + 99 others); Mon, 24 Jan 2022 15:16:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57928 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350954AbiAXTwN (ORCPT ); Mon, 24 Jan 2022 14:52:13 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C3623C0617A3; Mon, 24 Jan 2022 11:24:58 -0800 (PST) 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 ams.source.kernel.org (Postfix) with ESMTPS id 6B79BB8122F; Mon, 24 Jan 2022 19:24:58 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 866E0C340E8; Mon, 24 Jan 2022 19:24:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643052297; bh=Q3d16Erybi8ks3P6I31MKaCH6TV11ACxsCvMgjcQY2M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Q7cvptfEzOOb46dFmQV+FG/b9ajbnRYhFI1is89ZOsqw9MI6kdU5c2UiY/mYBLYbL nLfc0tUnRwrJapa8AtWr2ivFzCUQhOmGKAvTCk5dkM1M3ZEVSYf/X0Lf0I+nLPyu3G 1cmuhHlSecjm7r+D5MHShPL6VNIB8Rupj4hM/XCM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, =?UTF-8?q?Mateusz=20Jo=C5=84czyk?= , Nobuhiro Iwamatsu , Alessandro Zummo , Alexandre Belloni Subject: [PATCH 5.4 013/320] rtc: cmos: take rtc_lock while reading from CMOS Date: Mon, 24 Jan 2022 19:39:57 +0100 Message-Id: <20220124183954.205099585@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124183953.750177707@linuxfoundation.org> References: <20220124183953.750177707@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: Mateusz Jończyk commit 454f47ff464325223129b9b5b8d0b61946ec704d upstream. Reading from the CMOS involves writing to the index register and then reading from the data register. Therefore access to the CMOS has to be serialized with rtc_lock. This invocation of CMOS_READ was not serialized, which could cause trouble when other code is accessing CMOS at the same time. Use spin_lock_irq() like the rest of the function. Nothing in kernel modifies the RTC_DM_BINARY bit, so there could be a separate pair of spin_lock_irq() / spin_unlock_irq() before doing the math. Signed-off-by: Mateusz Jończyk Reviewed-by: Nobuhiro Iwamatsu Cc: Alessandro Zummo Cc: Alexandre Belloni Cc: stable@vger.kernel.org Signed-off-by: Alexandre Belloni Link: https://lore.kernel.org/r/20211210200131.153887-2-mat.jonczyk@o2.pl Signed-off-by: Greg Kroah-Hartman --- drivers/rtc/rtc-cmos.c | 3 +++ 1 file changed, 3 insertions(+) --- a/drivers/rtc/rtc-cmos.c +++ b/drivers/rtc/rtc-cmos.c @@ -463,7 +463,10 @@ static int cmos_set_alarm(struct device min = t->time.tm_min; sec = t->time.tm_sec; + spin_lock_irq(&rtc_lock); rtc_control = CMOS_READ(RTC_CONTROL); + spin_unlock_irq(&rtc_lock); + if (!(rtc_control & RTC_DM_BINARY) || RTC_ALWAYS_BCD) { /* Writing 0xff means "don't care" or "match all". */ mon = (mon <= 12) ? bin2bcd(mon) : 0xff;