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

Dave Anderson anderson at redhat.com
Mon Feb 4 14:57:30 UTC 2008


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 at suse.de>
> 
> ---
>  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 at redhat.com
> https://www.redhat.com/mailman/listinfo/crash-utility


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







More information about the Crash-utility mailing list