LINUX.ORG.RU

vm_area_struct странные флаги

 


0

2

Я прохожу по всем структурам vm_area_struct текущей задачи. При этом получаю странные флаги, например, для секции данных такие:

VM_READ VM_WRITE VM_MAYREAD VM_MAYWRITE VM_MAYEXEC VM_DENYWRITE VM_ACCOUNT
PROT_READ PROT_EXEC
Откуда PROT_EXEC? У меня получается, что все области данных имеют одинаковые флаги защиты: PROT_READ PROT_EXEC. Код:
static void fill_prot_buf(struct vm_area_struct *vma, char *buf)
{
        if (vma->vm_page_prot.pgprot & PROT_READ)               {sprintf(buf, "%s", " PROT_READ"); buf += strlen(" PROT_READ");}
        if (vma->vm_page_prot.pgprot & PROT_WRITE)              {sprintf(buf, "%s", " PROT_WRITE"); buf += strlen(" PROT_WRITE");}
.........................


Да, действительно, PROT_XX флаги выставляются странно, например:

if ((prot & PROT_READ) && (current->personality & READ_IMPLIES_EXEC))
                if (!(file && (file->f_path.mnt->mnt_flags & MNT_NOEXEC)))
                        prot |= PROT_EXEC;

Какой в этом смысл пока мне сложно уловить

afx33 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.