25 Mar, 2014

11 commits

  • Linus Torvalds
     
  • Pull parisc updates from Helge Deller:
    - revert parts of the latest patch regarding font selection with STICON
    console
    - wire up the utimes() syscall for parisc
    - remove the unused parisc tmpalias code and unnecessary arch*relax
    defines

    * 'parisc-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
    parisc: locks: remove redundant arch_*_relax operations
    parisc: wire up sys_utimes
    parisc: Remove unused CONFIG_PARISC_TMPALIAS code
    partly revert commit 8a10bc9: parisc/sti_console: prefer Linux fonts over built-in ROM fonts

    Linus Torvalds
     
  • Pull sparc fixes from David Miller:

    1) Do serial locking in a way that makes things clear that these are
    IRQ spinlocks.

    2) Conversion to generic idle loop broke first generation Niagara
    machines, need to have %pil interrupts enabled during cpu yield
    hypervisor call.

    3) Do not use magic constants for iterations over tsb tables, from Doug
    Wilson.

    4) Fix erroneous truncation of 64-bit system call return values to
    32-bit. From Dave Kleikamp.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
    sparc64: Make sure %pil interrupts are enabled during hypervisor yield.
    sparc64:tsb.c:use array size macro rather than number
    sparc64: don't treat 64-bit syscall return codes as 32-bit
    sparc: serial: Clean up the locking for -rt

    Linus Torvalds
     
  • Pull networking fixes from David Miller:

    1) OpenVswitch's lookup_datapath() returns error pointers, so don't
    check against NULL. From Jiri Pirko.

    2) pfkey_compile_policy() code path tries to do a GFP_KERNEL allocation
    under RCU locks, fix by using GFP_ATOMIC when necessary. From
    Nikolay Aleksandrov.

    3) phy_suspend() indirectly passes uninitialized data into the ethtool
    get wake-on-land implementations. Fix from Sebastian Hesselbarth.

    4) CPSW driver unregisters CPTS twice, fix from Benedikt Spranger.

    5) If SKB allocation of reply packet fails, vxlan's arp_reduce() defers
    a NULL pointer. Fix from David Stevens.

    6) IPV6 neigh handling in vxlan doesn't validate the destination
    address properly, and it builds a packet with the src and dst
    reversed. Fix also from David Stevens.

    7) Fix spinlock recursion during subscription failures in TIPC stack,
    from Erik Hugne.

    8) Revert buggy conversion of davinci_emac to devm_request_irq, from
    Chrstian Riesch.

    9) Wrong flags passed into forwarding database netlink notifications,
    from Nicolas Dichtel.

    10) The netpoll neighbour soliciation handler checks wrong ethertype,
    needs to be ETH_P_IPV6 rather than ETH_P_ARP. Fix from Li RongQing.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (34 commits)
    tipc: fix spinlock recursion bug for failed subscriptions
    vxlan: fix nonfunctional neigh_reduce()
    net: davinci_emac: Fix rollback of emac_dev_open()
    net: davinci_emac: Replace devm_request_irq with request_irq
    netpoll: fix the skb check in pkt_is_ns
    net: micrel : ks8851-ml: add vdd-supply support
    ip6mr: fix mfc notification flags
    ipmr: fix mfc notification flags
    rtnetlink: fix fdb notification flags
    tcp: syncookies: do not use getnstimeofday()
    netlink: fix setsockopt in mmap examples in documentation
    openvswitch: Correctly report flow used times for first 5 minutes after boot.
    via-rhine: Disable device in error path
    ATHEROS-ATL1E: Convert iounmap to pci_iounmap
    vxlan: fix potential NULL dereference in arp_reduce()
    cnic: Update version to 2.5.20 and copyright year.
    cnic,bnx2i,bnx2fc: Fix inconsistent use of page size
    cnic: Use proper ulp_ops for per device operations.
    net: cdc_ncm: fix control message ordering
    ipv6: ip6_append_data_mtu do not handle the mtu of the second fragment properly
    ...

    Linus Torvalds
     
  • If a topology event subscription fails for any reason, such as out
    of memory, max number reached or because we received an invalid
    request the correct behavior is to terminate the subscribers
    connection to the topology server. This is currently broken and
    produces the following oops:

    [27.953662] tipc: Subscription rejected, illegal request
    [27.955329] BUG: spinlock recursion on CPU#1, kworker/u4:0/6
    [27.957066] lock: 0xffff88003c67f408, .magic: dead4ead, .owner: kworker/u4:0/6, .owner_cpu: 1
    [27.958054] CPU: 1 PID: 6 Comm: kworker/u4:0 Not tainted 3.14.0-rc6+ #5
    [27.960230] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
    [27.960874] Workqueue: tipc_rcv tipc_recv_work [tipc]
    [27.961430] ffff88003c67f408 ffff88003de27c18 ffffffff815c0207 ffff88003de1c050
    [27.962292] ffff88003de27c38 ffffffff815beec5 ffff88003c67f408 ffffffff817f0a8a
    [27.963152] ffff88003de27c58 ffffffff815beeeb ffff88003c67f408 ffffffffa0013520
    [27.964023] Call Trace:
    [27.964292] [] dump_stack+0x45/0x56
    [27.964874] [] spin_dump+0x8c/0x91
    [27.965420] [] spin_bug+0x21/0x26
    [27.965995] [] do_raw_spin_lock+0x116/0x140
    [27.966631] [] _raw_spin_lock_bh+0x15/0x20
    [27.967256] [] subscr_conn_shutdown_event+0x20/0xa0 [tipc]
    [27.968051] [] tipc_close_conn+0xa4/0xb0 [tipc]
    [27.968722] [] tipc_conn_terminate+0x1a/0x30 [tipc]
    [27.969436] [] subscr_conn_msg_event+0x1f2/0x2f0 [tipc]
    [27.970209] [] tipc_receive_from_sock+0x90/0xf0 [tipc]
    [27.970972] [] tipc_recv_work+0x29/0x50 [tipc]
    [27.971633] [] process_one_work+0x165/0x3e0
    [27.972267] [] worker_thread+0x119/0x3a0
    [27.972896] [] ? manage_workers.isra.25+0x2a0/0x2a0
    [27.973622] [] kthread+0xdf/0x100
    [27.974168] [] ? kthread_create_on_node+0x1a0/0x1a0
    [27.974893] [] ret_from_fork+0x7c/0xb0
    [27.975466] [] ? kthread_create_on_node+0x1a0/0x1a0

    The recursion occurs when subscr_terminate tries to grab the
    subscriber lock, which is already taken by subscr_conn_msg_event.
    We fix this by checking if the request to establish a new
    subscription was successful, and if not we initiate termination of
    the subscriber after we have released the subscriber lock.

    Signed-off-by: Erik Hugne
    Reviewed-by: Jon Maloy
    Signed-off-by: David S. Miller

    Erik Hugne
     
  • The VXLAN neigh_reduce() code is completely non-functional since
    check-in. Specific errors:

    1) The original code drops all packets with a multicast destination address,
    even though neighbor solicitations are sent to the solicited-node
    address, a multicast address. The code after this check was never run.
    2) The neighbor table lookup used the IPv6 header destination, which is the
    solicited node address, rather than the target address from the
    neighbor solicitation. So neighbor lookups would always fail if it
    got this far. Also for L3MISSes.
    3) The code calls ndisc_send_na(), which does a send on the tunnel device.
    The context for neigh_reduce() is the transmit path, vxlan_xmit(),
    where the host or a bridge-attached neighbor is trying to transmit
    a neighbor solicitation. To respond to it, the tunnel endpoint needs
    to do a *receive* of the appropriate neighbor advertisement. Doing a
    send, would only try to send the advertisement, encapsulated, to the
    remote destinations in the fdb -- hosts that definitely did not do the
    corresponding solicitation.
    4) The code uses the tunnel endpoint IPv6 forwarding flag to determine the
    isrouter flag in the advertisement. This has nothing to do with whether
    or not the target is a router, and generally won't be set since the
    tunnel endpoint is bridging, not routing, traffic.

    The patch below creates a proxy neighbor advertisement to respond to
    neighbor solicitions as intended, providing proper IPv6 support for neighbor
    reduction.

    Signed-off-by: David L Stevens
    Signed-off-by: David S. Miller

    David Stevens
     
  • Christian Riesch says:

    ====================
    net: davinci_emac: Fix interrupt requests and error handling

    since commit 6892b41d9701283085b655c6086fb57a5d63fa47 (Linux 3.11) the
    davinci_emac driver is broken. After doing ifconfig down, ifconfig up,
    requesting the interrupts for the driver fails. The interface remains dead
    until the board is rebooted.

    The first patch in this patchset reverts commit
    6892b41d9701283085b655c6086fb57a5d63fa47 partially and makes the driver
    useable again.

    During the work on the first patch, a number of bugs in the error handling
    of the driver's ndo_open code were found. The second patch fixes these bugs.

    I believe the first patch meets the rules for stable kernels, I therefore added
    the stable tag to this patch. The second patch is just cleanup, the code
    that is fixed by this patch is only executed in case of an error.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • If an error occurs during the initialization in emac_dev_open() (the
    driver's ndo_open function), interrupts, DMA descriptors etc. must be freed.
    The current rollback code is buggy in several ways.

    1) Freeing the interrupts. The current code will not free all interrupts
    that were requested by the driver. Furthermore, the code tries to do a
    platform_get_resource(priv->pdev, IORESOURCE_IRQ, -1) in its last
    iteration.

    This patch fixes these bugs.

    2) Wrong order of err: and rollback: labels. If the setup of the PHY in
    the code fails, the interrupts that have been requested before are
    not freed:

    request irq
    if requesting irqs fails, goto rollback
    setup phy
    if phy setup fails, goto err
    return 0

    rollback:
    free irqs
    err:

    This patch brings the code into the correct order.

    3) The code calls napi_enable() and emac_int_enable(), but does not
    undo both in case of an error.

    This patch adds calls of emac_int_disable() and napi_disable() to the
    rollback code.

    4) RX DMA descriptors are not freed in case of an error: Right before
    requesting the irqs, the function creates DMA descriptors for the
    RX channel. These RX descriptors are never freed when we jump to either
    rollback or err.

    This patch adds code for freeing the DMA descriptors in the case of
    an initialization error. This required a modification of
    cpdma_ctrl_stop() in davinci_cpdma.c: We must be able to call this
    function to free the DMA descriptors while the DMA channels are
    in IDLE state (before cpdma_ctlr_start() was called).

    Tested on a custom board with the Texas Instruments AM1808.

    Signed-off-by: Christian Riesch
    Signed-off-by: David S. Miller

    Christian Riesch
     
  • In commit 6892b41d9701283085b655c6086fb57a5d63fa47

    Author: Lad, Prabhakar
    Date: Tue Jun 25 21:24:51 2013 +0530
    net: davinci: emac: Convert to devm_* api

    the call of request_irq is replaced by devm_request_irq and the call
    of free_irq is removed. But since interrupts are requested in
    emac_dev_open, doing ifconfig up/down on the board requests the
    interrupts again each time, causing devm_request_irq to fail. The
    interface is dead until the device is rebooted.

    This patch reverts said commit partially: It changes the driver back
    to use request_irq instead of devm_request_irq, puts free_irq back in
    place, but keeps the remaining changes of the original patch.

    Reported-by: Jon Ringle
    Signed-off-by: Christian Riesch
    Cc: Lad, Prabhakar
    Cc:
    Signed-off-by: David S. Miller

    Christian Riesch
     
  • Neighbor Solicitation is ipv6 protocol, so we should check
    skb->protocol with ETH_P_IPV6

    Signed-off-by: Li RongQing
    Cc: WANG Cong
    Signed-off-by: David S. Miller

    Li RongQing
     
  • In arch_cpu_idle() we must enable %pil based interrupts before
    potentially invoking the hypervisor cpu yield call.

    As per the Hypervisor API documentation for cpu_yield:

    Interrupts which are blocked by some mechanism other that
    pstate.ie (for example %pil) are not guaranteed to cause
    a return from this service.

    It seems that only first generation Niagara chips are hit by this
    bug. My best guess is that later chips implement this in hardware
    and wake up anyways from %pil events, whereas in first generation
    chips the yield is implemented completely in hypervisor code and
    requires %pil to be enabled in order to wake properly from this
    call.

    Fixes: 87fa05aeb3a5 ("sparc: Use generic idle loop")
    Reported-by: Fabio M. Di Nitto
    Reported-by: Jan Engelhardt
    Tested-by: Jan Engelhardt
    Signed-off-by: David S. Miller

    David S. Miller
     

24 Mar, 2014

2 commits


23 Mar, 2014

5 commits


21 Mar, 2014

15 commits

  • Pull drm fixes from Dave Airlie:
    "Some final few intel fixes, all regressions, all stable cc, and one
    exynos oops fixer.

    The biggest is probably the intel display error irqs one, but it seems
    to fix a few crashes on startup, and one use after free in drm core"

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
    drm/exynos: Fix (more) freeing issues in exynos_drm_drv.c
    drm/i915: Disable stolen memory when DMAR is active
    Revert "drm/i915: don't touch the VDD when disabling the panel"
    drm: Fix use-after-free in the shadow-attache exit code
    drm/i915: Don't enable display error interrupts from the start
    drm/i915: Fix scanline counter fixup on BDW
    drm/i915: Add a workaround for HSW scanline counter weirdness
    drm/i915: Fix PSR programming

    Linus Torvalds
     
  • Commit 7982e90c3a57 ("block: fix q->flush_rq NULL pointer crash on
    dm-mpath flush") moved an allocation to blk_init_allocated_queue(), but
    neglected to free that allocation on the error paths that follow.

    Signed-off-by: Dave Jones
    Acked-by: Mike Snitzer
    Signed-off-by: Jens Axboe
    Signed-off-by: Linus Torvalds

    Dave Jones
     
  • Srikar Dronamraju reports that commit b0c29f79ecea ("futexes: Avoid
    taking the hb->lock if there's nothing to wake up") causes java threads
    getting stuck on futexes when runing specjbb on a power7 numa box.

    The cause appears to be that the powerpc spinlocks aren't using the same
    ticket lock model that we use on x86 (and other) architectures, which in
    turn result in the "spin_is_locked()" test in hb_waiters_pending()
    occasionally reporting an unlocked spinlock even when there are pending
    waiters.

    So this reinstates Davidlohr Bueso's original explicit waiter counting
    code, which I had convinced Davidlohr to drop in favor of figuring out
    the pending waiters by just using the existing state of the spinlock and
    the wait queue.

    Reported-and-tested-by: Srikar Dronamraju
    Original-code-by: Davidlohr Bueso
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • …it/rostedt/linux-trace

    Pull trace fix from Steven Rostedt:
    "Vaibhav Nagarnaik discovered that since 3.10 a clean-up patch made the
    array index in the trace event format bogus.

    He supplied an elegant solution that uses __stringify() and also
    removes the need for the event_storage and event_storage_mutex and
    also cuts off a few K of overhead from the trace events"

    * tag 'trace-fixes-v3.14-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
    tracing: Fix array size mismatch in format string

    Linus Torvalds
     
  • Add remove_linear_migration_ptes_from_nonlinear(), to fix an interesting
    little include/linux/swapops.h:131 BUG_ON(!PageLocked) found by trinity:
    indicating that remove_migration_ptes() failed to find one of the
    migration entries that was temporarily inserted.

    The problem comes from remap_file_pages()'s switch from vma_interval_tree
    (good for inserting the migration entry) to i_mmap_nonlinear list (no good
    for locating it again); but can only be a problem if the remap_file_pages()
    range does not cover the whole of the vma (zap_pte() clears the range).

    remove_migration_ptes() needs a file_nonlinear method to go down the
    i_mmap_nonlinear list, applying linear location to look for migration
    entries in those vmas too, just in case there was this race.

    The file_nonlinear method does need rmap_walk_control.arg to do this;
    but it never needed vma passed in - vma comes from its own iteration.

    Reported-and-tested-by: Dave Jones
    Reported-and-tested-by: Sasha Levin
    Signed-off-by: Hugh Dickins
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     
  • Jesse Gross says:

    ====================
    Open vSwitch

    Four small fixes for net/3.14. I realize that these are late in the
    cycle - just got back from vacation.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Commit 812e44dd1829 ("ip6mr: advertise new mfc entries via rtnl") reuses the
    function ip6mr_fill_mroute() to notify mfc events.
    But this function was used only for dump and thus was always setting the
    flag NLM_F_MULTI, which is wrong in case of a single notification.

    Libraries like libnl will wait forever for NLMSG_DONE.

    CC: Thomas Graf
    Signed-off-by: Nicolas Dichtel
    Acked-by: Thomas Graf
    Signed-off-by: David S. Miller

    Nicolas Dichtel
     
  • Commit 8cd3ac9f9b7b ("ipmr: advertise new mfc entries via rtnl") reuses the
    function ipmr_fill_mroute() to notify mfc events.
    But this function was used only for dump and thus was always setting the
    flag NLM_F_MULTI, which is wrong in case of a single notification.

    Libraries like libnl will wait forever for NLMSG_DONE.

    CC: Thomas Graf
    Signed-off-by: Nicolas Dichtel
    Acked-by: Thomas Graf
    Signed-off-by: David S. Miller

    Nicolas Dichtel
     
  • Commit 3ff661c38c84 ("net: rtnetlink notify events for FDB NTF_SELF adds and
    deletes") reuses the function nlmsg_populate_fdb_fill() to notify fdb events.
    But this function was used only for dump and thus was always setting the
    flag NLM_F_MULTI, which is wrong in case of a single notification.

    Libraries like libnl will wait forever for NLMSG_DONE.

    CC: Thomas Graf
    Signed-off-by: Nicolas Dichtel
    Acked-by: Thomas Graf
    Signed-off-by: David S. Miller

    Nicolas Dichtel
     
  • While it is true that getnstimeofday() uses about 40 cycles if TSC
    is available, it can use 1600 cycles if hpet is the clocksource.

    Switch to get_jiffies_64(), as this is more than enough, and
    go back to 60 seconds periods.

    Fixes: 8c27bd75f04f ("tcp: syncookies: reduce cookie lifetime to 128 seconds")
    Signed-off-by: Eric Dumazet
    Cc: Florian Westphal
    Acked-by: Florian Westphal
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • The documentation for how to use netlink mmap interface is incorrect.
    The calls to setsockopt() require an additional argument.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    stephen hemminger
     
  • Pull MIPS fixes from Ralf Baechle:
    "Another set of five fixes. The most interesting one is a fix for race
    condition in the local_irq_disable() implementation used by .S code
    for pre-MIPS R2 processors only. It leaves a race that's hard but not
    impossible to hit; the others fairly obvious"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
    MIPS: Make local_irq_disable macro safe for non-Mipsr2
    MIPS: Octeon: Fix warning in of_device_alloc on cn3xxx
    MIPS: ftrace: Tweak safe_load()/safe_store() macros
    MIPS: BCM47XX: Check all (32) GPIOs when looking for a pin
    MIPS: Fix possible build error with transparent hugepages enabled

    Linus Torvalds
     
  • Pull sound fixes from Takashi Iwai:
    "Just two minor bug fixes: a fix for a regression in oxygen driver that
    was introduced in 3.14-rc1, and a stable fix for the return value of
    compress offload open callback"

    * tag 'sound-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: compress: Pass through return value of open ops callback
    ALSA: oxygen: Xonar DG(X): fix Stereo Upmixing regression

    Linus Torvalds
     
  • The kernel starts out its "jiffies" timer as 5 minutes below zero, as
    shown in include/linux/jiffies.h:

    /*
    * Have the 32 bit jiffies value wrap 5 minutes after boot
    * so jiffies wrap bugs show up earlier.
    */
    #define INITIAL_JIFFIES ((unsigned long)(unsigned int) (-300*HZ))

    The loop in ovs_flow_stats_get() starts out with 'used' set to 0, then
    takes any "later" time. This means that for the first five minutes after
    boot, flows will always be reported as never used, since 0 is greater than
    any time already seen.

    Signed-off-by: Ben Pfaff
    Acked-by: Pravin B Shelar
    Signed-off-by: Jesse Gross

    Ben Pfaff
     
  • In event format strings, the array size is reported in two locations.
    One in array subscript and then via the "size:" attribute. The values
    reported there have a mismatch.

    For e.g., in sched:sched_switch the prev_comm and next_comm character
    arrays have subscript values as [32] where as the actual field size is
    16.

    name: sched_switch
    ID: 301
    format:
    field:unsigned short common_type; offset:0; size:2; signed:0;
    field:unsigned char common_flags; offset:2; size:1; signed:0;
    field:unsigned char common_preempt_count; offset:3; size:1;signed:0;
    field:int common_pid; offset:4; size:4; signed:1;

    field:char prev_comm[32]; offset:8; size:16; signed:1;
    field:pid_t prev_pid; offset:24; size:4; signed:1;
    field:int prev_prio; offset:28; size:4; signed:1;
    field:long prev_state; offset:32; size:8; signed:1;
    field:char next_comm[32]; offset:40; size:16; signed:1;
    field:pid_t next_pid; offset:56; size:4; signed:1;
    field:int next_prio; offset:60; size:4; signed:1;

    After bisection, the following commit was blamed:
    92edca0 tracing: Use direct field, type and system names

    This commit removes the duplication of strings for field->name and
    field->type assuming that all the strings passed in
    __trace_define_field() are immutable. This is not true for arrays, where
    the type string is created in event_storage variable and field->type for
    all array fields points to event_storage.

    Use __stringify() to create a string constant for the type string.

    Also, get rid of event_storage and event_storage_mutex that are not
    needed anymore.

    also, an added benefit is that this reduces the overhead of events a bit more:

    text data bss dec hex filename
    8424787 2036472 1302528 11763787 b3804b vmlinux
    8420814 2036408 1302528 11759750 b37086 vmlinux.patched

    Link: http://lkml.kernel.org/r/1392349908-29685-1-git-send-email-vnagarnaik@google.com

    Cc: Laurent Chavey
    Cc: stable@vger.kernel.org # 3.10+
    Signed-off-by: Vaibhav Nagarnaik
    Signed-off-by: Steven Rostedt

    Vaibhav Nagarnaik
     

20 Mar, 2014

7 commits

  • For non-mipsr2 processors, the local_irq_disable contains an mfc0-mtc0
    pair with instructions inbetween. With preemption enabled, this sequence
    may get preempted and effect a stale value of CP0_STATUS when executing
    the mtc0 instruction. This commit avoids this scenario by incrementing
    the preempt count before the mfc0 and decrementing it after the mtc9.

    [ralf@linux-mips.org: This patch is sorting out the part that were missed
    by e97c5b6098 [MIPS: Make irqflags.h functions preempt-safe for non-mipsr2
    cpus.] I also re-enabled the inclusion of at the top
    of ].

    Signed-off-by: Jim Quinlan
    Cc: linux-mips@linux-mips.org
    Cc: cernekee@gmail.com
    Patchwork: https://patchwork.linux-mips.org/patch/6164/
    Signed-off-by: Ralf Baechle

    Jim Quinlan
     
  • …/daeinki/drm-exynos into drm-fixes

    Just fixed resource release issue at open fail.

    * 'exynos-drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos:
    drm/exynos: Fix (more) freeing issues in exynos_drm_drv.c

    Dave Airlie
     
  • The following commit [0] fixed a use-after-free, but left the subdrv open
    in the error path.

    [0] commit 6ca605f7c70895a35737435f17ae9cc5e36f1466
    drm/exynos: Fix freeing issues in exynos_drm_drv.c

    Signed-off-by: Daniel Kurtz
    Acked-by: Sachin Kamat
    Signed-off-by: Inki Dae

    Daniel Kurtz
     
  • Fix some "Bad rss-counter state" reports on exit, arising from the
    interaction between page migration and remap_file_pages(): zap_pte()
    must count a migration entry when zapping it.

    And yes, it is possible (though very unusual) to find an anon page or
    swap entry in a VM_SHARED nonlinear mapping: coming from that horrid
    get_user_pages(write, force) case which COWs even in a shared mapping.

    Signed-off-by: Hugh Dickins
    Tested-by: Sasha Levin sasha.levin@oracle.com>
    Tested-by: Dave Jones davej@redhat.com>
    Cc: Cyrill Gorcunov
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     
  • Pull PCI resource management fix from Bjorn Helgaas:
    "This is a fix for an AGP regression exposed by e501b3d87f00 ("agp:
    Support 64-bit APBASE"), which we merged in v3.14-rc1.

    We've warned about the conflict between the GART and PCI resources and
    cleared out the PCI resource for a long time, but after e501b3d87f00,
    we still *use* that cleared-out PCI resource. I think the GART
    resource is incorrect, so this patch removes it"

    * tag 'pci-v3.14-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
    Revert "[PATCH] Insert GART region into resource map"

    Linus Torvalds
     
  • Pull cgroup fix from Tejun Heo:
    "One really late cgroup patch to fix error path in create_css().
    Hitting this bug would be pretty rare but still possible and it gets
    delayed we'd need to backport it through -stable anyway. It only
    updates error path in create_css() and has low chance of new
    breakages"

    * 'for-3.14-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
    cgroup: fix a failure path in create_css()

    Linus Torvalds
     
  • Starting with commit 3da5278727a895d49a601f67fd49dffa0b80f9a5 (of/irq:
    Rework of_irq_count()) the following warning is triggered on octeon
    cn3xxx:

    [ 0.887281] WARNING: CPU: 0 PID: 1 at drivers/of/platform.c:171 of_device_alloc+0x228/0x230()
    [ 0.895642] Modules linked in:
    [ 0.898689] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.14.0-rc7-00012-g9ae51f2-dirty #41
    [ 0.906860] Stack : c8b439581166d96e ffffffff816b0000 0000000040808000 ffffffff81185ddc
    [ 0.906860] 0000000000000000 0000000000000000 0000000000000000 000000000000000b
    [ 0.906860] 000000000000000a 000000000000000a 0000000000000000 0000000000000000
    [ 0.906860] ffffffff81740000 ffffffff81720000 ffffffff81615900 ffffffff816b0177
    [ 0.906860] ffffffff81727d10 800000041f868fb0 0000000000000001 0000000000000000
    [ 0.906860] 0000000000000000 0000000000000038 0000000000000001 ffffffff81568484
    [ 0.906860] 800000041f86faa8 ffffffff81145ddc 0000000000000000 ffffffff811873f4
    [ 0.906860] 800000041f868b88 800000041f86f9c0 0000000000000000 ffffffff81569c9c
    [ 0.906860] 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    [ 0.906860] 0000000000000000 ffffffff811205e0 0000000000000000 0000000000000000
    [ 0.906860] ...
    [ 0.971695] Call Trace:
    [ 0.974139] [] show_stack+0x68/0x80
    [ 0.979183] [] dump_stack+0x8c/0xe0
    [ 0.984196] [] warn_slowpath_common+0x84/0xb8
    [ 0.990110] [] of_device_alloc+0x228/0x230
    [ 0.995726] [] of_platform_device_create_pdata+0x48/0xd0
    [ 1.002593] [] of_platform_bus_create+0x134/0x1e8
    [ 1.008837] [] of_platform_bus_create+0x198/0x1e8
    [ 1.015064] [] of_platform_bus_probe+0xa4/0x100
    [ 1.021149] [] do_one_initcall+0xd8/0x128
    [ 1.026701] [] kernel_init_freeable+0x144/0x210
    [ 1.032753] [] kernel_init+0x14/0x110
    [ 1.037973] [] ret_from_kernel_thread+0x14/0x1c

    With this commit the kernel starts mapping the interrupts listed for
    gpio-controller node. irq_domain_ops for CIU (octeon_irq_ciu_map and
    octeon_irq_ciu_xlat) refuse to handle the GPIO lines (returning -EINVAL)
    and this is causing above warning in of_device_alloc().

    Modify irq_domain_ops for CIU and CIU2 to "gracefully handle" GPIO
    lines (neither return error code nor call octeon_irq_set_ciu_mapping
    for it). This should avoid the warning.

    (As before the real setup for GPIO lines will happen using
    irq_domain_ops of gpio-controller.)

    This patch is based on Wei's patch v2 (see
    http://marc.info/?l=linux-mips&m=139511814813247).

    Signed-off-by: Andreas Herrmann
    Reported-by: Yang Wei
    Acked-by: David Daney
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/6624/
    Signed-off-by: Ralf Baechle

    Andreas Herrmann