Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp242828pxa; Fri, 14 Aug 2020 03:00:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwedCRqBIP0b+Euyss4p043jnVXcVL2iszTUW83QDh0Dy8tKCTxBK8Rb+yXuv67BL27CthD X-Received: by 2002:a17:906:95d4:: with SMTP id n20mr1698604ejy.485.1597399229148; Fri, 14 Aug 2020 03:00:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597399229; cv=none; d=google.com; s=arc-20160816; b=Uqyc4+HE+XHXX41ygPQwDeDDgxBwZMFaTnBOQhxYqIZ8bfmqmXgHMsDxbT3BBJMmU5 PC3RC2HuGlmlIbsCirO7nFEkMXGQ8NN7aCTfDCdcG2iUA+3nqCb92XiI6j+aTdFvPzI8 Wz5TImK92IcfpXHJbu2y6xAo1sYTIrCVkpRwLNm1TQ2fn8EsIy2WF0tSBS/l8lIAnBID EFO97Rmmcj1z3CQ9urijnpC09Ggu8N18YOY5c+TVG1xsydVOdQuYeqJMRfIkY9mChObs ktoxbqdFaCDFMUlz5lbgl689C3OV76J20uAPVT+S/sIRxPkBT8AlFOfDUw0b5buyxi02 ltpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:from:subject:mime-version :message-id:date:dkim-signature; bh=QsRsOCpoXcwdRIsVUMLGWKWsf8QgiczNEiWX1UbiUY4=; b=XygScNfiEJPtfs5+kMbv9avvMw9BGabFQtntmho0vaRFqHEgor1LVmRRUrLsmWW7dw 2hlmAnIZkCHHKXlMgBHoMHAqEZ3McgyBOy3wee1w7cbCfdOFn8PYdyOMca3z1qkzScnf mLE1w65RPr0kkiRjbFwKTb9Mg+kg7yyn8TO5SYxBPoASzCGFdhVUefzf290v3sD/8qrV zVb04qPys4itByUe5AgOtMVQ6H635WjM2J2b9Z9ayTP/XFWtOKdn3eOyyiR4DB7FdwRu iw1/aHJaT3lBRpKk/Dw0ryJ62cNlyQZmdUxEpZs7nRJ1v8r4Rg3kPpJlIoOY3GrB5sNv QmZA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=oGYgJqsY; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c15si5142621edv.479.2020.08.14.03.00.04; Fri, 14 Aug 2020 03:00:29 -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=@google.com header.s=20161025 header.b=oGYgJqsY; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727814AbgHNJRm (ORCPT + 99 others); Fri, 14 Aug 2020 05:17:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46130 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726658AbgHNJRl (ORCPT ); Fri, 14 Aug 2020 05:17:41 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A5928C061384 for ; Fri, 14 Aug 2020 02:17:41 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id a14so9537723ybm.13 for ; Fri, 14 Aug 2020 02:17:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=QsRsOCpoXcwdRIsVUMLGWKWsf8QgiczNEiWX1UbiUY4=; b=oGYgJqsYuUV0Hms2m3LZF+iq+NfQ6YoaeJQuq9z72NuNFa7OMslSlpLVFCZsmBJKNY ZaWg1WLV+vs/Ii/09pl7wGF+m/bB3EF5lLW7WI/pC3dVEM2c1ZuHHEsSSup17xqCh0Ec uCnsrdpI/LkrE0aBV+2tu7VnODtCWhubakNAmOVfig+qZvz/xH1E4BYlCJRCCqkq2PKD D7+5oFEyqcp7GrBssXUJh+wS72z4rB+PKi04rD25p4gCEkOgi9S3CC0BBwPFSrgw2CS8 o3D4+7jfC777vMMakgcTIm1i2mvi2D1nyoPJL9heKLuQ0bfK6llK/R6otOm3LGuJNKRJ vOgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=QsRsOCpoXcwdRIsVUMLGWKWsf8QgiczNEiWX1UbiUY4=; b=qwB8QWGNbNBuNE8bD4RsBe/sOLnQrzoKNr1KEsGhP9IbsYl5SYg97DrcOwMRxs6GzN wKhAgN0PRSfnKuE5SXOVRFCpbWHT0MJmxPCO896HQ1C36aa8hy7Wo254gZsA+qSGTmJf z5ybxw2DI/0x1L4PHbzvm3bcsfM8bknZO7udxZQs1Vl/B4uw94HkFXGQbiz9Qc/dtyim fUX+/MrCCnDyqnX1Bjyfq20G+Bb8uZxbAUqp1ZKA/TJ2yJGIHoi3vL7uPTxGobK5OcdW l/eJXjkiwlvgKQb7OXEfxniTfzs/bKHn81d9e+2UpuoCUqGZ1pV6K6+P2PoHzEnaSj0P P3Ig== X-Gm-Message-State: AOAM531QIt0nItbNsVFhdfxUtgQoCyouzTsvzjjMm0IrzDkbmQsujlAO B0ZOEce2524C20Mqz4l8apzZ9PUgEBUnE5KV+ry00Q9EL5EtjPfXIJD+Ug5/uMdWL+SsdkdlUTd QNO3WFxr/iSrjhEgTpPJn6ZAX0xtvQUOMSYRLiX4jmT9/oy1VfmXiRXzI7ZPQGfyk35tpGZuvtK wbAqqG X-Received: by 2002:a25:3556:: with SMTP id c83mr2374756yba.412.1597396659823; Fri, 14 Aug 2020 02:17:39 -0700 (PDT) Date: Fri, 14 Aug 2020 19:17:30 +1000 Message-Id: <20200814191654.v2.1.Iaf7638a2f2a87ff68d85fcb8dec615e41340c97f@changeid> Mime-Version: 1.0 X-Mailer: git-send-email 2.28.0.220.ged08abb693-goog Subject: [PATCH v2] rtc: cmos: zero-init wkalrm when reading from CMOS From: Victor Ding To: LKML Cc: Alexandre Belloni , Victor Ding , Alessandro Zummo , linux-rtc@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org cmos_read_alarm() may leave certain fields of a struct rtc_wkalrm untouched; therefore, these fields contain garbage if not properly initialized, leading to inconsistent values when converting into time64_t. This patch to zero initialize the struct before calling cmos_read_alarm(). Note that this patch is not intended to produce a correct time64_t, it is only to produce a consistent value. In the case of suspend/resume, a correct time64_t is not necessary; a consistent value is sufficient to correctly perform an equality test for t_current_expires and t_saved_expires. Logic to deduce a correct time64_t is expensive and hence should be avoided. Signed-off-by: Victor Ding --- Changes in v2: - Initialize the struct to 0 instead of -1; - Initialize the whole struct rtc_wkalrm. drivers/rtc/rtc-cmos.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c index bcc96ab7793f..c633319cdb91 100644 --- a/drivers/rtc/rtc-cmos.c +++ b/drivers/rtc/rtc-cmos.c @@ -1006,6 +1006,7 @@ static int cmos_suspend(struct device *dev) enable_irq_wake(cmos->irq); } + memset(&cmos->saved_wkalrm, 0, sizeof(struct rtc_wkalrm)); cmos_read_alarm(dev, &cmos->saved_wkalrm); dev_dbg(dev, "suspend%s, ctrl %02x\n", @@ -1054,6 +1055,7 @@ static void cmos_check_wkalrm(struct device *dev) return; } + memset(¤t_alarm, 0, sizeof(struct rtc_wkalrm)); cmos_read_alarm(dev, ¤t_alarm); t_current_expires = rtc_tm_to_time64(¤t_alarm.time); t_saved_expires = rtc_tm_to_time64(&cmos->saved_wkalrm.time); -- 2.28.0.220.ged08abb693-goog