bsc_init: Avoid unaligned access to nanobts_attr_nsvc0
nanobts_attr_nsvc0 + 10 is unlikely to be 32 bit aligned and will trigger an alignment error on ARM..
This commit is contained in:
parent
ad98128e65
commit
34949ae924
|
@ -850,6 +850,16 @@ err_out:
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void patch_16(uint8_t *data, const uint16_t val)
|
||||||
|
{
|
||||||
|
memcpy(data, &val, sizeof(val));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void patch_32(uint8_t *data, const uint32_t val)
|
||||||
|
{
|
||||||
|
memcpy(data, &val, sizeof(val));
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Patch the various SYSTEM INFORMATION tables to update
|
* Patch the various SYSTEM INFORMATION tables to update
|
||||||
* the LAI
|
* the LAI
|
||||||
|
@ -912,12 +922,12 @@ static void patch_nm_tables(struct gsm_bts *bts)
|
||||||
nanobts_attr_nsvc0[4] = bts->gprs.nsvc[0].nsvci & 0xff;
|
nanobts_attr_nsvc0[4] = bts->gprs.nsvc[0].nsvci & 0xff;
|
||||||
|
|
||||||
/* patch IP address as SGSN IP */
|
/* patch IP address as SGSN IP */
|
||||||
*(u_int16_t *)(nanobts_attr_nsvc0+8) =
|
patch_16(nanobts_attr_nsvc0 + 8,
|
||||||
htons(bts->gprs.nsvc[0].remote_port);
|
htons(bts->gprs.nsvc[0].remote_port));
|
||||||
*(u_int32_t *)(nanobts_attr_nsvc0+10) =
|
patch_32(nanobts_attr_nsvc0 + 10,
|
||||||
htonl(bts->gprs.nsvc[0].remote_ip);
|
htonl(bts->gprs.nsvc[0].remote_ip));
|
||||||
*(u_int16_t *)(nanobts_attr_nsvc0+14) =
|
patch_16(nanobts_attr_nsvc0 + 14,
|
||||||
htons(bts->gprs.nsvc[0].local_port);
|
htons(bts->gprs.nsvc[0].local_port));
|
||||||
|
|
||||||
/* patch BVCI */
|
/* patch BVCI */
|
||||||
nanobts_attr_cell[12] = bts->gprs.cell.bvci >> 8;
|
nanobts_attr_cell[12] = bts->gprs.cell.bvci >> 8;
|
||||||
|
|
Loading…
Reference in New Issue