From: Juergen Perlinger Date: Fri, 4 Jun 2010 17:21:26 +0000 (+0200) Subject: [Bug 1570] serial line drivers get outdated data from kernel tty line buffer after... X-Git-Tag: NTP_4_2_7P34~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f448cb39bc527c89b210086107426744089bb29b;p=thirdparty%2Fntp.git [Bug 1570] serial line drivers get outdated data from kernel tty line buffer after startup bk: 4c093616Fn73LOrQDeD-BBJto8MfXA --- diff --git a/ChangeLog b/ChangeLog index cdd054e93..b8947a0da 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,5 @@ -* [Bug 1580] serial clock drivers get outdated input from kernel - tty line buffer after startup +* [Bug 1570] serial clock drivers get outdated input from kernel tty + line buffer after startup (4.2.7p33) 2010/06/04 Released by Harlan Stenn * [Bug 1561] from 4.2.6p2-RC5: ntpq, ntpdc "passwd" prompts for MD5 password w/SHA1. diff --git a/ntpd/ntp_refclock.c b/ntpd/ntp_refclock.c index 249c998c4..3fb18e07a 100644 --- a/ntpd/ntp_refclock.c +++ b/ntpd/ntp_refclock.c @@ -746,11 +746,11 @@ refclock_open( #ifdef O_NONBLOCK /* * We want to make sure there is no pending trash in the input - * buffer. Since we have none-blocking IO available, this is a good - * moment to read and dump all available outdated stuff that might have - * become toxic for the driver. + * buffer. Since we have none-blocking IO available, this is a + * good moment to read and dump all available outdated stuff + * that might have become toxic for the driver. */ - while (read(fd, trash, sizeof(trash)) > 0) + while (read(fd, trash, sizeof(trash)) > 0 || errno == EINTR) /*NOP*/; #endif return (fd); @@ -850,13 +850,12 @@ refclock_setup( } /* - * flush input and output buffers to discard any outdated stuff that - * might have become toxic for the driver. Failing to do so is logged, - * but we keep our fingers crossed otherwise. + * flush input and output buffers to discard any outdated stuff + * that might have become toxic for the driver. Failing to do so + * is logged, but we keep our fingers crossed otherwise. */ - if (tcflush(fd, TCIOFLUSH) < 0) { + if (tcflush(fd, TCIOFLUSH) < 0) msyslog(LOG_ERR, "refclock_setup fd %d tcflush(): %m", fd); - } #endif /* HAVE_TERMIOS */ #ifdef HAVE_SYSV_TTYS