12 Feb, 2009

33 commits

  • Commit 7b2cd92adc5430b0c1adeb120971852b4ea1ab08 ("crypto: api - Fix
    zeroing on free") added modular user of ksize(). Export that to fix
    crypto.ko compilation.

    Cc: Herbert Xu
    Signed-off-by: Kirill A. Shutemov
    Signed-off-by: Pekka Enberg

    Kirill A. Shutemov
     
  • * git://git.infradead.org/users/cbou/battery-2.6.29:
    pcf50633_charger: Fix typo

    Linus Torvalds
     
  • Addresses http://bugzilla.kernel.org/show_bug.cgi?id=12646

    When the temperature exceeds 32767 milli-degrees the temperature overflows
    to -32768 millidegrees. These are bothe well within the -55 - +125 degree
    range for the sensor.

    Fix overflow in left-shift of a u8.

    Signed-off-by: Ian Dall
    Signed-off-by: Evgeniy Polyakov
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Dall
     
  • Fix a problem that causes I/O to a disconnected (or partially initialized)
    nbd device to hang indefinitely. To reproduce:

    # ioctl NBD_SET_SIZE_BLOCKS /dev/nbd23 514048
    # dd if=/dev/nbd23 of=/dev/null bs=4096 count=1

    ...hangs...

    This can also occur when an nbd device loses its nbd-client/server
    connection. Although we clear the queue of any outstanding I/Os after the
    client/server connection fails, any additional I/Os that get queued later
    will hang.

    This bug may also be the problem reported in this bug report:
    http://bugzilla.kernel.org/show_bug.cgi?id=12277

    Testing would need to be performed to determine if the two issues are the
    same.

    This problem was introduced by the new request handling thread code ("NBD:
    allow nbd to be used locally", 3/2008), which entered into mainline around
    2.6.25.

    The fix, which is fairly simple, is to restore the check for lo->sock
    being NULL in do_nbd_request. This causes I/O to an uninitialized nbd to
    immediately fail with an I/O error, as it did prior to the introduction of
    this bug.

    Signed-off-by: Paul Clements
    Reported-by: Jon Nelson
    Acked-by: Pavel Machek
    Cc: [2.6.26.x, 2.6.27.x, 2.6.28.x]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul Clements
     
  • Christophe Saout reported [in precursor to:
    http://marc.info/?l=linux-kernel&m=123209902707347&w=4]:

    > Note that I also some a different issue with CONFIG_UNEVICTABLE_LRU.
    > Seems like Xen tears down current->mm early on process termination, so
    > that __get_user_pages in exit_mmap causes nasty messages when the
    > process had any mlocked pages. (in fact, it somehow manages to get into
    > the swapping code and produces a null pointer dereference trying to get
    > a swap token)

    Jeremy explained:

    Yes. In the normal case under Xen, an in-use pagetable is "pinned",
    meaning that it is RO to the kernel, and all updates must go via hypercall
    (or writes are trapped and emulated, which is much the same thing). An
    unpinned pagetable is not currently in use by any process, and can be
    directly accessed as normal RW pages.

    As an optimisation at process exit time, we unpin the pagetable as early
    as possible (switching the process to init_mm), so that all the normal
    pagetable teardown can happen with direct memory accesses.

    This happens in exit_mmap() -> arch_exit_mmap(). The munlocking happens
    a few lines below. The obvious thing to do would be to move
    arch_exit_mmap() to below the munlock code, but I think we'd want to
    call it even if mm->mmap is NULL, just to be on the safe side.

    Thus, this patch:

    exit_mmap() needs to unlock any locked vmas before calling arch_exit_mmap,
    as the latter may switch the current mm to init_mm, which would cause the
    former to fail.

    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Lee Schermerhorn
    Cc: Christophe Saout
    Cc: Keir Fraser
    Cc: Christophe Saout
    Cc: Alex Williamson
    Cc: [2.6.28.x]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeremy Fitzhardinge
     
  • Since netmos 9835 with subids 0x1014(IBM):0x0299 is now bound with
    serial/8250_pci, because it has no parallel ports and subdevice id isn't
    in the expected form, return -ENODEV from probe function.

    This is performed in netmos preinit_hook.

    Signed-off-by: Jiri Slaby
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiri Slaby
     
  • Commit dcf6a79dda5cc2a2bec183e50d829030c0972aaa ("write-back: fix
    nr_to_write counter") fixed nr_to_write counter, but didn't set the break
    condition properly.

    If nr_to_write == 0 after being decremented it will loop one more time
    before setting done = 1 and breaking the loop.

    [akpm@linux-foundation.org: coding-style fixes]
    Cc: Artem Bityutskiy
    Acked-by: Nick Piggin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Federico Cuello
     
  • With the new system call defines we get this on uml:

    arch/um/sys-i386/built-in.o: In function `sys_call_table':
    (.rodata+0x308): undefined reference to `sys_sigprocmask'

    Reason for this is that uml passes the preprocessor option
    -Dsigprocmask=kernel_sigprocmask to gcc when compiling the kernel.
    This causes SYSCALL_DEFINE3(sigprocmask, ...) to be expanded to
    SYSCALL_DEFINEx(3, kernel_sigprocmask, ...) and finally to a system
    call named sys_kernel_sigprocmask. However sys_sigprocmask is missing
    because of this.

    To avoid macro expansion for the system call name just concatenate the
    name at first define instead of carrying it through severel levels.
    This was pointed out by Al Viro.

    Signed-off-by: Heiko Carstens
    Cc: Geert Uytterhoeven
    Cc: Al Viro
    Reviewed-by: WANG Cong
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     
  • For a reason that I was unable to understand in three months of debugging,
    mount ext2 -o remount stopped working properly when remounting from
    regular operation to xip, or the other way around. According to a git
    bisect search, the problem was introduced with the VM_MIXEDMAP/PTE_SPECIAL
    rework in the vm:

    commit 70688e4dd1647f0ceb502bbd5964fa344c5eb411
    Author: Nick Piggin
    Date: Mon Apr 28 02:13:02 2008 -0700

    xip: support non-struct page backed memory

    In the failing scenario, the filesystem is mounted read only via root=
    kernel parameter on s390x. During remount (in rc.sysinit), the inodes of
    the bash binary and its libraries are busy and cannot be invalidated (the
    bash which is running rc.sysinit resides on subject filesystem).
    Afterwards, another bash process (running ifup-eth) recurses into a
    subshell, runs dup_mm (via fork). Some of the mappings in this bash
    process were created from inodes that could not be invalidated during
    remount.

    Both parent and child process crash some time later due to inconsistencies
    in their address spaces. The issue seems to be timing sensitive, various
    attempts to recreate it have failed.

    This patch refuses to change the xip flag during remount in case some
    inodes cannot be invalidated. This patch keeps users from running into
    that issue.

    [akpm@linux-foundation.org: cleanup]
    Signed-off-by: Carsten Otte
    Cc: Nick Piggin
    Cc: Jared Hulbert
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Carsten Otte
     
  • I enabled all cgroup subsystems when compiling kernel, and then:
    # mount -t cgroup -o net_cls xxx /mnt
    # mkdir /mnt/0

    This showed up immediately:
    BUG: MAX_LOCKDEP_SUBCLASSES too low!
    turning off the locking correctness validator.

    It's caused by the cgroup hierarchy lock:
    for (i = 0; i < CGROUP_SUBSYS_COUNT; i++) {
    struct cgroup_subsys *ss = subsys[i];
    if (ss->root == root)
    mutex_lock_nested(&ss->hierarchy_mutex, i);
    }

    Now we have 9 cgroup subsystems, and the above 'i' for net_cls is 8, but
    MAX_LOCKDEP_SUBCLASSES is 8.

    This patch uses different lockdep keys for different subsystems.

    Signed-off-by: Li Zefan
    Acked-by: Paul Menage
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Li Zefan
     
  • Add Li Zefan as co-maintainer.

    Acked-by: Paul Menage
    Acked-by: Li Zefan
    Signed-off-by: KOSAKI Motohiro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    KOSAKI Motohiro
     
  • With a postfix decrement t will reach -1 rather than 0, so neither the
    warning nor the `goto error_out' will occur.

    Signed-off-by: Roel Kluin
    Acked-by: Manuel Lauss
    Acked-by: Alessandro Zummo
    Cc: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Roel Kluin
     
  • Fix kernel-doc processing of SYSCALL wrappers.

    The SYSCALL wrapper patches played havoc with kernel-doc for
    syscalls. Syscalls that were scanned for DocBook processing
    reported warnings like this one, for sys_tgkill:

    Warning(kernel/signal.c:2285): No description found for parameter 'tgkill'
    Warning(kernel/signal.c:2285): No description found for parameter 'pid_t'
    Warning(kernel/signal.c:2285): No description found for parameter 'int'

    because the macro parameters all "look like" function parameters,
    although they are not:

    /**
    * sys_tgkill - send signal to one specific thread
    * @tgid: the thread group ID of the thread
    * @pid: the PID of the thread
    * @sig: signal to be sent
    *
    * This syscall also checks the @tgid and returns -ESRCH even if the PID
    * exists but it's not belonging to the target process anymore. This
    * method solves the problem of threads exiting and PIDs getting reused.
    */
    SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid_t, pid, int, sig)
    {
    ...

    This patch special-cases the handling SYSCALL_DEFINE* function
    prototypes by expanding them to
    long sys_foobar(type1 arg1, type1 arg2, ...)

    Signed-off-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • Fix kernel-doc-nano-HOWTO.txt to use */ as the ending marker in kernel-doc
    examples and state that */ is the preferred ending marker.

    Signed-off-by: Randy Dunlap
    Reported-by: Robert Love
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • page_cgroup's page allocation at init/memory hotplug uses kmalloc() and
    vmalloc(). If kmalloc() failes, vmalloc() is used.

    This is because vmalloc() is very limited resource on 32bit systems.
    We want to use kmalloc() first.

    But in this kind of call, __GFP_NOWARN should be specified.

    Reported-by: Heiko Carstens
    Signed-off-by: KAMEZAWA Hiroyuki
    Acked-by: Balbir Singh
    Acked-by: Pekka Enberg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    KAMEZAWA Hiroyuki
     
  • Signed-off-by: Uwe Kleine-Koenig
    Signed-off-by: Mike Frysinger
    Signed-off-by: Bryan Wu
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Uwe Kleine-Koenig
     
  • Update my email address.

    Signed-off-by: Marcel Selhorst
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Marcel Selhorst
     
  • When I tested following program, I found that the mlocked counter
    is strange. It cannot free some mlocked pages.

    It is because try_to_unmap_file() doesn't check real
    page mappings in vmas.

    That is because the goal of an address_space for a file is to find all
    processes into which the file's specific interval is mapped. It is
    related to the file's interval, not to pages.

    Even if the page isn't really mapped by the vma, it returns SWAP_MLOCK
    since the vma has VM_LOCKED, then calls try_to_mlock_page. After this the
    mlocked counter is increased again.

    COWed anon page in a file-backed vma could be a such case. This patch
    resolves it.

    -- my test program --

    int main()
    {
    mlockall(MCL_CURRENT);
    return 0;
    }

    -- before --

    root@barrios-target-linux:~# cat /proc/meminfo | egrep 'Mlo|Unev'
    Unevictable: 0 kB
    Mlocked: 0 kB

    -- after --

    root@barrios-target-linux:~# cat /proc/meminfo | egrep 'Mlo|Unev'
    Unevictable: 8 kB
    Mlocked: 8 kB

    Signed-off-by: MinChan Kim
    Acked-by: Lee Schermerhorn
    Acked-by: KOSAKI Motohiro
    Tested-by: Lee Schermerhorn
    Cc: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    MinChan Kim
     
  • This reverts commit c87591b719737b4e91eb1a9fa8fd55a4ff1886d6.

    Since journal_start_commit() is now fixed to return 1 when we started a
    transaction commit, there's some transaction waiting to be committed or
    there's a transaction already committing, we don't need to call
    ext3_force_commit() in ext3_sync_fs(). Furthermore ext3_force_commit()
    can unnecessarily create sync transaction which is expensive so it's
    worthwhile to remove it when we can.

    Cc: Eric Sandeen
    Cc:
    Signed-off-by: Jan Kara
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Kara
     
  • journal_start_commit() returns 1 if either a transaction is committing or
    the function has queued a transaction commit. But it returns 0 if we
    raced with somebody queueing the transaction commit as well. This
    resulted in ext3_sync_fs() not functioning correctly (description from
    Arthur Jones): In the case of a data=ordered umount with pending long
    symlinks which are delayed due to a long list of other I/O on the backing
    block device, this causes the buffer associated with the long symlinks to
    not be moved to the inode dirty list in the second phase of fsync_super.
    Then, before they can be dirtied again, kjournald exits, seeing the UMOUNT
    flag and the dirty pages are never written to the backing block device,
    causing long symlink corruption and exposing new or previously freed block
    data to userspace.

    This can be reproduced with a script created by Eric Sandeen
    :

    #!/bin/bash

    umount /mnt/test2
    mount /dev/sdb4 /mnt/test2
    rm -f /mnt/test2/*
    dd if=/dev/zero of=/mnt/test2/bigfile bs=1M count=512
    touch /mnt/test2/thisisveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryverylongfilename
    ln -s /mnt/test2/thisisveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryverylongfilename
    /mnt/test2/link
    umount /mnt/test2
    mount /dev/sdb4 /mnt/test2
    ls /mnt/test2/

    This patch fixes journal_start_commit() to always return 1 when there's
    a transaction committing or queued for commit.

    Cc: Eric Sandeen
    Cc: Mike Snitzer
    Cc:
    Signed-off-by: Jan Kara
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Kara
     
  • We need to pass an unsigned long as the minimum, because it gets casted
    to an unsigned long in the sysctl handler. If we pass an int, we'll
    access four more bytes on 64bit arches, resulting in a random minimum
    value.

    [rientjes@google.com: fix type of `old_bytes']
    Signed-off-by: Sven Wegener
    Cc: Peter Zijlstra
    Cc: Dave Chinner
    Cc: Christoph Lameter
    Cc: David Rientjes
    Signed-off-by: David Rientjes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sven Wegener
     
  • We weren't properly allocating the cmap for depths greater than 8bpp,
    which caused pain for things like DirectFB. Also, we never freed the cmap
    memory upon module unload..

    Signed-off-by: Andres Salomon
    Cc: Marco La Porta
    Cc: Jordan Crouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • We weren't properly allocating the cmap for depths greater than 8bpp,
    which caused pain for things like DirectFB. Also, we never freed the cmap
    memory upon module unload..

    Signed-off-by: Andres Salomon
    Cc: Marco La Porta
    Cc: Jordan Crouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • We weren't properly allocating the cmap for depths greater than 8bpp,
    which caused pain for things like DirectFB. Also, we never freed the cmap
    memory upon module unload..

    [dilinger@debian.org: dropped unnecessary code and clean up patch]
    [dilinger@debian.org: add error checking and handling]
    Signed-off-by: Andres Salomon
    Cc: Jordan Crouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Marco La Porta
     
  • Signed-off-by: Robert Jarzmik
    Signed-off-by: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Robert Jarzmik
     
  • migrate_vmas() should check "vma" not "vma->vm_next" for for-loop condition.

    Signed-off-by: Daisuke Nishimura
    Cc: Christoph Lameter
    Cc: Johannes Weiner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Daisuke Nishimura
     
  • Commit 5a6fe125950676015f5108fb71b2a67441755003 brought hugetlbfs more
    in line with the core VM by obeying VM_NORESERVE and not reserving
    hugepages for both shared and private mappings when [SHM|MAP]_NORESERVE
    are specified. However, it is still taking filesystem quota
    unconditionally.

    At fault time, if there are no reserves and attempt is made to allocate
    the page and account for filesystem quota. If either fail, the fault
    fails. The impact is that quota is getting accounted for twice. This
    patch partially reverts 5a6fe125950676015f5108fb71b2a67441755003. To
    help prevent this mistake happening again, it improves the documentation
    of hugetlb_reserve_pages()

    Reported-by: Andy Whitcroft
    Signed-off-by: Mel Gorman
    Acked-by: Andy Whitcroft
    Signed-off-by: Linus Torvalds

    Mel Gorman
     
  • …l/git/tip/linux-2.6-tip

    * 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    sched: revert recent sync wakeup changes

    Linus Torvalds
     
  • …el/git/tip/linux-2.6-tip

    * 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    timers: fix TIMER_ABSTIME for process wide cpu timers
    timers: split process wide cpu clocks/timers, fix
    x86: clean up hpet timer reinit
    timers: split process wide cpu clocks/timers, remove spurious warning
    timers: split process wide cpu clocks/timers
    signal: re-add dead task accumulation stats.
    x86: fix hpet timer reinit for x86_64
    sched: fix nohz load balancer on cpu offline

    Linus Torvalds
     
  • …git/tip/linux-2.6-tip

    * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    ptrace, x86: fix the usage of ptrace_fork()
    i8327: fix outb() parameter order
    x86: fix math_emu register frame access
    x86: math_emu info cleanup
    x86: include correct %gs in a.out core dump
    x86, vmi: put a missing paravirt_release_pmd in pgd_dtor
    x86: find nr_irqs_gsi with mp_ioapic_routing
    x86: add clflush before monitor for Intel 7400 series
    x86: disable intel_iommu support by default
    x86: don't apply __supported_pte_mask to non-present ptes
    x86: fix grammar in user-visible BIOS warning
    x86/Kconfig.cpu: make Kconfig help readable in the console
    x86, 64-bit: print DMI info in the oops trace

    Linus Torvalds
     
  • …nel/git/tip/linux-2.6-tip

    * 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    tracing, x86: fix constraint for parent variable
    tracing, x86: fix fixup section to return to original code
    profiling: fix broken profiling regression

    Linus Torvalds
     
  • * 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6:
    [S390] Update default configuration.
    [S390] dasd: fix race in dasd timer handling
    [S390] dasd: bus_id -> dev_name() conversion.
    [S390] Fix init irq proc build break.
    [S390] vdso: fix per cpu vdso pointer in lowcore

    Linus Torvalds
     
  • * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
    powerpc/mm: Fix _PAGE_COHERENT support on classic ppc32 HW

    Linus Torvalds
     

11 Feb, 2009

7 commits