20 Sep, 2007

2 commits

  • This patch fixes a crash caused by an interrupt coming in when an IRQ stack
    is being torn down. When this happens, handle_signal will loop, setting up
    the IRQ stack again because the tearing down had finished, and handling
    whatever signals had come in.

    However, to_irq_stack returns a mask of pending signals to be handled, plus
    bit zero is set if the IRQ stack was already active, and thus shouldn't be
    torn down. This causes a problem because when handle_signal goes around
    the loop, sig will be zero, and to_irq_stack will duly set bit zero in the
    returned mask, faking handle_signal into believing that it shouldn't tear
    down the IRQ stack and return thread_info pointers back to their original
    values.

    This will eventually cause a crash, as the IRQ stack thread_info will
    continue pointing to the original task_struct and an interrupt will look
    into it after it has been freed.

    The fix is to stop passing a signal number into to_irq_stack. Rather, the
    pending signals mask is initialized beforehand with the bit for sig already
    set. References to sig in to_irq_stack can be replaced with references to
    the mask.

    [akpm@linux-foundation.org: use UL]
    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • I found a type mismatch in UML that makes host block devices unusable as ubd
    devices on x86_64 and other 64 bits systems (segfault of the mm subsystem):

    In block/ioctl.c, the following lines show that the BLKGETSIZE ioctl expects
    a pointer to a long:

    case BLKGETSIZE:
    if ((bdev->bd_inode->i_size >> 9) > ~0UL)
    return -EFBIG;
    return put_ulong(arg, bdev->bd_inode->i_size >> 9);

    In arch/um/os-Linux/file.c, os_file_size calls it with an int.

    The ioctl_list man page should be fixed as well.

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

    Nicolas George
     

31 Aug, 2007

2 commits

  • Stop UML crashing when trying to dump a process core on x86_64. This is the
    minimal fix to stop the crash - more things are broken here, and patches are
    forthcoming.

    The immediate thing to do is define ELF_CORE_COPY_REGS and
    ELF_CORE_COPY_FPREGS. Defining ELF_CORE_COPY_FPREGS allows dump_fpu to go
    away. It is defined in terms of save_fp_registers, so that needs to be added.

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

    Jeff Dike
     
  • Fix a class of bugs in the UML linker scripts which caused section boundary
    variables to sometimes not line up with their sections.

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

    Jeff Dike
     

23 Aug, 2007

1 commit

  • The previous patch which limited the number of sectors in a single request
    to a COWed device was correct in concept, but the limit was implemented in
    the wrong place.

    By putting it in ubd_add, it covered the cases where the COWing was
    specified on the command line. However, when the command line only has the
    COW file specified, the fact that it's a COW file isn't known until it's
    opened, so the limit is missed in these cases.

    This patch moves the sector limit from ubd_add to ubd_open_dev.

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

    Jeff Dike
     

01 Aug, 2007

1 commit


30 Jul, 2007

1 commit

  • Remove fs.h from mm.h. For this,
    1) Uninline vma_wants_writenotify(). It's pretty huge anyway.
    2) Add back fs.h or less bloated headers (err.h) to files that need it.

    As result, on x86_64 allyesconfig, fs.h dependencies cut down from 3929 files
    rebuilt down to 3444 (-12.3%).

    Cross-compile tested without regressions on my two usual configs and (sigh):

    alpha arm-mx1ads mips-bigsur powerpc-ebony
    alpha-allnoconfig arm-neponset mips-capcella powerpc-g5
    alpha-defconfig arm-netwinder mips-cobalt powerpc-holly
    alpha-up arm-netx mips-db1000 powerpc-iseries
    arm arm-ns9xxx mips-db1100 powerpc-linkstation
    arm-assabet arm-omap_h2_1610 mips-db1200 powerpc-lite5200
    arm-at91rm9200dk arm-onearm mips-db1500 powerpc-maple
    arm-at91rm9200ek arm-picotux200 mips-db1550 powerpc-mpc7448_hpc2
    arm-at91sam9260ek arm-pleb mips-ddb5477 powerpc-mpc8272_ads
    arm-at91sam9261ek arm-pnx4008 mips-decstation powerpc-mpc8313_rdb
    arm-at91sam9263ek arm-pxa255-idp mips-e55 powerpc-mpc832x_mds
    arm-at91sam9rlek arm-realview mips-emma2rh powerpc-mpc832x_rdb
    arm-ateb9200 arm-realview-smp mips-excite powerpc-mpc834x_itx
    arm-badge4 arm-rpc mips-fulong powerpc-mpc834x_itxgp
    arm-carmeva arm-s3c2410 mips-ip22 powerpc-mpc834x_mds
    arm-cerfcube arm-shannon mips-ip27 powerpc-mpc836x_mds
    arm-clps7500 arm-shark mips-ip32 powerpc-mpc8540_ads
    arm-collie arm-simpad mips-jazz powerpc-mpc8544_ds
    arm-corgi arm-spitz mips-jmr3927 powerpc-mpc8560_ads
    arm-csb337 arm-trizeps4 mips-malta powerpc-mpc8568mds
    arm-csb637 arm-versatile mips-mipssim powerpc-mpc85xx_cds
    arm-ebsa110 i386 mips-mpc30x powerpc-mpc8641_hpcn
    arm-edb7211 i386-allnoconfig mips-msp71xx powerpc-mpc866_ads
    arm-em_x270 i386-defconfig mips-ocelot powerpc-mpc885_ads
    arm-ep93xx i386-up mips-pb1100 powerpc-pasemi
    arm-footbridge ia64 mips-pb1500 powerpc-pmac32
    arm-fortunet ia64-allnoconfig mips-pb1550 powerpc-ppc64
    arm-h3600 ia64-bigsur mips-pnx8550-jbs powerpc-prpmc2800
    arm-h7201 ia64-defconfig mips-pnx8550-stb810 powerpc-ps3
    arm-h7202 ia64-gensparse mips-qemu powerpc-pseries
    arm-hackkit ia64-sim mips-rbhma4200 powerpc-up
    arm-integrator ia64-sn2 mips-rbhma4500 s390
    arm-iop13xx ia64-tiger mips-rm200 s390-allnoconfig
    arm-iop32x ia64-up mips-sb1250-swarm s390-defconfig
    arm-iop33x ia64-zx1 mips-sead s390-up
    arm-ixp2000 m68k mips-tb0219 sparc
    arm-ixp23xx m68k-amiga mips-tb0226 sparc-allnoconfig
    arm-ixp4xx m68k-apollo mips-tb0287 sparc-defconfig
    arm-jornada720 m68k-atari mips-workpad sparc-up
    arm-kafa m68k-bvme6000 mips-wrppmc sparc64
    arm-kb9202 m68k-hp300 mips-yosemite sparc64-allnoconfig
    arm-ks8695 m68k-mac parisc sparc64-defconfig
    arm-lart m68k-mvme147 parisc-allnoconfig sparc64-up
    arm-lpd270 m68k-mvme16x parisc-defconfig um-x86_64
    arm-lpd7a400 m68k-q40 parisc-up x86_64
    arm-lpd7a404 m68k-sun3 powerpc x86_64-allnoconfig
    arm-lubbock m68k-sun3x powerpc-cell x86_64-defconfig
    arm-lusl7200 mips powerpc-celleb x86_64-up
    arm-mainstone mips-atlas powerpc-chrp32

    Signed-off-by: Alexey Dobriyan
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     

25 Jul, 2007

4 commits

  • * 'request-queue-t' of git://git.kernel.dk/linux-2.6-block:
    [BLOCK] Add request_queue_t and mark it deprecated
    [BLOCK] Get rid of request_queue_t typedef

    Linus Torvalds
     
  • 2.6.23-rc1 turned up another batch of references from non-__init code to
    __init code. In most cases, these were missing __init annotations. In one
    case (os_drop_memory), the annotation was present but wrong.

    init_maps is __init, but for some reason was being very careful about the
    mechanism by which it allocated memory, checking whether it was OK to use
    kmalloc (at this point in the boot, it definitely isn't) and using either
    alloc_bootmem_low_pages or kmalloc/vmalloc. So, the kmalloc/vmalloc code is
    removed.

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

    Jeff Dike
     
  • Restructure do_aio thanks to commments from Ulrich and Al.

    Uli started this by seeing that UML's initialization of a struct iocb
    initialized fields that it shouldn't.

    Al followed up by adding the following cleanups:
    eliminating a variable by just using an anonymous structure in
    its place.
    hoisting a duplicated line out of the switch.
    simplifying the error checking at the end.

    I added a severity to the printk.

    Signed-off-by: Jeff Dike
    Cc: Al Viro
    Cc: Ulrich Drepper
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • In 2.6.23-rc1, i386 fiddled its string support such that UML started getting
    undefined references from modules. The UML asm/string.h was including the
    i386 string.h, which defined __HAVE_ARCH_STR*, but the corresponding
    implementations weren't being pulled in.

    This is fixed by adding arch/i386/lib/string.h to the list of host
    architecture files to be pulled in to UML.

    A complication is that the libc exports file assumed that the generic strlen
    and strstr weren't in use (i.e. __HAVE_ARCH_STR is defined), then they aren't
    exported. This is untrue for strlen, which is exported in either case, so
    this logic is not needed.

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

    Jeff Dike
     

24 Jul, 2007

1 commit

  • Some of the code has been gradually transitioned to using the proper
    struct request_queue, but there's lots left. So do a full sweet of
    the kernel and get rid of this typedef and replace its uses with
    the proper type.

    Signed-off-by: Jens Axboe

    Jens Axboe
     

20 Jul, 2007

3 commits

  • Change in 'kbuild: do section mismatch check on full vmlinux'
    should've been replicated in arch/um/Makefile.

    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • Currently, CONFIG_X86_CMPXCHG64 both enables boot-time checking of
    the cmpxchg64b feature and enables compilation of the set_64bit() family.
    Since the option is dependent on PAE, and since KVM depends on set_64bit(),
    this effectively disables KVM on i386 nopae.

    Simplify by removing the config option altogether: the boot check is made
    dependent on CONFIG_X86_PAE directly, and the set_64bit() family is exposed
    without constraints. It is up to users to check for the feature flag (KVM
    does not as virtualiation extensions imply its existence).

    Signed-off-by: Avi Kivity
    Signed-off-by: Linus Torvalds

    Avi Kivity
     
  • This patch completes Linus's wish that the fault return codes be made into
    bit flags, which I agree makes everything nicer. This requires requires
    all handle_mm_fault callers to be modified (possibly the modifications
    should go further and do things like fault accounting in handle_mm_fault --
    however that would be for another patch).

    [akpm@linux-foundation.org: fix alpha build]
    [akpm@linux-foundation.org: fix s390 build]
    [akpm@linux-foundation.org: fix sparc build]
    [akpm@linux-foundation.org: fix sparc64 build]
    [akpm@linux-foundation.org: fix ia64 build]
    Signed-off-by: Nick Piggin
    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: Russell King
    Cc: Ian Molton
    Cc: Bryan Wu
    Cc: Mikael Starvik
    Cc: David Howells
    Cc: Yoshinori Sato
    Cc: "Luck, Tony"
    Cc: Hirokazu Takata
    Cc: Geert Uytterhoeven
    Cc: Roman Zippel
    Cc: Greg Ungerer
    Cc: Matthew Wilcox
    Cc: Paul Mackerras
    Cc: Benjamin Herrenschmidt
    Cc: Heiko Carstens
    Cc: Martin Schwidefsky
    Cc: Paul Mundt
    Cc: Kazumoto Kojima
    Cc: Richard Curnow
    Cc: William Lee Irwin III
    Cc: "David S. Miller"
    Cc: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Cc: Miles Bader
    Cc: Chris Zankel
    Acked-by: Kyle McMartin
    Acked-by: Haavard Skinnemoen
    Acked-by: Ralf Baechle
    Acked-by: Andi Kleen
    Signed-off-by: Andrew Morton
    [ Still apparently needs some ARM and PPC loving - Linus ]
    Signed-off-by: Linus Torvalds

    Nick Piggin
     

18 Jul, 2007

3 commits

  • Signed-off-by: Al Viro
    Acked-by: Jeff Dike
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • Identical implementations of PTRACE_POKEDATA go into generic_ptrace_pokedata()
    function.

    AFAICS, fix bug on xtensa where successful PTRACE_POKEDATA will nevertheless
    return EPERM.

    Signed-off-by: Alexey Dobriyan
    Cc: Christoph Hellwig
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     
  • Identical implementations of PTRACE_PEEKDATA go into generic_ptrace_peekdata()
    function.

    Signed-off-by: Alexey Dobriyan
    Cc: Christoph Hellwig
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     

17 Jul, 2007

12 commits

  • I forgot this file was here. It hasn't been used since UML has been in
    mainline.

    Thanks to Jesper for finding something that needed doing to it, thus reminding
    me of its existence.

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

    Jeff Dike
     
  • COWed devices can't handle more than 32 (64 on x86_64) sectors in one request
    due to the size of the bitmap being carried around in the io_thread_req.

    Enforce that by telling the block layer not to put too many sectors in
    requests to COWed devices.

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

    Jeff Dike
     
  • Add some exports for hostfs that are required after Alberto Bertogli's fixes
    for accessing unlinked host files.

    Also did some style cleanups while I was here.

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

    Jeff Dike
     
  • UML had two wrapper procedures for kmalloc, um_kmalloc and um_kmalloc_atomic
    because the flag constants weren't available in userspace code.
    kern_constants.h had made kernel constants available for a long time, so there
    is no need for these wrappers any more. Rather, userspace code calls kmalloc
    directly with the userspace versions of the gfp flags.

    kmalloc isn't a real procedure, so I had to essentially copy the inline
    wrapper around __kmalloc.

    vmalloc also had its own wrapper for no good reason. This is now gone.

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

    Jeff Dike
     
  • 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
     
  • If the host side of a console can't be opened, this will now produce visible
    error messages.

    enable_chan now returns a status and this is passed up to con_open and
    ssl_open, which will complain if anything went wrong.

    The default host device for the serial line driver is now a pts device rather
    than a pty device since lots of hosts have LEGACY_PTYS disabled. This had
    always been failing on such hosts, but silently.

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

    Jeff Dike
     
  • Cleanup, mostly style violations.

    Tidied the includes.

    getmaster returns a real errno, which pty_open returns if there's a
    problem.

    The printks now have severity.

    Changed os_* calls to call libc directly.

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

    Jeff Dike
     
  • Major tidying of the xterm console driver:
    got rid of the tt-mode gdb support
    tidied up the includes
    fixed lots of style violations
    replaced os_* calls with glibc calls in xterm.c
    all printk calls now have a severity indicator
    the error paths of xterm_open are closer to being right

    Signed-off-by: Jeff Dike
    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
     
  • Add generic exit-time stack-depth checking to CONFIG_DEBUG_STACK_USAGE.

    This also adds UML support.

    Tested on UML and i386.

    [akpm@linux-foundation.org: cleanups, speedups, tweaks]
    Signed-off-by: Jeff Dike
    Cc: Oleg Nesterov
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • It is theoretically possible for a request to finish and be freed between
    writing it to the I/O thread and updating the sector count. In this case, the
    update will dereference a freed pointer.

    To avoid this, I delay the update until processing the next sg segment, when
    the request pointer is known to be good.

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

    Jeff Dike
     

17 Jun, 2007

1 commit

  • Distros seem to be removing PAGE_SIZE from asm/page.h. So, the libc side of
    UML should stop using it.

    I replace it with UM_KERN_PAGE_SIZE, which is defined to be the same as
    PAGE_SIZE on the kernel side of the house. I could also use getpagesize(),
    but it's more important that UML have the same value of PAGE_SIZE everywhere.
    It's conceivable that it could be built with a larger PAGE_SIZE, and use of
    getpagesize() would break that badly.

    PAGE_MASK got the same treatment, as it is closely tied to PAGE_SIZE.

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

    Jeff Dike
     

09 Jun, 2007

2 commits

  • Include linux/kernel.h wherever simple_strtoul is used. This kills a
    compile warning in stderr_console.c and potential ones in the other files.

    This also fixes a bunch of style violations in exitcode.c.

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

    Jeff Dike
     
  • Force KERNEL_STACK_ORDER to be at least 1 on UML/x86_64, to avoid overflows.

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

    Jeff Dike
     

24 May, 2007

1 commit

  • Make the PTRACE_SYSEMU checking more robust. It will make sure that system
    call numbers are reported correctly. If there is a problem, it will disable
    PTRACE_SYSEMU use and use PTRACE_SYSCALL instead.

    Thanks to Balaji G for helping reproduce this problem.

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

    Jeff Dike
     

19 May, 2007

2 commits


16 May, 2007

1 commit

  • __NR_syscall_max is done in x86_64 asm-offsets; do an equivalent in
    uml kern_constants.h

    Signed-off-by: Al Viro
    Acked-by: Jeff Dike
    Signed-off-by: Linus Torvalds

    Al Viro
     

11 May, 2007

3 commits

  • Make kernel stacks be 1 page on i386 and 2 pages on x86_64. These match the
    host values.

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

    Jeff Dike
     
  • Add a separate IRQ stack. This differs from i386 in having the entire
    interrupt run on a separate stack rather than starting on the normal kernel
    stack and switching over once some preparation has been done. The underlying
    mechanism, is of course, sigaltstack.

    Another difference is that interrupts that happen in userspace are handled on
    the normal kernel stack. These cause a wait wakeup instead of a signal
    delivery so there is no point in trying to switch stacks for these. There's
    no other stuff on the stack, so there is no extra stack consumption.

    This quirk makes it possible to have the entire interrupt run on a separate
    stack - process preemption (and calls to schedule()) happens on a normal
    kernel stack. If we enable CONFIG_PREEMPT, this will need to be rethought.

    The IRQ stack for CPU 0 is declared in the same way as the initial kernel
    stack. IRQ stacks for other CPUs will be allocated dynamically.

    An extra field was added to the thread_info structure. When the active
    thread_info is copied to the IRQ stack, the real_thread field points back to
    the original stack. This makes it easy to tell where to copy the thread_info
    struct back to when the interrupt is finished. It also serves as a marker of
    a nested interrupt. It is NULL for the first interrupt on the stack, and
    non-NULL for any nested interrupts.

    Care is taken to behave correctly if a second interrupt comes in when the
    thread_info structure is being set up or taken down. I could just disable
    interrupts here, but I don't feel like giving up any of the performance gained
    by not flipping signals on and off.

    If an interrupt comes in during these critical periods, the handler can't run
    because it has no idea what shape the stack is in. So, it sets a bit for its
    signal in a global mask and returns. The outer handler will deal with this
    signal itself.

    Atomicity is had with xchg. A nested interrupt that needs to bail out will
    xchg its signal mask into pending_mask and repeat in case yet another
    interrupt hit at the same time, until the mask stabilizes.

    The outermost interrupt will set up the thread_info and xchg a zero into
    pending_mask when it is done. At this point, nested interrupts will look at
    ->real_thread and see that no setup needs to be done. They can just continue
    normally.

    Similar care needs to be taken when exiting the outer handler. If another
    interrupt comes in while it is copying the thread_info, it will drop a bit
    into pending_mask. The outer handler will check this and if it is non-zero,
    will loop, set up the stack again, and handle the interrupt.

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

    Jeff Dike
     
  • Some tidying of the irq code before introducing irq stacks. Mostly
    style fixes, but the timer handler calls the timer code directly
    rather than going through the generic sig_handler_common_skas.

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

    Jeff Dike