From patchwork Fri Jun 22 09:54:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Borislav Petkov X-Patchwork-Id: 139594 Delivered-To: patch@linaro.org Received: by 2002:a2e:970d:0:0:0:0:0 with SMTP id r13-v6csp668840lji; Fri, 22 Jun 2018 02:56:37 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJIFpj914rBlKtHmxJ0Ju0U6e6okNAsus0YFrmcQBhgsO3xeNLNSFL5E0BnwEzCL3JOih34 X-Received: by 2002:a63:7986:: with SMTP id u128-v6mr759509pgc.273.1529661397202; Fri, 22 Jun 2018 02:56:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529661397; cv=none; d=google.com; s=arc-20160816; b=DODZu7exRpic+cVQ1t5JpyX7VOO1CL9uCsBo6y5j3+QtmJSriLKLKFbco19V0g3wmM uYkqHLa5iI19yjzy/ZEKiAXGlxEc1OBapYgHZ3iYXfpFstP84EdVZCvuDXMOZdYlCUW1 TSv/60ozjAf6d4kjuZjs7B4pyQINglhYw5TA2KZWI7l1acDbxM32bmdg5Og/UhmsSgs/ 4lFn9DdvKp2IJ3HIO+efQTQpsRP2AAlrgwNXEyBPpIOygnFJxfr5XhmiWyJ+c71c1eD5 I+fR3hwkuKmcdV3DMy8tUObiCaSWMYo8FX1MYFTKgjdn4+fpbcbwkuV23OjIXm3IK2Ur 09vA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=ep0fwSWdpXdbLvApRs9Xs4yKGZwZo+bpXfXLSjYkSwo=; b=ObWWZvY5tmm++INVbckx9UOT6mzLi1qowR+besk1CJiDwGdR/ZZyLFoaNGxlV3f2XM ef3WzmskJj98cHJSbmKVKN/lciJCoooR47sKwt+mTzNow6gNVShwdvO2mD0pHV2OufLk lpqQuzBoWh+g4KgwgMdyWc5uQQwRQ2sqQETZ82rEyRCTBykHyDDHF5vuNMN6+mVOb3H1 nyaqIqfgLhlosBmtBt7iJvrffKbS8UYGOUldOjqUD+ayLhZ9YLrLkneNNJ5iw540ZqA4 RNP5M61ynb5yrQfYstsjfizfJNhgl2VwXI3aNYMF5yfdD0bDZWXEAMoWpIfbo6OIPlYT 2JWA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g10-v6si5822906pgp.479.2018.06.22.02.56.36; Fri, 22 Jun 2018 02:56:37 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933664AbeFVJ4f (ORCPT + 30 others); Fri, 22 Jun 2018 05:56:35 -0400 Received: from mail.skyhub.de ([5.9.137.197]:41270 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754626AbeFVJyc (ORCPT ); Fri, 22 Jun 2018 05:54:32 -0400 X-Virus-Scanned: Nedap ESD1 at mail.skyhub.de Received: from mail.skyhub.de ([127.0.0.1]) by localhost (blast.alien8.de [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id r1a1G7of6xPD; Fri, 22 Jun 2018 11:54:31 +0200 (CEST) Received: from zn.tnic (p200300EC2BCF3400329C23FFFEA6A903.dip0.t-ipconnect.de [IPv6:2003:ec:2bcf:3400:329c:23ff:fea6:a903]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.skyhub.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id 5B8911EC0236; Fri, 22 Jun 2018 11:54:31 +0200 (CEST) From: Borislav Petkov To: X86 ML Cc: LKML Subject: [PATCH 1/7] x86/mce: Always use 64-bit timestamps Date: Fri, 22 Jun 2018 11:54:22 +0200 Message-Id: <20180622095428.626-2-bp@alien8.de> X-Mailer: git-send-email 2.17.0.582.gccdcbd54c In-Reply-To: <20180622095428.626-1-bp@alien8.de> References: <20180622095428.626-1-bp@alien8.de> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Arnd Bergmann The machine check timestamp uses get_seconds(), which returns an 'unsigned long' number that might overflow on 32-bit architectures (in the distant future) and is therefore deprecated. The normal replacement would be ktime_get_real_seconds(), but that needs to use a sequence lock that might cause a deadlock if the MCE happens at just the wrong moment. The __ktime_get_real_seconds() skips that lock and is safer here, but has a miniscule risk of returning the wrong time when we read it on a 32-bit architecture at the same time as updating the epoch, i.e. from before y2106 overflow time to after, or vice versa. This seems to be an acceptable risk in this particular case, and is the same thing we do in kdb. Signed-off-by: Arnd Bergmann Acked-by: Thomas Gleixner Cc: Tony Luck Cc: linux-edac Cc: x86-ml Cc: y2038@lists.linaro.org Link: http://lkml.kernel.org/r/20180618100759.1921750-1-arnd@arndb.de Signed-off-by: Borislav Petkov --- arch/x86/kernel/cpu/mcheck/mce.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.17.0.582.gccdcbd54c diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index e4cf6ff1c2e1..b887415652ed 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -123,8 +123,8 @@ void mce_setup(struct mce *m) { memset(m, 0, sizeof(struct mce)); m->cpu = m->extcpu = smp_processor_id(); - /* We hope get_seconds stays lockless */ - m->time = get_seconds(); + /* need the internal __ version to avoid deadlocks */ + m->time = __ktime_get_real_seconds(); m->cpuvendor = boot_cpu_data.x86_vendor; m->cpuid = cpuid_eax(1); m->socketid = cpu_data(m->extcpu).phys_proc_id;