diff --git a/openbsc/src/abis_nm.c b/openbsc/src/abis_nm.c
index 4a73930..b07aa31 100644
--- a/openbsc/src/abis_nm.c
+++ b/openbsc/src/abis_nm.c
@@ -2079,12 +2079,11 @@
 		if (rc < 2)
 			continue;
 
-		fle = talloc(tall_fle_ctx, struct file_list_entry);
+		fle = talloc_zero(tall_fle_ctx, struct file_list_entry);
 		if (!fle) {
 			rc = -ENOMEM;
 			goto out;
 		}
-		memset(fle, 0, sizeof(*fle));
 
 		/* construct new filename */
 		strncpy(dir, bs11_sw->swl_fname, sizeof(dir));
diff --git a/openbsc/src/e1_config.c b/openbsc/src/e1_config.c
index abc3040..9c9f40c 100644
--- a/openbsc/src/e1_config.c
+++ b/openbsc/src/e1_config.c
@@ -25,10 +25,9 @@
 	struct e1inp_ts *sign_ts;
 	struct e1inp_sign_link *oml_link, *rsl_link;
 
-	line = talloc(tall_bsc_ctx, struct e1inp_line);
+	line = talloc_zero(tall_bsc_ctx, struct e1inp_line);
 	if (!line)
 		return -ENOMEM;
-	memset(line, 0, sizeof(*line));
 
 	/* create E1 timeslots for signalling and TRAU frames */
 	e1inp_ts_config(&line->ts[1-1], line, E1INP_TS_TYPE_SIGN);
@@ -80,10 +79,9 @@
 	struct e1inp_ts *sign_ts, *rsl_ts;
 	struct e1inp_sign_link *oml_link, *rsl_link;
 
-	line = talloc(tall_bsc_ctx, struct e1inp_line);
+	line = talloc_zero(tall_bsc_ctx, struct e1inp_line);
 	if (!line)
 		return -ENOMEM;
-	memset(line, 0, sizeof(*line));
 
 	/* create E1 timeslots for signalling and TRAU frames */
 	e1inp_ts_config(&line->ts[1-1], line, E1INP_TS_TYPE_SIGN);
diff --git a/openbsc/src/e1_input.c b/openbsc/src/e1_input.c
index 9de6b01..56bce01 100644
--- a/openbsc/src/e1_input.c
+++ b/openbsc/src/e1_input.c
@@ -373,12 +373,10 @@
 		tall_sigl_ctx = talloc_named_const(tall_bsc_ctx, 1,
 						   "e1inp_sign_link");
 
-	link = talloc(tall_sigl_ctx, struct e1inp_sign_link);
+	link = talloc_zero(tall_sigl_ctx, struct e1inp_sign_link);
 	if (!link)
 		return NULL;
 
-	memset(link, 0, sizeof(*link));
-
 	link->ts = ts;
 	link->type = type;
 	INIT_LLIST_HEAD(&link->tx_list);
diff --git a/openbsc/src/gsm_04_08.c b/openbsc/src/gsm_04_08.c
index d6f131e..6d8530b 100644
--- a/openbsc/src/gsm_04_08.c
+++ b/openbsc/src/gsm_04_08.c
@@ -354,9 +354,8 @@
 	if (!tall_locop_ctx)
 		tall_locop_ctx = talloc_named_const(tall_bsc_ctx, 1,
 						    "loc_updating_oper");
-	lchan->loc_operation = talloc(tall_locop_ctx,
-				      struct gsm_loc_updating_operation);
-	memset(lchan->loc_operation, 0, sizeof(*lchan->loc_operation));
+	lchan->loc_operation = talloc_zero(tall_locop_ctx,
+					   struct gsm_loc_updating_operation);
 }
 
 static int gsm0408_authorize(struct gsm_lchan *lchan, struct msgb *msg)
diff --git a/openbsc/src/paging.c b/openbsc/src/paging.c
index 217da7e..0703e93 100644
--- a/openbsc/src/paging.c
+++ b/openbsc/src/paging.c
@@ -228,8 +228,7 @@
 	}
 
 	DEBUGP(DPAG, "Start paging on bts %d.\n", bts->nr);
-	req = talloc(tall_paging_ctx, struct gsm_paging_request);
-	memset(req, 0, sizeof(*req));
+	req = talloc_zero(tall_paging_ctx, struct gsm_paging_request);
 	req->subscr = subscr_get(subscr);
 	req->bts = bts;
 	req->chan_type = type;
diff --git a/openbsc/src/subchan_demux.c b/openbsc/src/subchan_demux.c
index 56f3dd3..ccd4fad 100644
--- a/openbsc/src/subchan_demux.c
+++ b/openbsc/src/subchan_demux.c
@@ -291,12 +291,11 @@
 {
 	struct mux_subch *sch = &mx->subch[s_nr];
 	int list_len = llist_len(&sch->tx_queue);
-	struct subch_txq_entry *tqe = talloc_size(tall_tqe_ctx,
-						  sizeof(*tqe) + len);
+	struct subch_txq_entry *tqe = talloc_zero_size(tall_tqe_ctx,
+							sizeof(*tqe) + len);
 	if (!tqe)
 		return -ENOMEM;
 
-	memset(tqe, 0, sizeof(*tqe));
 	tqe->bit_len = len;
 	memcpy(tqe->bits, data, len);
 
diff --git a/openbsc/src/telnet_interface.c b/openbsc/src/telnet_interface.c
index 5cc6ea0..7a67fe1 100644
--- a/openbsc/src/telnet_interface.c
+++ b/openbsc/src/telnet_interface.c
@@ -167,8 +167,7 @@
 	}
 
 
-	connection = talloc(tall_telnet_ctx, struct telnet_connection);
-	memset(connection, 0, sizeof(*connection));
+	connection = talloc_zero(tall_telnet_ctx, struct telnet_connection);
 	connection->network = (struct gsm_network*)fd->data;
 	connection->fd.data = connection;
 	connection->fd.fd = new_connection;
