diff --git a/openbsc/include/openbsc/signal.h b/openbsc/include/openbsc/signal.h
index dfb837d..a235cfb 100644
--- a/openbsc/include/openbsc/signal.h
+++ b/openbsc/include/openbsc/signal.h
@@ -182,6 +182,13 @@
 	int paging_result;
 };
 
+struct lchan_signal_data {
+	/* The lchan the signal happened on */
+	struct gsm_lchan *lchan;
+	/* Measurement reports on this lchan */
+	struct gsm_meas_rep *mr;
+};
+
 enum signal_ns {
 	S_NS_RESET,
 	S_NS_BLOCK,
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);
