diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/getsysstats.c | 4 |
3 files changed, 9 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index 83764a5840..d5474af375 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2014-06-13 Meador Inge <meadori@codesourcery.com> + + [BZ #16996] + sysdeps/unix/sysv/linux/getsysstats.c (__get_nprocs): Ensure + that the cached result has been set before returning it. + 2014-06-12 Roland McGrath <roland@hack.frob.com> * nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Moved ... diff --git a/NEWS b/NEWS index 655226d5d5..38cc5b54de 100644 --- a/NEWS +++ b/NEWS @@ -19,7 +19,7 @@ Version 2.20 16791, 16796, 16799, 16800, 16815, 16823, 16824, 16831, 16838, 16849, 16854, 16876, 16877, 16878, 16882, 16885, 16888, 16890, 16912, 16915, 16916, 16917, 16922, 16927, 16928, 16932, 16943, 16958, 16965, 16966, - 16967, 16977, 16978, 16984, 16990, 17009, 17042, 17048. + 16967, 16977, 16978, 16984, 16990, 16996, 17009, 17042, 17048. * The minimum Linux kernel version that this version of the GNU C Library can be used with is 2.6.32. diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c index b6a6fe3e2f..755c259862 100644 --- a/sysdeps/unix/sysv/linux/getsysstats.c +++ b/sysdeps/unix/sysv/linux/getsysstats.c @@ -126,13 +126,13 @@ next_line (int fd, char *const buffer, char **cp, char **re, int __get_nprocs (void) { - static int cached_result; + static int cached_result = -1; static time_t timestamp; time_t now = time (NULL); time_t prev = timestamp; atomic_read_barrier (); - if (now == prev) + if (now == prev && cached_result > -1) return cached_result; /* XXX Here will come a test for the new system call. */ |