diff --git a/openbsc/src/abis_rsl.c b/openbsc/src/abis_rsl.c
index 52ed9fa..ad11c73 100644
--- a/openbsc/src/abis_rsl.c
+++ b/openbsc/src/abis_rsl.c
@@ -51,6 +51,15 @@
 
 static int rsl_send_imm_assignment(struct gsm_lchan *lchan);
 
+static void send_lchan_signal(int sig_no, struct gsm_lchan *lchan,
+			      struct gsm_meas_rep *resp)
+{
+	struct lchan_signal_data sig;
+	sig.lchan = lchan;
+	sig.mr = resp;
+	dispatch_signal(SS_LCHAN, sig_no, &sig);
+}
+
 static u_int8_t mdisc_by_msgtype(u_int8_t msg_type)
 {
 	/* mask off the transparent bit ? */
@@ -813,7 +822,7 @@
 		msg->lchan->rqd_ta = 0;
 	}
 
-	dispatch_signal(SS_LCHAN, S_LCHAN_ACTIVATE_ACK, msg->lchan);
+	send_lchan_signal(S_LCHAN_ACTIVATE_ACK, msg->lchan, NULL);
 
 	return 0;
 }
@@ -843,7 +852,7 @@
 
 	LOGPC(DRSL, LOGL_ERROR, "\n");
 
-	dispatch_signal(SS_LCHAN, S_LCHAN_ACTIVATE_NACK, msg->lchan);
+	send_lchan_signal(S_LCHAN_ACTIVATE_NACK, msg->lchan, NULL);
 
 	lchan_free(msg->lchan);
 	return 0;
@@ -986,7 +995,7 @@
 
 	print_meas_rep(mr);
 
-	dispatch_signal(SS_LCHAN, S_LCHAN_MEAS_REP, mr);
+	send_lchan_signal(S_LCHAN_MEAS_REP, msg->lchan, mr);
 
 	return 0;
 }
@@ -1007,7 +1016,7 @@
 	else
 		DEBUGPC(DRSL, "\n");
 
-	dispatch_signal(SS_LCHAN, S_LCHAN_HANDOVER_DETECT, msg->lchan);
+	send_lchan_signal(S_LCHAN_HANDOVER_DETECT, msg->lchan, NULL);
 
 	return 0;
 }
diff --git a/openbsc/src/bsc_api.c b/openbsc/src/bsc_api.c
index 8b3ff8f..9b070a9 100644
--- a/openbsc/src/bsc_api.c
+++ b/openbsc/src/bsc_api.c
@@ -602,28 +602,17 @@
 {
 	struct bsc_api *bsc;
 	struct gsm_lchan *lchan;
+	struct lchan_signal_data *lchan_data;
 
 	if (subsys != SS_LCHAN)
 		return 0;
 
-	/*
-	 * Check if it is any of the signals we handle. We do want
-	 * to do this early as we will need to check the lchan and
-	 * the bsc api in it.
-	 */
-	switch (signal) {
-	case S_LCHAN_UNEXPECTED_RELEASE:
-	case S_LCHAN_ACTIVATE_ACK:
-	case S_LCHAN_ACTIVATE_NACK:
-		break;
-	default:
-		return -1;
-	}
 
-	lchan = (struct gsm_lchan *)signal_data;
-	if (!lchan || !lchan->conn)
+	lchan_data = signal_data;
+	if (!lchan_data->lchan || !lchan_data->lchan->conn)
 		return 0;
 
+	lchan = lchan_data->lchan;
 	bsc = lchan->ts->trx->bts->network->bsc_api;
 	if (!bsc)
 		return 0;
diff --git a/openbsc/src/chan_alloc.c b/openbsc/src/chan_alloc.c
index 5c16446..13b5767 100644
--- a/openbsc/src/chan_alloc.c
+++ b/openbsc/src/chan_alloc.c
@@ -302,8 +302,12 @@
 
 
 	if (lchan->conn) {
+		struct lchan_signal_data sig;
+
 		/* We might kill an active channel... */
-		dispatch_signal(SS_LCHAN, S_LCHAN_UNEXPECTED_RELEASE, lchan);
+		sig.lchan = lchan;
+		sig.mr = NULL;
+		dispatch_signal(SS_LCHAN, S_LCHAN_UNEXPECTED_RELEASE, &sig);
 	}
 
 
diff --git a/openbsc/src/gsm_04_08.c b/openbsc/src/gsm_04_08.c
index d6d9b98..7659fd1 100644
--- a/openbsc/src/gsm_04_08.c
+++ b/openbsc/src/gsm_04_08.c
@@ -1157,12 +1157,15 @@
 /* Chapter 9.1.16 Handover complete */
 static int gsm48_rx_rr_ho_compl(struct msgb *msg)
 {
+	struct lchan_signal_data sig;
 	struct gsm48_hdr *gh = msgb_l3(msg);
 
 	DEBUGP(DRR, "HANDOVER COMPLETE cause = %s\n",
 		rr_cause_name(gh->data[0]));
 
-	dispatch_signal(SS_LCHAN, S_LCHAN_HANDOVER_COMPL, msg->lchan);
+	sig.lchan = msg->lchan;
+	sig.mr = NULL;
+	dispatch_signal(SS_LCHAN, S_LCHAN_HANDOVER_COMPL, &sig);
 	/* FIXME: release old channel */
 
 	return 0;
@@ -1171,12 +1174,15 @@
 /* Chapter 9.1.17 Handover Failure */
 static int gsm48_rx_rr_ho_fail(struct msgb *msg)
 {
+	struct lchan_signal_data sig;
 	struct gsm48_hdr *gh = msgb_l3(msg);
 
 	DEBUGP(DRR, "HANDOVER FAILED cause = %s\n",
 		rr_cause_name(gh->data[0]));
 
-	dispatch_signal(SS_LCHAN, S_LCHAN_HANDOVER_FAIL, msg->lchan);
+	sig.lchan = msg->lchan;
+	sig.mr = NULL;
+	dispatch_signal(SS_LCHAN, S_LCHAN_HANDOVER_FAIL, &sig);
 	/* FIXME: release allocated new channel */
 
 	return 0;
diff --git a/openbsc/src/handover_decision.c b/openbsc/src/handover_decision.c
index efafca6..4ac3286 100644
--- a/openbsc/src/handover_decision.c
+++ b/openbsc/src/handover_decision.c
@@ -277,15 +277,15 @@
 static int ho_dec_sig_cb(unsigned int subsys, unsigned int signal,
 			   void *handler_data, void *signal_data)
 {
-	struct gsm_meas_rep *mr;
+	struct lchan_signal_data *lchan_data;
 
 	if (subsys != SS_LCHAN)
 		return 0;
 
+	lchan_data = signal_data;
 	switch (signal) {
 	case S_LCHAN_MEAS_REP:
-		mr = signal_data;
-		process_meas_rep(mr);
+		process_meas_rep(lchan_data->mr);
 		break;
 	}
 
diff --git a/openbsc/src/handover_logic.c b/openbsc/src/handover_logic.c
index 38bb32e..a537d4f 100644
--- a/openbsc/src/handover_logic.c
+++ b/openbsc/src/handover_logic.c
@@ -388,11 +388,13 @@
 static int ho_logic_sig_cb(unsigned int subsys, unsigned int signal,
 			   void *handler_data, void *signal_data)
 {
+	struct lchan_signal_data *lchan_data;
 	struct gsm_lchan *lchan;
 
+	lchan_data = signal_data;
 	switch (subsys) {
 	case SS_LCHAN:
-		lchan = signal_data;
+		lchan = lchan_data->lchan;
 		switch (signal) {
 		case S_LCHAN_ACTIVATE_ACK:
 			return ho_chan_activ_ack(lchan);
