Vitaly Kuznetsov writes:
>
> Ok, I may have missed something. I'll try reproducing the crash and
> finding a better fine-grained solution.
>
It's been two days and I'm failing to reproduce the crash in
rndis_filter_receive() in my environment so I'll probably just re-send
patches 1 and 4 of this
Stephen Hemminger writes:
> On Tue, 31 Oct 2017 14:42:02 +0100
> Vitaly Kuznetsov wrote:
>
>> @@ -2002,7 +2002,9 @@ static int netvsc_probe(struct hv_device *dev,
>> device_info.recv_sections = NETVSC_DEFAULT_RX;
>> device_info.recv_section_size = NETVSC_RECV_SECTION_SIZE;
>>
>> +
On Tue, 31 Oct 2017 14:42:02 +0100
Vitaly Kuznetsov wrote:
> @@ -2002,7 +2002,9 @@ static int netvsc_probe(struct hv_device *dev,
> device_info.recv_sections = NETVSC_DEFAULT_RX;
> device_info.recv_section_size = NETVSC_RECV_SECTION_SIZE;
>
> + rtnl_lock();
> nvdev = rndis
rndis_filter_receive() is called from interrupt context and may race with
rndis_filter_device_remove() resetting extension pointer. RNDIS_MSG_HALT
does not help, host may still send us messages after it. Protect extension
pointer with RCU.
Signed-off-by: Vitaly Kuznetsov
---
drivers/net/hyperv/h