idr test suite: Take RCU read lock in idr_find_test_1
When run on a single CPU, this test would frequently access already-freed memory. Due to timing, this bug never showed up on multi-CPU tests. Reported-by: Chris von Recklinghausen <crecklin@redhat.com> Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
This commit is contained in:
Родитель
1bb4bd266c
Коммит
703586410d
|
@ -306,11 +306,15 @@ void idr_find_test_1(int anchor_id, int throbber_id)
|
|||
BUG_ON(idr_alloc(&find_idr, xa_mk_value(anchor_id), anchor_id,
|
||||
anchor_id + 1, GFP_KERNEL) != anchor_id);
|
||||
|
||||
rcu_read_lock();
|
||||
do {
|
||||
int id = 0;
|
||||
void *entry = idr_get_next(&find_idr, &id);
|
||||
rcu_read_unlock();
|
||||
BUG_ON(entry != xa_mk_value(id));
|
||||
rcu_read_lock();
|
||||
} while (time(NULL) < start + 11);
|
||||
rcu_read_unlock();
|
||||
|
||||
pthread_join(throbber, NULL);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче