[Bug 206658] Bus error for pfctl -sa on rpi2 r294499 snap

Ian Lepore ian at freebsd.org
Sat Jan 30 22:14:25 UTC 2016


FYI, I've committed r295086, which is conceptually the patch submitted
by Guy Yur, but restructured with an #ifndef __NO_STRICT_ALIGNMENT
wrapper, and in general more like the corresponding code on the kernel
side for handling this.

Could somebody who uses pf please give this a test and let me know if
it works right?  (It *looks* right, but... you know.)  If it works I
should get it MFC'd before the 10.3 release.

-- Ian

On Fri, 2016-01-29 at 00:11 -0500, peter garshtja wrote:
> Much appreciated for your effort.
> 
> I have been waiting for this fix over 3months.
> 
> Regards
> 
> On Thursday, January 28, 2016, Jov <amutu at amutu.com> wrote:
> 
> > This patch works,thanks very much !
> > 
> > will these patches to be commited to the offical svn? I add freebsd
> > -pf ML.
> > 
> > 
> > Jov
> > blog: http:amutu.com/blog <http://amutu.com/blog>
> > 
> > 2016-01-29 5:26 GMT+08:00 Guy Yur <guyyur at gmail.com <javascript:;>>
> > :
> > 
> > > Hi,
> > > 
> > > On Thu, Jan 28, 2016 at 2:06 PM, Jov <amutu at amutu.com <javascript
> > > :;>>
> > wrote:
> > > > bus error at the similar position:
> > > > 
> > > > Program received signal SIGBUS, Bus error.
> > > > 0x00021614 in print_host (addr=0x2065111a, port=15268, af=2
> > > > '\002',
> > > > opts=1024) at /usr/src/sbin/pfctl/pf_print_state.c:178
> > > > warning: Source file is more recent than executable.
> > > > 
> > > > 178 memcpy(&aw.v.a.addr, addr, sizeof(aw.v.a.addr));
> > > > Current language:  auto; currently minimal
> > > > (gdb) p addr
> > > > $1 = (struct pf_addr *) 0x2065111a
> > > > ...
> > > > 
> > > > Jov
> > > 
> > > The compiler optimizes the memcpy to a series of ldr and str
> > > instructions and since addr is unaligned you still get SIGBUS.
> > > 
> > > I encountered the same problem on a BeagleBone Black.
> > > https://lists.freebsd.org/pipermail/freebsd-arm/2014-January/0072
> > > 37.html
> > > 
> > > non-intrustive patch with changes only in print_state()
> > > pfsync_state is __packed so the keys can be copied safely to
> > > stack variables which will be aligned (and addr inside it).
> > > 
> > > 
> > https://github.com/guyyur/freebsd-src_patches/blob/master/pfctl_arm
> > _segbus__ver1_part1.patch
> > > 
> > > Bug report with patch to separate pfsync and pfioc state
> > > structures but breaks backward compatibility:
> > > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=185617
> > > 
> > > -- Guy
> > > 
> > _______________________________________________
> > freebsd-arm at freebsd.org <javascript:;> mailing list
> > https://lists.freebsd.org/mailman/listinfo/freebsd-arm
> > To unsubscribe, send any mail to "
> > freebsd-arm-unsubscribe at freebsd.org
> > <javascript:;>"
> _______________________________________________
> freebsd-arm at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-arm
> To unsubscribe, send any mail to "freebsd-arm-unsubscribe at freebsd.org
> "
> 


More information about the freebsd-pf mailing list