Re: [PATCH v2] CodeSamples/defer: Fix hazard torture

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

 



Hi,

I have squashed the two commits , because they are somewhat related.

Thanks,
Alan

> 2023年4月22日 18:34,Alan Huang <mmpgouride@xxxxxxxxx> 写道:
> 
> Because hp_try_record() must check for concurrent modifications,
> we should not dereference the pointer. The arg of hazptr_read_stress_test
> is always NULL, which is designated at time when create the thread,
> therefore, all threads will store their hazard pointer in the same slot.
> Also, hazptr_thread_exit will clear their own hazard pointer from
> smp_thread_id() * K.
> 
> Signed-off-by: Alan Huang <mmpgouride@xxxxxxxxx>
> ---
> CodeSamples/defer/hazptr.h        | 2 +-
> CodeSamples/defer/hazptrtorture.h | 5 ++---
> 2 files changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/CodeSamples/defer/hazptr.h b/CodeSamples/defer/hazptr.h
> index 759ab53d..e061303d 100644
> --- a/CodeSamples/defer/hazptr.h
> +++ b/CodeSamples/defer/hazptr.h
> @@ -87,7 +87,7 @@ static inline void *hp_record(void **p, //\lnlbl{hr:b}
> void *tmp;
> 
> do {
> - tmp = hp_try_record(*p, hp);
> + tmp = hp_try_record(p, hp);
> } while (tmp == (void *)HAZPTR_POISON);
> return tmp;
> } //\lnlbl{hr:e}
> diff --git a/CodeSamples/defer/hazptrtorture.h b/CodeSamples/defer/hazptrtorture.h
> index 53efa259..acdd532b 100644
> --- a/CodeSamples/defer/hazptrtorture.h
> +++ b/CodeSamples/defer/hazptrtorture.h
> @@ -99,7 +99,7 @@ void *hazptr_read_perf_test(void *arg)
> {
> int i;
> int me = (long)arg;
> - int base = me * K;
> + int base = smp_thread_id() * K;
> long long n_reads_local = 0;
> hazptr_head_t hh;
> hazptr_head_t *hhp = &hh;
> @@ -241,8 +241,7 @@ DEFINE_PER_THREAD(long long [HAZPTR_STRESS_PIPE_LEN + 1], hazptr_stress_count);
> 
> void *hazptr_read_stress_test(void *arg)
> {
> - int me = (int)(long)arg;
> - int base = me * K;
> + int base = smp_thread_id() * K;
> struct hazptr_stress *p;
> int pc;
> 
> -- 
> 2.34.1
> 





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux