11 Mar, 2013

1 commit


10 Oct, 2012

1 commit


02 Nov, 2011

2 commits


13 May, 2008

1 commit

  • Reintroduce uml_kmalloc for the benefit of UML libc code. The
    previous tactic of declaring __kmalloc so it could be called directly
    from the libc side of the house turned out to be getting too intimate
    with slab, and it doesn't work with slob.

    So, the uml_kmalloc wrapper is back. It calls kmalloc or whatever
    that translates into, and libc code calls it.

    kfree is left alone since that still works, leaving a somewhat
    inconsistent API.

    Signed-off-by: Jeff Dike
    Cc: WANG Cong
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     

04 Dec, 2007

1 commit

  • Under the conditions that UML uses it, tcgetattr is guaranteed to return
    -EINTR when the console is attached to /dev/ptmx, making generic_console_write
    hang because it loops, calling tcgetattr until it succeeds. This is a host
    bug - see http://marc.info/?l=linux-kernel&m=119618990807182&w=2 for the
    details.

    This patch works around it by blocking SIGIO while the terminal attributes are
    being fiddled.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     

17 Oct, 2007

7 commits

  • Style fixes for the rest of the drivers. arch/um/drivers should be pretty
    CodingStyle-compliant now.

    Except for the ubd driver, which will have to be treated separately.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • This patch fixes some userspace files which were calling libc through the os_*
    wrappers.

    It turns out that there was only one user of os_new_tty_pgrp, so it can be
    deleted.

    There are also some style and whitespace fixes in here.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • The next stage after removing code which depends on CONFIG_MODE_TT is removing
    the CHOOSE_MODE abstraction, which provided both compile-time and run-time
    branching to either tt-mode or skas-mode code.

    This patch removes choose-mode.h and all inclusions of it, and replaces all
    CHOOSE_MODE invocations with the skas branch. This leaves a number of trivial
    functions which will be dealt with in a later patch.

    There are some changes in the uaccess and tls support which go somewhat beyond
    this and eliminate some of the now-redundant functions.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • The previous console cleanup patch switched generic_read and generic_write
    from calling os_{read,write}_file to calling read and write directly. Because
    the calling convention is different, they now need to get any error from errno
    rather than the return value. I did this for generic_read, but forgot about
    generic_write.

    While chasing some output corruption, I noticed that line_write was
    unnecessarily calling flush_buffer, and deleted it. I don't understand why,
    but the corruption disappeared. This is unneeded because there already is a
    perfectly good mechanism for finding out when the host output device has some
    room to write data - there is an interrupt that comes in when writes can
    happen again. line_write calling flush_buffer seemed to just be an attempt to
    opportunistically get some data out to the host.

    I also made write_chan short-circuit calling into the host-level code for
    zero-length writes. Calling libc write with a length of zero conflated write
    not being able to write anything with asking it not to write anything. Better
    to just cut it off as soon as possible.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • This does a lot of cleanup on the UML console system. This patch should be
    entirely non-functional.

    The tidying is as follows:
    header cleanups - the includes should be closer to minimal and complete
    all printks now have a severity
    lots of style fixes
    fd_close is restructured a little in order to reduce the nesting
    some functions were calling the os_* wrappers when they can
    call libc directly
    port_accept had a unnecessary variable
    it also tested a pid unecessarily before killing it
    some functions were made static
    xterm_free is gone, as it was identical to generic_free

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Now that the generic console operations are in a userspace file, we
    can do the following:
    directly call into libc instead of through the os_* wrappers
    eliminate os_window_size since it has only one user

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Move some code from a kernelspace file to a userspace file where it fits
    better. This enables some tidying which is the subject of a later patch.

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     

17 Jul, 2007

3 commits

  • run_helper and run_helper_thread had arguments which were the same in all
    callers. run_helper's stack_out was always NULL and run_helper_thread's
    stack_order was always 0. These are now gone, and the constants folded
    into the code.

    Also fixed leaks of the helper stack in the AIO and SIGIO code.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Cleanup of the SIGWINCH support.

    Some code and comment reformatting.

    The stack used for SIGWINCH threads was leaked. This is now fixed by storing
    it with the pid and other information, and freeing it when the thread is
    killed.

    If something goes wrong with a WIGWINCH thread, and this is discovered in the
    interrupt handler, the winch record would leak. It is now freed, except that
    the IRQ isn't freed. This is hard to do from interrupt context. This has the
    side-effect that the IRQ system maintains a reference to the freed structure,
    but that shouldn't cause a problem since the descriptor is disabled.

    register_winch_irq is now much better about cleaning up after an
    initialization failure.

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • DEBUG_SHIRQ generates spurious interrupts, triggering handlers such as
    mconsole_interrupt() or line_interrupt(). They expect data to be available to
    be read from their sockets/pipes, but in the case of spurious interrupts, the
    host didn't actually send anything, so UML hangs in read() and friends.
    Setting those fd's as O_NONBLOCK makes DEBUG_SHIRQ-enabled UML kernels boot
    and run correctly.

    Signed-off-by: Eduard-Gabriel Munteanu
    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eduard-Gabriel Munteanu
     

08 May, 2007

6 commits

  • Rename os_{read_write}_file_k back to os_{read_write}_file, delete
    the originals and their bogus infrastructure, and fix all the callers.

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Formatting fixes ahead of renaming os_{read_write}_file_k to
    os_{read_write}_file and fixing all the callers.

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • This patch starts the removal of a very old, very broken piece of code. This
    stems from the problem of passing a userspace buffer into read() or write() on
    the host. If that buffer had not yet been faulted in, read and write will
    return -EFAULT.

    To avoid this problem, the solution was to fault the buffer in before the
    system call by touching the pages that hold the buffer by doing a copy-user of
    a byte to each page. This is obviously bogus, but it does usually work, in tt
    mode, since the kernel and process are in the same address space and userspace
    addresses can be accessed directly in the kernel.

    In skas mode, where the kernel and process are in separate address spaces, it
    is completely bogus because the userspace address, which is invalid in the
    kernel, is passed into the system call instead of the corresponding physical
    address, which would be valid. Here, it appears that this code, on every host
    read() or write(), tries to fault in a random process page. This doesn't seem
    to cause any correctness problems, but there is a performance impact. This
    patch, and the ones following, result in a 10-15% performance gain on a kernel
    build.

    This code can't be immediately tossed out because when it is, you can't log
    in. Apparently, there is some code in the console driver which depends on
    this somehow.

    However, we can start removing it by switching the code which does I/O using
    kernel addresses to using plain read() and write(). This patch introduces
    os_read_file_k and os_write_file_k for use with kernel buffers and converts
    all call locations which use obvious kernel buffers to use them. These
    include I/O using buffers which are local variables which are on the stack or
    kmalloc-ed. Later patches will handle the less obvious cases, followed by a
    mass conversion back to the original interface.

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • user_util.h isn't needed any more, so delete it and remove all includes of it.

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Cc: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • Fix a bunch of formatting violations in the drivers:
    return(n) -> return n
    whitespace fixes
    emacs formatting comment removal
    breaking if(foo) return(n) into two lines

    There are also a couple of errno use bugs:
    using errno in a printk when the failure put errno into a local variable
    saving errno after a printk, which can change it

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     

30 Nov, 2006

1 commit

  • Changes persistant -> persistent. www.dictionary.com does not know
    persistant (with an A), but should it be one of those things you can
    spell in more than one correct way, let me know.

    Signed-off-by: Jan Engelhardt
    Signed-off-by: Adrian Bunk

    Jan Engelhardt
     

08 Feb, 2006

1 commit

  • When UML opens a TUN/TAP device, the file descriptor could be copied into
    later, long-lived threads, holding the device open even after the interface is
    taken down, preventing it from being brought up again. This patch makes these
    descriptors close-on-exec so that they disappear from helper processes, and
    adds CLONE_FILES to a UML helper thread so that the descriptors are closed in
    the thread when they are closed elsewhere in UML.

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     

14 Nov, 2005

1 commit


07 Nov, 2005

1 commit


05 Sep, 2005

1 commit

  • If a SIGWINCH comes in, while winch_thread() isn't waiting in wait(),
    winch_thread could miss signals. It isn't very probable, that anyone will
    see this causing trouble, as it would need a very special timing, that a
    missed SIGWINCH results in a wrong window size.

    So, this is a minor problem. But why not fix, as it can be done so easy?

    Signed-off-by: Bodo Stroesser
    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bodo Stroesser
     

09 Jun, 2005

2 commits

  • This cleans an error path which used to leak file descriptors by returning
    without trying to tidy up.

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • This is a bunch of compile fixes provoked by building UML with gcc 4. There
    are a bunch of signedness mismatches, a couple of uninitialized references,
    and a botched C99 structure initialization which had somehow gone unnoticed.

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds