xen: don't continue xenstore initialization in case of errors
Subsystems (2)
Stefano Stabellini
maintainerPATCH 1/1 xen: don't continue xenstore initialization in case of errors
From: Stefano Stabellini <[email protected]>
In case of errors in xenbus_init (e.g. missing xen_store_gfn parameter), we goto out_error but we forget to reset xen_store_domain_type to XS_UNKNOWN. As a consequence xenbus_probe_initcall and other initcalls will still try to initialize xenstore resulting into a crash at boot.
[ 2.479830] Call trace: [ 2.482314] xb_init_comms+0x18/0x150 [ 2.486354] xs_init+0x34/0x138 [ 2.489786] xenbus_probe+0x4c/0x70 [ 2.498432] xenbus_probe_initcall+0x2c/0x7c [ 2.503944] do_one_initcall+0x54/0x1b8 [ 2.507358] kernel_init_freeable+0x1ac/0x210 [ 2.511617] kernel_init+0x28/0x130 [ 2.516112] ret_from_fork+0x10/0x20
--- drivers/xen/xenbus/xenbus_probe.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/xen/xenbus/xenbus_probe.c +2 -0
@@ -983,8 +983,10 @@ static int __init xenbus_init(void)*/ proc_create_mount_point ("xen" );#endif +return err; out_error: + xen_store_domain_type =XS_UNKNOWN ;return err; }
Signature · 1 line
2.25.1
drivers/xen/xenbus/xenbus_probe.c static int __init xenbus_init(void) · line 986
Quoted 7 lines · Stefano Stabellini
drivers/xen/xenbus/xenbus_probe.c +1
-0@@ -983,8 +983,10 @@ static int __init xenbus_init(void)*/ proc_create_mount_point ("xen" );#endif +return err;
Personally I think such cases would better be "return 0". With that done here, err's initializer could (imo should) then also be dropped.
Jan
Quoted 6 lines
drivers/xen/xenbus/xenbus_probe.c +1
-0out_error: + xen_store_domain_type =XS_UNKNOWN ;return err; }
Stefano Stabellini
maintainerQuoted 12 lines · Jan Beulich
drivers/xen/xenbus/xenbus_probe.c static int __init xenbus_init(void) · line 986
Quoted 7 lines · Stefano Stabellini
drivers/xen/xenbus/xenbus_probe.c +1
-0@@ -983,8 +983,10 @@ static int __init xenbus_init(void)*/ proc_create_mount_point ("xen" );#endif +return err;Personally I think such cases would better be "return 0". With that done here, err's initializer could (imo should) then also be dropped.
I'll make both changes in the next version
Quoted 7 lines
Quoted 6 lines
drivers/xen/xenbus/xenbus_probe.c +1
-0out_error: + xen_store_domain_type =XS_UNKNOWN ;return err; }