/* ADJ_FREQ Skew change test * by: john stultz (johnstul@us.ibm.com) * (C) Copyright IBM 2012 * Licensed under the GPLv2 * * NOTE: This is a meta-test which cranks the ADJ_FREQ knob and * then uses other tests to detect problems. Thus this test requires * that the raw_skew, inconsistency-check and nanosleep tests be * present in the same directory it is run from. * * To build: * $ gcc change_skew.c -o change_skew -lrt * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include #include #include #include #include #ifdef KTEST #include "../kselftest.h" #else static inline int ksft_exit_pass(void) { exit(0); } static inline int ksft_exit_fail(void) { exit(1); } #endif #define NSEC_PER_SEC 1000000000LL int change_skew_test(int ppm) { struct timex tx; int ret; tx.modes = ADJ_FREQUENCY; tx.freq = ppm << 16; ret = adjtimex(&tx); if (ret < 0) { printf("Error adjusting freq\n"); return ret; } ret = system("./raw_skew"); ret |= system("./inconsistency-check"); ret |= system("./nanosleep"); return ret; } int main(int argv, char **argc) { struct timex tx; int i, ret; int ppm[5] = {0, 250, 500, -250, -500}; /* Kill ntpd */ ret = system("killall -9 ntpd"); /* Make sure there's no offset adjustment going on */ tx.modes = ADJ_OFFSET; tx.offset = 0; ret = adjtimex(&tx); if (ret < 0) { printf("Maybe you're not running as root?\n"); return -1; } for (i = 0; i < 5; i++) { printf("Using %i ppm adjustment\n", ppm[i]); ret = change_skew_test(ppm[i]); if (ret) break; } /* Set things back */ tx.modes = ADJ_FREQUENCY; tx.offset = 0; adjtimex(&tx); if (ret) { printf("[FAIL]"); return ksft_exit_fail(); } printf("[OK]"); return ksft_exit_pass(); } d599c7289526eed96541a0654'/>
diff options
context:
space:
mode:
authorJohan Hovold <johan@kernel.org>2017-01-30 11:26:38 +0100
committerJiri Kosina <jkosina@suse.cz>2017-01-31 12:59:32 +0100
commit7a7b5df84b6b4e5d599c7289526eed96541a0654 (patch)
treecf7514c7ddf4410fe37ca9099a2785e1cf08fa7d /net/decnet/dn_timer.c
parent877a021e08ccb6434718c0cc781fdf943c884cc0 (diff)
HID: cp2112: fix sleep-while-atomic
A recent commit fixing DMA-buffers on stack added a shared transfer buffer protected by a spinlock. This is broken as the USB HID request callbacks can sleep. Fix this up by replacing the spinlock with a mutex. Fixes: 1ffb3c40ffb5 ("HID: cp2112: make transfer buffers DMA capable") Cc: stable <stable@vger.kernel.org> # 4.9 Signed-off-by: Johan Hovold <johan@kernel.org> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'net/decnet/dn_timer.c')