03 May, 2009

19 commits

  • scripts/kernel-doc can (incorrectly) delete struct members that are
    surrounded by /* ... */ /* ... */ if there is a /*
    private: */ comment in there somewhere also.

    Fix that by making the "/* private:" only allow whitespace between /* and
    "private:", not anything/everything in the world.

    This fixes some erroneous kernel-doc warnings that popped up while
    processing include/linux/usb/composite.h.

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

    Randy Dunlap
     
  • The Committed_AS field can underflow in certain situations:

    > # while true; do cat /proc/meminfo | grep _AS; sleep 1; done | uniq -c
    > 1 Committed_AS: 18446744073709323392 kB
    > 11 Committed_AS: 18446744073709455488 kB
    > 6 Committed_AS: 35136 kB
    > 5 Committed_AS: 18446744073709454400 kB
    > 7 Committed_AS: 35904 kB
    > 3 Committed_AS: 18446744073709453248 kB
    > 2 Committed_AS: 34752 kB
    > 9 Committed_AS: 18446744073709453248 kB
    > 8 Committed_AS: 34752 kB
    > 3 Committed_AS: 18446744073709320960 kB
    > 7 Committed_AS: 18446744073709454080 kB
    > 3 Committed_AS: 18446744073709320960 kB
    > 5 Committed_AS: 18446744073709454080 kB
    > 6 Committed_AS: 18446744073709320960 kB

    Because NR_CPUS can be greater than 1000 and meminfo_proc_show() does
    not check for underflow.

    But NR_CPUS proportional isn't good calculation. In general,
    possibility of lock contention is proportional to the number of online
    cpus, not theorical maximum cpus (NR_CPUS).

    The current kernel has generic percpu-counter stuff. using it is right
    way. it makes code simplify and percpu_counter_read_positive() don't
    make underflow issue.

    Reported-by: Dave Hansen
    Signed-off-by: KOSAKI Motohiro
    Cc: Eric B Munson
    Cc: Mel Gorman
    Cc: Christoph Lameter
    Cc: [All kernel versions]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    KOSAKI Motohiro
     
  • Some drivers using of_register_platform_driver() wrapper break on sparc
    because the wrapper isn't in the header file. This patch moves it from
    Microblaze and PowerPC implementations and makes it common code.

    Fixes this sparc64 allmodconfig build error (at least):

    drivers/leds/leds-gpio.c: In function `gpio_led_init':
    drivers/leds/leds-gpio.c:295: error: implicit declaration of function `of_register_platform_driver'
    drivers/leds/leds-gpio.c: In function `gpio_led_exit':
    drivers/leds/leds-gpio.c:311: error: implicit declaration of function `of_unregister_platform_driver'

    Signed-off-by: Grant Likely
    Acked-by: David S. Miller
    Cc: Michal Simek
    Cc: Benjamin Herrenschmidt
    Cc: Stephen Rothwell
    Cc: Richard Purdie
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Grant Likely
     
  • This fixes the problem introduced by commit 3bfacef412 (get rid of
    special-casing the /sbin/loader on alpha): osf/1 ecoff binary segfaults
    when binfmt_aout built as module. That happens because aout binary
    handler gets on the top of the binfmt list due to late registration, and
    kernel attempts to execute the binary without preparatory work that must
    be done by binfmt_loader.

    Fixed by changing the registration order of the default binfmt handlers
    using list_add_tail() and introducing insert_binfmt() function which
    places new handler on the top of the binfmt list. This might be generally
    useful for installing arch-specific frontends for default handlers or just
    for overriding them.

    Signed-off-by: Ivan Kokshaysky
    Cc: Al Viro
    Cc: Richard Henderson
    Signed-off-by: Linus Torvalds

    Ivan Kokshaysky
     
  • Signed-off-by: Ivan Kokshaysky
    Cc: Al Viro
    Cc: Richard Henderson
    Signed-off-by: Linus Torvalds

    Ivan Kokshaysky
     
  • Exception fixups for sections other than .text (like one in futex_init())
    break the natural ordering of fixup entries, so sorting is required.

    Without that the result of the exception table search depends on phase of
    the moon.

    Signed-off-by: Ivan Kokshaysky
    Cc: Al Viro
    Cc: Richard Henderson
    Signed-off-by: Linus Torvalds

    Ivan Kokshaysky
     
  • These platforms got broken after u64 => 'long long' conversion.

    Apparently that change was compile-tested with 'make allmodconfig', but it
    doesn't include systems that depend on !ALPHA_LEGACY_START_ADDRESS.

    Signed-off-by: Ivan Kokshaysky
    Cc: Al Viro
    Cc: Richard Henderson
    Signed-off-by: Linus Torvalds

    Ivan Kokshaysky
     
  • Uwe Geuder noted that he gets random bitmaps on a text console if he tried
    to type extended characters (like the e acute). For him everything above
    unicode 0xa0 was corrupted.

    After some digging there seems to be a little culprit in vgacon since the
    beginning of ages (well git). The function vgacon_font_get will store the
    number of characters correctly in font->charcount but then calls to
    vgacon_do_font_op(..., 0, 0). Which means only the lower 256 characters
    are actually stored to the fontdata. The rest is left untouched. So the
    next time that saved data is used, the garbled font appears. This happens
    on every switch between text consoles.

    Addresses https://bugs.launchpad.net/ubuntu/+source/linux/+bug/355057

    Signed-off-by: Stefan Bader
    Tested-by: Uwe Geuder
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stefan Bader
     
  • Current mem_cgroup_shrink_usage() has two problems.

    1. It doesn't call mem_cgroup_out_of_memory and doesn't update
    last_oom_jiffies, so pagefault_out_of_memory invokes global OOM.

    2. Considering hierarchy, shrinking has to be done from the
    mem_over_limit, not from the memcg which the page would be charged to.

    mem_cgroup_try_charge_swapin() does all of these things properly, so we
    use it and call cancel_charge_swapin when it succeeded.

    The name of "shrink_usage" is not appropriate for this behavior, so we
    change it too.

    Signed-off-by: Daisuke Nishimura
    Acked-by: KAMEZAWA Hiroyuki
    Cc: Li Zefan
    Cc: Paul Menage
    Cc: Dhaval Giani
    Cc: Daisuke Nishimura
    Cc: YAMAMOTO Takashi
    Cc: KOSAKI Motohiro
    Cc: David Rientjes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Daisuke Nishimura
     
  • The intention of commit aae8679b0ebcaa92f99c1c3cb0cd651594a43915
    ("pagemap: fix bug in add_to_pagemap, require aligned-length reads of
    /proc/pid/pagemap") was to force reads of /proc/pid/pagemap to be a
    multiple of 8 bytes, but now it allows to read 0 bytes, which actually
    puts some data to user's buffer. According to POSIX, if count is zero,
    read() should return zero and has no other results.

    Signed-off-by: Vitaly Mayatskikh
    Cc: Thomas Tuttle
    Acked-by: Matt Mackall
    Cc: Alexey Dobriyan
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vitaly Mayatskikh
     
  • Change page_mkwrite to allow implementations to return with the page
    locked, and also change it's callers (in page fault paths) to hold the
    lock until the page is marked dirty. This allows the filesystem to have
    full control of page dirtying events coming from the VM.

    Rather than simply hold the page locked over the page_mkwrite call, we
    call page_mkwrite with the page unlocked and allow callers to return with
    it locked, so filesystems can avoid LOR conditions with page lock.

    The problem with the current scheme is this: a filesystem that wants to
    associate some metadata with a page as long as the page is dirty, will
    perform this manipulation in its ->page_mkwrite. It currently then must
    return with the page unlocked and may not hold any other locks (according
    to existing page_mkwrite convention).

    In this window, the VM could write out the page, clearing page-dirty. The
    filesystem has no good way to detect that a dirty pte is about to be
    attached, so it will happily write out the page, at which point, the
    filesystem may manipulate the metadata to reflect that the page is no
    longer dirty.

    It is not always possible to perform the required metadata manipulation in
    ->set_page_dirty, because that function cannot block or fail. The
    filesystem may need to allocate some data structure, for example.

    And the VM cannot mark the pte dirty before page_mkwrite, because
    page_mkwrite is allowed to fail, so we must not allow any window where the
    page could be written to if page_mkwrite does fail.

    This solution of holding the page locked over the 3 critical operations
    (page_mkwrite, setting the pte dirty, and finally setting the page dirty)
    closes out races nicely, preventing page cleaning for writeout being
    initiated in that window. This provides the filesystem with a strong
    synchronisation against the VM here.

    - Sage needs this race closed for ceph filesystem.
    - Trond for NFS (http://bugzilla.kernel.org/show_bug.cgi?id=12913).
    - I need it for fsblock.
    - I suspect other filesystems may need it too (eg. btrfs).
    - I have converted buffer.c to the new locking. Even simple block allocation
    under dirty pages might be susceptible to i_size changing under partial page
    at the end of file (we also have a buffer.c-side problem here, but it cannot
    be fixed properly without this patch).
    - Other filesystems (eg. NFS, maybe btrfs) will need to change their
    page_mkwrite functions themselves.

    [ This also moves page_mkwrite another step closer to fault, which should
    eventually allow page_mkwrite to be moved into ->fault, and thus avoiding a
    filesystem calldown and page lock/unlock cycle in __do_fault. ]

    [akpm@linux-foundation.org: fix derefs of NULL ->mapping]
    Cc: Sage Weil
    Cc: Trond Myklebust
    Signed-off-by: Nick Piggin
    Cc: Valdis Kletnieks
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nick Piggin
     
  • On a linux-next allyesconfig build:

    kernel/trace/ring_buffer.c:1726:
    warning: passing argument 1 of 'atomic_cmpxchg' from incompatible pointer type
    linux-next/arch/s390/include/asm/atomic.h:112:
    note: expected 'struct atomic_t *' but argument is of type 'struct atomic64_t *'

    atomic_long_cmpxchg and atomic_long_xchg are incorrectly defined for 64
    bit architectures. They should be mapped to the atomic64_* variants.

    Acked-by: Mathieu Desnoyers
    Signed-off-by: Heiko Carstens
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     
  • drivers/serial/crisv10.c:4428: error: unknown field 'read_proc' specified in initializer

    Commit 0f043a81ebe84be3576667f04fdda481609e3816 ("proc tty: remove struct
    tty_operations::read_proc") removes the read_proc entry from struct
    tty_operations.

    Rework the proc handling in the CRISv10 serial driver to use proc_fops
    instead.

    Signed-off-by: Jesper Nilsson
    Cc: Alexey Dobriyan
    Cc: Alan Cox
    Cc: Mikael Starvik
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jesper Nilsson
     
  • Add Roland and Oleg as formal ptrace maintainers, they've been doing the
    job for a while.

    Includes the file patterns requested by Joe.

    Signed-off-by: Christoph Hellwig
    Acked-by: Roland McGrath
    Cc: Oleg Nesterov
    Cc: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     
  • This is a bugfix for commit 3c776e64660028236313f0e54f3a9945764422df
    ("memcg: charge swapcache to proper memcg").

    Used bit of swapcache is solid under page lock, but considering
    move_account, pc->mem_cgroup is not.

    We need lock_page_cgroup() anyway.

    Signed-off-by: Daisuke Nishimura
    Acked-by: KAMEZAWA Hiroyuki
    Cc: Balbir Singh
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Daisuke Nishimura
     
  • I will finish school soon, so replace my student address with this one.

    Signed-off-by: Florian Fainelli
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Florian Fainelli
     
  • Fix an obvious incorrect return status in autofs4_mount_busy().

    Signed-off-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • By the time the memory cgroup code is notified about a swapin we
    already hold a reference on the fault page.

    If the cgroup callback fails make sure to unlock AND release the page
    reference which was taken by lookup_swap_cach(), or we leak the reference.

    Signed-off-by: Johannes Weiner
    Cc: Balbir Singh
    Reviewed-by: Minchan Kim
    Acked-by: KAMEZAWA Hiroyuki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Weiner
     
  • acpi_rs_get_pci_routing_table_length is not performing sufficient
    validation on the package returned from _PRT. It assumes a package of
    packages and fails/faults if this is not the case.

    We should validate each subpackage when extracted from the parent
    package, and not accept objects of the wrong type, since that will just
    cause the scanning to fail (likely with a kernel oops).

    This can only happen with a serious BIOS bug, and is accompanied by a
    warning something like this:

    ACPI Warning (nspredef-0949): \_SB_.PCI0.PEG4._PRT: Return Package type mismatch at index 0 - found Integer, expected Package [20090320]

    Signed-off-by: Linus Torvalds

    Robert Moore
     

30 Apr, 2009

13 commits


29 Apr, 2009

8 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (24 commits)
    e100: do not go D3 in shutdown unless system is powering off
    netfilter: revised locking for x_tables
    Bluetooth: Fix connection establishment with low security requirement
    Bluetooth: Add different pairing timeout for Legacy Pairing
    Bluetooth: Ensure that HCI sysfs add/del is preempt safe
    net: Avoid extra wakeups of threads blocked in wait_for_packet()
    net: Fix typo in net_device_ops description.
    ipv4: Limit size of route cache hash table
    Add reference to CAPI 2.0 standard
    Documentation/isdn/INTERFACE.CAPI
    update Documentation/isdn/00-INDEX
    ixgbe: Fix WoL functionality for 82599 KX4 devices
    veth: prevent oops caused by netdev destructor
    xfrm: wrong hash value for temporary SA
    forcedeth: tx timeout fix
    net: Fix LL_MAX_HEADER for CONFIG_TR_MODULE
    mlx4_en: Handle page allocation failure during receive
    mlx4_en: Fix cleanup flow on cq activation
    vlan: update vlan carrier state for admin up/down
    netfilter: xt_recent: fix stack overread in compat code
    ...

    Linus Torvalds
     
  • After experimenting with kexec with the last merges after 2.6.29, I've
    had some problems when probing e100. It would not read the eeprom. After
    some bisects, I realized this has been like that since forever (at least
    2.6.18). The problem is that shutdown is doing the same thing that
    suspend does and puts the device in D3 state. I couldn't find a way to
    get the device back to a sane state in the probe function. So, based on
    some similar patches from Rafael J. Wysocki for e1000, e1000e, and ixgbe,
    I wrote this one for e100.

    Signed-off-by: Thadeu Lima de Souza Cascardo
    Acked-by: "Rafael J. Wysocki"
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Thadeu Lima de Souza Cascardo
     
  • David S. Miller
     
  • The x_tables are organized with a table structure and a per-cpu copies
    of the counters and rules. On older kernels there was a reader/writer
    lock per table which was a performance bottleneck. In 2.6.30-rc, this
    was converted to use RCU and the counters/rules which solved the performance
    problems for do_table but made replacing rules much slower because of
    the necessary RCU grace period.

    This version uses a per-cpu set of spinlocks and counters to allow to
    table processing to proceed without the cache thrashing of a global
    reader lock and keeps the same performance for table updates.

    Signed-off-by: Stephen Hemminger
    Acked-by: Linus Torvalds
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • * 'drm-intel-next' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel:
    drm/i915: fix up error path leak in i915_cmdbuffer
    drm/i915: fix unpaired i915 device mutex on entervt failure.
    drm/i915: add support for G41 chipset
    drm/i915: Enable ASLE if present
    drm/i915: Unregister ACPI video driver when exiting
    drm/i915: Register ACPI video even when not modesetting
    drm/i915: fix transition to I915_TILING_NONE
    drm/i915: Don't let an oops get triggered from irq_emit without dma init.
    drm/i915: allow tiled front buffers on 965+

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (21 commits)
    RDMA/nes: Update iw_nes version
    RDMA/nes: Fix error path in nes_accept()
    RDMA/nes: Fix hang issues for large cluster dynamic connections
    RDMA/nes: Increase rexmit timeout interval
    RDMA/nes: Check for sequence number wrap-around
    RDMA/nes: Do not set apbvt entry for loopback
    RDMA/nes: Fix unused variable compile warning when INFINIBAND_NES_DEBUG=n
    RDMA/nes: Fix fw_ver in /sys
    RDMA/nes: Set trace length to 1 inch for SFP_D
    RDMA/nes: Enable repause timer for port 1
    RDMA/nes: Correct CDR loop filter setting for port 1
    RDMA/nes: Modify thermo mitigation to flip SerDes1 ref clk to internal
    RDMA/nes: Fix resource issues in nes_create_cq() and nes_destroy_cq()
    RDMA/nes: Remove root_256()'s unused pbl_count_256 parameter
    mlx4_core: Fix memory leak in mlx4_enable_msi_x()
    IB/mthca: Fix timeout for INIT_HCA and a few other commands
    RDMA/cxgb3: Don't zero QP attrs when moving to IDLE
    RDMA/nes: Fix bugs in nes_reg_phys_mr()
    RDMA/nes: Fix compiler warning at nes_verbs.c:1955
    IPoIB: Disable NAPI while CQ is being drained
    ...

    Linus Torvalds
     
  • Fix this:

    arch/m68k/kernel/sun3-head.S: Assembler messages:
    arch/m68k/kernel/sun3-head.S:32: Error: Unknown operator -- statement `__head' ignored

    Introduced by commit 6f335cab0431d5df4995bcd4fd952d4c746d5a86 ("m68k:
    convert to use __HEAD and HEAD_TEXT macros."), which started using
    __HEAD without adding the appropriate include.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • * 'for-linus' of git://git.kernel.dk/linux-2.6-block:
    bio: fix memcpy corruption in bio_copy_user_iov()
    hd: fix locking
    mg_disk: fix CONFIG_LBD=y warning
    mg_disk: fix locking

    Linus Torvalds