From: Thomas Tai Date: Fri, 6 Jan 2017 14:18:38 +0000 (-0800) Subject: sparc: Fix kernel BUG at arch/sparc/kernel/mdesc.c X-Git-Tag: v4.1.12-104.0.20170618_1145~238 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=f54035fbff7a416cd4ab45a22e351694d3c001ed;p=users%2Fjedix%2Flinux-maple.git sparc: Fix kernel BUG at arch/sparc/kernel/mdesc.c When running ldoms reboot test for long hours, ldom guest panic with kernel BUG at arch/sparc/kernel/mdesc.c:176! It is because the mdesc size has changed, mdesc_update should retry the operation by decrement refcnt before mdesc_free. orabug 25359044 Signed-off-by: Thomas Tai Reviewed-By: Liam Merwick Signed-off-by: Allen Pais --- diff --git a/arch/sparc/kernel/mdesc.c b/arch/sparc/kernel/mdesc.c index 603e30f2e6f65..453eca3afdb9c 100644 --- a/arch/sparc/kernel/mdesc.c +++ b/arch/sparc/kernel/mdesc.c @@ -1420,6 +1420,7 @@ void __init sun4v_mdesc_init(void) status = sun4v_mach_desc(__pa(&hp->mdesc), len, &real_len); if (status != HV_EOK || real_len > len) { + atomic_dec(&hp->refcnt); mdesc_free(hp); hp = NULL; continue;