hv_netvsc: set nvdev link after populating chn_table
authorVitaly Kuznetsov <vkuznets@redhat.com>
Fri, 13 May 2016 11:55:25 +0000 (13:55 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 16 May 2016 17:26:01 +0000 (13:26 -0400)
commit88098834827025cc04c15f1b4b0d9bbef3cf55af
tree9029cc6548f66604f49a6397c3e80de2d0734300
parent6da7225f5a95ba68e3c6225c4051182bef30eed4
hv_netvsc: set nvdev link after populating chn_table

Crash in netvsc_send() is observed when netvsc device is re-created on
mtu change/set channels. The crash is caused by dereferencing of NULL
channel pointer which comes from chn_table. The root cause is a mixture
of two facts:
- we set nvdev pointer in net_device_context in alloc_net_device()
  before we populate chn_table.
- we populate chn_table[0] only.

The issue could be papered over by checking channel != NULL in
netvsc_send() but populating the whole chn_table and writing the
nvdev pointer afterwards seems more appropriate.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/hyperv/netvsc.c