diff --git a/openbsc/src/libbsc/chan_alloc.c b/openbsc/src/libbsc/chan_alloc.c
index 7b0c3e6..367139c 100644
--- a/openbsc/src/libbsc/chan_alloc.c
+++ b/openbsc/src/libbsc/chan_alloc.c
@@ -303,7 +303,7 @@
 		}
 		break;
 	case GSM_LCHAN_TCH_H:
-		lchan =_lc_find_bts(bts, GSM_PCHAN_TCH_H);
+		lchan = _lc_find_bts(bts, GSM_PCHAN_TCH_H);
 		/* If we don't have TCH/H available, fall-back to TCH/F */
 		if (!lchan) {
 			lchan = _lc_find_bts(bts, GSM_PCHAN_TCH_F);
diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c
index be1b260..a22e3c2 100644
--- a/openbsc/src/libmsc/gsm_04_08.c
+++ b/openbsc/src/libmsc/gsm_04_08.c
@@ -464,7 +464,7 @@
 		LOGP(DMM, LOGL_ERROR, "Failed to create msg for LOCATION UPDATING REJECT.\n");
 		return -1;
 	}
-	
+
 	msg->lchan = conn->lchan;
 
 	LOGP(DMM, LOGL_INFO, "Subscriber %s: LOCATION UPDATING REJECT "
@@ -481,7 +481,7 @@
 	struct gsm48_hdr *gh;
 	struct gsm48_loc_area_id *lai;
 	uint8_t *mid;
-	
+
 	msg->lchan = conn->lchan;
 
 	gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh));
@@ -693,7 +693,7 @@
 		/* no sim card... FIXME: what to do ? */
 		DEBUGPC(DMM, "unimplemented mobile identity type\n");
 		break;
-	default:	
+	default:
 		DEBUGPC(DMM, "unknown mobile identity type\n");
 		break;
 	}
@@ -1075,7 +1075,7 @@
 		/* no sim card... FIXME: what to do ? */
 		DEBUGPC(DMM, ": unimplemented mobile identity type\n");
 		break;
-	default:	
+	default:
 		DEBUGPC(DMM, ": unknown mobile identity type\n");
 		break;
 	}
@@ -1249,7 +1249,7 @@
 	apdu_id_flags = gh->data[0];
 	apdu_len = gh->data[1];
 	apdu_data = gh->data+2;
-	
+
 	DEBUGP(DRR, "RX APPLICATION INFO id/flags=0x%02x apdu_len=%u apdu=%s",
 		apdu_id_flags, apdu_len, osmo_hexdump(apdu_data, apdu_len));
 
@@ -1285,10 +1285,10 @@
 	struct gsm48_hdr *gh;
 
 	msg->lchan = conn->lchan;
-	
+
 	DEBUGP(DRR, "TX APPLICATION INFO id=0x%02x, len=%u\n",
 		apdu_id, apdu_len);
-	
+
 	gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh) + 2 + apdu_len);
 	gh->proto_discr = GSM48_PDISC_RR;
 	gh->msg_type = GSM48_MT_RR_APP_INFO;
@@ -1419,7 +1419,7 @@
 			"Sending '%s' to MNCC.\n", get_mncc_name(msg_type));
 
 	mncc->msg_type = msg_type;
-	
+
 	msg = msgb_alloc(sizeof(struct gsm_mncc), "MNCC");
 	if (!msg)
 		return -ENOMEM;
@@ -2061,7 +2061,7 @@
 		trans_free(trans);
 		return rc;
 	}
-	
+
 	/* Get free transaction_id */
 	trans_id = trans_assign_trans_id(trans->net, trans->subscr,
 					 GSM48_PDISC_CC, 0);
@@ -2104,7 +2104,7 @@
 	/* signal */
 	if (setup->fields & MNCC_F_SIGNAL)
 		gsm48_encode_signal(msg, setup->signal);
-	
+
 	new_cc_state(trans, GSM_CSTATE_CALL_PRESENT);
 
 	rate_ctr_inc(&trans->net->msc_ctrs->ctr[MSC_CTR_CALL_MT_SETUP]);
@@ -2192,7 +2192,7 @@
 	unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
 	struct tlv_parsed tp;
 	struct gsm_mncc alerting;
-	
+
 	gsm48_stop_cc_timer(trans);
 	gsm48_start_cc_timer(trans, 0x301, GSM48_T301);
 
@@ -2244,7 +2244,7 @@
 		gsm48_encode_useruser(msg, 0, &alerting->useruser);
 
 	new_cc_state(trans, GSM_CSTATE_CALL_DELIVERED);
-	
+
 	return gsm48_conn_sendmsg(msg, trans->conn, trans);
 }
 
@@ -2347,7 +2347,7 @@
 
 	new_cc_state(trans, GSM_CSTATE_ACTIVE);
 	rate_ctr_inc(&trans->net->msc_ctrs->ctr[MSC_CTR_CALL_MO_CONNECT_ACK]);
-	
+
 	memset(&connect_ack, 0, sizeof(struct gsm_mncc));
 	connect_ack.callref = trans->callref;
 
@@ -2611,7 +2611,7 @@
 	gh->msg_type = GSM48_MT_CC_RELEASE_COMPL;
 
 	trans->callref = 0;
-	
+
 	gsm48_stop_cc_timer(trans);
 
 	/* cause */
@@ -3697,7 +3697,7 @@
 	LOGP(DRLL, LOGL_DEBUG, "Dispatching 04.08 message, pdisc=%d\n", pdisc);
 	if (silent_call_reroute(conn, msg))
 		return silent_call_rx(conn, msg);
-	
+
 	switch (pdisc) {
 	case GSM48_PDISC_CC:
 		release_anchor(conn);
diff --git a/openbsc/src/libmsc/mncc_builtin.c b/openbsc/src/libmsc/mncc_builtin.c
index ee98d2d..9b25ede 100644
--- a/openbsc/src/libmsc/mncc_builtin.c
+++ b/openbsc/src/libmsc/mncc_builtin.c
@@ -1,5 +1,5 @@
 /* mncc_builtin.c - default, minimal built-in MNCC Application for
- *		    standalone bsc_hack (netowrk-in-the-box mode) */
+ *		    standalone bsc_hack (network-in-the-box mode) */
 
 /* (C) 2008-2010 by Harald Welte <laforge@gnumonks.org>
  * (C) 2009 by Andreas Eversberg <Andreas.Eversberg@versatel.de>
