summaryrefslogtreecommitdiffstats
path: root/lib/iomap_copy.c
diff options
context:
space:
mode:
authorDmitriy Vyukov <dvyukov@google.com>2015-09-22 10:51:52 +0200
committerDavid S. Miller <davem@davemloft.net>2015-09-23 02:36:07 +0200
commit7def0f952eccdd0edb3c504f4dab35ee0d3aba1f (patch)
treeb07b5d821064709d15bf725818ab3e3a751daafe /lib/iomap_copy.c
parentch9200: Convert to use module_usb_driver (diff)
downloadlinux-7def0f952eccdd0edb3c504f4dab35ee0d3aba1f.tar.xz
linux-7def0f952eccdd0edb3c504f4dab35ee0d3aba1f.zip
lib: fix data race in rhashtable_rehash_one
rhashtable_rehash_one() uses complex logic to update entry->next field, after INIT_RHT_NULLS_HEAD and NULLS_MARKER expansion: entry->next = 1 | ((base + off) << 1) This can be compiled along the lines of: entry->next = base + off entry->next <<= 1 entry->next |= 1 Which will break concurrent readers. NULLS value recomputation is not needed here, so just remove the complex logic. The data race was found with KernelThreadSanitizer (KTSAN). Signed-off-by: Dmitry Vyukov <dvyukov@google.com> Acked-by: Eric Dumazet <edumazet@google.com> Acked-by: Thomas Graf <tgraf@suug.ch> Acked-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'lib/iomap_copy.c')
0 files changed, 0 insertions, 0 deletions