lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <47A8D69C.8010505@cosmosbay.com>
Date:	Tue, 05 Feb 2008 22:35:24 +0100
From:	Eric Dumazet <dada1@...mosbay.com>
To:	Pekka Paalanen <pq@....fi>
CC:	Ingo Molnar <mingo@...e.hu>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 2/4] x86 mmiotrace: fix relay-buffer-full flag for SMP

Pekka Paalanen a écrit :
> On Tue, 05 Feb 2008 21:44:07 +0100
> Eric Dumazet <dada1@...mosbay.com> wrote:
> 
>> Pekka Paalanen a écrit :
>>> diff --git a/arch/x86/kernel/mmiotrace/mmio-mod.c b/arch/x86/kernel/mmiotrace/mmio-mod.c
>>> index 82ae920..f492b65 100644
>>> --- a/arch/x86/kernel/mmiotrace/mmio-mod.c
>>> +++ b/arch/x86/kernel/mmiotrace/mmio-mod.c
>>> @@ -47,9 +48,13 @@ struct trap_reason {
>>>  	int active_traces;
>>>  };
>>>  
>>> +/* Accessed per-cpu. */
>>>  static struct trap_reason pf_reason[NR_CPUS];
>>>  static struct mm_io_header_rw cpu_trace[NR_CPUS];
>>>  
>>> +/* Access to this is not per-cpu. */
>>> +static atomic_t dropped[NR_CPUS];
>>> +
>> Please dont introduce NR_CPUS new arrays, since people are working hard to zap 
>> them from kernel.
>>
>> You probably can use a per_cpu variable ?
> 
> Yes, it would probably be more appropriate to use DEFINE_PER_CPU()
> for 'pf_reason' and 'cpu_trace', but I wasn't sure since the examples
> of DEFINE_PER_CPU I saw always had integers or pointers, not
> whole structs. Is it okay for whole structs?

yes you can use a structure, you can check for example :

net/ipv4/route.c:static DEFINE_PER_CPU(struct rt_cache_stat, rt_cache_stat);

> 
> 'dropped' on the other hand is not accessed in per-cpu style, any cpu
> may access any element. DEFINE_PER_CPU is not valid here, is it?

It is valid, you can use per_cpu() accessor to get a pointer to a particular 
cpu data.

check net/ipv4/route.c for an example :

return &per_cpu(rt_cache_stat, cpu);

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ