]> 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)
commit7a29780eb3b043b08d0e4c3fc7ea7fd2482c1924
tree9029cc6548f66604f49a6397c3e80de2d0734300
parent85186d699c1749281f330af9d5c2f7c3fa32f9d4
parent810e662b55e683d17423eb80ec131d275cde71dc
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>