From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753204AbcAVLHU (ORCPT ); Fri, 22 Jan 2016 06:07:20 -0500 Received: from terminus.zytor.com ([198.137.202.10]:42581 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753060AbcAVLHN (ORCPT ); Fri, 22 Jan 2016 06:07:13 -0500 Date: Fri, 22 Jan 2016 03:06:47 -0800 From: tip-bot for John Stultz Message-ID: Cc: hpa@zytor.com, sasha.levin@oracle.com, prarit@redhat.com, tglx@linutronix.de, john.stultz@linaro.org, mingo@kernel.org, kay@vrfy.org, linux-kernel@vger.kernel.org, dh.herrmann@gmail.com, richardcochran@gmail.com, harald@redhat.com Reply-To: kay@vrfy.org, linux-kernel@vger.kernel.org, richardcochran@gmail.com, dh.herrmann@gmail.com, harald@redhat.com, hpa@zytor.com, sasha.levin@oracle.com, prarit@redhat.com, tglx@linutronix.de, mingo@kernel.org, john.stultz@linaro.org In-Reply-To: <1453417415-19110-2-git-send-email-john.stultz@linaro.org> References: <1453417415-19110-2-git-send-email-john.stultz@linaro.org> To: linux-tip-commits@vger.kernel.org Subject: [tip:timers/urgent] ntp: Fix ADJ_SETOFFSET being used w/ ADJ_NANO Git-Commit-ID: dd4e17ab704269bce71402285f5e8b9ac24b1eff X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: dd4e17ab704269bce71402285f5e8b9ac24b1eff Gitweb: http://git.kernel.org/tip/dd4e17ab704269bce71402285f5e8b9ac24b1eff Author: John Stultz AuthorDate: Thu, 21 Jan 2016 15:03:34 -0800 Committer: Thomas Gleixner CommitDate: Fri, 22 Jan 2016 12:01:42 +0100 ntp: Fix ADJ_SETOFFSET being used w/ ADJ_NANO Recently, in commit 37cf4dc3370f I forgot to check if the timeval being passed was actually a timespec (as is signaled with ADJ_NANO). This resulted in that patch breaking ADJ_SETOFFSET users who set ADJ_NANO, by rejecting valid timespecs that were compared with valid timeval ranges. This patch addresses this by checking for the ADJ_NANO flag and using the timepsec check instead in that case. Reported-by: Harald Hoyer Reported-by: Kay Sievers Fixes: 37cf4dc3370f "time: Verify time values in adjtimex ADJ_SETOFFSET to avoid overflow" Signed-off-by: John Stultz Cc: Sasha Levin Cc: Richard Cochran Cc: Prarit Bhargava Cc: David Herrmann Link: http://lkml.kernel.org/r/1453417415-19110-2-git-send-email-john.stultz@linaro.org Signed-off-by: Thomas Gleixner --- kernel/time/ntp.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c index 36f2ca0..6df8927 100644 --- a/kernel/time/ntp.c +++ b/kernel/time/ntp.c @@ -685,8 +685,18 @@ int ntp_validate_timex(struct timex *txc) if (!capable(CAP_SYS_TIME)) return -EPERM; - if (!timeval_inject_offset_valid(&txc->time)) - return -EINVAL; + if (txc->modes & ADJ_NANO) { + struct timespec ts; + + ts.tv_sec = txc->time.tv_sec; + ts.tv_nsec = txc->time.tv_usec; + if (!timespec_inject_offset_valid(&ts)) + return -EINVAL; + + } else { + if (!timeval_inject_offset_valid(&txc->time)) + return -EINVAL; + } } /*