23 Jun, 2012

2 commits

  • Pull XFS fixes from Ben Myers:
    - Fix stale data exposure with unwritten extents
    - Fix a warning in xfs_alloc_vextent with ODEBUG
    - Fix overallocation and alignment of pages for xfs_bufs
    - Fix a cursor leak
    - Fix a log hang
    - Fix a crash related to xfs_sync_worker
    - Rename xfs log structure from struct log to struct xlog so we can use
    crash dumps effectively

    * tag 'for-linus-Jun-21-2012' of git://oss.sgi.com/xfs/xfs:
    xfs: rename log structure to xlog
    xfs: shutdown xfs_sync_worker before the log
    xfs: Fix overallocation in xfs_buf_allocate_memory()
    xfs: fix allocbt cursor leak in xfs_alloc_ag_vextent_near
    xfs: check for stale inode before acquiring iflock on push
    xfs: fix debug_object WARN at xfs_alloc_vextent()
    xfs: xfs_vm_writepage clear iomap_valid when !buffer_uptodate (REV2)

    Linus Torvalds
     
  • Pull perf updates from Ingo Molnar.

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    ftrace: Make all inline tags also include notrace
    perf: Use css_tryget() to avoid propping up css refcount
    perf tools: Fix synthesizing tracepoint names from the perf.data headers
    perf stat: Fix default output file
    perf tools: Fix endianity swapping for adds_features bitmask

    Linus Torvalds
     

22 Jun, 2012

8 commits

  • Pull NFS client bugfixes from Trond Myklebust:
    - Fix a write hang due to an uninitalised variable when
    !defined(CONFIG_NFS_V4)
    - Address upcall races in the legacy NFSv4 idmapper
    - Remove an O_DIRECT refcounting issue
    - Fix a pNFS refcounting bug when the file layout metadata server is
    also acting as a data server
    - Fix a pNFS module loading race.

    * tag 'nfs-for-3.5-3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
    NFS: Force the legacy idmapper to be single threaded
    NFS: Initialise commit_info.rpc_out when !defined(CONFIG_NFS_V4)
    NFS: Fix a refcounting issue in O_DIRECT
    NFSv4.1: Fix a race in set_pnfs_layoutdriver
    NFSv4.1: Fix umount when filelayout DS is also the MDS

    Linus Torvalds
     
  • Pull btrfs fixes from Chris Mason:
    "This is a small pull with btrfs fixes. The biggest of the bunch is
    another fix for the new backref walking code.

    We're still hammering out one btrfs dio vs buffered reads problem, but
    that one will have to wait for the next rc."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    Btrfs: delay iput with async extents
    Btrfs: add a missing spin_lock
    Btrfs: don't assume to be on the correct extent in add_all_parents
    Btrfs: introduce btrfs_next_old_item

    Linus Torvalds
     
  • Pull hwmon fixes from Guenter Roeck:
    "Two minor fixes in emc2103 and applesmc drivers."

    * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
    hwmon: (emc2103) Fix use of an uninitilized variable in error case
    hwmon: (applesmc) Limit key length in warning messages

    Linus Torvalds
     
  • Rename the XFS log structure to xlog to help crash distinquish it from the
    other logs in Linux.

    Signed-off-by: Mark Tinguely
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Ben Myers

    Mark Tinguely
     
  • Revert commit 1307bbd, which uses the s_umount semaphore to provide
    exclusion between xfs_sync_worker and unmount, in favor of shutting down
    the sync worker before freeing the log in xfs_log_unmount. This is a
    cleaner way of resolving the race between xfs_sync_worker and unmount
    than using s_umount.

    Signed-off-by: Ben Myers
    Reviewed-by: Mark Tinguely
    Reviewed-by: Dave Chinner

    Ben Myers
     
  • Commit de1cbee which removed b_file_offset in favor of b_bn introduced a bug
    causing xfs_buf_allocate_memory() to overestimate the number of necessary
    pages. The problem is that xfs_buf_alloc() sets b_bn to -1 and thus effectively
    every buffer is straddling a page boundary which causes
    xfs_buf_allocate_memory() to allocate two pages and use vmalloc() for access
    which is unnecessary.

    Dave says xfs_buf_alloc() doesn't need to set b_bn to -1 anymore since the
    buffer is inserted into the cache only after being fully initialized now.
    So just make xfs_buf_alloc() fill in proper block number from the beginning.

    CC: David Chinner
    Signed-off-by: Jan Kara
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Dave Chinner
    Signed-off-by: Ben Myers

    Jan Kara
     
  • When we fail to find an matching extent near the requested extent
    specification during a left-right distance search in
    xfs_alloc_ag_vextent_near, we fail to free the original cursor that
    we used to look up the XFS_BTNUM_CNT tree and hence leak it.

    Reported-by: Chris J Arges
    Signed-off-by: Dave Chinner
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Ben Myers

    Dave Chinner
     
  • An inode in the AIL can be flush locked and marked stale if
    a cluster free transaction occurs at the right time. The
    inode item is then marked as flushing, which causes xfsaild
    to spin and leaves the filesystem stalled. This is
    reproduced by running xfstests 273 in a loop for an
    extended period of time.

    Check for stale inodes before the flush lock. This marks
    the inode as pinned, leads to a log flush and allows the
    filesystem to proceed.

    Signed-off-by: Brian Foster
    Reviewed-by: Dave Chinner
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Mark Tinguely
    Signed-off-by: Ben Myers

    Brian Foster
     

21 Jun, 2012

30 commits

  • There is some concern that these iput()'s could be the final iputs and could
    induce lockups on people waiting on writeback. This would happen in the
    rare case that we don't create ordered extents because of an error, but it
    is theoretically possible and we already have a mechanism to deal with this
    so just make them delayed iputs to negate any worry.

    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Josef Bacik
     
  • When fixing up the locking in the delayed ref destruction work I accidently
    broke the locking myself ;(. Add back a spin_lock that should be there and
    we are now all set. Thanks,
    Btrfs: add a missing spin_lock

    When fixing up the locking in the delayed ref destruction work I accidently
    broke the locking myself ;(. Add back a spin_lock that should be there and
    we are now all set. Thanks,

    Reported-by: Dan Carpenter
    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Josef Bacik
     
  • add_all_parents did assume that path is already at a correct extent data
    item, which may not be true in case of data extents that were partly
    rewritten and splitted.

    We need to check if we're on a matching extent for every item and only
    for the ones after the first. The loop is changed to do this now.

    This patch also fixes a bug introduced with commit 3b127fd8 "Btrfs:
    remove obsolete btrfs_next_leaf call from __resolve_indirect_ref".
    The removal of next_leaf did sometimes result in slot==nritems when
    the above described case happens, and thus resulting in invalid values
    (e.g. wanted_obejctid) in add_all_parents (leading to missed backrefs
    or even crashes).

    Signed-off-by: Alexander Block
    Signed-off-by: Jan Schmidt
    Signed-off-by: Chris Mason

    Alexander Block
     
  • We introduce btrfs_next_old_item that uses btrfs_next_old_leaf instead
    of btrfs_next_leaf.

    btrfs_next_item is also changed to simply call btrfs_next_old_item with
    time_seq being 0.

    Signed-off-by: Alexander Block
    Signed-off-by: Chris Mason

    Alexander Block
     
  • Pull slave-dmaengine fixes from Vinod Koul:
    "A few fixes in pl330 and imx-sdma drivers."

    * 'fixes' of git://git.infradead.org/users/vkoul/slave-dma:
    DMA: PL330: Fix racy mutex unlock
    DMA: PL330: Add missing static storage class specifier
    dma: imx-sdma: buf_tail should be initialize in prepare function
    dmaengine: pl330: dont complete descriptor for cyclic dma

    Linus Torvalds
     
  • Pull two cgroup fixes from Tejun Heo:
    "This containes two patches fixing a refcnt race bug during css_put().
    Decrementing and checking the value weren't atomic and two tasks could
    think that they both pushed the counter to zero."

    * 'for-3.5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
    cgroups: Account for CSS_DEACT_BIAS in __css_put
    cgroup: make sure that decisions in __css_put are atomic

    Linus Torvalds
     
  • If the range passed to mbind() is not allocated on nodes set in the
    nodemask, it migrates the pages to respect the constraint.

    The final formal of migrate_pages() is a mode of type enum migrate_mode,
    not a boolean. do_mbind() is currently passing "true" which is the
    equivalent of MIGRATE_SYNC_LIGHT. This should instead be MIGRATE_SYNC
    for synchronous page migration.

    Signed-off-by: David Rientjes
    Signed-off-by: Linus Torvalds

    David Rientjes
     
  • drivers/media/video/pms.c uses kzalloc() and kfree() so it should
    include to fix build errors and a warning.

    drivers/media/video/pms.c:1047:2: error: implicit declaration of function 'kzalloc'
    drivers/media/video/pms.c:1047:6: warning: assignment makes pointer from integer without a cast
    drivers/media/video/pms.c:1116:2: error: implicit declaration of function 'kfree'

    Found in mmotm but applies to mainline.

    Signed-off-by: Randy Dunlap
    Cc: Hans Verkuil
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • Pull staging tree fixes from Greg Kroah-Hartman:
    "Here are a number of small fixes for the drivers/staging tree, as well
    as iio and pstore drivers (which came from the staging tree in the
    3.5-rc1 merge). All of these are tiny, but resolve issues that people
    have been reporting.

    There's also a documentation update to reflect what the iio drivers
    really are doing, which is good to get straightened out.

    Signed-off-by: Greg Kroah-Hartman "

    * tag 'staging-3.5-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
    staging: r8712u: Add new USB IDs
    staging: gdm72xx: Release netlink socket properly
    iio: drop wrong reference from Kconfig
    pstore/inode: Make pstore_fill_super() static
    pstore/ram: Should zap persistent zone on unlink
    pstore/ram_core: Factor persistent_ram_zap() out of post_init()
    pstore/ram_core: Do not reset restored zone's position and size
    pstore/ram: Should update old dmesg buffer before reading
    staging:iio:ad7298: Fix linker error due to missing IIO kfifo buffer
    Revert "staging: usbip: bugfix for stack corruption on 64-bit architectures"
    staging: usbip: bugfix for stack corruption on 64-bit architectures
    staging/comedi: fix build for USB not enabled
    staging: omapdrm: fix crash when freeing bad fb
    staging:iio:ad7606: Re-add missing scale attribute
    iio: Fix potential use after free
    staging:iio: remove num_interrupt_lines from documentation
    iio: documentation: Add out_altvoltage and friends

    Linus Torvalds
     
  • Pull driver core and printk fixes from Greg Kroah-Hartman:
    "Here are some fixes for 3.5-rc4 that resolve the kmsg problems that
    people have reported showing up after the printk and kmsg changes went
    into 3.5-rc1. There are also a smattering of other tiny fixes for the
    extcon and hyper-v drivers that people have reported.

    Signed-off-by: Greg Kroah-Hartman "

    * tag 'driver-core-3.5-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    extcon: max8997: Add missing kfree for info->edev in max8997_muic_remove()
    extcon: Set platform drvdata in gpio_extcon_probe() and fix irq leak
    extcon: Fix wrong index in max8997_extcon_cable[]
    kmsg - kmsg_dump() fix CONFIG_PRINTK=n compilation
    printk: return -EINVAL if the message len is bigger than the buf size
    printk: use mutex lock to stop syslog_seq from going wild
    kmsg - kmsg_dump() use iterator to receive log buffer content
    vme: change maintainer e-mail address
    Extcon: Don't try to create duplicate link names
    driver core: fixup reversed deferred probe order
    printk: Fix alignment of buf causing crash on ARM EABI
    Tools: hv: verify origin of netlink connector message

    Linus Torvalds
     
  • Pull misc tree updates from Greg Kroah-Hartman:
    "Here are some drivers/misc bugfixes (really just drivers/misc/mei/
    fixes) for a few problems that have been reported.

    Signed-off-by: Greg Kroah-Hartman "

    * tag 'char-misc-3.5-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
    misc: mei: set WDIOF_ALARMONLY on mei watchdog
    misc: mei: Disable MSI when IRQ registration fails
    misc: mei: fix stalled read
    misc: mei: unregister misc device in pci_remove function
    misc: mei: set IRQF_ONESHOT for msi request_threaded_irq

    Linus Torvalds
     
  • Pull serial driver fixes from Greg Kroah-Hartman:
    "Here are 3 patches resolving a boot regression (the mop500 fix), a
    build warning fix, and a kernel-doc fix. All tiny, but should go into
    the final 3.5 release.

    Signed-off-by: Greg Kroah-Hartman "

    * tag 'tty-3.5-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
    serial/amba-pl011: move custom pin control to driver
    serial: fix serial_txx9.c build warning/typo
    serial: fix kernel-doc warnings in 8250.c

    Linus Torvalds
     
  • * emailed from Andrew Morton : (21 patches)
    mm/memblock: fix overlapping allocation when doubling reserved array
    c/r: prctl: Move PR_GET_TID_ADDRESS to a proper place
    pidns: find_new_reaper() can no longer switch to init_pid_ns.child_reaper
    pidns: guarantee that the pidns init will be the last pidns process reaped
    fault-inject: avoid call to random32() if fault injection is disabled
    Viresh has moved
    get_maintainer: Fix --help warning
    mm/memory.c: fix kernel-doc warnings
    mm: fix kernel-doc warnings
    mm: correctly synchronize rss-counters at exit/exec
    mm, thp: print useful information when mmap_sem is unlocked in zap_pmd_range
    h8300: use the declarations provided by
    h8300: fix use of extinct _sbss and _ebss
    xtensa: use the declarations provided by
    xtensa: use "test -e" instead of bashism "test -a"
    xtensa: replace xtensa-specific _f{data,text} by _s{data,text}
    memcg: fix use_hierarchy css_is_ancestor oops regression
    mm, oom: fix and cleanup oom score calculations
    nilfs2: ensure proper cache clearing for gc-inodes
    thp: avoid atomic64_read in pmd_read_atomic for 32bit PAE
    ...

    Linus Torvalds
     
  • __alloc_memory_core_early() asks memblock for a range of memory then try
    to reserve it. If the reserved region array lacks space for the new
    range, memblock_double_array() is called to allocate more space for the
    array. If memblock is used to allocate memory for the new array it can
    end up using a range that overlaps with the range originally allocated in
    __alloc_memory_core_early(), leading to possible data corruption.

    With this patch memblock_double_array() now calls memblock_find_in_range()
    with a narrowed candidate range (in cases where the reserved.regions array
    is being doubled) so any memory allocated will not overlap with the
    original range that was being reserved. The range is narrowed by passing
    in the starting address and size of the previously allocated range. Then
    the range above the ending address is searched and if a candidate is not
    found, the range below the starting address is searched.

    Signed-off-by: Greg Pearson
    Signed-off-by: Yinghai Lu
    Acked-by: Tejun Heo
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Greg Pearson
     
  • During merging of PR_GET_TID_ADDRESS patch the code has been misplaced (it
    happened to appear under PR_MCE_KILL) in result noone can use this option.

    Fix it by moving code snippet to a proper place.

    Signed-off-by: Cyrill Gorcunov
    Acked-by: Kees Cook
    Cc: Oleg Nesterov
    Cc: Pavel Emelyanov
    Cc: Andrey Vagin
    Cc: Serge Hallyn
    Cc: KAMEZAWA Hiroyuki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Cyrill Gorcunov
     
  • find_new_reaper() changes pid_ns->child_reaper, see add0d4df ("pid_ns:
    zap_pid_ns_processes: fix the ->child_reaper changing").

    The original reason has gone away after the previous patch, ->children
    list must be empty after zap_pid_ns_processes().

    However now we can not switch to init_pid_ns.child_reaper.
    __unhash_process() relies on the "->child_reaper == parent" check, but
    this check does not work if the last exiting task is also the child
    reaper.

    As Eric sugested, we can change __unhash_process() to use the parent's
    pid_ns and remove this code.

    Also, with this change we can move detach_pid(PIDTYPE_PID) back, where it
    was before the previous fix.

    Signed-off-by: Oleg Nesterov
    Acked-by: "Eric W. Biederman"
    Cc: Louis Rilling
    Cc: Mike Galbraith
    Acked-by: Pavel Emelyanov
    Tested-by: Andrew Wagin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • Today we have a twofold bug. Sometimes release_task on pid == 1 in a pid
    namespace can run before other processes in a pid namespace have had
    release task called. With the result that pid_ns_release_proc can be
    called before the last proc_flus_task() is done using upid->ns->proc_mnt,
    resulting in the use of a stale pointer. This same set of circumstances
    can lead to waitpid(...) returning for a processes started with
    clone(CLONE_NEWPID) before the every process in the pid namespace has
    actually exited.

    To fix this modify zap_pid_ns_processess wait until all other processes in
    the pid namespace have exited, even EXIT_DEAD zombies.

    The delay_group_leader and related tests ensure that the thread gruop
    leader will be the last thread of a process group to be reaped, or to
    become EXIT_DEAD and self reap. With the change to zap_pid_ns_processes
    we get the guarantee that pid == 1 in a pid namespace will be the last
    task that release_task is called on.

    With pid == 1 being the last task to pass through release_task
    pid_ns_release_proc can no longer be called too early nor can wait return
    before all of the EXIT_DEAD tasks in a pid namespace have exited.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: Oleg Nesterov
    Cc: Louis Rilling
    Cc: Mike Galbraith
    Acked-by: Pavel Emelyanov
    Tested-by: Andrew Wagin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • After enabling CONFIG_FAILSLAB I noticed random32 in profiles even if slub
    fault injection wasn't enabled at runtime.

    should_fail forces a comparison against random32() even if probability is
    0:

    if (attr->probability
    Acked-by: Akinobu Mita
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Anton Blanchard
     
  • viresh.kumar@st.com email-id doesn't exist anymore as I have left the
    company. Replace ST's id with viresh.linux@gmail.com.

    It also updates .mailmap file to fix address for 'git shortlog'

    Signed-off-by: Viresh Kumar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Viresh Kumar
     
  • Using --help emits a concatenation error. Fix it.

    Signed-off-by: Joe Perches
    Reported-by: Paul Bolle
    Tested-by: Paul Bolle
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Fix kernel-doc warnings in mm/memory.c:

    Warning(mm/memory.c:1377): No description found for parameter 'start'
    Warning(mm/memory.c:1377): Excess function parameter 'address' description in 'zap_page_range'

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

    Randy Dunlap
     
  • Fix kernel-doc warnings such as

    Warning(../mm/page_cgroup.c:432): No description found for parameter 'id'
    Warning(../mm/page_cgroup.c:432): Excess function parameter 'mem' description in 'swap_cgroup_record'

    Signed-off-by: Wanpeng Li
    Cc: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Wanpeng Li
     
  • do_exit() and exec_mmap() call sync_mm_rss() before mm_release() does
    put_user(clear_child_tid) which can update task->rss_stat and thus make
    mm->rss_stat inconsistent. This triggers the "BUG:" printk in check_mm().

    Let's fix this bug in the safest way, and optimize/cleanup this later.

    Reported-by: Markus Trippelsdorf
    Signed-off-by: Konstantin Khlebnikov
    Cc: Oleg Nesterov
    Cc: KAMEZAWA Hiroyuki
    Cc: Hugh Dickins
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Konstantin Khlebnikov
     
  • Andrea asked for addr, end, vma->vm_start, and vma->vm_end to be emitted
    when !rwsem_is_locked(&tlb->mm->mmap_sem). Otherwise, debugging the
    underlying issue is more difficult.

    Suggested-by: Andrea Arcangeli
    Signed-off-by: David Rientjes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Rientjes
     
  • Cleanups:
    - Include ,
    - Remove the (different) extern declarations,
    - Remove the no longer needed address-of ('&') operators,
    - Remove the superfluous casts, use proper printk formatting instead.

    Signed-off-by: Geert Uytterhoeven
    Cc: Yoshinori Sato
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Nowadays it should use __bss_start and __bss_stop

    Signed-off-by: Geert Uytterhoeven
    Cc: Yoshinori Sato
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Cleanups:
    - Include ,
    - Remove the (different) extern declarations,
    - Remove the no longer needed address-of ('&') operators,
    - Use %p to format pointer differences.

    Signed-off-by: Geert Uytterhoeven
    Cc: Chris Zankel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • On Ubuntu, /bin/sh is a symlink to dash, which does not support "test -a".
    This causes messages like

    test: 1: -a: unexpected operator
    test: 1: -a: unexpected operator

    and link failures like

    (.init.text+0x132): undefined reference to `platform_init'

    due to the appropriate platform code not being compiled.

    Signed-off-by: Geert Uytterhoeven
    Cc: Chris Zankel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • commit a2d063ac216c161 ("extable, core_kernel_data(): Make sure all archs
    define _sdata") missed xtensa. Xtensa does have a start of data marker,
    but calls it _fdata, causing

    kernel/built-in.o:(.text+0x964): undefined reference to `_sdata'

    _stext was already defined, but it was duplicated by _fdata.

    Signed-off-by: Geert Uytterhoeven
    Cc: Steven Rostedt
    Cc: Chris Zankel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • If use_hierarchy is set, reclaim testing soon oopses in css_is_ancestor()
    called from __mem_cgroup_same_or_subtree() called from page_referenced():
    when processes are exiting, it's easy for mm_match_cgroup() to pass along
    a NULL memcg coming from a NULL mm->owner.

    Check for that in __mem_cgroup_same_or_subtree(). Return true or false?
    False because we cannot know if it was in the hierarchy, but also false
    because it's better not to count a reference from an exiting process.

    Signed-off-by: Hugh Dickins
    Acked-by: Johannes Weiner
    Acked-by: Konstantin Khlebnikov
    Acked-by: KAMEZAWA Hiroyuki
    Acked-by: Michal Hocko
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hugh Dickins