]> git.baikalelectronics.ru Git - kernel.git/commit
Merge branch 'bridge-fdbs-bitops'
authorDavid S. Miller <davem@davemloft.net>
Wed, 30 Oct 2019 01:12:49 +0000 (18:12 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 30 Oct 2019 01:12:49 +0000 (18:12 -0700)
commit1cd1712969b26cbc818ed9b1fe476bb09917788a
tree1593f1bd99efccfd38ae3530fa5eaad9909ed9e9
parent7f3acf3b5b07d83045905e8747efd4e1f55a0e82
parenta5df2fcc7a470f59f1b1dfe75ea113107745925f
Merge branch 'bridge-fdbs-bitops'

Nikolay Aleksandrov says:

====================
net: bridge: convert fdbs to use bitops

We'd like to have a well-defined behaviour when changing fdb flags. The
problem is that we've added new fields which are changed from all
contexts without any locking. We are aware of the bit test/change races
and these are fine (we can remove them later), but it is considered
undefined behaviour to change bitfields from multiple threads and also
on some architectures that can result in unexpected results,
specifically when all fields between the changed ones are also
bitfields. The conversion to bitops shows the intent clearly and
makes them use functions with well-defined behaviour in such cases.
There is no overhead for the fast-path, the bit changing functions are
used only in special cases when learning and in the slow path.
In addition this conversion allows us to simplify fdb flag handling and
avoid bugs for future bits (e.g. a forgetting to clear the new bit when
allocating a new fdb). All bridge selftests passed, also tried all of the
converted bits manually in a VM.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>