1. 03 Jul, 2006 14 commits
    • Chuck Ebbert's avatar
      [PATCH] binfmt_elf: fix checks for bad address · ce51059b
      Chuck Ebbert authored
      Fix check for bad address; use macro instead of open-coding two checks.
      
      Taken from RHEL4 kernel update.
      
      From: Ernie Petrides <petrides@redhat.com>
      
        For background, the BAD_ADDR() macro should return TRUE if the address is
        TASK_SIZE, because that's the lowest address that is *not* valid for
        user-space mappings.  The macro was correct in binfmt_aout.c but was wrong
        for the "equal to" case in binfmt_elf.c.  There were two in-line validations
        of user-space addresses in binfmt_elf.c, which have been appropriately
        converted to use the corrected BAD_ADDR() macro in the patch you posted
        yesterday.  Note that the size checks against TASK_SIZE are okay as coded.
      
        The additional changes that I propose are below.  These are in the error
        paths for bad ELF entry addresses once load_elf_binary() has already
        committed to exec'ing the new image (following the tearing down of the
        task's original address space).
      
        The 1st hunk deals with the interp-side of the outer "if".  There were two
        problems here.  The printk() should be removed because this path can be
        triggered at will by a bogus interpreter image created and used by a
        malicious user.  Further, the error code should not be ENOEXEC, because that
        causes the loop in search_binary_handler() to continue trying other exec
        handlers (twice, in fact).  But it's too late for this to work correctly,
        because the user address space has already been torn down, and an exec()
        failure cannot be returned to the user code because the code no longer
        exists.  The only recovery is to force a SIGSEGV, but it's best to terminate
        the search loop immediately.  I somewhat arbitrarily chose EINVAL as a
        fallback error code, but any error returned by load_elf_interp() will
        override that (but this value will never be seen by user-space).
      
        The 2nd hunk deals with the non-interp-side of the outer "if".  There were
        two problems here as well.  The SIGSEGV needs to be forced, because a prior
        sigaction() syscall might have set the associated disposition to SIG_IGN.
        And the ENOEXEC should be changed to EINVAL as described above.
      Signed-off-by: default avatarChuck Ebbert <76306.1226@compuserve.com>
      Signed-off-by: default avatarErnie Petrides <petrides@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      ce51059b
    • Christoph Lameter's avatar
      [PATCH] ZVC/zone_reclaim: Leave 1% of unmapped pagecache pages for file I/O · 9614634f
      Christoph Lameter authored
      It turns out that it is advantageous to leave a small portion of unmapped file
      backed pages if all of a zone's pages (or almost all pages) are allocated and
      so the page allocator has to go off-node.
      
      This allows recently used file I/O buffers to stay on the node and
      reduces the times that zone reclaim is invoked if file I/O occurs
      when we run out of memory in a zone.
      
      The problem is that zone reclaim runs too frequently when the page cache is
      used for file I/O (read write and therefore unmapped pages!) alone and we have
      almost all pages of the zone allocated.  Zone reclaim may remove 32 unmapped
      pages.  File I/O will use these pages for the next read/write requests and the
      unmapped pages increase.  After the zone has filled up again zone reclaim will
      remove it again after only 32 pages.  This cycle is too inefficient and there
      are potentially too many zone reclaim cycles.
      
      With the 1% boundary we may still remove all unmapped pages for file I/O in
      zone reclaim pass.  However.  it will take a large number of read and writes
      to get back to 1% again where we trigger zone reclaim again.
      
      The zone reclaim 2.6.16/17 does not show this behavior because we have a 30
      second timeout.
      
      [akpm@osdl.org: rename the /proc file and the variable]
      Signed-off-by: default avatarChristoph Lameter <clameter@sgi.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      9614634f
    • Bjorn Helgaas's avatar
      [PATCH] SERIAL: allow shared 8250_pnp interrupts · cb6358eb
      Bjorn Helgaas authored
      PNP devices can use shared interrupts, so check to see whether we'll need
      SA_SHIRQ for request_irq().
      
      The builtin PDH UART on the HP rx8640 is an example of an ACPI/PNP device
      that uses a shareable level-triggered, active-low interrupt.  The interrupt
      can be shared in very large I/O configurations or by artificially lowering
      IA64_DEF_LAST_DEVICE_VECTOR.
      Signed-off-by: default avatarBjorn Helgaas <bjorn.helgaas@hp.com>
      Cc: Adam Belay <ambx1@neo.rr.com>
      Cc: Matthieu Castet <castet.matthieu@free.fr>
      Cc: Li Shaohua <shaohua.li@intel.com>
      Cc: Len Brown <len.brown@intel.com>
      Acked-by: default avatarRussell King <rmk@arm.linux.org.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      cb6358eb
    • Bjorn Helgaas's avatar
      [PATCH] PNPACPI: support shareable interrupts · c32928c5
      Bjorn Helgaas authored
      ACPI supplies a "shareable" indication, but PNPACPI ignores it.  If a PNP
      device uses a shared interrupt, request_irq() fails because the PNP driver
      can't tell whether to supply SA_SHIRQ.
      
      This patch allows PNP drivers to test
          (pnp_irq_flags(dev, 0) & IORESOURCE_IRQ_SHAREABLE)
      Signed-off-by: default avatarBjorn Helgaas <bjorn.helgaas@hp.com>
      Cc: Adam Belay <ambx1@neo.rr.com>
      Cc: Matthieu Castet <castet.matthieu@free.fr>
      Cc: Li Shaohua <shaohua.li@intel.com>
      Cc: Len Brown <len.brown@intel.com>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      c32928c5
    • Theodore Tso's avatar
      [PATCH] uml build fix · c61a8416
      Theodore Tso authored
      This is needed to fix UML compilation given that alternatives_smp_module_add
      and alternatives_smp_module_del are null inline functions if !CONFIG_SMP.
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Cc: Jeff Dike <jdike@addtoit.com>
      Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      c61a8416
    • Arjan van de Ven's avatar
      [PATCH] bcm43xx: netlink deadlock fix · 6abd219c
      Arjan van de Ven authored
      reported by Jure Repinc:
      
      > > http://bugzilla.kernel.org/show_bug.cgi?id=6773
      
      > > checked out dmesg output and found the message
      > >
      > > ======================================================
      > > [ BUG: hard-safe -> hard-unsafe lock order detected! ]
      > > ------------------------------------------------------
      > >
      > > starting at line 660 of the dmesg.txt that I will attach.
      
      The patch below should fix the deadlock, albeit I suspect it's not the
      "right" fix; the right fix may well be to move the rx processing in bcm43xx
      to softirq context.  [it's debatable, ipw2200 hit this exact same bug; at
      some point it's better to bite the bullet and move this to the common layer
      as my patch below does]
      
      Make the nl_table_lock irq-safe; it's taken for read in various netlink
      functions, including functions that several wireless drivers (ipw2200,
      bcm43xx) want to call from hardirq context.
      
      The deadlock was found by the lock validator.
      Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Cc: Michael Buesch <mb@bu3sch.de>
      Cc: "John W. Linville" <linville@tuxdriver.com>
      Cc: Jeff Garzik <jeff@garzik.org>
      Acked-by: default avatar"David S. Miller" <davem@davemloft.net>
      Cc: jamal <hadi@cyberus.ca>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      6abd219c
    • Heiko Carstens's avatar
      [PATCH] lockdep: special s390 print_symbol() version · b02454f4
      Heiko Carstens authored
      Have a special version of print_symbol() for s390 which clears the most
      significant bit of addr before calling __print_symbol().  This seems to be
      better than checking/changing each place in the kernel that saves an
      instruction pointer.
      
      Without this the output would look like:
      
      hardirqs last  enabled at (30907): [<80018c6a>] 0x80018c6a
      hardirqs last disabled at (30908): [<8001e48c>] 0x8001e48c
      softirqs last  enabled at (30904): [<8001dc96>] 0x8001dc96
      softirqs last disabled at (30897): [<8001dc50>] 0x8001dc50
      
      instead of this:
      
      hardirqs last  enabled at (19421): [<80018c72>] cpu_idle+0x176/0x1c4
      hardirqs last disabled at (19422): [<8001e494>] io_no_vtime+0xa/0x1a
      softirqs last  enabled at (19418): [<8001dc9e>] do_softirq+0xa6/0xe8
      softirqs last disabled at (19411): [<8001dc58>] do_softirq+0x60/0xe8
      Acked-by: default avatarIngo Molnar <mingo@elte.hu>
      Cc: Arjan van de Ven <arjan@infradead.org>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      b02454f4
    • Andrew Morton's avatar
      [PATCH] genirq ia64 cleanup · dada0769
      Andrew Morton authored
      Remove duplicate/redundant/wrong  IRQF_PERCPU definition.
      
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      dada0769
    • john stultz's avatar
      [PATCH] time initialisation fix · 88fecaa2
      john stultz authored
      We're not reay to take a timer interrupt until timekeeping_init() has run.
      But time_init() will start the time interrupt and if it is called with
      local interrupts enabled we'll immediately take an interrupt and die.
      
      Fix that by running timekeeping_init() prior to time_init().
      
      We don't know _why_ local interrupts got enabled on Jesse Brandeburg's
      machine.  That's a separate as-yet-unsolved problem.  THe patch adds a little
      bit of debugging to detect that.
      
      This whole requirement that local interrupts be held off during early boot
      keeps on biting us.
      Signed-off-by: default avatarJohn Stultz <johnstul@us.ibm.com>
      Cc: Jesse Brandeburg <jesse.brandeburg@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      88fecaa2
    • Thomas Gleixner's avatar
      [PATCH] genirq: Fixup ARM devel merge · 29454dde
      Thomas Gleixner authored
      ARM devel merge introduced new machine functionality which was not
      covered by the ARM -> genirq patches. Fix it up and make it compile
      again.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      29454dde
    • Thomas Gleixner's avatar
      [PATCH] ARM: Fixup missing includes in arch/arm/mm/proc-<cputype>.S · bb8d5a55
      Thomas Gleixner authored
      For several proc-<cputype>.S files the include of proc-macros.S is
      missing. Make it compile and work again.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      bb8d5a55
    • Thomas Gleixner's avatar
      [PATCH] genirq:fixup missing SA_PERCPU replacement · 284c6680
      Thomas Gleixner authored
      The irqflags consolidation converted SA_PERCPU_IRQ to IRQF_PERCPU but
      did not define the new constant.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      284c6680
    • Thomas Gleixner's avatar
      [PATCH] ARM: fixup irqflags breakage after ARM genirq merge · 52e405ea
      Thomas Gleixner authored
      The irgflags consolidation did conflict with the ARM to generic IRQ
      conversion and was not applied for ARM. Fix it up.
      
      Use the new IRQF_ constants and remove the SA_INTERRUPT define
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      52e405ea
    • Thomas Gleixner's avatar
      [PATCH] genirq: ARM dyntick cleanup · d061daa0
      Thomas Gleixner authored
      Linus: "The hacks in kernel/irq/handle.c are really horrid. REALLY
      horrid."
      
      They are indeed. Move the dyntick quirks to ARM where they belong.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      d061daa0
  2. 02 Jul, 2006 26 commits