Re: [PATCH] SIAL ps.c: Fix wrong access to .counter on non-SMP kernels

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Bernhard Walle wrote:
This patch fixes following SIAL error when loading ps.c SIAL sample script on a
non-SMP system (kernel):

    File /usr/share/sial/crash/ps.c, line 130, Error: Expression \
        for member 'counter' is not a struct/union

The problem behind is that mm_counter_t is defined as 'unsigned long' on
systems which have NR_CPUS < CONFIG_SPLIT_PTLOCK_CPUS (in practise for
distribution kernels, that are only UMP kernels -- I don't know how to test for
that condition in SIAL).


Signed-off-by: Bernhard Walle <bwalle@xxxxxxx>

---
 ps.c |   11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

--- a/ps.c
+++ b/ps.c
@@ -127,7 +127,16 @@ int getasattr(task_t *t, int f)
 				return t->mm->rss*4;
 			} else {
 				struct mm_struct *mm=t->mm?t->mm:t->active_mm;
-				return (mm->_file_rss.counter+mm->_anon_rss.counter)*4;
+
+				/*
+				 * on a SMP kernel (with a reasonable amount of NR_CPUS),
+				 * the _anon_rss and _file_rss is a atomic_t, on a UMP kernel
+				 * it's a normal integer
+				 */
+				if (exists("smp_num_cpus") || exists("__per_cpu_offset"))
+				    return (mm->_file_rss.counter+mm->_anon_rss.counter)*4;
+                                else
+				    return (mm->_file_rss+mm->_anon_rss)*4;
 			}
 		case 2:
 			return t->mm->total_vm*4;

--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/crash-utility


http://people.redhat.com/anderson/extensions/ps.c has been updated
with the patch above.




--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/crash-utility

[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux