]> granicus.if.org Git - procps-ng/commit
Fix overflow of "running" value in getstat()
authorVadim Ushakov <igeekless@gmail.com>
Tue, 11 Jun 2013 04:09:05 +0000 (12:09 +0800)
committerVadim Ushakov <igeekless@gmail.com>
Tue, 11 Jun 2013 04:09:05 +0000 (12:09 +0800)
commit5c9c7c8b1f92cdc66f6ec0d22990cee5edbf5a78
tree6df5f9ac11b6e8c0341d4ce5107367459da5180f
parentb55f9b97db9101e8fb1903d03f7bc7e9c8476572
Fix overflow of "running" value in  getstat()

It seems in some cases procs_running field of /proc/stat can contain 0 even if vmstat itself is running. At least this can be reproduced on Linux 3.9.3 compiled with BFS scheduler.

Since getstat() decrements value of procs_running by 1, we get overflow:

$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0 667732 918996  57376 911260   21   30    36    40   98   45 14 82  4  1
 4294967295  0 667728 916716  57376 911264    8    0     8     0 1958 3733 28  7 65  1
 0  0 667700 915996  57376 911416   24    0   152     0 1735 3600 23  5 71  1
 4294967295  0 667700 915872  57376 911392    0    0     0     0 1528 3165 21  4 76  0
proc/sysinfo.c