From patchwork Tue Apr 7 12:50:51 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 48000 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-wi0-f199.google.com (mail-wi0-f199.google.com [209.85.212.199]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id EFA542121F for ; Mon, 4 May 2015 12:46:29 +0000 (UTC) Received: by wiun10 with SMTP id n10sf33706485wiu.1 for ; Mon, 04 May 2015 05:46:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:delivered-to:from:to:cc:subject :date:message-id:in-reply-to:references:in-reply-to:references :sender:precedence:list-id:x-original-sender :x-original-authentication-results:mailing-list:list-post:list-help :list-archive:list-unsubscribe; bh=ZJkVuHofwJMnJB97eMS+qUEwmH/aIf+jDq99eu2k3d0=; b=G62QOjQhRViaeeSKpINehh3smLkjGX5toNU4uwvn0jvUtULpTF047eQHZFxJ/ia9Ye Ts5KNla2HCFhjtnJDlhjMEKJN/R7qLYiVrrluJHCculqXVQ6VDMlL47yECHpHdWWCjwT UfQBjgejHMn1zLi2/K+osD51XH1ijS7SEHyl1giXiBRUVqep9oA9ltwUgHBRnI6fLs2o EWvPmSIA6xp/ELigY4R0HqRCjk7IojuD8p31/kRLjj5PzU0/+iImcEYZhoaG4pkad91Q hFY6y9On2u3qtEUW1D3JzWoWyMJX+8WP1Mxgy7XLsPeCM2xIj8KK5FJfc+9+0OF0TBps AWGA== X-Gm-Message-State: ALoCoQlq2kh3X1X9XJ4j/BtH581d/QHfWMXCzab0v7VrNzuZmWRPG196+ZQI27wtCXJNau5twYr3 X-Received: by 10.152.43.116 with SMTP id v20mr18424691lal.3.1430743589275; Mon, 04 May 2015 05:46:29 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.152.26.6 with SMTP id h6ls93836lag.57.gmail; Mon, 04 May 2015 05:46:29 -0700 (PDT) X-Received: by 10.152.23.105 with SMTP id l9mr19385125laf.26.1430743589138; Mon, 04 May 2015 05:46:29 -0700 (PDT) Received: from mail-la0-f44.google.com (mail-la0-f44.google.com. [209.85.215.44]) by mx.google.com with ESMTPS id n6si9988120lah.177.2015.05.04.05.46.29 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 May 2015 05:46:29 -0700 (PDT) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.44 as permitted sender) client-ip=209.85.215.44; Received: by layy10 with SMTP id y10so103164409lay.0 for ; Mon, 04 May 2015 05:46:29 -0700 (PDT) X-Received: by 10.112.219.70 with SMTP id pm6mr19073106lbc.41.1430743588921; Mon, 04 May 2015 05:46:28 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.112.67.65 with SMTP id l1csp1639381lbt; Mon, 4 May 2015 05:46:27 -0700 (PDT) X-Received: by 10.68.224.10 with SMTP id qy10mr42663142pbc.23.1430743582382; Mon, 04 May 2015 05:46:22 -0700 (PDT) Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id yi8si14887767pac.231.2015.05.04.05.46.20; Mon, 04 May 2015 05:46:22 -0700 (PDT) Received-SPF: none (google.com: linux-kernel-owner@vger.kernel.org does not designate permitted sender hosts) client-ip=209.132.180.67; Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753472AbbEDMqN (ORCPT + 29 others); Mon, 4 May 2015 08:46:13 -0400 Received: from ip4-83-240-67-251.cust.nbox.cz ([83.240.67.251]:51628 "EHLO ip4-83-240-18-248.cust.nbox.cz" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753211AbbEDMqF (ORCPT ); Mon, 4 May 2015 08:46:05 -0400 Received: from ku by ip4-83-240-18-248.cust.nbox.cz with local (Exim 4.85) (envelope-from ) id 1YfSz7-0001yW-Mc; Tue, 07 Apr 2015 14:52:05 +0200 From: Jiri Slaby To: stable@vger.kernel.org Cc: linux-kernel@vger.kernel.org, John Stultz , "Peter Zijlstra (Intel)" , Linus Torvalds , Sasha Levin , Ingo Molnar , Christian Riesch , Jiri Slaby Subject: [PATCH 3.12 082/155] ntp: Fixup adjtimex freq validation on 32-bit systems Date: Tue, 7 Apr 2015 14:50:51 +0200 Message-Id: <993b557bd9538b898dc467fe369e93f70edd3ff2.1428411004.git.jslaby@suse.cz> X-Mailer: git-send-email 2.3.4 In-Reply-To: <9a548862b8a26cbccc14f2c6c9c3688813d8d14b.1428411003.git.jslaby@suse.cz> References: <9a548862b8a26cbccc14f2c6c9c3688813d8d14b.1428411003.git.jslaby@suse.cz> In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org Precedence: list List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: linux-kernel-owner@vger.kernel.org X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.44 as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , From: John Stultz 3.12-stable review patch. If anyone has any objections, please let me know. =============== commit 29183a70b0b828500816bd794b3fe192fce89f73 upstream. Additional validation of adjtimex freq values to avoid potential multiplication overflows were added in commit 5e5aeb4367b (time: adjtimex: Validate the ADJ_FREQUENCY values) Unfortunately the patch used LONG_MAX/MIN instead of LLONG_MAX/MIN, which was fine on 64-bit systems, but being much smaller on 32-bit systems caused false positives resulting in most direct frequency adjustments to fail w/ EINVAL. ntpd only does direct frequency adjustments at startup, so the issue was not as easily observed there, but other time sync applications like ptpd and chrony were more effected by the bug. See bugs: https://bugzilla.kernel.org/show_bug.cgi?id=92481 https://bugzilla.redhat.com/show_bug.cgi?id=1188074 This patch changes the checks to use LLONG_MAX for clarity, and additionally the checks are disabled on 32-bit systems since LLONG_MAX/PPM_SCALE is always larger then the 32-bit long freq value, so multiplication overflows aren't possible there. Reported-by: Josh Boyer Reported-by: George Joseph Tested-by: George Joseph Signed-off-by: John Stultz Signed-off-by: Peter Zijlstra (Intel) Cc: Linus Torvalds Cc: Sasha Levin Link: http://lkml.kernel.org/r/1423553436-29747-1-git-send-email-john.stultz@linaro.org [ Prettified the changelog and the comments a bit. ] Signed-off-by: Ingo Molnar Cc: Christian Riesch Signed-off-by: Jiri Slaby --- kernel/time/ntp.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c index 28db9bedc857..6211d5d6d465 100644 --- a/kernel/time/ntp.c +++ b/kernel/time/ntp.c @@ -631,10 +631,14 @@ int ntp_validate_timex(struct timex *txc) if ((txc->modes & ADJ_SETOFFSET) && (!capable(CAP_SYS_TIME))) return -EPERM; - if (txc->modes & ADJ_FREQUENCY) { - if (LONG_MIN / PPM_SCALE > txc->freq) + /* + * Check for potential multiplication overflows that can + * only happen on 64-bit systems: + */ + if ((txc->modes & ADJ_FREQUENCY) && (BITS_PER_LONG == 64)) { + if (LLONG_MIN / PPM_SCALE > txc->freq) return -EINVAL; - if (LONG_MAX / PPM_SCALE < txc->freq) + if (LLONG_MAX / PPM_SCALE < txc->freq) return -EINVAL; }