lkml.org 
[lkml]   [1999]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: 2.2.8pre6, can't run ZMAGIC binaries
    On Wed, 12 May 1999, Linus Torvalds wrote:

    >We already do not allow anybody doing "mmap()" to have anything but page
    >alignment. The only loophole right now is "internal" mmaps in the kernel,

    It seems to me that we are allowing it also on not VM_SHARED or a file
    opened without O_RDWR:

    [..]
    int generic_file_mmap(struct file * file, struct vm_area_struct * vma)
    {
    struct vm_operations_struct * ops;
    struct inode *inode = file->f_dentry->d_inode;

    if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_MAYWRITE))
    {
    ops = &file_shared_mmap;
    /* share_page() can only guarantee proper page sharing if
    * the offsets are all page aligned. */
    if (vma->vm_offset & (PAGE_SIZE - 1))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ here OK
    return -EINVAL;
    } else {
    ops = &file_private_mmap;
    if (inode->i_op && inode->i_op->bmap &&
    (vma->vm_offset & (inode->i_sb->s_blocksize - 1)))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ but here?
    return -EINVAL;
    }
    [..]

    Probably I am missing something in the whole picture...

    >The reason we don't allow "real" mmap's is that we want to give the user
    >mmap coherency (even with private mappings, if they are just read-only)

    This make sense. Even if I think the natural is to allow alignment as far
    as the bmap/readpage level can handle them.

    >The only way to guarantee coherency is to guarantee that everybody has the
    >same physical page - which in turn means that everybody has to agree on
    >alignment. Thus the page-alignment requirement.

    Ok.

    >And once you have guaranteed page alignment for normal mmaps, the
    >complexity issue makes it attractive to do the same for executables too.
    >Note that 1kB executables have mondo problems: they don't even run if the
    >underlying filesystem has a blocksize > 1kB - another thing that would be
    >fixed if you just read them into memory directly.

    Really as I stated in my previous email I think that the executable case
    is not a big issue for making sure that everybody uses the same physiscal
    page. My point is that nobody run `cp executable /dev/null` while running
    `executable'.

    Andrea Arcangeli


    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.rutgers.edu
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:51    [W:6.239 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site