Comment 34 for bug 1719045

Revision history for this message
Marcelo Cerri (mhcerri) wrote :

Thanks, Dexuan.

Reading the specification I believe I found the problem. The original implementation is assuming the entire hv_vp_set structure is variable and it's passing `nr_bank + 2` as variable header size for hv_do_rep_hypercall().

However the specification states:

"Since the fixed header size is implicit, instead of supplying the total header size, only the variable portion is supplied in the input controls."

Based on that, the first two fields in hv_vp_set should not be considered for the variable header size and `nr_bank` should be used instead of `nr_bank + 2`.

I'm attaching the backport for the 3 upstream commits plus a forth patch with that fix. I also built a kernel with those patches for testing purposes and it can be downloaded from:

http://kernel.ubuntu.com/~mhcerri/azure/lp1719045-fix/

I was able to restart dockerd with this kernel hundred of times without any problem.

Let me know if the solution seems reasonable for you. Once that is tested I will submit the fix upstream.