tools headers UAPI: Sync linux/kvm.h with the kernel sources
[linux-2.6-microblaze.git] / fs / binfmt_elf_fdpic.c
index 2c99b10..cf40284 100644 (file)
@@ -928,7 +928,7 @@ static int elf_fdpic_map_file_constdisp_on_uclinux(
 {
        struct elf32_fdpic_loadseg *seg;
        struct elf32_phdr *phdr;
-       unsigned long load_addr, base = ULONG_MAX, top = 0, maddr = 0, mflags;
+       unsigned long load_addr, base = ULONG_MAX, top = 0, maddr = 0;
        int loop, ret;
 
        load_addr = params->load_addr;
@@ -948,12 +948,8 @@ static int elf_fdpic_map_file_constdisp_on_uclinux(
        }
 
        /* allocate one big anon block for everything */
-       mflags = MAP_PRIVATE;
-       if (params->flags & ELF_FDPIC_FLAG_EXECUTABLE)
-               mflags |= MAP_EXECUTABLE;
-
        maddr = vm_mmap(NULL, load_addr, top - base,
-                       PROT_READ | PROT_WRITE | PROT_EXEC, mflags, 0);
+                       PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE, 0);
        if (IS_ERR_VALUE(maddr))
                return (int) maddr;
 
@@ -1046,9 +1042,6 @@ static int elf_fdpic_map_file_by_direct_mmap(struct elf_fdpic_params *params,
                if (phdr->p_flags & PF_X) prot |= PROT_EXEC;
 
                flags = MAP_PRIVATE | MAP_DENYWRITE;
-               if (params->flags & ELF_FDPIC_FLAG_EXECUTABLE)
-                       flags |= MAP_EXECUTABLE;
-
                maddr = 0;
 
                switch (params->flags & ELF_FDPIC_FLAG_ARRANGEMENT) {
@@ -1331,6 +1324,7 @@ static int fill_psinfo(struct elf_prpsinfo *psinfo, struct task_struct *p,
 {
        const struct cred *cred;
        unsigned int i, len;
+       unsigned int state;
 
        /* first copy the parameters from user space */
        memset(psinfo, 0, sizeof(struct elf_prpsinfo));
@@ -1353,7 +1347,8 @@ static int fill_psinfo(struct elf_prpsinfo *psinfo, struct task_struct *p,
        psinfo->pr_pgrp = task_pgrp_vnr(p);
        psinfo->pr_sid = task_session_vnr(p);
 
-       i = p->state ? ffz(~p->state) + 1 : 0;
+       state = READ_ONCE(p->__state);
+       i = state ? ffz(~state) + 1 : 0;
        psinfo->pr_state = i;
        psinfo->pr_sname = (i > 5) ? '.' : "RSDTZW"[i];
        psinfo->pr_zomb = psinfo->pr_sname == 'Z';