1. 03 Jul, 2003 23 commits
  2. 02 Jul, 2003 17 commits
    • Linus Torvalds's avatar
      The sbp2 driver needs <linux/pci.h>, but didn't include it. It apparently · bf948e74
      Linus Torvalds authored
      used to work due to some random magic indirect include, but broke lately.
      
      Do the obvious fix.
      bf948e74
    • Rusty Russell's avatar
      [PATCH] Make ksoftirqd a normal per-cpu variable. · 3ac57d34
      Rusty Russell authored
      This moves the ksoftirqd pointers out of the irq_stat struct, and uses a
      normal per-cpu variable.  It's not that time critical, nor referenced in
      assembler.  This moves us closer to making irq_stat a per-cpu variable.
      
      Because some archs have hardcoded asm references to offsets in this
      structure, I haven't touched non-x86.  The __ksoftirqd_task field is
      unused in other archs, too.
      3ac57d34
    • Rusty Russell's avatar
      [PATCH] Remove unused __syscall_count · 7b957b78
      Rusty Russell authored
      Noone seems to use __syscall_count.  Remove the field from i386
      irq_cpustat_t struct, and the generic accessor macros.
      
      Because some archs have hardcoded asm references to offsets in this
      structure, I haven't touched non-x86, but doing so is usually
      trivial.
      7b957b78
    • Rusty Russell's avatar
      [PATCH] Per-cpu variable in mm/slab.c · 6f9199b5
      Rusty Russell authored
      Rather trivial conversion.  Tested on SMP.
      6f9199b5
    • Rusty Russell's avatar
      [PATCH] Remove cpu arg from cpu_raise_irq · 26e48e57
      Rusty Russell authored
      The function cpu_raise_softirq() takes a softirq number, and a cpu number,
      but cannot be used with cpu != smp_processor_id(), because there's no
      locking around the pending softirq lists.  Since noone does this, remove
      that arg.
      
      As per Linus' suggestion, names changed:
      	raise_softirq(int nr)
      	cpu_raise_softirq(int cpu, int nr) -> raise_softirq_irqoff(int nr)
      	__cpu_raise_softirq(int cpu, int nr) -> __raise_softirq_irqoff(int nr)
      26e48e57
    • Andrew Morton's avatar
      [PATCH] e100 use-after-free fix · b9d6ea3c
      Andrew Morton authored
      I though Scott had recently merged this but it seems not.  We'll be
      needing this patch if you merge Manfred's page unmapping debug patch.
      b9d6ea3c
    • Andrew Morton's avatar
      [PATCH] Fix cciss hang · 403d24bf
      Andrew Morton authored
      From: Jens Axboe <axboe@suse.de>
      
      It fixes a hang when performing large I/O's.  Has been tested and acked by
      the maintainer, "Wiran, Francis" <francis.wiran@hp.com>.
      403d24bf
    • Andrew Morton's avatar
      [PATCH] Set limits on CONFIG_LOG_BUF_SHIFT · e46e0cf2
      Andrew Morton authored
      From: bert hubert <ahu@ds9a.nl>
      
      Attached patch adds a range check to LOG_BUF_SHIFT and clarifies the
      configuration somewhat.  I managed to build a non-booting kernel because I
      thought 64 was a nice power of two, which lead to the kernel blocking when
      it tried to actually use or allocate a 2^64 buffer.
      e46e0cf2
    • Andrew Morton's avatar
      [PATCH] ext3: fix journal_release_buffer() race · 90153a16
      Andrew Morton authored
      		CPU0				CPU1
      
      	journal_get_write_access(bh)
      	 (Add buffer to t_reserved_list)
      
      					journal_get_write_access(bh)
      					 (It's already on t_reserved_list:
      					  nothing to do)
      
      	 (We decide we don't want to
      	  journal the buffer after all)
      	journal_release_buffer()
      	 (It gets pulled off the transaction)
      
      
      					journal_dirty_metadata()
      					 (The buffer isn't on the reserved
      					  list!  The kernel explodes)
      
      
      Simple fix: just leave the buffer on t_reserved_list in
      journal_release_buffer().  If nobody ends up claiming the buffer then it will
      get thrown away at start of transaction commit.
      90153a16
    • Andrew Morton's avatar
      [PATCH] fix double mmdrop() on exec path · 610a61e0
      Andrew Morton authored
      If load_elf_binary() (and the other binary handlers) fail after
      flush_old_exec() (for example, in setup_arg_pages()) then do_execve() will go
      through and do mmdrop(bprm.mm).
      
      But bprm.mm is now current->mm.  We've just freed the current process's mm.
      The kernel dies in a most ghastly manner.
      
      Fix that up by nulling out bprm.mm in flush_old_exec(), at the point where we
      consumed the mm.  Handle the null pointer in the do_execve() error path.
      
      Also: don't open-code free_arg_pages() in do_execve(): call it instead.
      610a61e0
    • Andrew Morton's avatar
      [PATCH] ext2: inode allocation race fix · 6501a85b
      Andrew Morton authored
      ext2's inode allocator will call find_group_orlov(), which will return a
      suitable blockgroup in which the inode should be allocated.  But by the time
      we actually try to allocate an inode in the blockgroup, other CPUs could have
      used them all up.
      
      ext2 will bogusly fail with "ext2_new_inode: Free inodes count corrupted in
      group NN".
      
      
      To fix this we just advance onto the next blockgroup if the rare race
      happens.  If we've scanned all blockgroups then return -ENOSPC.
      
      
      (This is a bit inaccurate: after we've scanned all blockgroups, there may
      still be available inodes due to inode freeing activity in other blockgroups.
       This cannot be fixed without fs-wide locking.  The effect is a slightly
      early ENOSPC in a nearly-full filesystem).
      6501a85b
    • Andrew Morton's avatar
      [PATCH] Security hook for vm_enough_memory · bc75ac4f
      Andrew Morton authored
      From: Stephen Smalley <sds@epoch.ncsc.mil>
      
      This patch against 2.5.73 replaces vm_enough_memory with a security hook
      per Alan Cox's suggestion so that security modules can completely replace
      the logic if desired.
      
      Note that the patch changes the interface to follow the convention of the
      other security hooks, i.e.  return 0 if ok or -errno on failure (-ENOMEM in
      this case) rather than returning a boolean.  It also exports various
      variables and functions required for the vm_enough_memory logic.
      bc75ac4f
    • Andrew Morton's avatar
      [PATCH] cleanup and generalise lowmem_page_address · cee396e2
      Andrew Morton authored
      From: William Lee Irwin III <wli@holomorphy.com>
      
      This patch allows architectures to micro-optimize lowmem_page_address() at
      their whims.  Roman Zippel originally wrote and/or suggested this back when
      dependencies on page->virtual existing were being shaken out.  That's
      long-settled, so it's fine to do this now.
      cee396e2
    • Andrew Morton's avatar
      [PATCH] fix lost-tick compensation corner-case · 32717367
      Andrew Morton authored
      From: john stultz <johnstul@us.ibm.com>
      
      This patch catches a corner case in the lost-tick compensation code.
      
      There is a check to see if we overflowed between reads of the two time
      sources, however should the high res time source be slightly slower then
      what we calibrated, its possible to trigger this code when no ticks have
      been lost.
      
      This patch adds an extra check to insure we have seen more then one tick
      before we check for this overflow.  This seems to resolve the remaining
      "time doubling" issues that I've seen reported.
      32717367
    • Andrew Morton's avatar
      [PATCH] fix lost_tick detector for speedstep · 48ecce4b
      Andrew Morton authored
      From: john stultz <johnstul@us.ibm.com>
      
      The patch tries to resolve issues caused by running the TSC based lost
      tick compensation code on CPUs that change frequency (speedstep, etc).
      
      Should the CPU be in slow mode when calibrate_tsc() executes, the kernel
      will assume we have so many cycles per tick.  Later when the cpu speeds up,
      the kernel will start noting that too many cycles have past since the last
      interrupt.  Since this can occasionally happen, the lost tick compensation
      code then tries to fix this by incrementing jiffies.  Thus every tick we
      end up incrementing jiffies many times, causing timers to expire too
      quickly and time to rush ahead.
      
      This patch detects when there has been 100 consecutive interrupts where we
      had to compensate for lost ticks.  If this occurs, we spit out a warning
      and fall back to using the PIT as a time source.
      
      I've tested this on my speedstep enabled laptop with success, and others
      laptop users seeing this problem have reported it works for them.  Also to
      ensure we don't fall back to the slower PIT too quickly, I tested the code
      on a system I have that looses ~30 ticks about every second and it can
      still manage to use the TSC as a good time source.
      
      This solves most of the "time doubling" problems seen on laptops.
      Additionally this revision has been modified to use the cleanups made in
      rename-timer_A1.
      48ecce4b
    • Andrew Morton's avatar
      [PATCH] timer renaming and cleanups · c8cf1ab9
      Andrew Morton authored
      From: john stultz <johnstul@us.ibm.com>
      
      This renames the bad "timer" variable to "cur_timer" and moves externs to
      .h files.
      c8cf1ab9
    • Andrew Morton's avatar
      [PATCH] Report detached thread exit to the debugger · 4ef892a0
      Andrew Morton authored
      From: Daniel Jacobowitz <dan@debian.org>
      
      Right now, CLONE_DETACHED threads silently vanish from GDB's sight when
      they exit.  This patch lets the thread report its exit to the debugger, and
      then be auto-reaped as soon as it is collected, instead of being reaped as
      soon as it exits and not reported at all.
      
      GDB works either way, but this is more correct and will be useful for some
      later GDB patches.
      4ef892a0