commit 5005eb474909532ced60bfa0ec594436fa6a9d27 Author: Jan Rękorajski <bagg...@pld-linux.org> Date: Thu Feb 19 20:29:48 2015 +0100
- 3.10.69 - added fix for adjtimex failed for set_frequency... error kernel-small_fixes.patch | 68 ++++++++++++++++++++++++++++++++++++++++++++++++ kernel.spec | 4 +-- 2 files changed, 70 insertions(+), 2 deletions(-) --- diff --git a/kernel.spec b/kernel.spec index 701e86b..fc102b3 100644 --- a/kernel.spec +++ b/kernel.spec @@ -71,7 +71,7 @@ %define rel 1 %define basever 3.10 -%define postver .68 +%define postver .69 %define versuffix -%{basever} @@ -116,7 +116,7 @@ Source0: http://www.kernel.org/pub/linux/kernel/v3.x/linux-%{basever}.tar.xz # Source0-md5: 4f25cd5bec5f8d5a7d935b3f2ccb8481 %if "%{postver}" != ".0" Patch0: http://www.kernel.org/pub/linux/kernel/v3.x/patch-%{version}.xz -# Patch0-md5: dfa635d7e8975f4c765d5fba7d1fad0d +# Patch0-md5: b2a3192b134be87f485df81e1e6a5035 %endif Source1: kernel.sysconfig diff --git a/kernel-small_fixes.patch b/kernel-small_fixes.patch index 5c0de9d..4c8ae25 100644 --- a/kernel-small_fixes.patch +++ b/kernel-small_fixes.patch @@ -112,3 +112,71 @@ index 4e565c8..732648b 100644 spin_lock_init(&group->fanotify_data.access_lock); -- cgit v0.10.1 +From 29183a70b0b828500816bd794b3fe192fce89f73 Mon Sep 17 00:00:00 2001 +From: John Stultz <john.stu...@linaro.org> +Date: Mon, 9 Feb 2015 23:30:36 -0800 +Subject: ntp: Fixup adjtimex freq validation on 32-bit systems + +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 <jwbo...@fedoraproject.org> +Reported-by: George Joseph <george.jos...@fairview5.com> +Tested-by: George Joseph <george.jos...@fairview5.com> +Signed-off-by: John Stultz <john.stu...@linaro.org> +Signed-off-by: Peter Zijlstra (Intel) <pet...@infradead.org> +Cc: <sta...@vger.kernel.org> # v3.19+ +Cc: Linus Torvalds <torva...@linux-foundation.org> +Cc: Sasha Levin <sasha.le...@oracle.com> +Link: http://lkml.kernel.org/r/1423553436-29747-1-git-send-email-john.stu...@linaro.org +[ Prettified the changelog and the comments a bit. ] +Signed-off-by: Ingo Molnar <mi...@kernel.org> + +diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c +index 4b585e0..0f60b08 100644 +--- a/kernel/time/ntp.c ++++ b/kernel/time/ntp.c +@@ -633,10 +633,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; + } + +-- +cgit v0.10.2 + ================================================================ ---- gitweb: http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/5005eb474909532ced60bfa0ec594436fa6a9d27 _______________________________________________ pld-cvs-commit mailing list pld-cvs-commit@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit