10 Jul, 2007

1 commit


08 Jun, 2007

1 commit

  • This bug was caught by LTP testcase fchmod06 on Blackfin platform.

    In the manpage of fchmod, "EPERM: The effective UID does not match the
    owner of the file, and the process is not privileged (Linux: it does not
    have the CAP_FOWNER capability)."

    But the ramfs nommu code missed the inode_change_ok POSIX UID/GID
    verification. This patch fixed this.

    Signed-off-by: Bryan Wu
    Cc: David Howells
    Signed-off-by: Linus Torvalds

    Bryan Wu
     

31 May, 2007

1 commit


09 May, 2007

1 commit


13 Feb, 2007

1 commit

  • Many struct inode_operations in the kernel can be "const". Marking them const
    moves these to the .rodata section, which avoids false sharing with potential
    dirty data. In addition it'll catch accidental writes at compile time to
    these shared resources.

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     

12 Feb, 2007

1 commit


31 Dec, 2006

1 commit


09 Dec, 2006

1 commit


01 Oct, 2006

1 commit

  • This patch cleans up generic_file_*_read/write() interfaces. Christoph
    Hellwig gave me the idea for this clean ups.

    In a nutshell, all filesystems should set .aio_read/.aio_write methods and use
    do_sync_read/ do_sync_write() as their .read/.write methods. This allows us
    to cleanup all variants of generic_file_* routines.

    Final available interfaces:

    generic_file_aio_read() - read handler
    generic_file_aio_write() - write handler
    generic_file_aio_write_nolock() - no lock write handler

    __generic_file_aio_write_nolock() - internal worker routine

    Signed-off-by: Badari Pulavarty
    Signed-off-by: Christoph Hellwig
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Badari Pulavarty
     

11 Jul, 2006

1 commit

  • Fix execution through the FDPIC binfmt of programs stored on ramfs by
    preventing the ramfs mmap() returning successfully on a private mapping of
    a ramfs file. This causes NOMMU mmap to make a copy of the mapped portion
    of the file and map that instead.

    This could be improved by granting direct mapping access to read-only
    private mappings for which the data is stored on a contiguous run of pages.
    However, this is only likely to be the case if the file was extended with
    truncate before being written.

    ramfs is left to map the file directly for shared mappings so that SYSV IPC
    and POSIX shared memory both still work.

    Signed-off-by: David Howells
    Cc: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     

29 Jun, 2006

1 commit


29 Mar, 2006

1 commit

  • This is a conversion to make the various file_operations structs in fs/
    const. Basically a regexp job, with a few manual fixups

    The goal is both to increase correctness (harder to accidentally write to
    shared datastructures) and reducing the false sharing of cachelines with
    things that get dirty in .data (while .rodata is nicely read only and thus
    cache clean)

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     

22 Mar, 2006

1 commit

  • Now that compound page handling is properly fixed in the VM, move nommu
    over to using compound pages rather than rolling their own refcounting.

    nommu vm page refcounting is broken anyway, but there is no need to have
    divergent code in the core VM now, nor when it gets fixed.

    Signed-off-by: Nick Piggin
    Cc: David Howells

    (Needs testing, please).
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nick Piggin
     

07 Jan, 2006

1 commit

  • The attached patch makes ramfs support shared-writable mmaps by:

    (1) Attempting to perform a contiguous block allocation to the requested size
    when truncate attempts to increase the file from zero size, such as
    happens when:

    fd = shm_open("/file/on/ramfs", ...):
    ftruncate(fd, size_requested);
    addr = mmap(NULL, subsize, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_SHARED,
    fd, offset);

    (2) Permitting any shared-writable mapping over any contiguous set of extant
    pages. get_unmapped_area() will return the address into the actual ramfs
    pages. The mapping may start anywhere and be of any size, but may not go
    over the end of file. Multiple mappings may overlap in any way.

    (3) Not permitting a file to be shrunk if it would truncate any shared
    mappings (private mappings are copied).

    Thus this patch provides support for POSIX shared memory on NOMMU kernels,
    with certain limitations such as there being a large enough block of pages
    available to support the allocation and it only working on directly mappable
    filesystems.

    Signed-off-by: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells