1. 04 7月, 2006 9 次提交
    • C
      [PATCH] binfmt_elf: fix checks for bad address · ce51059b
      Chuck Ebbert 提交于
      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: NChuck Ebbert <76306.1226@compuserve.com>
      Signed-off-by: NErnie Petrides <petrides@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      ce51059b
    • C
      [PATCH] ZVC/zone_reclaim: Leave 1% of unmapped pagecache pages for file I/O · 9614634f
      Christoph Lameter 提交于
      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: NChristoph Lameter <clameter@sgi.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      9614634f
    • B
      [PATCH] SERIAL: allow shared 8250_pnp interrupts · cb6358eb
      Bjorn Helgaas 提交于
      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: NBjorn 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: NRussell King <rmk@arm.linux.org.uk>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      cb6358eb
    • B
      [PATCH] PNPACPI: support shareable interrupts · c32928c5
      Bjorn Helgaas 提交于
      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: NBjorn 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: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      c32928c5
    • T
      [PATCH] uml build fix · c61a8416
      Theodore Tso 提交于
      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: N"Theodore Ts'o" <tytso@mit.edu>
      Cc: Jeff Dike <jdike@addtoit.com>
      Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      c61a8416
    • A
      [PATCH] bcm43xx: netlink deadlock fix · 6abd219c
      Arjan van de Ven 提交于
      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: NArjan van de Ven <arjan@linux.intel.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NHerbert 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: N"David S. Miller" <davem@davemloft.net>
      Cc: jamal <hadi@cyberus.ca>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      6abd219c
    • H
      [PATCH] lockdep: special s390 print_symbol() version · b02454f4
      Heiko Carstens 提交于
      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: NIngo Molnar <mingo@elte.hu>
      Cc: Arjan van de Ven <arjan@infradead.org>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      b02454f4
    • A
      [PATCH] genirq ia64 cleanup · dada0769
      Andrew Morton 提交于
      Remove duplicate/redundant/wrong  IRQF_PERCPU definition.
      
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      dada0769
    • J
      [PATCH] time initialisation fix · 88fecaa2
      john stultz 提交于
      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: NJohn Stultz <johnstul@us.ibm.com>
      Cc: Jesse Brandeburg <jesse.brandeburg@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      88fecaa2
  2. 03 7月, 2006 31 次提交