Date: Sat, 4 Jan 2014 09:50:26 -0700 From: Warner Losh <imp@bsdimp.com> To: Guy Yur <guyyur@gmail.com> Cc: freebsd-net@freebsd.org, freebsd-arm@freebsd.org Subject: Re: 10.0-RC1, armv6: "pfctl -s state" crashes on BeagleBone Black due to unaligned access Message-ID: <E4255780-6E58-435D-BDE6-491915B642CF@bsdimp.com> In-Reply-To: <CAC67Hz_QXcHHSFOLLgUGqLWRQpzhRRv_b%2BWGMMQsfk-VQp74RA@mail.gmail.com> References: <CAC67Hz_QXcHHSFOLLgUGqLWRQpzhRRv_b%2BWGMMQsfk-VQp74RA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
I think this was changed in later RC versions. Warner On Jan 4, 2014, at 6:06 AM, Guy Yur wrote: > Hi, >=20 > I am running 10.0-RC1 arm.armv6 on the BeagleBone Black. > The "pfctl -s state" command is crashing when trying to print the > second entry. >=20 > struct pfsync_state has a size that is not divisiable by 4 or 8 = leading to the > second entry in the returned state array not being aligned and pfctl > core dumps on Bus error when trying to access a uint32_t field. >=20 > (gdb) bt > #0 print_host (addr=3D0x2085a11a, port=3D7660, af=3D2 '\002', = opts=3D1024) at > /usr/src/sbin/pfctl/pf_print_state.c:178 > #1 0x00021c4c in print_state (s=3D0x2085a0f2, opts=3D1024) at > /usr/src/sbin/pfctl/pf_print_state.c:236 > #2 0x0000c664 in pfctl_show_states (dev=3D<value optimized out>, > iface=3D0x0, opts=3D1024) at /usr/src/sbin/pfctl/pfctl.c:1095 >=20 > sizeof(struct pfsync_state_key) is 36 > sizeof(struct pfsync_state_peer) is 32 > sizeof(struct pf_addr) is 16 > sizeof(struct pfsync_state) is 242 >=20 > Removing the __spare[2] field will allow the struct to be aligned on 8 = bytes > for the u_int64_t id field and also cover the uint32_t fields = alignment > but this will break KBI. >=20 > I am currently using an inefficient workaround in pfctl_show_states > that memcpy each entry to a struct pfsync_state on the stack > ensuring each call to print_state receives an aligned struct. >=20 >=20 > 10.0-RC1 World and kernel were compiled in a VirtualBox VM running > 9.2-RELEASE-p2 i386. > clang and ARM_EABI used as the default make options. >=20 >=20 > Regards, > Guy > _______________________________________________ > freebsd-arm@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-arm > To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E4255780-6E58-435D-BDE6-491915B642CF>