Permalink
Commits on Nov 29, 2005
  1. Linux v2.6.15-rc3

    Linus Torvalds committed Nov 29, 2005
Commits on Nov 28, 2005
  1. Merge master.kernel.org:/home/rmk/linux-2.6-serial

    Linus Torvalds committed Nov 28, 2005
  2. Merge master.kernel.org:/home/rmk/linux-2.6-mmc

    Linus Torvalds committed Nov 28, 2005
  3. Merge master.kernel.org:/home/rmk/linux-2.6-arm

    Linus Torvalds committed Nov 28, 2005
  4. [PATCH] fuse: check for invalid node ID in fuse_create_open()

    Check for invalid node ID values in the new atomic create+open method.
    
    Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    szmi committed with Linus Torvalds Nov 28, 2005
  5. [PATCH] fuse: check directory aliasing in mkdir

    Check the created directory inode for aliases in the mkdir() method.
    
    Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    szmi committed with Linus Torvalds Nov 28, 2005
  6. [PATCH] shrinker->nr = LONG_MAX means deadlock for icache

    With Andrew Morton <akpm@osdl.org>
    
    The slab scanning code tries to balance the scanning rate of slabs versus the
    scanning rate of LRU pages.  To do this, it retains state concerning how many
    slabs have been scanned - if a particular slab shrinker didn't scan enough
    objects, we remember that for next time, and scan more objects on the next
    pass.
    
    The problem with this is that with (say) a huge number of GFP_NOIO
    direct-reclaim attempts, the number of objects which are to be scanned when we
    finally get a GFP_KERNEL request can be huge.  Because some shrinker handlers
    just bail out if !__GFP_FS.
    
    So the patch clamps the number of objects-to-be-scanned to 2* the total number
    of objects in the slab cache.
    
    Signed-off-by: Andrea Arcangeli <andrea@suse.de>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    Andrea Arcangeli committed with Linus Torvalds Nov 28, 2005
  7. [PATCH] Fix oops in vfs_quotaon_mount()

    When quota file specified in mount options did not exist, we tried to
    dereference NULL pointer later. Fix it.
    
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    jankara committed with Linus Torvalds Nov 28, 2005
  8. [PATCH] md: fix --re-add for raid1 and raid6

    If you have an array with a write-intent-bitmap, and you remove a device, then
    re-add it, a full recovery isn't needed.  We detect a re-add by looking at
    saved_raid_disk.  For raid1, it doesn't matter which disk it was, only whether
    or not it was an active device.  The old code being removed set a value of
    'mirror' which was then ignored, so it can go.  The changed code performs the
    correct check.
    
    For raid6, if there are two missing devices, make sure we chose the right slot
    on --re-add rather than always the first slot.
    
    Signed-off-by: Neil Brown <neilb@suse.de>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    neilbrown committed with Linus Torvalds Nov 28, 2005
  9. [PATCH] md: set default_bitmap_offset properly in set_array_info

    If an array is created using set_array_info, default_bitmap_offset isn't set
    properly meaning that an internal bitmap cannot be hot-added until the array
    is stopped and re-assembled.
    
    Signed-off-by: Neil Brown <neilb@suse.de>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    neilbrown committed with Linus Torvalds Nov 28, 2005
  10. [PATCH] md: fix problem with raid6 intent bitmap

    When doing a recovery, we need to know whether the array will still be
    degraded after the recovery has finished, so we can know whether bits can be
    clearred yet or not.  This patch performs the required check.
    
    Signed-off-by: Neil Brown <neilb@suse.de>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    neilbrown committed with Linus Torvalds Nov 28, 2005
  11. [PATCH] md: fix locking problem in r5/r6

    bitmap_unplug actually writes data (bits) to storage, so we shouldn't be
    holding a spinlock...
    
    Signed-off-by: Neil Brown <neilb@suse.de>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    neilbrown committed with Linus Torvalds Nov 28, 2005
  12. [PATCH] md: improve read speed to raid10 arrays using 'far copies'

    raid10 has two different layouts.  One uses near-copies (so multiple
    copies of a block are at the same or similar offsets of different
    devices) and the other uses far-copies (so multiple copies of a block
    are stored a greatly different offsets on different devices).  The point
    of far-copies is that it allows the first section (normally first half)
    to be layed out in normal raid0 style, and thus provide raid0 sequential
    read performance.
    
    Unfortunately, the read balancing in raid10 makes some poor decisions
    for far-copies arrays and you don't get the desired performance.  So
    turn off that bad bit of read_balance for far-copies arrays.
    
    With this patch, read speed of an 'f2' array is comparable with a raid0
    with the same number of devices, though write speed is ofcourse still
    very slow.
    
    Signed-off-by: Neil Brown <neilb@suse.de>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    neilbrown committed with Linus Torvalds Nov 28, 2005
  13. [PATCH] fix broken hybrid v4l-dvb frontend selection

    Repair broken build configuration for hybrid v4l/dvb card frontend
    selection.
    
    Signed-off-by: Michael Krufky <mkrufky@m1k.net>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    Michael Krufky committed with Linus Torvalds Nov 28, 2005
  14. [PATCH] temporarily disable swap token on memory pressure

    Some users (hi Zwane) have seen a problem when running a workload that
    eats nearly all of physical memory - th system does an OOM kill, even
    when there is still a lot of swap free.
    
    The problem appears to be a very big task that is holding the swap
    token, and the VM has a very hard time finding any other page in the
    system that is swappable.
    
    Instead of ignoring the swap token when sc->priority reaches 0, we could
    simply take the swap token away from the memory hog and make sure we
    don't give it back to the memory hog for a few seconds.
    
    This patch resolves the problem Zwane ran into.
    
    Signed-off-by: Rik van Riel <riel@redhat.com>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    rikvanriel committed with Linus Torvalds Nov 28, 2005
  15. [PATCH] v9fs: fix memory leak in v9fs dentry code

    Assign the appropriate dentry operations to the dentry. Fixes memory leak.
    
    Signed-off-by: Latchesar Ionkov <lucho@ionkov.net>
    Cc: Eric Van Hensbergen <ericvh@gmail.com>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    lionkov committed with Linus Torvalds Nov 28, 2005
  16. [PATCH] cpuset fork locking fix

    Move the cpuset_fork() call below the write_unlock_irq call in
    kernel/fork.c copy_process().
    
    Since the cpuset-dual-semaphore-locking-overhaul.patch, the cpuset_fork()
    routine acquires task_lock(), so cannot be called while holding the
    tasklist_lock for write.
    
    Signed-off-by: Paul Jackson <pj@sgi.com>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    Paul Jackson committed with Linus Torvalds Nov 28, 2005
  17. [PATCH] mm: __alloc_pages cleanup fix

    I believe this patch is required to fix breakage in the asynch reclaim
    watermark logic introduced by this patch:
    
    http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=7fb1d9fca5c6e3b06773b69165a73f3fb786b8ee
    
    Just some background of the watermark logic in case it isn't clear...
    Basically what we have is this:
    
     ---  pages_high
       |
       | (a)
       |
     ---  pages_low
       |
       | (b)
       |
     ---  pages_min
       |
       | (c)
       |
     ---  0
    
    Now when pages_low is reached, we want to kick asynch reclaim, which gives us
    an interval of "b" before we must start synch reclaim, and gives kswapd an
    interval of "a" before it need go back to sleep.
    
    When pages_min is reached, normal allocators must enter synch reclaim, but
    PF_MEMALLOC, ALLOC_HARDER, and ALLOC_HIGH (ie.  atomic allocations, recursive
    allocations, etc.) get access to varying amounts of the reserve "c".
    
    Signed-off-by: Nick Piggin <npiggin@suse.de>
    Cc: "Seth, Rohit" <rohit.seth@intel.com>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    Nick Piggin committed with Linus Torvalds Nov 28, 2005
  18. [PATCH] ext3: Wrong return value for EXT3_IOC_GROUP_ADD

    This patch corrects the return value for the EXT3_IOC_GROUP_ADD in case it
    fails due to the presence of multiple resizers at the filesystem.
    
    The problem is a little bit more serious than a wrong return value in this
    case, since the clause err=0 in the exit_journal path will lead to a call
    to update_backups which in turns causes a NULL pointer dereference.
    
    Signed-off-by: Glauber de Oliveira Costa <glommer@br.ibm.com>
    Cc: "Stephen C. Tweedie" <sct@redhat.com>
    Cc: Andreas Dilger <adilger@clusterfs.com>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    Glauber de Oliveira Costa committed with Linus Torvalds Nov 28, 2005
  19. [PATCH] m32r: M3A-2170(Mappi-III) IDE support

    This patch is for supporting IDE interface for M3A-2170(Mappi-III) board.
    
    Signed-off-by: Mamoru Sakugawa <sakugawa@linux-m32r.org>
    Signed-off-by: Hirokazu Takata <takata@linux-m32r.org>
    Cc: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    htakata committed with Linus Torvalds Nov 28, 2005
  20. [PATCH] m32r: Introduce atomic_cmpxchg and atomic_inc_not_zero operat…

    …ions
    
    Introduce atomic_cmpxchg and atomic_inc_not_zero operations for m32r.
    
    Signed-off-by: Hayato Fujiwara <fujiwara@linux-m32r.org>
    Signed-off-by: Hirokazu Takata <takata@linux-m32r.org>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    htakata committed with Linus Torvalds Nov 28, 2005
  21. [PATCH] m32r: Fix sys_tas() syscall

    This patch fixes a deadlock problem of the m32r SMP kernel.
    
    In the m32r kernel, sys_tas() system call is provided as a test-and-set
    function for userspace, for backward compatibility.
    
    In some multi-threading application program, deadlocks were rarely caused
    at sys_tas() funcion.  Such a deadlock was caused due to a collision of
    __pthread_lock() and __pthread_unlock() operations.
    
    The "tas" syscall is repeatedly called by pthread_mutex_lock() to get a
    lock, while a lock variable's value is not 0.  On the other hand,
    pthead_mutex_unlock() sets the lock variable to 0 for unlocking.
    
    In the previous implementation of sys_tas() routine, there was a
    possibility that a unlock operation was ignored in the following case:
    
    - Assume a lock variable (*addr) was equal to 1 before sys_tas() execution.
    - __pthread_unlock() operation is executed by the other processor
      and the lock variable (*addr) is set to 0, between a read operation
      ("oldval = *addr;") and the following write operation ("*addr = 1;")
      during a execution of sys_tas().
    
    In this case, the following write operation ("*addr = 1;") overwrites the
    __pthread_unlock() result, and sys_tas() fails to get a lock in the next
    turn and after that.
    
    According to the attatched patch, sys_tas() returns 0 value in the next
    turn and deadlocks never happen.
    
    Signed-off-by: Hitoshi Yamamoto <Yamamoto.Hitoshi@ap.MitsubishiElectric.co.jp>
    Signed-off-by: Hirokazu Takata <takata@linux-m32r.org>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    htakata committed with Linus Torvalds Nov 28, 2005
  22. [PATCH] Fix hardcoded cpu=0 in workqueue for per_cpu_ptr() calls

    Tracked this down on an Ultra Enterprise 3000.  It's a 6-way machine.  Odd
    thing about this machine (and it's good for finding bugs like this) is that
    the CPU id's are not 0 based.  For instance, on my machine the CPU's are
    6/7/10/11/14/15.
    
    This caused some NULL pointer dereference in kernel/workqueue.c because for
    single_threaded workqueue's, it hardcoded the cpu to 0.
    
    I changed the 0's to any_online_cpu(cpu_online_mask), which cpumask.h
    claims is "First cpu in mask".  So this fits the same usage.
    
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    Ben Collins committed with Linus Torvalds Nov 28, 2005
  23. [PATCH] fix 32bit overflow in timespec_to_sample()

    fix 32bit overflow in timespec_to_sample()
    
    Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    Oleg Nesterov committed with Linus Torvalds Nov 28, 2005
  24. [PATCH] fix broken lib/genalloc.c

    genalloc improperly stores the sizes of freed chunks, allocates overlapping
    memory regions, and oopses after its in-band data is overwritten.
    
    Signed-off-by: Chris Humbert <mahadri-kernel@drigon.com>
    Cc: Jes Sorensen <jes@trained-monkey.org>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    Chris Humbert committed with Linus Torvalds Nov 28, 2005
  25. [PATCH] reiserfs: fix 32-bit overflow in map_block_for_writepage()

    I now see another overflow in reiserfs that should lead to data corruptions
    with files that are bigger than 4G under certain circumstances when using
    mmap.
    
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    verygreen committed with Linus Torvalds Nov 28, 2005
  26. [PATCH] Console rotation fixes

    Remove bogus usage of test/set_bit() from fbcon rotation code and just
    manipulate the bits directly.  This fixes an oops on powerpc among others
    and should be faster.  Seems to work fine on the G5 here.
    
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Acked-by: Antonino Daplas <adaplas@pol.net>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    ozbenh committed with Linus Torvalds Nov 28, 2005
  27. [PATCH] FRV: Make the FRV arch work again

    The attached patch implements a bunch of small changes to the FRV arch to
    make it work again.
    
    It deals with the following problems:
    
     (1) SEM_DEBUG should be SEMAPHORE_DEBUG.
    
     (2) The argument list to pcibios_penalize_isa_irq() has changed.
    
     (3) CONFIG_HIGHMEM can't be used directly in #if as it may not be defined.
    
     (4) page->private is no longer directly accessible.
    
     (5) linux/hardirq.h assumes asm/hardirq.h will include linux/irq.h
    
     (6) The IDE MMIO access functions are given pointers, not integers, and so
         get type casting errors.
    
     (7) __pa() is passed an explicit u64 type in drivers/char/mem.c, but that
         can't be cast directly to a pointer on a 32-bit platform.
    
     (8) SEMAPHORE_DEBUG should not be contingent on WAITQUEUE_DEBUG as that no
         longer exists.
    
     (9) PREEMPT_ACTIVE is too low a value.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    David Howells committed with Linus Torvalds Nov 28, 2005
  28. [PATCH] fork.c: proc_fork_connector() called under write_lock()

    Don't do that - it does GFP_KERNEL allocations, for a start.
    
    (Reported by Guillaume Thouvenin <guillaume.thouvenin@bull.net>)
    
    Acked-by: Matt Helsley <matthltc@us.ibm.com>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    Andrew Morton committed with Linus Torvalds Nov 28, 2005
  29. [PATCH] memory_sysdev_class is static

    So don't define it as extern in the header file.
    
    drivers/base/memory.c:28: error: static declaration of 'memory_sysdev_class' follows non-static declaration
    include/linux/memory.h:88: error: previous declaration of 'memory_sysdev_class' was here
    
    Cc: Greg KH <greg@kroah.com>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    Andrew Morton committed with Linus Torvalds Nov 28, 2005
  30. [PATCH] clean up lock_cpu_hotplug() in cpufreq

    There are some callers in cpufreq hotplug notify path that the lowest
    function calls lock_cpu_hotplug().  The lock is already held during
    cpu_up() and cpu_down() calls when the notify calls are broadcast to
    registered clients.
    
    Ideally if possible, we could disable_preempt() at the highest caller and
    make sure we dont sleep in the path down in cpufreq->driver_target() calls
    but the calls are so intertwined and cumbersome to cleanup.
    
    Hence we consistently use lock_cpu_hotplug() and unlock_cpu_hotplug() in
    all places.
    
     - Removed export of cpucontrol semaphore and made it static.
     - removed explicit uses of up/down with lock_cpu_hotplug()
       so we can keep track of the the callers in same thread context and
       just keep refcounts without calling a down() that causes a deadlock.
     - Removed current_in_hotplug() uses
     - Removed PF_HOTPLUG_CPU in sched.h introduced for the current_in_hotplug()
       temporary workaround.
    
    Tested with insmod of cpufreq_stat.ko, and logical online/offline
    to make sure we dont have any hang situations.
    
    Signed-off-by: Ashok Raj <ashok.raj@intel.com>
    Cc: Zwane Mwaikambo <zwane@linuxpower.ca>
    Cc: Shaohua Li <shaohua.li@intel.com>
    Cc: "Siddha, Suresh B" <suresh.b.siddha@intel.com>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    Ashok Raj committed with Linus Torvalds Nov 28, 2005
  31. [PATCH] Workaround for gcc 2.96 (undefined references)

      LD      .tmp_vmlinux1
    mm/built-in.o(.text+0x100d6): In function `copy_page_range':
    : undefined reference to `__pud_alloc'
    mm/built-in.o(.text+0x1010b): In function `copy_page_range':
    : undefined reference to `__pmd_alloc'
    mm/built-in.o(.text+0x11ef4): In function `__handle_mm_fault':
    : undefined reference to `__pud_alloc'
    fs/built-in.o(.text+0xc930): In function `install_arg_page':
    : undefined reference to `__pud_alloc'
    make: *** [.tmp_vmlinux1] Error 1
    
    Those missing references in mm/memory.c arise from this code in
    include/linux/mm.h, combined with the fact that __PGTABLE_PMD_FOLDED and
    __PGTABLE_PUD_FOLDED are both set and __ARCH_HAS_4LEVEL_HACK is not:
    
    /*
     * The following ifdef needed to get the 4level-fixup.h header to work.
     * Remove it when 4level-fixup.h has been removed.
     */
    #if defined(CONFIG_MMU) && !defined(__ARCH_HAS_4LEVEL_HACK)
    static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
    {
            return (unlikely(pgd_none(*pgd)) && __pud_alloc(mm, pgd, address))?
                    NULL: pud_offset(pgd, address);
    }
    
    static inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address)
    {
            return (unlikely(pud_none(*pud)) && __pmd_alloc(mm, pud, address))?
                    NULL: pmd_offset(pud, address);
    }
    #endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */
    
    With my configuration the pgd_none and pud_none routines are inlines
    returning a constant 0.  Apparently the old compiler avoids generating
    calls to __pud_alloc and __pmd_alloc but still lists them as undefined
    references in the module's symbol table.
    
    I don't know which change caused this problem.  I think it was added
    somewhere between 2.6.14 and 2.6.15-rc1, because I remember building
    several 2.6.14-rc kernels without difficulty.  However I can't point to an
    individual culprit.
    
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    Alan Stern committed with Linus Torvalds Nov 28, 2005
  32. [PATCH] sparc: convert IO remapping to VM_PFNMAP

    Here are the Sparc bits.
    
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    davem330 committed with Linus Torvalds Nov 28, 2005
  33. mm: re-architect the VM_UNPAGED logic

    This replaces the (in my opinion horrible) VM_UNMAPPED logic with very
    explicit support for a "remapped page range" aka VM_PFNMAP.  It allows a
    VM area to contain an arbitrary range of page table entries that the VM
    never touches, and never considers to be normal pages.
    
    Any user of "remap_pfn_range()" automatically gets this new
    functionality, and doesn't even have to mark the pages reserved or
    indeed mark them any other way.  It just works.  As a side effect, doing
    mmap() on /dev/mem works for arbitrary ranges.
    
    Sparc update from David in the next commit.
    
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    Linus Torvalds committed Nov 28, 2005
  34. [SERIAL] mark several serial tables const

    This patch marks a few serial data structures const, moving them to
    .rodata where they won't false-share cachelines with things that get
    written to.
    
    Signed-off-by: Arjan van de Ven <arjan@infradead.org>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Arjan van de Ven committed with Russell King Nov 28, 2005