diff --git a/src/sysmngr.c b/src/sysmngr.c
index f85292047c8f1afa1e4f545288cc7bfa105c747c..f66fe162bee407c7e14cdae0b2bd3e0235213cd1 100644
--- a/src/sysmngr.c
+++ b/src/sysmngr.c
@@ -140,8 +140,6 @@ int main(int argc, char **argv)
 	uloop_run();
 
 out:
-	bbfdm_ubus_regiter_free(&bbfdm_ctx);
-
 #ifdef SYSMNGR_PROCESS_STATUS
 	sysmngr_process_clean(&bbfdm_ctx.ubus_ctx);
 	sysmngr_cpu_clean();
@@ -159,6 +157,7 @@ out:
 	sysmngr_clean_fwbank_dump(&bbfdm_ctx.ubus_ctx);
 #endif
 
+	bbfdm_ubus_regiter_free(&bbfdm_ctx);
 	closelog();
 
 	return 0;