]> git.baikalelectronics.ru Git - kernel.git/commit
Merge branch 'hv_netvsc-races'
authorDavid S. Miller <davem@davemloft.net>
Mon, 16 May 2016 17:26:01 +0000 (13:26 -0400)
committerDavid S. Miller <davem@davemloft.net>
Mon, 16 May 2016 17:26:01 +0000 (13:26 -0400)
commit6944ea9ea9196a40d33ce995ae0b0d1eff7b31bd
tree9029cc6548f66604f49a6397c3e80de2d0734300
parent6d8a7c953a6cac8f3497d1e171f4ad44654d1f0c
parent07a8823e91785617103fd5645d4c7567d71efdc8
Merge branch 'hv_netvsc-races'

Vitaly Kuznetsov says:

====================
hv_netvsc: avoid races on mtu change/set channels

Changes since v1:
- Rebased to net-next [Haiyang Zhang]

Original description:

MTU change and set channels operations are implemented as netvsc device
re-creation destroying internal structures (struct net_device stays). This
is really unfortunate but there is no support from Hyper-V host to do it
in a different way. Such re-creation is unsurprisingly racy, Haiyang
reported a crash when netvsc_change_mtu() is racing with
netvsc_link_change() but I was able to identify additional races upon
investigation. Both netvsc_set_channels() and netvsc_change_mtu() race
against:
1) netvsc_link_change()
2) netvsc_remove()
3) netvsc_send()

To solve these issues without introducing new locks some refactoring is
required. We need to get rid of very complex link graph in all the
internal structures and avoid traveling through structures which are being
removed.
====================

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