From 929c257548049f34d357355fc72a6f1540f751cf Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Fri, 19 Dec 2014 13:42:41 +0100 Subject: ipcs: fix shmctl() usage The function shmctl() has to be called with 'struct shmid_ds', and if you need 'struct shminfo' then the right way is to cast: bad way: struct shm_info info; shmctl(0, SHM_INFO, &info); right way: struct shmid_ds buf; struct shm_info *info; shmctl(0, SHM_INFO, &buf); info = (struct shm_info *) &buf); The patch also fixes bug in ipc_shm_get_limits() where is missing lim->shmmax in code based on shmctl(). Signed-off-by: Karel Zak --- sys-utils/ipcs.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'sys-utils/ipcs.c') diff --git a/sys-utils/ipcs.c b/sys-utils/ipcs.c index 9ce536612..a2d7f12ad 100644 --- a/sys-utils/ipcs.c +++ b/sys-utils/ipcs.c @@ -209,9 +209,11 @@ static void do_shm (char format, int unit) case STATUS: { int maxid; - struct shm_info shm_info; + struct shmid_ds shmbuf; + struct shm_info *shm_info; - maxid = shmctl (0, SHM_INFO, (struct shmid_ds *) &shm_info); + maxid = shmctl (0, SHM_INFO, &shmbuf); + shm_info = (struct shm_info *) &shmbuf; if (maxid < 0) { printf (_("kernel not configured for shared memory\n")); return; @@ -234,11 +236,11 @@ static void do_shm (char format, int unit) "pages resident %ld\n" "pages swapped %ld\n" "Swap performance: %ld attempts\t %ld successes\n"), - shm_info.used_ids, - shm_info.shm_tot, - shm_info.shm_rss, - shm_info.shm_swp, - shm_info.swap_attempts, shm_info.swap_successes); + shm_info->used_ids, + shm_info->shm_tot, + shm_info->shm_rss, + shm_info->shm_swp, + shm_info->swap_attempts, shm_info->swap_successes); return; } -- cgit v1.2.3-55-g7522