VT-d/RMRR: Avoid memory corruption in add_user_rmrr()
authorAndrew Cooper <andrew.cooper3@citrix.com>
Mon, 30 Jan 2017 10:09:06 +0000 (10:09 +0000)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Mon, 30 Jan 2017 11:07:48 +0000 (11:07 +0000)
register_one_rmrr() already frees its parameter if errors are encountered.

Introduced by c/s 431685e8de and spotted by Coverity.

Coverity-ID: 1399607
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
xen/drivers/passthrough/vtd/dmar.c

index 4a6a819dbdde50c6faab28e2586afc4c46d40a28..1143a9dee5bc10b2a75983c97de37a9c8ca2edfe 100644 (file)
@@ -975,13 +975,9 @@ static int __init add_user_rmrr(void)
         rmrr->scope.devices_cnt = user_rmrrs[i].dev_count;
 
         if ( register_one_rmrr(rmrr) )
-        {
             printk(XENLOG_ERR VTDPREFIX
                    "Could not register RMMR range "ERMRRU_FMT"\n",
                    ERMRRU_ARG(user_rmrrs[i]));
-            scope_devices_free(&rmrr->scope);
-            xfree(rmrr);
-        }
     }
 
     return 0;