Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3634956pxb; Mon, 24 Jan 2022 14:03:45 -0800 (PST) X-Google-Smtp-Source: ABdhPJy6ufBZL6YeWCqNGvGfLujfJPUDn9MnojVsvo71RACW4OBhnwOJhtpTnNfz0jQ58ZjVSI9t X-Received: by 2002:a17:902:7d93:b0:14a:bf7b:926d with SMTP id a19-20020a1709027d9300b0014abf7b926dmr16180954plm.22.1643061825007; Mon, 24 Jan 2022 14:03:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643061825; cv=none; d=google.com; s=arc-20160816; b=bmYe0bgOQKehUoKDnv+N6X/C12gg/rngX/pxHedBhdm+OkhmglJ5FYs7CkL6u6UMG2 w4UQJg/RQpND8XprT/6eAg9JWhS7I1hFybFDNSx2vIcETO+1FlEqnSMaOzmBXK3QK56Q 61gE4hJRHhXCYusP1v/N5ItuzdZh6/5WJA+pU3XYSJANboepJ00PEVnmf5D95P7A8Cci qOrX1PKuzZihPjRQT6Yh8la9A13aRWIbwQun8aA4P5IG/m6LiGaSFn/PW7H//NCgRHsj R4I7+cy/IMa0sjl8opk0bwKOq7ijyM9mzb8KNkXpWGGmkjQ9oXB9XTibg6/eIn5ORz9+ G2VA== 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=SQsPjsQyvy0IwJGpWIBklkFKnmCkItHxCRN0m941ncs=; b=cysXJI6G0EmX76UJC2hGa+Y3tFYrA960V2YoIQCuCM4WNHBC6yJXLynTEcQb5yI5zz A/1EyVzvQwnPELRo9YdVQNPHnLWR0Quvlp1EuWD3yEWS4/rNzxrT1yGHfrc+TV/5abik PQj7VuZ0JLCkTr5UQ/idyyDs/9RRDvJsgA0xn9vzWuhr3NXcYMhq/ivp4rn6/+xiDBiu W0J9cgxtJZ0fTzH+hMSAgeLfuN2wjHvaNvtvmkGdBbFuvpYmQodFPeZNna8etkk3SKKt z5PQHaT1MmIqq9+dPNR/opfkymyPGRVOu/poltblsbTURbtVtVsNhtVZ5pJ58jbsBRsq 4HXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=TMW4MvKo; 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 a185si1591096pge.826.2022.01.24.14.03.33; Mon, 24 Jan 2022 14:03:44 -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=TMW4MvKo; 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 S1574917AbiAXVuo (ORCPT + 99 others); Mon, 24 Jan 2022 16:50:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49882 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1449108AbiAXVOy (ORCPT ); Mon, 24 Jan 2022 16:14:54 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 13B28C09F498; Mon, 24 Jan 2022 12:11:15 -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 dfw.source.kernel.org (Postfix) with ESMTPS id A7C7C61416; Mon, 24 Jan 2022 20:11:14 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7C81CC340E5; Mon, 24 Jan 2022 20:11:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643055074; bh=MFXndqI8cxiHslc/dNlSaB1r9JTjhtiZBSwFf6F0MWk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TMW4MvKojikzLmh8wnnIvCspanRyTW8crQxvKmXm1OhIZRG4QG+49kL8DeD7kZzps 5WxUfqf6XyljOxAcRzwyhlyrCx6uP27p4e+z3J35y+cXS56C4nzsCIUIhOvxjl6otA 5U7NR6Bq9M/1U6W1qxVV9TVoFCdhocarstvngyRQ= 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.15 032/846] rtc: cmos: take rtc_lock while reading from CMOS Date: Mon, 24 Jan 2022 19:32:29 +0100 Message-Id: <20220124184102.037242793@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124184100.867127425@linuxfoundation.org> References: <20220124184100.867127425@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 @@ -457,7 +457,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;