06 Feb, 2015

9 commits

  • The symbol 'high_memory' is provided on both MMU- and NOMMU-kernels, but
    only one of them is exported, which leads to module build errors in
    drivers that work fine built-in:

    ERROR: "high_memory" [drivers/net/virtio_net.ko] undefined!
    ERROR: "high_memory" [drivers/net/ppp/ppp_mppe.ko] undefined!
    ERROR: "high_memory" [drivers/mtd/nand/nand.ko] undefined!
    ERROR: "high_memory" [crypto/tcrypt.ko] undefined!
    ERROR: "high_memory" [crypto/cts.ko] undefined!

    This exports the symbol to get these to work on NOMMU as well.

    Signed-off-by: Arnd Bergmann
    Cc: Kirill A. Shutemov
    Acked-by: Greg Ungerer
    Acked-by: David Rientjes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arnd Bergmann
     
  • get_maintainer.pl returns k.khlebnikov@samsung.com via git history, for
    which emails get rejected:

    RCPT TO:
    550 5.1.1 Recipient address rejected: User unknown

    Use his other address that passes vger's mxverify:

    RCPT TO:
    250 2.1.5 OK ir10si13843754pbc.62 - gsmtp

    and add his old email address in the wrong email address field.

    Signed-off-by: Kim Phillips
    Acked-by: Konstantin Khlebnikov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kim Phillips
     
  • walk_page_range() silently skips vma having VM_PFNMAP set, which leads
    to undesirable behaviour at client end (who called walk_page_range).
    Userspace applications get the wrong data, so the effect is like just
    confusing users (if the applications just display the data) or sometimes
    killing the processes (if the applications do something with
    misunderstanding virtual addresses due to the wrong data.)

    For example for pagemap_read, when no callbacks are called against
    VM_PFNMAP vma, pagemap_read may prepare pagemap data for next virtual
    address range at wrong index.

    Eventually userspace may get wrong pagemap data for a task.
    Corresponding to a VM_PFNMAP marked vma region, kernel may report
    mappings from subsequent vma regions. User space in turn may account
    more pages (than really are) to the task.

    In my case I was using procmem, procrack (Android utility) which uses
    pagemap interface to account RSS pages of a task. Due to this bug it
    was giving a wrong picture for vmas (with VM_PFNMAP set).

    Fixes: a9ff785e4437 ("mm/pagewalk.c: walk_page_range should avoid VM_PFNMAP areas")
    Signed-off-by: Shiraz Hashim
    Acked-by: Naoya Horiguchi
    Cc: [3.10+]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shiraz Hashim
     
  • Pull networking fixes from David Miller:

    1) Stretch ACKs can kill performance with Reno and CUBIC congestion
    control, largely due to LRO and GRO. Fix from Neal Cardwell.

    2) Fix userland breakage because we accidently emit zero length netlink
    messages from the bridging code. From Roopa Prabhu.

    3) Carry handling in generic csum_tcpudp_nofold is broken, fix from
    Karl Beldan.

    4) Remove bogus dev_set_net() calls from CAIF driver, from Nicolas
    Dichtel.

    5) Make sure PPP deflation never returns a length greater then the
    output buffer, otherwise we overflow and trigger skb_over_panic().
    Fix from Florian Westphal.

    6) COSA driver needs VIRT_TO_BUS Kconfig dependencies, from Arnd
    Bergmann.

    7) Don't increase route cached MTU on datagram too big ICMPs. From Li
    Wei.

    8) Fix error path leaks in nf_tables, from Pablo Neira Ayuso.

    9) Fix bitmask handling regression in netlink that broke things like
    acpi userland tools. From Pablo Neira Ayuso.

    10) Wrong header pointer passed to param_type2af() in SCTP code, from
    Saran Maruti Ramanara.

    11) Stacked vlans not handled correctly by vlan_get_protocol(), from
    Toshiaki Makita.

    12) Add missing DMA memory barrier to xgene driver, from Iyappan
    Subramanian.

    13) Fix crash in rate estimators, from Eric Dumazet.

    14) We've been adding various workarounds, one after another, for the
    change which added the per-net tcp_sock. It was meant to reduce
    socket contention but added lots of problems.

    Reduce this instead to a proper per-cpu socket and that rids us of
    all the daemons.

    From Eric Dumazet.

    15) Fix memory corruption and OOPS in mlx4 driver, from Jack
    Morgenstein.

    16) When we disabled UFO in the virtio_net device, it introduces some
    serious performance regressions. The orignal problem was IPV6
    fragment ID generation, so fix that properly instead. From Vlad
    Yasevich.

    17) sr9700 driver build breaks on xtensa because it defines macros with
    the same name as those used by the arch code. Use more unique
    names. From Chen Gang.

    18) Fix endianness in new virio 1.0 mode of the vhost net driver, from
    Michael S Tsirkin.

    19) Several sysctls were setting the maxlen attribute incorrectly, from
    Sasha Levin.

    20) Don't accept an FQ scheduler quantum of zero, that leads to crashes.
    From Kenneth Klette Jonassen.

    21) Fix dumping of non-existing actions in the packet scheduler
    classifier. From Ignacy Gawędzki.

    22) Return the write work_done value when doing TX work in the qlcnic
    driver.

    23) ip6gre_err accesses the info field with the wrong endianness, from
    Sabrina Dubroca.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (54 commits)
    sit: fix some __be16/u16 mismatches
    ipv6: fix sparse errors in ip6_make_flowlabel()
    net: remove some sparse warnings
    flow_keys: n_proto type should be __be16
    ip6_gre: fix endianness errors in ip6gre_err
    qlcnic: Fix NAPI poll routine for Tx completion
    amd-xgbe: Set RSS enablement based on hardware features
    amd-xgbe: Adjust for zero-based traffic class count
    cls_api.c: Fix dumping of non-existing actions' stats.
    pkt_sched: fq: avoid hang when quantum 0
    net: rds: use correct size for max unacked packets and bytes
    vhost/net: fix up num_buffers endian-ness
    gianfar: correct the bad expression while writing bit-pattern
    net: usb: sr9700: Use 'SR_' prefix for the common register macros
    Revert "drivers/net: Disable UFO through virtio"
    Revert "drivers/net, ipv6: Select IPv6 fragment idents for virtio UFO packets"
    ipv6: Select fragment id during UFO segmentation if not set.
    xen-netback: stop the guest rx thread after a fatal error
    net/mlx4_core: Fix kernel Oops (mem corruption) when working with more than 80 VFs
    isdn: off by one in connect_res()
    ...

    Linus Torvalds
     
  • Pull SCSI fixes from James Bottomley:
    "This patch set is fixing two serious problems which have turned up
    late in the release cycle.

    The first fixes a problem with 4k sector disks where the transfer
    length (amount of data sent to the disk) was getting increased every
    time the disk was revalidated leading to potential for overflows.

    The other is a regression oops fix for some of our last merge window
    code"

    * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
    sd: Fix max transfer length for 4k disks
    scsi: fix device handler detach oops

    Linus Torvalds
     
  • Pull drm fixes from Dave Airlie:
    "Radeon and amdkfd fixes.

    Radeon ones mostly for oops in some test/benchmark functions since
    fencing changes, and one regression fix for old GPUs,

    There is one cirrus regression fix, the 32bpp broke userspace, so this
    hides it behind a module option for the few users who care.

    I'm off for a few days, so this is probably the final pull I have, if
    I see fixes from Intel I'll forward the pull as I should have email"

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
    drm/cirrus: Limit modes depending on bpp option
    drm/radeon: fix the crash in test functions
    drm/radeon: fix the crash in benchmark functions
    drm/radeon: properly set vm fragment size for TN/RL
    drm/radeon: don't init gpuvm if accel is disabled (v3)
    drm/radeon: fix PLLs on RS880 and older v2
    drm/amdkfd: Don't create BUG due to incorrect user parameter
    drm/amdkfd: max num of queues can't be 0
    drm/amdkfd: Fix bug in accounting of queues

    Linus Torvalds
     
  • Pull spi fixes from Mark Brown:
    "A couple of driver specific fixes:

    - Disable DMA mode for i.MX6DL chips due to a hardware bug.

    - Don't use devm_kzalloc() outside of bind/unbind paths in the
    fsl-dspi driver, fixing memory leaks"

    * tag 'spi-v3.19-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
    spi: imx: use pio mode for i.mx6dl
    spi: spi-fsl-dspi: Remove usage of devm_kzalloc

    Linus Torvalds
     
  • Pull ACPI power management fix from Rafael Wysocki:
    "This is a revert of an ACPI Low-power Subsystem (LPSS) driver change
    that was supposed to improve power management of the LPSS DMA
    controller, but introduced more serious problems.

    Since fixing them turns out to be non-trivial, it is better to revert
    the commit in question at this point and try to fix the original issue
    differently in the next cycle"

    * tag 'pm+acpi-3.19-fin' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    Revert "ACPI / LPSS: introduce a 'proxy' device to power on LPSS for DMA"

    Linus Torvalds
     
  • Pull PCI fixes from Bjorn Helgaas:
    "Enumeration
    - Scan all device numbers on NEC as well as Stratus (Charlotte Richardson)

    Resource management
    - Handle read-only BARs on AMD CS553x devices (Myron Stowe)

    Synopsys DesignWare
    - Reject MSI-X IRQs (Lucas Stach)"

    * tag 'pci-v3.19-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
    PCI: Handle read-only BARs on AMD CS553x devices
    PCI: Add NEC variants to Stratus ftServer PCIe DMI check
    PCI: designware: Reject MSI-X IRQs

    Linus Torvalds
     

05 Feb, 2015

18 commits

  • Fixes following sparse warnings :

    net/ipv6/sit.c:1509:32: warning: incorrect type in assignment (different base types)
    net/ipv6/sit.c:1509:32: expected restricted __be16 [usertype] sport
    net/ipv6/sit.c:1509:32: got unsigned short
    net/ipv6/sit.c:1514:32: warning: incorrect type in assignment (different base types)
    net/ipv6/sit.c:1514:32: expected restricted __be16 [usertype] dport
    net/ipv6/sit.c:1514:32: got unsigned short
    net/ipv6/sit.c:1711:38: warning: incorrect type in argument 3 (different base types)
    net/ipv6/sit.c:1711:38: expected unsigned short [unsigned] [usertype] value
    net/ipv6/sit.c:1711:38: got restricted __be16 [usertype] sport
    net/ipv6/sit.c:1713:38: warning: incorrect type in argument 3 (different base types)
    net/ipv6/sit.c:1713:38: expected unsigned short [unsigned] [usertype] value
    net/ipv6/sit.c:1713:38: got restricted __be16 [usertype] dport

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • include/net/ipv6.h:713:22: warning: incorrect type in assignment (different base types)
    include/net/ipv6.h:713:22: expected restricted __be32 [usertype] hash
    include/net/ipv6.h:713:22: got unsigned int
    include/net/ipv6.h:719:25: warning: restricted __be32 degrades to integer
    include/net/ipv6.h:719:22: warning: invalid assignment: ^=
    include/net/ipv6.h:719:22: left side has type restricted __be32
    include/net/ipv6.h:719:22: right side has type unsigned int

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • netdev_adjacent_add_links() and netdev_adjacent_del_links()
    are static.

    queue->qdisc has __rcu annotation, need to use RCU_INIT_POINTER()

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • (struct flow_keys)->n_proto is in network order, use
    proper type for this.

    Fixes following sparse errors :

    net/core/flow_dissector.c:139:39: warning: incorrect type in assignment (different base types)
    net/core/flow_dissector.c:139:39: expected unsigned short [unsigned] [usertype] n_proto
    net/core/flow_dissector.c:139:39: got restricted __be16 [assigned] [usertype] proto
    net/core/flow_dissector.c:237:23: warning: incorrect type in assignment (different base types)
    net/core/flow_dissector.c:237:23: expected unsigned short [unsigned] [usertype] n_proto
    net/core/flow_dissector.c:237:23: got restricted __be16 [assigned] [usertype] proto

    Signed-off-by: Eric Dumazet
    Fixes: e0f31d849867 ("flow_keys: Record IP layer protocol in skb_flow_dissect()")
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • info is in network byte order, change it back to host byte order
    before use. In particular, the current code sets the MTU of the tunnel
    to a wrong (too big) value.

    Fixes: c12b395a4664 ("gre: Support GRE over IPv6")
    Signed-off-by: Sabrina Dubroca
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Sabrina Dubroca
     
  • After d75b1ade567f ("net: less interrupt masking in NAPI")
    driver's NAPI poll routine is expected to return
    exact budget value if it wants to be re-called.

    Signed-off-by: Shahed Shaikh
    Fixes: d75b1ade567f ("net: less interrupt masking in NAPI")
    Signed-off-by: David S. Miller

    Shahed Shaikh
     
  • The RSS support requires enablement based on the features reported by
    the hardware. The setting of this flag is missing. Add support to
    set the RSS enablement flag based on the reported hardware features.

    Signed-off-by: Tom Lendacky
    Signed-off-by: David S. Miller

    Lendacky, Thomas
     
  • The number of traffic classes reported by the hardware is zero-based
    so increment the value returned to get an actual count.

    Signed-off-by: Tom Lendacky
    Signed-off-by: David S. Miller

    Lendacky, Thomas
     
  • In tcf_exts_dump_stats(), ensure that exts->actions is not empty before
    accessing the first element of that list and calling tcf_action_copy_stats()
    on it. This fixes some random segvs when adding filters of type "basic" with
    no particular action.

    This also fixes the dumping of those "no-action" filters, which more often
    than not made calls to tcf_action_copy_stats() fail and consequently netlink
    attributes added by the caller to be removed by a call to nla_nest_cancel().

    Fixes: 33be62715991 ("net_sched: act: use standard struct list_head")
    Signed-off-by: Ignacy Gawędzki
    Acked-by: Cong Wang
    Signed-off-by: David S. Miller

    Ignacy Gawędzki
     
  • Configuring fq with quantum 0 hangs the system, presumably because of a
    non-interruptible infinite loop. Either way quantum 0 does not make sense.

    Reproduce with:
    sudo tc qdisc add dev lo root fq quantum 0 initial_quantum 0
    ping 127.0.0.1

    Signed-off-by: Kenneth Klette Jonassen
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Kenneth Klette Jonassen
     
  • The commit [8975626ea35a: drm/cirrus: allow 32bpp framebuffers for
    cirrus drm] broke X modesetting driver because cirrus driver still
    provides the full list of modes up to 1280x1024 while the 32bpp can
    support only up to 800x600.

    We might be able to filter out the invalid modes in mode_valid
    callback, but unfortunately the bpp in question can't be referred
    there for now (let me know if there is a better way to retrieve the
    bpp for the probed fb).

    So, instead, this patch adds the bpp module option to specify the
    maximal bpp explicitly and limits the resolutions in get_modes
    depending on its value.

    The default value is set to 24 so that the existing stuff keeps
    working. If you need a new 32bpp feature, specify cirrus.bpp=32
    option explicitly.

    Fixes: 8975626ea35a ('drm/cirrus: allow 32bpp framebuffers for cirrus drm')
    Signed-off-by: Takashi Iwai
    Signed-off-by: Dave Airlie

    Takashi Iwai
     
  • Max unacked packets/bytes is an int while sizeof(long) was used in the
    sysctl table.

    This means that when they were getting read we'd also leak kernel memory
    to userspace along with the timeout values.

    Signed-off-by: Sasha Levin
    Signed-off-by: David S. Miller

    Sasha Levin
     
  • In virtio 1.0 mode, when mergeable buffers are enabled on a big-endian
    host, num_buffers wasn't byte-swapped correctly, so large incoming
    packets got corrupted.

    To fix, fill it in within hdr - this also makes sure it gets
    the correct type.

    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: David S. Miller

    Michael S. Tsirkin
     
  • This patch correct the bad expression while writing the
    bit-pattern from software's buffer to hardware registers.

    Signed-off-by: Sanjeev Sharma
    Signed-off-by: David S. Miller

    Sanjeev Sharma
     
  • The commone register macors (e.g. RSR) is too commont to drivers, it may
    be conflict with the architectures (e.g. xtensa, sh).

    The related warnings (with allmodconfig under xtensa):

    CC [M] drivers/net/usb/sr9700.o
    In file included from drivers/net/usb/sr9700.c:24:0:
    drivers/net/usb/sr9700.h:65:0: warning: "RSR" redefined
    #define RSR 0x06
    ^
    In file included from ./arch/xtensa/include/asm/bitops.h:22:0,
    from include/linux/bitops.h:36,
    from include/linux/kernel.h:10,
    from include/linux/list.h:8,
    from include/linux/module.h:9,
    from drivers/net/usb/sr9700.c:13:
    ./arch/xtensa/include/asm/processor.h:190:0: note: this is the location of the previous definition
    #define RSR(v,sr) __asm__ __volatile__ ("rsr %0,"__stringify(sr) : "=a"(v));
    ^

    Signed-off-by: Chen Gang
    Signed-off-by: David S. Miller

    Chen Gang
     
  • Mark Brown
     
  • Pull cifs fixes from Steve French:
    "Three small cifs fixes. One fixes a hang under stress, and the other
    two are security related"

    * 'for-next' of git://git.samba.org/sfrench/cifs-2.6:
    cifs: fix MUST SecurityFlags filtering
    Complete oplock break jobs before closing file handle
    cifs: use memzero_explicit to clear stack buffer

    Linus Torvalds
     
  • Pull ARM fixes from Russell King:
    "A number of ARM fixes, the biggest is fixing a regression caused by
    appended DT blobs exceeding 64K, causing the decompressor fixup code
    to fail to patch the DT blob. Another important fix is for the ASID
    allocator from Will Deacon which prevents some rare crashes seen on
    some systems. Lastly, there's a build fix for v7M systems when printk
    support is disabled.

    The last two remaining fixes are more cosmetic - the IOMMU one
    prevents an annoying harmless warning message, and we disable the
    kernel strict memory permissions on non-MMU which can't support it
    anyway"

    * 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
    ARM: 8299/1: mm: ensure local active ASID is marked as allocated on rollover
    ARM: 8298/1: ARM_KERNMEM_PERMS only works with MMU enabled
    ARM: 8295/1: fix v7M build for !CONFIG_PRINTK
    ARM: 8294/1: ATAG_DTB_COMPAT: remove the DT workspace's hardcoded 64KB size
    ARM: 8288/1: dma-mapping: don't detach devices without an IOMMU during teardown

    Linus Torvalds
     

04 Feb, 2015

11 commits

  • Vladislav Yasevich says:

    ====================
    Restore UFO support to virtio_net devices

    commit 3d0ad09412ffe00c9afa201d01effdb6023d09b4
    Author: Ben Hutchings
    Date: Thu Oct 30 18:27:12 2014 +0000

    drivers/net: Disable UFO through virtio

    Turned off UFO support to virtio-net based devices due to issues
    with IPv6 fragment id generation for UFO packets. The issue
    was that IPv6 UFO/GSO implementation expects the fragment id
    to be supplied in skb_shinfo(). However, for packets generated
    by the VMs, the fragment id is not supplied which causes all
    IPv6 fragments to have the id of 0.

    The problem is that turning off UFO support on tap/macvtap
    as well as virtio devices caused issues with migrations.
    Migrations would fail when moving a vm from a kernel supporting
    expecting UFO to work to the newer kernels that disabled UFO.

    This series provides a partial solution to address the migration
    issue. The series allows us to track whether skb_shinfo()->ip6_frag_id
    has been set by treating value of 0 as unset.
    This lets GSO code to generate fragment ids if they are necessary
    (ex: packet was generated by VM or packet socket).

    Since v3:
    - Resolved build issue when IPv6 is a module.
    - Removed trailing white space.

    Since v2:
    - Rebase and rebuild to make sure everything works. No changes
    to the patches were done.

    Since v1:
    - Removed the skb bit and use value of 0 as tracker.
    - Used Eric's suggestion to set fragment id as 0x80000000 if id
    generation procedure yeilded a 0 result.
    - Consolidated ipv6 id genration code.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • This reverts commit 3d0ad09412ffe00c9afa201d01effdb6023d09b4.

    Now that GSO functionality can correctly track if the fragment
    id has been selected and select a fragment id if necessary,
    we can re-enable UFO on tap/macvap and virtio devices.

    Signed-off-by: Vladislav Yasevich
    Signed-off-by: David S. Miller

    Vlad Yasevich
     
  • This reverts commit 5188cd44c55db3e92cd9e77a40b5baa7ed4340f7.

    Now that GSO layer can track if fragment id has been selected
    and can allocate one if necessary, we don't need to do this in
    tap and macvtap. This reverts most of the code and only keeps
    the new ipv6 fragment id generation function that is still needed.

    Fixes: 3d0ad09412ff (drivers/net: Disable UFO through virtio)
    Signed-off-by: Vladislav Yasevich
    Signed-off-by: David S. Miller

    Vlad Yasevich
     
  • If the IPv6 fragment id has not been set and we perform
    fragmentation due to UFO, select a new fragment id.
    We now consider a fragment id of 0 as unset and if id selection
    process returns 0 (after all the pertrubations), we set it to
    0x80000000, thus giving us ample space not to create collisions
    with the next packet we may have to fragment.

    When doing UFO integrity checking, we also select the
    fragment id if it has not be set yet. This is stored into
    the skb_shinfo() thus allowing UFO to function correclty.

    This patch also removes duplicate fragment id generation code
    and moves ipv6_select_ident() into the header as it may be
    used during GSO.

    Signed-off-by: Vladislav Yasevich
    Signed-off-by: David S. Miller

    Vlad Yasevich
     
  • Pull infiniband reverts from Roland Dreier:
    "Last minute InfiniBand/RDMA changes for 3.19:

    - Revert IPoIB driver back to 3.18 state. We had a number of fixes
    go into 3.19, but they introduced regressions. We tried to get
    everything fixed up but ran out of time, so we'll try again for
    3.20.

    - Similarly, turn off the new "extended query port" verb. Late in
    the cycle we realized the ABI is not quite right, and rather than
    freeze something in a rush and make a mistake, we'll take a bit
    more time and get it right in 3.20"

    * tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
    IB/core: Temporarily disable ex_query_device uverb
    Revert "IPoIB: Consolidate rtnl_lock tasks in workqueue"
    Revert "IPoIB: Make the carrier_on_task race aware"
    Revert "IPoIB: fix MCAST_FLAG_BUSY usage"
    Revert "IPoIB: fix mcast_dev_flush/mcast_restart_task race"
    Revert "IPoIB: change init sequence ordering"
    Revert "IPoIB: Use dedicated workqueues per interface"
    Revert "IPoIB: Make ipoib_mcast_stop_thread flush the workqueue"
    Revert "IPoIB: No longer use flush as a parameter"

    Linus Torvalds
     
  • Pull two fixes for md from Neil Brown:

    - Another live lock, needs backporting

    - work-around false positive with new warnings.

    * tag 'md/3.19-fixes' of git://neil.brown.name/md:
    md/bitmap: fix a might_sleep() warning.
    md/raid5: fix another livelock caused by non-aligned writes.

    Linus Torvalds
     
  • Some AMD CS553x devices have read-only BARs because of a firmware or
    hardware defect. There's a workaround in quirk_cs5536_vsa(), but it no
    longer works after 36e8164882ca ("PCI: Restore detection of read-only
    BARs"). Prior to 36e8164882ca, we filled in res->start; afterwards we
    leave it zeroed out. The quirk only updated the size, so the driver tried
    to use a region starting at zero, which didn't work.

    Expand quirk_cs5536_vsa() to read the base addresses from the BARs and
    hard-code the sizes.

    On Nix's system BAR 2's read-only value is 0x6200. Prior to 36e8164882ca,
    we interpret that as a 512-byte BAR based on the lowest-order bit set. Per
    datasheet sec 5.6.1, that BAR (MFGPT) requires only 64 bytes; use that to
    avoid clearing any address bits if a platform uses only 64-byte alignment.

    [bhelgaas: changelog, reduce BAR 2 size to 64]
    Fixes: 36e8164882ca ("PCI: Restore detection of read-only BARs")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=85991#c4
    Link: http://support.amd.com/TechDocs/31506_cs5535_databook.pdf
    Link: http://support.amd.com/TechDocs/33238G_cs5536_db.pdf
    Reported-and-tested-by: Nix
    Signed-off-by: Myron Stowe
    Signed-off-by: Bjorn Helgaas
    CC: stable@vger.kernel.org # v.2.6.27+

    Myron Stowe
     
  • Pull final block layer fixes from Jens Axboe:
    "Unfortunately the hctx/ctx lifetime fix from last pull had some
    issues. This pull request contains a revert of the problematic
    commit, and a proper rewrite of it.

    The rewrite has been tested by the users complaining about the
    regression, and it works fine now. Additionally, I've run testing on
    all the blk-mq use cases for it and it passes. So we should
    definitely get this into 3.19, to avoid regression for some cases"

    * 'for-linus' of git://git.kernel.dk/linux-block:
    blk-mq: release mq's kobjects in blk_release_queue()
    Revert "blk-mq: fix hctx/ctx kobject use-after-free"

    Linus Torvalds
     
  • Pull gpio fixes from Linus Walleij:
    "Yet more GPIO fixes for the v3.19 series.

    There is a high bug-spot activity in GPIO this merge window, much due
    to Johan Hovolds spearheading into actually exercising the removal
    path for GPIO chips, something that was never really exercised before.

    The other two fixes are augmenting erroneous behaviours in two
    specific drivers for minor systems.

    Summary from signed tag:

    - Two fixes stabilizing that which was never stable before: removal
    of GPIO chips, now let's stop leaking memory.
    - Make sure OMAP IRQs are usable when the irqchip API is used
    orthogonally to the gpiochip API.
    - Provide a default GPIO base for the mcp23s08 driver"

    * tag 'gpio-v3.19-5' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio:
    gpio: sysfs: fix memory leak in gpiod_sysfs_set_active_low
    gpio: sysfs: fix memory leak in gpiod_export_link
    gpio: mcp23s08: handle default gpio base
    gpio: omap: Fix bad device access with setup_irq()

    Linus Torvalds
     
  • Roland Dreier
     
  • Commit 5a77abf9a97a ("IB/core: Add support for extended query device caps")
    added a new extended verb to query the capabilities of RDMA devices, but the
    semantics of this verb are still under debate [1].

    Don't expose this verb to userspace until the ABI is nailed down.

    [1] [PATCH v1 0/5] IB/core: extended query device caps cleanup for v3.19
    http://www.spinics.net/lists/linux-rdma/msg22904.html

    Signed-off-by: Haggai Eran
    Reviewed-by: Yann Droneaud
    Signed-off-by: Roland Dreier

    Haggai Eran
     

03 Feb, 2015

2 commits

  • Revert commit 6c17ee44d524 (ACPI / LPSS: introduce a 'proxy' device
    to power on LPSS for DMA), as it introduced registration and probe
    ordering problems between devices on the LPSS that may lead to full
    hard system hang on boot in some cases.

    Rafael J. Wysocki
     
  • Commit e1a5848e3398 ("ARM: 7924/1: mm: don't bother with reserved ttbr0
    when running with LPAE") removed the use of the reserved TTBR0 value
    for LPAE systems, since the ASID is held in the TTBR and can be updated
    atomicly with the pgd of the next mm.

    Unfortunately, this patch forgot to update flush_context, which
    deliberately avoids marking the local active ASID as allocated, since we
    used to switch via ASID zero and didn't need to allocate the ASID of
    the previous mm. The side-effect of this is that we can allocate the
    same ASID to the next mm and, between flushing the local TLB and updating
    TTBR0, we can perform speculative TLB fills for userspace nG mappings
    using the page table of the previous mm.

    The consequence of this is that the next mm can erroneously hit some
    mappings of the previous mm. Note that this was made significantly
    harder to hit by a391263cd84e ("ARM: 8203/1: mm: try to re-use old ASID
    assignments following a rollover") but is still theoretically possible.

    This patch fixes the problem by removing the code from flush_context
    that forces the allocated ASID to zero for the local CPU. Many thanks
    to the Broadcom guys for tracking this one down.

    Fixes: e1a5848e3398 ("ARM: 7924/1: mm: don't bother with reserved ttbr0 when running with LPAE")

    Cc: # v3.14+
    Reported-by: Raymond Ngun
    Tested-by: Raymond Ngun
    Reviewed-by: Gregory Fong
    Signed-off-by: Will Deacon
    Signed-off-by: Russell King

    Will Deacon