• P
    lib: test_rhashtable: fix for large entry counts · e859afe1
    Phil Sutter 提交于
    During concurrent access testing, threadfunc() concatenated thread ID
    and object index to create a unique key like so:
    
    | tdata->objs[i].value = (tdata->id << 16) | i;
    
    This breaks if a user passes an entries parameter of 64k or higher,
    since 'i' might use more than 16 bits then. Effectively, this will lead
    to duplicate keys in the table.
    
    Fix the problem by introducing a struct holding object and thread ID and
    using that as key instead of a single integer type field.
    
    Fixes: f4a3e90b ("rhashtable-test: extend to test concurrency")
    Reported by: Manuel Messner <mm@skelett.io>
    Signed-off-by: NPhil Sutter <phil@nwl.cc>
    Acked-by: NHerbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    e859afe1
test_rhashtable.c 10.6 KB