summaryrefslogtreecommitdiffstats
path: root/sys-utils/ipcutils.c
diff options
context:
space:
mode:
authorRuediger Meier2016-03-18 12:49:18 +0100
committerKarel Zak2016-03-18 15:38:06 +0100
commit73f4f3d925d3dfb0c2f2b3246bceb5f6bfb5fa20 (patch)
tree0c0cf91faee376eb75ee1861af45a76492111bd4 /sys-utils/ipcutils.c
parentipcs: make sure to parse whole lines for shm_data (diff)
downloadkernel-qcow2-util-linux-73f4f3d925d3dfb0c2f2b3246bceb5f6bfb5fa20.tar.gz
kernel-qcow2-util-linux-73f4f3d925d3dfb0c2f2b3246bceb5f6bfb5fa20.tar.xz
kernel-qcow2-util-linux-73f4f3d925d3dfb0c2f2b3246bceb5f6bfb5fa20.zip
ipcs: --shmems, upward/backward compatibility
Re-add backward compatibility which got lost in 058e8154. Initializing unknown struct members to 0xdead is similar to the fallback. For upward compatibility ignore columns > 16 but not the whole line (in case the kernel would add more columns in future). Reported-by: Benno Schulenberg <bensberg@justemail.net> Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
Diffstat (limited to 'sys-utils/ipcutils.c')
-rw-r--r--sys-utils/ipcutils.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys-utils/ipcutils.c b/sys-utils/ipcutils.c
index c763cde69..349e8550e 100644
--- a/sys-utils/ipcutils.c
+++ b/sys-utils/ipcutils.c
@@ -113,6 +113,9 @@ int ipc_shm_get_info(int id, struct shm_data **shmds)
while (fgetc(f) != '\n'); /* skip header */
while (fgets(buf, sizeof(buf), f) != NULL) {
+ /* scan for the first 14-16 columns (e.g. Linux 2.6.32 has 14) */
+ p->shm_rss = 0xdead;
+ p->shm_swp = 0xdead;
if (sscanf(buf,
"%d %d %o %"SCNu64 " %u %u "
"%"SCNu64 " %u %u %u %u %"SCNi64 " %"SCNi64 " %"SCNi64
@@ -132,7 +135,7 @@ int ipc_shm_get_info(int id, struct shm_data **shmds)
&p->shm_dtim,
&p->shm_ctim,
&p->shm_rss,
- &p->shm_swp) != 16)
+ &p->shm_swp) < 14)
continue; /* ivalid line, skipped */
if (id > -1) {