Message ID | 20250408020908.22575-1-richard.weiyang@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | maple_tree: exchange entry1/entry2 to make seen_entry2 do see new value | expand |
* Wei Yang <richard.weiyang@gmail.com> [250407 22:10]: > During run_check_rcu() and run_check_rcu_slowread(), we would write > entry2/entry3 to specified range and eval_rcu_entry() would test whether > these value is seen by reader. > > So we have three entries in struct rcu_test_struct: > > * entry1: the original value during tree initialization > * entry2/entry3: value to be written > > Currently we set entry2 to the original value, this would fool > eval_rcu_entry() to see entry2 even there is no writer. > > Exchange entry1/entry2 to make seen_entry2 do see new value. > > Signed-off-by: Wei Yang <richard.weiyang@gmail.com> > CC: Liam R. Howlett <Liam.Howlett@Oracle.com> Reviewed-by: Liam R. Howlett <Liam.Howlett@Oracle.com> > --- > tools/testing/radix-tree/maple.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/tools/testing/radix-tree/maple.c b/tools/testing/radix-tree/maple.c > index 1e293e4d856d..fc6578f81cb0 100644 > --- a/tools/testing/radix-tree/maple.c > +++ b/tools/testing/radix-tree/maple.c > @@ -35323,8 +35323,8 @@ static noinline void __init check_rcu_threaded(struct maple_tree *mt) > vals.mt = mt; > vals.index = 4390; > vals.last = 4398; > - vals.entry1 = xa_mk_value(4390); > - vals.entry2 = xa_mk_value(439); > + vals.entry1 = xa_mk_value(439); > + vals.entry2 = xa_mk_value(4390); > vals.entry3 = xa_mk_value(439); > vals.seen_entry2 = 0; > vals.range_start = 4316; > @@ -35360,8 +35360,8 @@ static noinline void __init check_rcu_threaded(struct maple_tree *mt) > vals.mt = mt; > vals.index = 4390; > vals.last = 4398; > - vals.entry1 = xa_mk_value(4390); > - vals.entry2 = xa_mk_value(439); > + vals.entry1 = xa_mk_value(439); > + vals.entry2 = xa_mk_value(4390); > vals.entry3 = xa_mk_value(4391); > vals.seen_toggle = 0; > vals.seen_added = 0; > -- > 2.34.1 >
diff --git a/tools/testing/radix-tree/maple.c b/tools/testing/radix-tree/maple.c index 1e293e4d856d..fc6578f81cb0 100644 --- a/tools/testing/radix-tree/maple.c +++ b/tools/testing/radix-tree/maple.c @@ -35323,8 +35323,8 @@ static noinline void __init check_rcu_threaded(struct maple_tree *mt) vals.mt = mt; vals.index = 4390; vals.last = 4398; - vals.entry1 = xa_mk_value(4390); - vals.entry2 = xa_mk_value(439); + vals.entry1 = xa_mk_value(439); + vals.entry2 = xa_mk_value(4390); vals.entry3 = xa_mk_value(439); vals.seen_entry2 = 0; vals.range_start = 4316; @@ -35360,8 +35360,8 @@ static noinline void __init check_rcu_threaded(struct maple_tree *mt) vals.mt = mt; vals.index = 4390; vals.last = 4398; - vals.entry1 = xa_mk_value(4390); - vals.entry2 = xa_mk_value(439); + vals.entry1 = xa_mk_value(439); + vals.entry2 = xa_mk_value(4390); vals.entry3 = xa_mk_value(4391); vals.seen_toggle = 0; vals.seen_added = 0;
During run_check_rcu() and run_check_rcu_slowread(), we would write entry2/entry3 to specified range and eval_rcu_entry() would test whether these value is seen by reader. So we have three entries in struct rcu_test_struct: * entry1: the original value during tree initialization * entry2/entry3: value to be written Currently we set entry2 to the original value, this would fool eval_rcu_entry() to see entry2 even there is no writer. Exchange entry1/entry2 to make seen_entry2 do see new value. Signed-off-by: Wei Yang <richard.weiyang@gmail.com> CC: Liam R. Howlett <Liam.Howlett@Oracle.com> --- tools/testing/radix-tree/maple.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)