• S
    selinux: generalize disabling of execmem for plt-in-heap archs · fcaaade1
    Stephen Smalley 提交于
    On Tue, 2010-04-27 at 11:47 -0700, David Miller wrote:
    > From: "Tom \"spot\" Callaway" <tcallawa@redhat.com>
    > Date: Tue, 27 Apr 2010 14:20:21 -0400
    >
    > > [root@apollo ~]$ cat /proc/2174/maps
    > > 00010000-00014000 r-xp 00000000 fd:00 15466577
    > >  /sbin/mingetty
    > > 00022000-00024000 rwxp 00002000 fd:00 15466577
    > >  /sbin/mingetty
    > > 00024000-00046000 rwxp 00000000 00:00 0
    > >  [heap]
    >
    > SELINUX probably barfs on the executable heap, the PLT is in the HEAP
    > just like powerpc32 and that's why VM_DATA_DEFAULT_FLAGS has to set
    > both executable and writable.
    >
    > You also can't remove the CONFIG_PPC32 ifdefs in selinux, since
    > because of the VM_DATA_DEFAULT_FLAGS setting used still in that arch,
    > the heap will always have executable permission, just like sparc does.
    > You have to support those binaries forever, whether you like it or not.
    >
    > Let's just replace the CONFIG_PPC32 ifdef in SELINUX with CONFIG_PPC32
    > || CONFIG_SPARC as in Tom's original patch and let's be done with
    > this.
    >
    > In fact I would go through all the arch/ header files and check the
    > VM_DATA_DEFAULT_FLAGS settings and add the necessary new ifdefs to the
    > SELINUX code so that other platforms don't have the pain of having to
    > go through this process too.
    
    To avoid maintaining per-arch ifdefs, it seems that we could just
    directly use (VM_DATA_DEFAULT_FLAGS & VM_EXEC) as the basis for deciding
    whether to enable or disable these checks.   VM_DATA_DEFAULT_FLAGS isn't
    constant on some architectures but instead depends on
    current->personality, but we want this applied uniformly.  So we'll just
    use the initial task state to determine whether or not to enable these
    checks.
    Signed-off-by: NStephen Smalley <sds@tycho.nsa.gov>
    Acked-by: NDavid S. Miller <davem@davemloft.net>
    Signed-off-by: NJames Morris <jmorris@namei.org>
    fcaaade1
hooks.c 141.0 KB