1. 04 Jul, 2003 4 commits
  2. 03 Jul, 2003 25 commits
  3. 02 Jul, 2003 11 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