Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: security/polkit not working with evbarm-current



On Tue, Jun 28, 2016 at 10:21:56PM -0700, Michael Plass wrote:
> On Jun 26, 2016, at 3:41 PM, Michael Plass wrote:
> 
> > 
> > On Jun 26, 2016, at 2:03 AM, Thomas Klausner wrote:
> > 
> >> On Sat, Jun 25, 2016 at 07:30:52PM -0700, Michael Plass wrote:
> >>> 
> >>> On Jun 25, 2016, at 3:50 PM, Michael Plass wrote:
> >>> 
> >>>> On Jun 25, 2016, at 11:55 AM, Thomas Klausner wrote:
> >>>> 
> >>>>> On Wed, Jun 22, 2016 at 07:15:59PM -0700, Michael Plass wrote:
> >>>>>> On Jun 14, 2016, at 12:13 AM, John Klos wrote:
> >>>>>> 
> >>>>>>> /usr/local/bin/xsltproc -nonet --stringparam man.base.url.for.relative.links /usr/local/share/gtk-doc/html/polkit-1/ --xincludehttp://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl pkcheck.xml
> >>>>>>> /usr/local/lib/libgcrypt.so.20: text relocations/usr/local/lib/libgcrypt.so.20: text relocations
> >>>>>>> 
> >>>>>>> /usr/local/lib/libgcrypt.so.20: Cannot write-enable text segment: Permission denied/usr/local/lib/libgcrypt.so.20: Cannot write-enable text segment: Permission denied
> >>>>>>> 
> >>>>>>> /usr/local/lib/libgcrypt.so.20: text relocations/usr/local/lib/libgcrypt.so.20: text relocations
> >>>>>>> 
> >>>>>>> /usr/local/lib/libgcrypt.so.20: Cannot write-enable text segment: Permission denied/usr/local/lib/libgcrypt.so.20: Cannot write-enable text segment: Permission denied
> >>>>>>> 
> >>>>>>> gmake[3]: *** [Makefile:647: polkitd.8] Error 1
> >>>>>> 
> >>>>>> I ran into a similar problem today, building devel/git-contrib.
> >>>>>> A workaround is
> >>>>>> 
> >>>>>> # paxctl +m /usr/pkg/bin/xsltproc
> >>>>>> 
> >>>>>> (see http://mail-index.netbsd.org/current-users/2016/05/20/msg029398.html)
> >>>>> 
> >>>>> That's strange. This paxctl is not necessary for me on 7.99.32/amd64,
> >>>>> and I don't think there should be differences between the
> >>>>> architectures in this regard. (My cc1 also does not need +m.)
> >>>>> 
> >>>>> Can you update to 7.99.32 and check if it's still needed?
> >>>>> Thomas
> >>>>> 
> >>>>> 
> >>>> 
> >>>> 
> >>>> Will do - I happen to have a build underway.
> >>>> 
> >>>> But I think it may be in libgcrypt, which has a fair bit of assembly code
> >>>> for various architectures, including armv7-neon. All of the programs in 
> >>>> /usr/pkgsrc/security/libgcrypt/work/libgcrypt-1.7.1/tests get the same message:
> >>>> 
> >>>> $ /usr/pkgsrc/security/libgcrypt/work/libgcrypt-1.7.1/tests/version
> >>>> /usr/pkg/lib/libgcrypt.so.20: text relocations
> >>>> /usr/pkg/lib/libgcrypt.so.20: Cannot write-enable text segment: Permission denied
> >>>> 
> >>>> - Michael
> >>>> 
> >>>> NetBSD mipi 7.99.30 NetBSD 7.99.30 (RPI2) #3: Sun Jun 19 20:55:51 PDT 2016  michael@mipi:/usr/obj/sys/arch/evbarm/compile/RPI2 evbarm
> >>>> 
> >>> 
> >>> Indeed, configuring libgcrypt with --disable-neon-support seems to avoid the problem.
> >> 
> >> I don't speak ARM ASM; do you want to fix it or should we use
> >> --disable-neon-support for now to work around it?
> >> Thomas
> >> 
> >> 
> > 
> > 
> > I'm not very familiar with ARM ASM myself, but I think I tracked
> > down the offending instruction. With the following change, the
> > library reference works:
> > =======================
> > diff --git a/work/libgcrypt-1.7.1/cipher/poly1305-armv7-neon.S b/work/libgcrypt-1.7.1/cipher/poly1305-armv7-neon.S
> > index 1134e85..e2727bd 100644
> > --- a/work/libgcrypt-1.7.1/cipher/poly1305-armv7-neon.S
> > +++ b/work/libgcrypt-1.7.1/cipher/poly1305-armv7-neon.S
> > @@ -52,7 +52,7 @@ _gcry_poly1305_armv7_neon_init_ext:
> > 	and r2, r2, r2
> > 	moveq r14, #-1
> > 	ldmia r1!, {r2-r5}
> > -	ldr r7, =.Lpoly1305_init_constants_neon
> > +	adr r7, .Lpoly1305_init_constants_neon
> > 	mov r6, r2
> > 	mov r8, r2, lsr #26
> > 	mov r9, r3, lsr #20
> > =======================
> > Running   make check  gets a bus error in tests/basic, but that's doing
> > an aes test so I don't think it's related to the poly1305 change. The rest
> > of the tests pass (hashtest-256g was skipped).
> > 
> > Hopefully someone who does know ARM ASM can review the above change!
> 
> Thomas,
> 
> I ran some tests, and I think the patch I provided for poly1305 is OK.
> 
> I also investigated the bus error in tests/basic. This happens on armv7 because
> the assembly code in cipher/rijndael-arm.S assumes that unaligned accesses are OK,
> which is true except for ldm/stm (load and store multiple). On armv6 it works because
> the assembler does not define __ARM_FEATURE_UNALIGNED, so the extra instructions to
> handle the alignment are generated. So I tried undefining this symbol near the top
> of the module, and this allowed the tests to pass. By the way, disabling neon
> support doesn't help with this second problem.
> 
> Here's the diff for both fixes:
> ==================================
> diff --git a/work/libgcrypt-1.7.1/cipher/poly1305-armv7-neon.S b/work/libgcrypt-1.7.1/cipher/poly1305-armv7-neon.S
> index 1134e85..e2727bd 100644
> --- a/work/libgcrypt-1.7.1/cipher/poly1305-armv7-neon.S
> +++ b/work/libgcrypt-1.7.1/cipher/poly1305-armv7-neon.S
> @@ -52,7 +52,7 @@ _gcry_poly1305_armv7_neon_init_ext:
>         and r2, r2, r2
>         moveq r14, #-1
>         ldmia r1!, {r2-r5}
> -       ldr r7, =.Lpoly1305_init_constants_neon
> +       adr r7, .Lpoly1305_init_constants_neon
>         mov r6, r2
>         mov r8, r2, lsr #26
>         mov r9, r3, lsr #20
> diff --git a/work/libgcrypt-1.7.1/cipher/rijndael-arm.S b/work/libgcrypt-1.7.1/cipher/rijndael-arm.S
> index 694369d..34a9acc 100644
> --- a/work/libgcrypt-1.7.1/cipher/rijndael-arm.S
> +++ b/work/libgcrypt-1.7.1/cipher/rijndael-arm.S
> @@ -19,6 +19,7 @@
>   */
>  
>  #include <config.h>
> +#undef __ARM_FEATURE_UNALIGNED
>  
>  #if defined(__ARMEL__)
>  #ifdef HAVE_COMPATIBLE_GCC_ARM_PLATFORM_AS
> ==================================
> 

Thanks for the detailed analysis.

Can you please file bug reports for these upstream?
 Thomas


Home | Main Index | Thread Index | Old Index