18 Apr, 2019

2 commits

  • Need ensure the cma reserved region not cross the low/high memory boundary
    when using the dynamic allocation methond through device-tree, otherwise,
    kernel will fail to boot up when cma reserved region cross how/high mem.

    Signed-off-by: Jason Liu
    Cc: Laura Abbott
    Cc: Frank Rowand
    Cc: Rob Herring
    Cc: stable@vger.kernel.org
    Signed-off-by: Arulpandiyan Vadivel

    Jason Liu
     
  • Add feature of setting slot index via devicetree alias, to hard code the
    mmc/sd root device.

    The patch requires additional alias_id fix or it won't work.

    Note: minor device number keep independent with this device alias.

    Refer to the commit 35928d6c6a76 ("mmc: Allow setting slot index via
    devicetree alias").

    Acked-by: Leonard Crestez
    Reviewed-by: Dong Aisheng
    Signed-off-by: Haibo Chen
    (Vipul: Fixed merge conflicts)
    Signed-off-by: Vipul Kumar

    Haibo Chen
     

07 Feb, 2019

5 commits

  • commit 8814dc46bd9e347d4de55ec5bf8f16ea54470499 upstream.

    When allocating a new node, add_changeset_node() was duplicating the
    properties from the respective node in the overlay instead of
    allocating a node with no properties.

    When this patch is applied the errors reported by the devictree
    unittest from patch "of: overlay: add tests to validate kfrees from
    overlay removal" will no longer occur. These error messages are of
    the form:

    "OF: ERROR: ..."

    and the unittest results will change from:

    ### dt-test ### end of unittest - 203 passed, 7 failed

    to

    ### dt-test ### end of unittest - 210 passed, 0 failed

    Tested-by: Alan Tull
    Signed-off-by: Frank Rowand
    Cc: Guenter Roeck
    Signed-off-by: Greg Kroah-Hartman

    Frank Rowand
     
  • commit 6b4955ba7bc05e40c8c41071cc121bc26ca65277 upstream.

    The changeset entry 'update property' was used for new properties in
    an overlay instead of 'add property'.

    The decision of whether to use 'update property' was based on whether
    the property already exists in the subtree where the node is being
    spliced into. At the top level of creating a changeset describing the
    overlay, the target node is in the live devicetree, so checking whether
    the property exists in the target node returns the correct result.
    As soon as the changeset creation algorithm recurses into a new node,
    the target is no longer in the live devicetree, but is instead in the
    detached overlay tree, thus all properties are incorrectly found to
    already exist in the target.

    This fix will expose another devicetree bug that will be fixed
    in the following patch in the series.

    When this patch is applied the errors reported by the devictree
    unittest will change, and the unittest results will change from:

    ### dt-test ### end of unittest - 210 passed, 0 failed

    to

    ### dt-test ### end of unittest - 203 passed, 7 failed

    Tested-by: Alan Tull
    Signed-off-by: Frank Rowand
    Cc: Guenter Roeck
    Signed-off-by: Greg Kroah-Hartman

    Frank Rowand
     
  • commit 5b2c2f5a0ea3a43e0dee78059e34c7cb54136dcc upstream.

    There is a matching of_node_put() in __of_detach_node_sysfs()

    Remove misleading comment from function header comment for
    of_detach_node().

    This patch may result in memory leaks from code that directly calls
    the dynamic node add and delete functions directly instead of
    using changesets.

    This commit should result in powerpc systems that dynamically
    allocate a node, then later deallocate the node to have a
    memory leak when the node is deallocated.

    The next commit will fix the leak.

    Tested-by: Alan Tull
    Acked-by: Michael Ellerman (powerpc)
    Signed-off-by: Frank Rowand
    Cc: Guenter Roeck
    Signed-off-by: Greg Kroah-Hartman

    Frank Rowand
     
  • commit 144552c786925314c1e7cb8f91a71dae1aca8798 upstream.

    Add checks:
    - attempted kfree due to refcount reaching zero before overlay
    is removed
    - properties linked to an overlay node when the node is removed
    - node refcount > one during node removal in a changeset destroy,
    if the node was created by the changeset

    After applying this patch, several validation warnings will be
    reported from the devicetree unittest during boot due to
    pre-existing devicetree bugs. The warnings will be similar to:

    OF: ERROR: of_node_release(), unexpected properties in /testcase-data/overlay-node/test-bus/test-unittest11
    OF: ERROR: memory leak, expected refcount 1 instead of 2, of_node_get()/of_node_put() unbalanced - destroy cset entry: attach overlay node /testcase-data-2/substation@100/
    hvac-medium-2

    Tested-by: Alan Tull
    Signed-off-by: Frank Rowand
    Cc: Guenter Roeck
    Signed-off-by: Greg Kroah-Hartman

    Frank Rowand
     
  • commit a613b26a50136ae90ab13943afe90bcbd34adb44 upstream.

    In preparation to remove the node name pointer from struct device_node,
    convert printf users to use the %pOFn format specifier.

    Reviewed-by: Frank Rowand
    Cc: Andrew Lunn
    Cc: Florian Fainelli
    Cc: netdev@vger.kernel.org
    Signed-off-by: Rob Herring
    Cc: Guenter Roeck
    Signed-off-by: Greg Kroah-Hartman

    Rob Herring
     

26 Jan, 2019

1 commit

  • [ Upstream commit 7c528e457d53c75107d5aa56892316d265c778de ]

    The refcount of a newly added overlay node decrements to one
    (instead of zero) when the overlay changeset is destroyed. This
    change will cause the final decrement be to zero.

    After applying this patch, new validation warnings will be
    reported from the devicetree unittest during boot due to
    a pre-existing devicetree bug. The warnings will be similar to:

    OF: ERROR: memory leak before free overlay changeset, /testcase-data/overlay-node/test-bus/test-unittest4

    This pre-existing devicetree bug will also trigger a WARN_ONCE() from
    refcount_sub_and_test_checked() when an overlay changeset is
    destroyed without having first been applied. This scenario occurs
    when an error in the overlay is detected during the overlay changeset
    creation:

    WARNING: CPU: 0 PID: 1 at lib/refcount.c:187 refcount_sub_and_test_checked+0xa8/0xbc
    refcount_t: underflow; use-after-free.

    (unwind_backtrace) from (show_stack+0x10/0x14)
    (show_stack) from (dump_stack+0x6c/0x8c)
    (dump_stack) from (__warn+0xdc/0x104)
    (__warn) from (warn_slowpath_fmt+0x44/0x6c)
    (warn_slowpath_fmt) from (refcount_sub_and_test_checked+0xa8/0xbc)
    (refcount_sub_and_test_checked) from (kobject_put+0x24/0x208)
    (kobject_put) from (of_changeset_destroy+0x2c/0xb4)
    (of_changeset_destroy) from (free_overlay_changeset+0x1c/0x9c)
    (free_overlay_changeset) from (of_overlay_remove+0x284/0x2cc)
    (of_overlay_remove) from (of_unittest_apply_revert_overlay_check.constprop.4+0xf8/0x1e8)
    (of_unittest_apply_revert_overlay_check.constprop.4) from (of_unittest_overlay+0x960/0xed8)
    (of_unittest_overlay) from (of_unittest+0x1cc4/0x2138)
    (of_unittest) from (do_one_initcall+0x4c/0x28c)
    (do_one_initcall) from (kernel_init_freeable+0x29c/0x378)
    (kernel_init_freeable) from (kernel_init+0x8/0x110)
    (kernel_init) from (ret_from_fork+0x14/0x2c)

    Tested-by: Alan Tull
    Signed-off-by: Frank Rowand
    Signed-off-by: Sasha Levin

    Frank Rowand
     

23 Jan, 2019

1 commit

  • commit 28b170e88bc0c7509e6724717c15cb4b5686026e upstream.

    Add an of_node_put when the result of of_graph_get_remote_port_parent is
    not available.

    The semantic match that finds this problem is as follows
    (http://coccinelle.lip6.fr):

    //
    @r exists@
    local idexpression e;
    expression x;
    @@
    e = of_graph_get_remote_port_parent(...);
    ... when != x = e
    when != true e == NULL
    when != of_node_put(e)
    when != of_fwnode_handle(e)
    (
    return e;
    |
    *return ...;
    )
    //

    Signed-off-by: Julia Lawall
    Cc: stable@vger.kernel.org
    Signed-off-by: Rob Herring
    Signed-off-by: Greg Kroah-Hartman

    Julia Lawall
     

13 Jan, 2019

2 commits

  • commit 5801169a2ed20003f771acecf3ac00574cf10a38 upstream.

    Non-overlay dynamic devicetree node removal may leave the node in
    the phandle cache. Subsequent calls to of_find_node_by_phandle()
    will incorrectly find the stale entry. Remove the node from the
    cache.

    Add paranoia checks in of_find_node_by_phandle() as a second level
    of defense (do not return cached node if detached, do not add node
    to cache if detached).

    Fixes: 0b3ce78e90fc ("of: cache phandle nodes to reduce cost of of_find_node_by_phandle()")
    Reported-by: Michael Bringmann
    Cc: stable@vger.kernel.org # v4.17+
    Signed-off-by: Frank Rowand
    Signed-off-by: Rob Herring
    Signed-off-by: Greg Kroah-Hartman

    Frank Rowand
     
  • commit b8a9ac1a5b99a2fcbed19fd29d2d59270c281a31 upstream.

    The phandle cache contains struct device_node pointers. The refcount
    of the pointers was not incremented while in the cache, allowing use
    after free error after kfree() of the node. Add the proper increment
    and decrement of the use count.

    Fixes: 0b3ce78e90fc ("of: cache phandle nodes to reduce cost of of_find_node_by_phandle()")
    Cc: stable@vger.kernel.org # v4.17+
    Signed-off-by: Frank Rowand
    Signed-off-by: Rob Herring
    Signed-off-by: Greg Kroah-Hartman

    Frank Rowand
     

27 Nov, 2018

1 commit

  • [ Upstream commit 6778be4e520959659b27a441c06a84c9cb009085 ]

    of_dma_configure() was *supposed* to be following the same logic as
    acpi_dma_configure() and only setting bus_dma_mask if some range was
    specified by the firmware. However, it seems that subtlety got lost in
    the process of fitting it into the differently-shaped control flow, and
    as a result the force_dma==true case ends up always setting the bus mask
    to the 32-bit default, which is not what anyone wants.

    Make sure we only touch it if the DT actually said so.

    Fixes: 6c2fb2ea7636 ("of/device: Set bus DMA mask as appropriate")
    Reported-by: Aaro Koskinen
    Reported-by: Jean-Philippe Brucker
    Tested-by: Aaro Koskinen
    Tested-by: John Stultz
    Tested-by: Geert Uytterhoeven
    Tested-by: Robert Richter
    Signed-off-by: Robin Murphy
    Signed-off-by: Rob Herring
    Signed-off-by: Sasha Levin

    Robin Murphy
     

21 Nov, 2018

1 commit

  • commit 89c38422e072bb453e3045b8f1b962a344c3edea upstream.

    Currently the NUMA distance map parsing does not validate the distance
    table for the distance-matrix rules 1-2 in [1].

    However the arch NUMA code may enforce some of these rules, but not all.
    Such is the case for the arm64 port, which does not enforce the rule that
    the distance between separates nodes cannot equal LOCAL_DISTANCE.

    The patch adds the following rules validation:
    - distance of node to self equals LOCAL_DISTANCE
    - distance of separate nodes > LOCAL_DISTANCE

    This change avoids a yet-unresolved crash reported in [2].

    A note on dealing with symmetrical distances between nodes:

    Validating symmetrical distances between nodes is difficult. If it were
    mandated in the bindings that every distance must be recorded in the
    table, then it would be easy. However, it isn't.

    In addition to this, it is also possible to record [b, a] distance only
    (and not [a, b]). So, when processing the table for [b, a], we cannot
    assert that current distance of [a, b] != [b, a] as invalid, as [a, b]
    distance may not be present in the table and current distance would be
    default at REMOTE_DISTANCE.

    As such, we maintain the policy that we overwrite distance [a, b] = [b, a]
    for b > a. This policy is different to kernel ACPI SLIT validation, which
    allows non-symmetrical distances (ACPI spec SLIT rules allow it). However,
    the distance debug message is dropped as it may be misleading (for a distance
    which is later overwritten).

    Some final notes on semantics:

    - It is implied that it is the responsibility of the arch NUMA code to
    reset the NUMA distance map for an error in distance map parsing.

    - It is the responsibility of the FW NUMA topology parsing (whether OF or
    ACPI) to enforce NUMA distance rules, and not arch NUMA code.

    [1] Documents/devicetree/bindings/numa.txt
    [2] https://www.spinics.net/lists/arm-kernel/msg683304.html

    Cc: stable@vger.kernel.org # 4.7
    Signed-off-by: John Garry
    Acked-by: Will Deacon
    Signed-off-by: Rob Herring
    Signed-off-by: Greg Kroah-Hartman

    John Garry
     

14 Nov, 2018

1 commit

  • [ Upstream commit 173ee3962959a1985a109f81539a403b5cd07ae7 ]

    Commit f42b0e18f2e5 ("of: add node name compare helper functions")
    failed to add the module exports to of_node_name_eq() and
    of_node_name_prefix(). Add them now.

    Fixes: f42b0e18f2e5 ("of: add node name compare helper functions")
    Signed-off-by: Rob Herring
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Rob Herring
     

11 Oct, 2018

1 commit


10 Oct, 2018

1 commit

  • On systems with OF_IMAP_OLDWORLD_MAC set in of_irq_workarounds, the
    devicetree interrupt parsing code is different, causing unit tests of
    devicetree interrupt nodes to fail. Due to a bug in unittest code, which
    tries to dereference an uninitialized pointer, this results in a crash.

    OF: /testcase-data/phandle-tests/consumer-a: arguments longer than property
    Unable to handle kernel paging request for data at address 0x00bc616e
    Faulting instruction address: 0xc08e9468
    Oops: Kernel access of bad area, sig: 11 [#1]
    BE PREEMPT PowerMac
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper Not tainted 4.14.72-rc1-yocto-standard+ #1
    task: cf8e0000 task.stack: cf8da000
    NIP: c08e9468 LR: c08ea5bc CTR: c08ea5ac
    REGS: cf8dbb50 TRAP: 0300 Not tainted (4.14.72-rc1-yocto-standard+)
    MSR: 00001032 CR: 82004044 XER: 00000000
    DAR: 00bc616e DSISR: 40000000
    GPR00: c08ea5bc cf8dbc00 cf8e0000 c13ca517 c13ca517 c13ca8a0 00000066 00000002
    GPR08: 00000063 00bc614e c0b05865 000affff 82004048 00000000 c00047f0 00000000
    GPR16: c0a80000 c0a9cc34 c13ca517 c0ad1134 05ffffff 000affff c0b05860 c0abeef8
    GPR24: cecec278 cecec278 c0a8c4d0 c0a885e0 c13ca8a0 05ffffff c13ca8a0 c13ca517

    NIP [c08e9468] device_node_gen_full_name+0x30/0x15c
    LR [c08ea5bc] device_node_string+0x190/0x3c8
    Call Trace:
    [cf8dbc00] [c007f670] trace_hardirqs_on_caller+0x118/0x1fc (unreliable)
    [cf8dbc40] [c08ea5bc] device_node_string+0x190/0x3c8
    [cf8dbcb0] [c08eb794] pointer+0x25c/0x4d0
    [cf8dbd00] [c08ebcbc] vsnprintf+0x2b4/0x5ec
    [cf8dbd60] [c08ec00c] vscnprintf+0x18/0x48
    [cf8dbd70] [c008e268] vprintk_store+0x4c/0x22c
    [cf8dbda0] [c008ecac] vprintk_emit+0x94/0x130
    [cf8dbdd0] [c008ff54] printk+0x5c/0x6c
    [cf8dbe10] [c0b8ddd4] of_unittest+0x2220/0x26f8
    [cf8dbea0] [c0004434] do_one_initcall+0x4c/0x184
    [cf8dbf00] [c0b4534c] kernel_init_freeable+0x13c/0x1d8
    [cf8dbf30] [c0004814] kernel_init+0x24/0x118
    [cf8dbf40] [c0013398] ret_from_kernel_thread+0x5c/0x64

    The problem was observed when running a qemu test for the g3beige machine
    with devicetree unittests enabled.

    Disable interrupt node tests on affected systems to avoid both false
    unittest failures and the crash.

    With this patch in place, unittest on the affected system passes with
    the following message.

    dt-test ### end of unittest - 144 passed, 0 failed

    Fixes: 53a42093d96ef ("of: Add device tree selftests")
    Signed-off-by: Guenter Roeck
    Reviewed-by: Frank Rowand
    Signed-off-by: Rob Herring

    Guenter Roeck
     

15 Sep, 2018

1 commit


12 Sep, 2018

1 commit

  • With commit 0b3ce78e90fc ("of: cache phandle nodes to reduce cost of
    of_find_node_by_phandle()"), a G3 PowerMac fails to boot. The root cause
    is the DT for this system has no phandle properties when booted with
    BootX. of_populate_phandle_cache() does not handle the case of no
    phandles correctly. The problem is roundup_pow_of_two() for 0 is
    undefined. The implementation subtracts 1 underflowing and then things
    are in the weeds.

    Fixes: 0b3ce78e90fc ("of: cache phandle nodes to reduce cost of of_find_node_by_phandle()")
    Cc: stable@vger.kernel.org # 4.17+
    Reported-by: Finn Thain
    Tested-by: Stan Johnson
    Reviewed-by: Frank Rowand
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Rob Herring

    Rob Herring
     

03 Sep, 2018

1 commit


02 Sep, 2018

1 commit

  • This addresses a v4.19-rc1 regression in the PL111 DRM driver in
    drivers/gpu/pl111/*

    The driver uses the CMA KMS helpers and will thus at some point call
    down to dma_alloc_attrs() to allocate a chunk of contigous DMA memory
    for the framebuffer.

    It appears that in v4.18, it was OK that this (and other DMA mastering
    AMBA devices) left dev->coherent_dma_mask blank (zero).

    In v4.19-rc1 the WARN_ON_ONCE(dev && !dev->coherent_dma_mask) in
    dma_alloc_attrs() in include/linux/dma-mapping.h is triggered. The
    allocation later fails when get_coherent_dma_mask() is called from
    __dma_alloc() and __dma_alloc() returns NULL:

    drm-clcd-pl111 dev:20: coherent DMA mask is unset
    drm-clcd-pl111 dev:20: [drm:drm_fb_helper_fbdev_setup] *ERROR*
    Failed to set fbdev configuration

    It turns out that in commit 4d8bde883bfb ("OF: Don't set default
    coherent DMA mask") the OF core stops setting the default DMA mask on
    new devices, especially those lines of the patch:

    - if (!dev->coherent_dma_mask)
    - dev->coherent_dma_mask = DMA_BIT_MASK(32);

    Robin Murphy solved a similar problem in a5516219b102 ("of/platform:
    Initialise default DMA masks") by simply assigning dev.coherent_dma_mask
    and the dev.dma_mask to point to the same when creating devices from the
    device tree, and introducing the same code into the code path creating
    AMBA/PrimeCell devices solved my problem, graphics now come up.

    The code simply assumes that the device can access all of the system
    memory by setting the coherent DMA mask to 0xffffffff when creating a
    device from the device tree, which is crude, but seems to be what kernel
    v4.18 assumed.

    The AMBA PrimeCells do not differ between coherent and streaming DMA so
    we can just assign the same to any DMA mask.

    Possibly drivers should augment their coherent DMA mask in accordance
    with "dma-ranges" from the device tree if more finegranular masking is
    needed.

    Reported-by: Russell King
    Fixes: 4d8bde883bfb ("OF: Don't set default coherent DMA mask")
    Cc: Russell King
    Cc: Robin Murphy
    Signed-off-by: Linus Walleij
    Signed-off-by: Christoph Hellwig

    Linus Walleij
     

31 Aug, 2018

1 commit


29 Aug, 2018

1 commit

  • Add of_get_compatible_child() helper that can be used to lookup
    compatible child nodes.

    Several drivers currently use of_find_compatible_node() to lookup child
    nodes while failing to notice that the of_find_ functions search the
    entire tree depth-first (from a given start node) and therefore can
    match unrelated nodes. The fact that these functions also drop a
    reference to the node they start searching from (e.g. the parent node)
    is typically also overlooked, something which can lead to use-after-free
    bugs.

    Signed-off-by: Johan Hovold
    Signed-off-by: Rob Herring

    Johan Hovold
     

16 Aug, 2018

1 commit

  • Pull networking updates from David Miller:
    "Highlights:

    - Gustavo A. R. Silva keeps working on the implicit switch fallthru
    changes.

    - Support 802.11ax High-Efficiency wireless in cfg80211 et al, From
    Luca Coelho.

    - Re-enable ASPM in r8169, from Kai-Heng Feng.

    - Add virtual XFRM interfaces, which avoids all of the limitations of
    existing IPSEC tunnels. From Steffen Klassert.

    - Convert GRO over to use a hash table, so that when we have many
    flows active we don't traverse a long list during accumluation.

    - Many new self tests for routing, TC, tunnels, etc. Too many
    contributors to mention them all, but I'm really happy to keep
    seeing this stuff.

    - Hardware timestamping support for dpaa_eth/fsl-fman from Yangbo Lu.

    - Lots of cleanups and fixes in L2TP code from Guillaume Nault.

    - Add IPSEC offload support to netdevsim, from Shannon Nelson.

    - Add support for slotting with non-uniform distribution to netem
    packet scheduler, from Yousuk Seung.

    - Add UDP GSO support to mlx5e, from Boris Pismenny.

    - Support offloading of Team LAG in NFP, from John Hurley.

    - Allow to configure TX queue selection based upon RX queue, from
    Amritha Nambiar.

    - Support ethtool ring size configuration in aquantia, from Anton
    Mikaev.

    - Support DSCP and flowlabel per-transport in SCTP, from Xin Long.

    - Support list based batching and stack traversal of SKBs, this is
    very exciting work. From Edward Cree.

    - Busyloop optimizations in vhost_net, from Toshiaki Makita.

    - Introduce the ETF qdisc, which allows time based transmissions. IGB
    can offload this in hardware. From Vinicius Costa Gomes.

    - Add parameter support to devlink, from Moshe Shemesh.

    - Several multiplication and division optimizations for BPF JIT in
    nfp driver, from Jiong Wang.

    - Lots of prepatory work to make more of the packet scheduler layer
    lockless, when possible, from Vlad Buslov.

    - Add ACK filter and NAT awareness to sch_cake packet scheduler, from
    Toke Høiland-Jørgensen.

    - Support regions and region snapshots in devlink, from Alex Vesker.

    - Allow to attach XDP programs to both HW and SW at the same time on
    a given device, with initial support in nfp. From Jakub Kicinski.

    - Add TLS RX offload and support in mlx5, from Ilya Lesokhin.

    - Use PHYLIB in r8169 driver, from Heiner Kallweit.

    - All sorts of changes to support Spectrum 2 in mlxsw driver, from
    Ido Schimmel.

    - PTP support in mv88e6xxx DSA driver, from Andrew Lunn.

    - Make TCP_USER_TIMEOUT socket option more accurate, from Jon
    Maxwell.

    - Support for templates in packet scheduler classifier, from Jiri
    Pirko.

    - IPV6 support in RDS, from Ka-Cheong Poon.

    - Native tproxy support in nf_tables, from Máté Eckl.

    - Maintain IP fragment queue in an rbtree, but optimize properly for
    in-order frags. From Peter Oskolkov.

    - Improvde handling of ACKs on hole repairs, from Yuchung Cheng"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1996 commits)
    bpf: test: fix spelling mistake "REUSEEPORT" -> "REUSEPORT"
    hv/netvsc: Fix NULL dereference at single queue mode fallback
    net: filter: mark expected switch fall-through
    xen-netfront: fix warn message as irq device name has '/'
    cxgb4: Add new T5 PCI device ids 0x50af and 0x50b0
    net: dsa: mv88e6xxx: missing unlock on error path
    rds: fix building with IPV6=m
    inet/connection_sock: prefer _THIS_IP_ to current_text_addr
    net: dsa: mv88e6xxx: bitwise vs logical bug
    net: sock_diag: Fix spectre v1 gadget in __sock_diag_cmd()
    ieee802154: hwsim: using right kind of iteration
    net: hns3: Add vlan filter setting by ethtool command -K
    net: hns3: Set tx ring' tc info when netdev is up
    net: hns3: Remove tx ring BD len register in hns3_enet
    net: hns3: Fix desc num set to default when setting channel
    net: hns3: Fix for phy link issue when using marvell phy driver
    net: hns3: Fix for information of phydev lost problem when down/up
    net: hns3: Fix for command format parsing error in hclge_is_all_function_id_zero
    net: hns3: Add support for serdes loopback selftest
    bnxt_en: take coredump_record structure off stack
    ...

    Linus Torvalds
     

15 Aug, 2018

1 commit

  • Pull Devicetree updates from Rob Herring:

    - Remove an obsolete hack for PPC32 longtrail systems

    - Make of_io_request_and_map() "name" arg optional

    - Add vendor prefixes for bitmain, Asus, and Y Soft

    - Remove 'interrupt-parent' from bindings as it is implicit

    - New properties for wm8994 audio codec

    - Add 'clocks' property support to SRAM binding

    - Add binding for ASPEED coprocessor interrupt controller

    - Various binding spelling and link fixes

    * tag 'devicetree-for-4.19' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
    Documentation: remove dynamic-resolution-notes reference to non-existent file
    dt-bindings: Add Y Soft Corporation vendor prefix
    of/fdt: Remove PPC32 longtrail hack in memory scan
    dt-bindings: remove 'interrupt-parent' from bindings
    pinctrl: tegra: fix spelling in devicetree binding document
    usb: dwc3: rockchip: Fix PHY documentation links.
    dt-bindings: sound: wm8994: document wlf,csnaddr-pd property
    dt-bindings: sound: wm8994: document wlf,spkmode-pu property
    dt-bindings: sram: Add 'clocks' as an optional property
    dt-bindings: Add vendor prefix for AsusTek Computer Inc.
    dt-bindings: misc: ASPEED coprocessor interrupt controller
    dt-bindings: gpio: pca953x: Document interrupts, update example
    drivers/of: Make of_io_request_and_map() "name" argument optional
    dt-bindings: Add bitmain vendor prefix
    Documentation: devicetree: tilcdc: fix spelling mistake "suppors" -> "supports"

    Linus Torvalds
     

08 Aug, 2018

1 commit

  • When the OF code was originally made common by Grant in commit
    51975db0b733 ("of/flattree: merge early_init_dt_scan_memory() common
    code") (Feb 2010), the common code inherited a hack to handle
    PPC "longtrail" machines, which had a "memory@0" node with no
    device_type.

    That check was then made to only apply to PPC32 in b44aa25d20e2 ("of:
    Handle memory@0 node on PPC32 only") (May 2014).

    But according to Paul Mackerras the "longtrail" machines are long
    dead, if they were ever seen in the wild at all. If someone does still
    have one, we can handle this firmware wart in powerpc platform code.

    So remove the hack once and for all.

    Signed-off-by: Michael Ellerman
    Signed-off-by: Rob Herring

    Michael Ellerman
     

28 Jul, 2018

3 commits

  • Now that we can track upstream DMA constraints properly with
    bus_dma_mask instead of trying (and failing) to maintain it in
    coherent_dma_mask, it doesn't make much sense for the firmware code to
    be touching the latter at all. It's merely papering over bugs wherein a
    driver has failed to call dma_set_coherent_mask() *and* the bus code has
    not initialised any default value.

    We don't really want to encourage more drivers coercing dma_mask so
    we'll continue to fix that up if necessary, but add a warning to help
    flush out any such buggy bus code that remains.

    Signed-off-by: Robin Murphy
    Acked-by: Ard Biesheuvel
    Signed-off-by: Christoph Hellwig

    Robin Murphy
     
  • When an explicit DMA limit is described by firmware, we need to remember
    it regardless of how drivers might subsequently update their devices'
    masks. The new bus_dma_mask field does that.

    Signed-off-by: Robin Murphy
    Acked-by: Ard Biesheuvel
    Signed-off-by: Christoph Hellwig

    Robin Murphy
     
  • When of_dma_configure() was first born in 591c1ee465ce ("of: configure
    the platform device dma parameters"), everything DMA-related was
    factored out of of_platform_device_create_pdata() as seemed appropriate
    at the time. However, now that of_dma_configure() has grown into the
    generic handler for processing DMA-related properties from DT for all
    kinds of devices, it is no longer an appropriate place to be doing
    OF-platform-specific business. Since there are still plenty of platform
    drivers not setting their own masks and depending on the bus default,
    let's reinstate that inialisation in the OF-platform code itself, and
    restore the long-standing status quo from 0589342c2794 ("of: set
    dma_mask to point to coherent_dma_mask")

    Signed-off-by: Robin Murphy
    Acked-by: Rob Herring
    Signed-off-by: Christoph Hellwig

    Robin Murphy
     

21 Jul, 2018

1 commit


16 Jul, 2018

1 commit

  • A comment in the review of the patch adding the phandle cache said that
    the cache would have to be updated when modules are applied and removed.
    This patch implements the cache updates.

    Fixes: 0b3ce78e90fc ("of: cache phandle nodes to reduce cost of of_find_node_by_phandle()")
    Reported-by: Alan Tull
    Suggested-by: Alan Tull
    Signed-off-by: Frank Rowand
    Signed-off-by: Rob Herring

    Frank Rowand
     

14 Jul, 2018

1 commit

  • By a simple extension of of_phy_get_and_connect() drivers
    that have a fixed link on e.g. RGMII can support also
    fixed links, so in addition to:

    ethernet-port {
    phy-mode = "rgmii";
    phy-handle = ;
    };

    This setup with a fixed-link node and no phy-handle will
    now also work just fine:

    ethernet-port {
    phy-mode = "rgmii";
    fixed-link {
    speed = ;
    full-duplex;
    pause;
    };
    };

    This is very helpful for connecting random ethernet ports
    to e.g. DSA switches that typically reside on fixed links.

    The phy-mode is still there as the fixes link in this case
    is still an RGMII link.

    Tested on the Cortina Gemini driver with the Vitesse DSA
    router chip on a fixed 1Gbit link.

    Suggested-by: Andrew Lunn
    Signed-off-by: Linus Walleij
    Reviewed-by: Andrew Lunn
    Signed-off-by: David S. Miller

    Linus Walleij
     

10 Jul, 2018

1 commit


13 Jun, 2018

2 commits

  • Pull more overflow updates from Kees Cook:
    "The rest of the overflow changes for v4.18-rc1.

    This includes the explicit overflow fixes from Silvio, further
    struct_size() conversions from Matthew, and a bug fix from Dan.

    But the bulk of it is the treewide conversions to use either the
    2-factor argument allocators (e.g. kmalloc(a * b, ...) into
    kmalloc_array(a, b, ...) or the array_size() macros (e.g. vmalloc(a *
    b) into vmalloc(array_size(a, b)).

    Coccinelle was fighting me on several fronts, so I've done a bunch of
    manual whitespace updates in the patches as well.

    Summary:

    - Error path bug fix for overflow tests (Dan)

    - Additional struct_size() conversions (Matthew, Kees)

    - Explicitly reported overflow fixes (Silvio, Kees)

    - Add missing kvcalloc() function (Kees)

    - Treewide conversions of allocators to use either 2-factor argument
    variant when available, or array_size() and array3_size() as needed
    (Kees)"

    * tag 'overflow-v4.18-rc1-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: (26 commits)
    treewide: Use array_size in f2fs_kvzalloc()
    treewide: Use array_size() in f2fs_kzalloc()
    treewide: Use array_size() in f2fs_kmalloc()
    treewide: Use array_size() in sock_kmalloc()
    treewide: Use array_size() in kvzalloc_node()
    treewide: Use array_size() in vzalloc_node()
    treewide: Use array_size() in vzalloc()
    treewide: Use array_size() in vmalloc()
    treewide: devm_kzalloc() -> devm_kcalloc()
    treewide: devm_kmalloc() -> devm_kmalloc_array()
    treewide: kvzalloc() -> kvcalloc()
    treewide: kvmalloc() -> kvmalloc_array()
    treewide: kzalloc_node() -> kcalloc_node()
    treewide: kzalloc() -> kcalloc()
    treewide: kmalloc() -> kmalloc_array()
    mm: Introduce kvcalloc()
    video: uvesafb: Fix integer overflow in allocation
    UBIFS: Fix potential integer overflow in allocation
    leds: Use struct_size() in allocation
    Convert intel uncore to struct_size
    ...

    Linus Torvalds
     
  • The kzalloc() function has a 2-factor argument form, kcalloc(). This
    patch replaces cases of:

    kzalloc(a * b, gfp)

    with:
    kcalloc(a * b, gfp)

    as well as handling cases of:

    kzalloc(a * b * c, gfp)

    with:

    kzalloc(array3_size(a, b, c), gfp)

    as it's slightly less ugly than:

    kzalloc_array(array_size(a, b), c, gfp)

    This does, however, attempt to ignore constant size factors like:

    kzalloc(4 * 1024, gfp)

    though any constants defined via macros get caught up in the conversion.

    Any factors with a sizeof() of "unsigned char", "char", and "u8" were
    dropped, since they're redundant.

    The Coccinelle script used for this was:

    // Fix redundant parens around sizeof().
    @@
    type TYPE;
    expression THING, E;
    @@

    (
    kzalloc(
    - (sizeof(TYPE)) * E
    + sizeof(TYPE) * E
    , ...)
    |
    kzalloc(
    - (sizeof(THING)) * E
    + sizeof(THING) * E
    , ...)
    )

    // Drop single-byte sizes and redundant parens.
    @@
    expression COUNT;
    typedef u8;
    typedef __u8;
    @@

    (
    kzalloc(
    - sizeof(u8) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(__u8) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(char) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(unsigned char) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(u8) * COUNT
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(__u8) * COUNT
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(char) * COUNT
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(unsigned char) * COUNT
    + COUNT
    , ...)
    )

    // 2-factor product with sizeof(type/expression) and identifier or constant.
    @@
    type TYPE;
    expression THING;
    identifier COUNT_ID;
    constant COUNT_CONST;
    @@

    (
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * (COUNT_ID)
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * COUNT_ID
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * (COUNT_CONST)
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * COUNT_CONST
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * (COUNT_ID)
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * COUNT_ID
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * (COUNT_CONST)
    + COUNT_CONST, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * COUNT_CONST
    + COUNT_CONST, sizeof(THING)
    , ...)
    )

    // 2-factor product, only identifiers.
    @@
    identifier SIZE, COUNT;
    @@

    - kzalloc
    + kcalloc
    (
    - SIZE * COUNT
    + COUNT, SIZE
    , ...)

    // 3-factor product with 1 sizeof(type) or sizeof(expression), with
    // redundant parens removed.
    @@
    expression THING;
    identifier STRIDE, COUNT;
    type TYPE;
    @@

    (
    kzalloc(
    - sizeof(TYPE) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    )

    // 3-factor product with 2 sizeof(variable), with redundant parens removed.
    @@
    expression THING1, THING2;
    identifier COUNT;
    type TYPE1, TYPE2;
    @@

    (
    kzalloc(
    - sizeof(TYPE1) * sizeof(TYPE2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    kzalloc(
    - sizeof(THING1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    kzalloc(
    - sizeof(THING1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    )

    // 3-factor product, only identifiers, with redundant parens removed.
    @@
    identifier STRIDE, SIZE, COUNT;
    @@

    (
    kzalloc(
    - (COUNT) * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - (COUNT) * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - (COUNT) * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - (COUNT) * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    )

    // Any remaining multi-factor products, first at least 3-factor products,
    // when they're not all constants...
    @@
    expression E1, E2, E3;
    constant C1, C2, C3;
    @@

    (
    kzalloc(C1 * C2 * C3, ...)
    |
    kzalloc(
    - (E1) * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    kzalloc(
    - (E1) * (E2) * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    kzalloc(
    - (E1) * (E2) * (E3)
    + array3_size(E1, E2, E3)
    , ...)
    |
    kzalloc(
    - E1 * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    )

    // And then all remaining 2 factors products when they're not all constants,
    // keeping sizeof() as the second factor argument.
    @@
    expression THING, E1, E2;
    type TYPE;
    constant C1, C2, C3;
    @@

    (
    kzalloc(sizeof(THING) * C2, ...)
    |
    kzalloc(sizeof(TYPE) * C2, ...)
    |
    kzalloc(C1 * C2 * C3, ...)
    |
    kzalloc(C1 * C2, ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * (E2)
    + E2, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * E2
    + E2, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * (E2)
    + E2, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * E2
    + E2, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - (E1) * E2
    + E1, E2
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - (E1) * (E2)
    + E1, E2
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - E1 * E2
    + E1, E2
    , ...)
    )

    Signed-off-by: Kees Cook

    Kees Cook
     

12 Jun, 2018

1 commit

  • Pull ARM SoC late updates from Olof Johansson:
    "This is a branch with a few merge requests that either came in late,
    or took a while longer for us to review and merge than usual and thus
    cut it a bit close to the merge window. We stage them in a separate
    branch and if things look good, we still send them up -- and that's
    the case here.

    This is mostly DT additions for Renesas platforms, adding IP block
    descriptions for existing and new SoCs.

    There are also some driver updates for Qualcomm platforms for SMEM/QMI
    and GENI, which is their generalized serial protocol interface"

    * tag 'armsoc-late' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (186 commits)
    soc: qcom: smem: introduce qcom_smem_virt_to_phys()
    soc: qcom: qmi: fix a buffer sizing bug
    MAINTAINERS: Update pattern for qcom_scm
    soc: Unconditionally include qcom Makefile
    soc: qcom: smem: check sooner in qcom_smem_set_global_partition()
    soc: qcom: smem: fix qcom_smem_set_global_partition()
    soc: qcom: smem: fix off-by-one error in qcom_smem_alloc_private()
    soc: qcom: smem: byte swap values properly
    soc: qcom: smem: return proper type for cached entry functions
    soc: qcom: smem: fix first cache entry calculation
    soc: qcom: cmd-db: Make endian-agnostic
    drivers: qcom: add command DB driver
    arm64: dts: renesas: salvator-common: Add ADV7482 support
    ARM: dts: r8a7740: Add CEU1
    ARM: dts: r8a7740: Add CEU0
    arm64: dts: renesas: salvator-common: enable VIN
    arm64: dts: renesas: r8a77970: add VIN and CSI-2 nodes
    arm64: dts: renesas: r8a77965: add VIN and CSI-2 nodes
    arm64: dts: renesas: r8a7796: add VIN and CSI-2 nodes
    arm64: dts: renesas: r8a7795-es1: add CSI-2 node
    ...

    Linus Torvalds
     

08 Jun, 2018

1 commit

  • Pull DeviceTree updates from Rob Herring:

    - Sync dtc with upstream version v1.4.6-21-g84e414b0b5bc. This adds new
    warnings which are either fixed or disabled by default (enabled with
    W=1).

    - Validate an untrusted offset in DT overlay function
    update_usages_of_a_phandle_reference

    - Fix a use after free error of_platform_device_destroy

    - Fix an off by 1 string errors in unittest

    - Avoid creating a struct device for OPP nodes

    - Update DT specific submitting-patches.txt with patch content and
    subject requirements.

    - Move some bindings to their proper subsystem locations

    - Add vendor prefixes for Kaohsiung, SiFive, Avnet, Wi2Wi, Logic PD,
    and ArcherMind

    - Add documentation for "no-gpio-delays" property in FSI bus GPIO
    master

    - Add compatible for r8a77990 SoC ravb ethernet block

    - More wack-a-mole removal of 'status' property in examples

    * tag 'devicetree-for-4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (25 commits)
    dt-bindings: submitting-patches: add guidance on patch content and subject
    of: platform: stop accessing invalid dev in of_platform_device_destroy
    dt-bindings: net: ravb: Add support for r8a77990 SoC
    dt-bindings: Add vendor prefix for ArcherMind
    dt-bindings: fsi-master-gpio: Document "no-gpio-delays" property
    dt-bindings: Add vendor prefix for Logic PD
    of: overlay: validate offset from property fixups
    of: unittest: for strings, account for trailing \0 in property length field
    drm: rcar-du: disable dtc graph-endpoint warnings on DT overlays
    kbuild: disable new dtc graph and unit-address warnings
    scripts/dtc: Update to upstream version v1.4.6-21-g84e414b0b5bc
    MAINTAINERS: add keyword for devicetree overlay notifiers
    dt-bindings: define vendor prefix for Wi2Wi, Inc.
    dt-bindings: Add vendor prefix for Avnet, Inc.
    dt-bindings: Relocate Tegra20 memory controller bindings
    dt-bindings: Add "sifive" vendor prefix
    dt-bindings: exynos: move ADC binding to iio/adc/ directory
    dt-bindings: powerpc/4xx: move 4xx NDFC and EMAC bindings to subsystem directories
    dt-bindings: move various RNG bindings to rng/ directory
    dt-bindings: move various timer bindings to timer/ directory
    ...

    Linus Torvalds
     

07 Jun, 2018

1 commit

  • Pull networking updates from David Miller:

    1) Add Maglev hashing scheduler to IPVS, from Inju Song.

    2) Lots of new TC subsystem tests from Roman Mashak.

    3) Add TCP zero copy receive and fix delayed acks and autotuning with
    SO_RCVLOWAT, from Eric Dumazet.

    4) Add XDP_REDIRECT support to mlx5 driver, from Jesper Dangaard
    Brouer.

    5) Add ttl inherit support to vxlan, from Hangbin Liu.

    6) Properly separate ipv6 routes into their logically independant
    components. fib6_info for the routing table, and fib6_nh for sets of
    nexthops, which thus can be shared. From David Ahern.

    7) Add bpf_xdp_adjust_tail helper, which can be used to generate ICMP
    messages from XDP programs. From Nikita V. Shirokov.

    8) Lots of long overdue cleanups to the r8169 driver, from Heiner
    Kallweit.

    9) Add BTF ("BPF Type Format"), from Martin KaFai Lau.

    10) Add traffic condition monitoring to iwlwifi, from Luca Coelho.

    11) Plumb extack down into fib_rules, from Roopa Prabhu.

    12) Add Flower classifier offload support to igb, from Vinicius Costa
    Gomes.

    13) Add UDP GSO support, from Willem de Bruijn.

    14) Add documentation for eBPF helpers, from Quentin Monnet.

    15) Add TLS tx offload to mlx5, from Ilya Lesokhin.

    16) Allow applications to be given the number of bytes available to read
    on a socket via a control message returned from recvmsg(), from
    Soheil Hassas Yeganeh.

    17) Add x86_32 eBPF JIT compiler, from Wang YanQing.

    18) Add AF_XDP sockets, with zerocopy support infrastructure as well.
    From Björn Töpel.

    19) Remove indirect load support from all of the BPF JITs and handle
    these operations in the verifier by translating them into native BPF
    instead. From Daniel Borkmann.

    20) Add GRO support to ipv6 gre tunnels, from Eran Ben Elisha.

    21) Allow XDP programs to do lookups in the main kernel routing tables
    for forwarding. From David Ahern.

    22) Allow drivers to store hardware state into an ELF section of kernel
    dump vmcore files, and use it in cxgb4. From Rahul Lakkireddy.

    23) Various RACK and loss detection improvements in TCP, from Yuchung
    Cheng.

    24) Add TCP SACK compression, from Eric Dumazet.

    25) Add User Mode Helper support and basic bpfilter infrastructure, from
    Alexei Starovoitov.

    26) Support ports and protocol values in RTM_GETROUTE, from Roopa
    Prabhu.

    27) Support bulking in ->ndo_xdp_xmit() API, from Jesper Dangaard
    Brouer.

    28) Add lots of forwarding selftests, from Petr Machata.

    29) Add generic network device failover driver, from Sridhar Samudrala.

    * ra.kernel.org:/pub/scm/linux/kernel/git/davem/net-next: (1959 commits)
    strparser: Add __strp_unpause and use it in ktls.
    rxrpc: Fix terminal retransmission connection ID to include the channel
    net: hns3: Optimize PF CMDQ interrupt switching process
    net: hns3: Fix for VF mailbox receiving unknown message
    net: hns3: Fix for VF mailbox cannot receiving PF response
    bnx2x: use the right constant
    Revert "net: sched: cls: Fix offloading when ingress dev is vxlan"
    net: dsa: b53: Fix for brcm tag issue in Cygnus SoC
    enic: fix UDP rss bits
    netdev-FAQ: clarify DaveM's position for stable backports
    rtnetlink: validate attributes in do_setlink()
    mlxsw: Add extack messages for port_{un, }split failures
    netdevsim: Add extack error message for devlink reload
    devlink: Add extack to reload and port_{un, }split operations
    net: metrics: add proper netlink validation
    ipmr: fix error path when ipmr_new_table fails
    ip6mr: only set ip6mr_table from setsockopt when ip6mr_new_table succeeds
    net: hns3: remove unused hclgevf_cfg_func_mta_filter
    netfilter: provide udp*_lib_lookup for nf_tproxy
    qed*: Utilize FW 8.37.2.0
    ...

    Linus Torvalds
     

05 Jun, 2018

1 commit

  • Pull dma-mapping updates from Christoph Hellwig:

    - replace the force_dma flag with a dma_configure bus method. (Nipun
    Gupta, although one patch is іncorrectly attributed to me due to a
    git rebase bug)

    - use GFP_DMA32 more agressively in dma-direct. (Takashi Iwai)

    - remove PCI_DMA_BUS_IS_PHYS and rely on the dma-mapping API to do the
    right thing for bounce buffering.

    - move dma-debug initialization to common code, and apply a few
    cleanups to the dma-debug code.

    - cleanup the Kconfig mess around swiotlb selection

    - swiotlb comment fixup (Yisheng Xie)

    - a trivial swiotlb fix. (Dan Carpenter)

    - support swiotlb on RISC-V. (based on a patch from Palmer Dabbelt)

    - add a new generic dma-noncoherent dma_map_ops implementation and use
    it for arc, c6x and nds32.

    - improve scatterlist validity checking in dma-debug. (Robin Murphy)

    - add a struct device quirk to limit the dma-mask to 32-bit due to
    bridge/system issues, and switch x86 to use it instead of a local
    hack for VIA bridges.

    - handle devices without a dma_mask more gracefully in the dma-direct
    code.

    * tag 'dma-mapping-4.18' of git://git.infradead.org/users/hch/dma-mapping: (48 commits)
    dma-direct: don't crash on device without dma_mask
    nds32: use generic dma_noncoherent_ops
    nds32: implement the unmap_sg DMA operation
    nds32: consolidate DMA cache maintainance routines
    x86/pci-dma: switch the VIA 32-bit DMA quirk to use the struct device flag
    x86/pci-dma: remove the explicit nodac and allowdac option
    x86/pci-dma: remove the experimental forcesac boot option
    Documentation/x86: remove a stray reference to pci-nommu.c
    core, dma-direct: add a flag 32-bit dma limits
    dma-mapping: remove unused gfp_t parameter to arch_dma_alloc_attrs
    dma-debug: check scatterlist segments
    c6x: use generic dma_noncoherent_ops
    arc: use generic dma_noncoherent_ops
    arc: fix arc_dma_{map,unmap}_page
    arc: fix arc_dma_sync_sg_for_{cpu,device}
    arc: simplify arc_dma_sync_single_for_{cpu,device}
    dma-mapping: provide a generic dma-noncoherent implementation
    dma-mapping: simplify Kconfig dependencies
    riscv: add swiotlb support
    riscv: only enable ZONE_DMA32 for 64-bit
    ...

    Linus Torvalds
     

04 Jun, 2018

1 commit

  • Immediately after the platform_device_unregister() the device will be
    cleaned up. Accessing the freed pointer immediately after that will
    crash the system.

    Found this bug when kernel is built with CONFIG_PAGE_POISONING and testing
    loading/unloading audio drivers in a loop on Qcom platforms.

    Fix this by moving of_node_clear_flag() just before the unregister calls.

    Below is the crash trace:

    Unable to handle kernel paging request at virtual address 6b6b6b6b6b6c03
    Mem abort info:
    ESR = 0x96000021
    Exception class = DABT (current EL), IL = 32 bits
    SET = 0, FnV = 0
    EA = 0, S1PTW = 0
    Data abort info:
    ISV = 0, ISS = 0x00000021
    CM = 0, WnR = 0
    [006b6b6b6b6b6c03] address between user and kernel address ranges
    Internal error: Oops: 96000021 [#1] PREEMPT SMP
    Modules linked in:
    CPU: 2 PID: 1784 Comm: sh Tainted: G W 4.17.0-rc7-02230-ge3a63a7ef641-dirty #204
    Hardware name: Qualcomm Technologies, Inc. APQ 8016 SBC (DT)
    pstate: 80000005 (Nzcv daif -PAN -UAO)
    pc : clear_bit+0x18/0x2c
    lr : of_platform_device_destroy+0x64/0xb8
    sp : ffff00000c9c3930
    x29: ffff00000c9c3930 x28: ffff80003d39b200
    x27: ffff000008bb1000 x26: 0000000000000040
    x25: 0000000000000124 x24: ffff80003a9a3080
    x23: 0000000000000060 x22: ffff00000939f518
    x21: ffff80003aa79e98 x20: ffff80003aa3dae0
    x19: ffff80003aa3c890 x18: ffff800009feb794
    x17: 0000000000000000 x16: 0000000000000000
    x15: ffff800009feb790 x14: 0000000000000000
    x13: ffff80003a058778 x12: ffff80003a058728
    x11: ffff80003a058750 x10: 0000000000000000
    x9 : 0000000000000006 x8 : ffff80003a825988
    x7 : bbbbbbbbbbbbbbbb x6 : 0000000000000001
    x5 : 0000000000000000 x4 : 0000000000000001
    x3 : 0000000000000008 x2 : 0000000000000001
    x1 : 6b6b6b6b6b6b6c03 x0 : 0000000000000000
    Process sh (pid: 1784, stack limit = 0x (ptrval))
    Call trace:
    clear_bit+0x18/0x2c
    q6afe_remove+0x20/0x38
    apr_device_remove+0x30/0x70
    device_release_driver_internal+0x170/0x208
    device_release_driver+0x14/0x20
    bus_remove_device+0xcc/0x150
    device_del+0x10c/0x310
    device_unregister+0x1c/0x70
    apr_remove_device+0xc/0x18
    device_for_each_child+0x50/0x80
    apr_remove+0x18/0x20
    rpmsg_dev_remove+0x38/0x68
    device_release_driver_internal+0x170/0x208
    device_release_driver+0x14/0x20
    bus_remove_device+0xcc/0x150
    device_del+0x10c/0x310
    device_unregister+0x1c/0x70
    qcom_smd_remove_device+0xc/0x18
    device_for_each_child+0x50/0x80
    qcom_smd_unregister_edge+0x3c/0x70
    smd_subdev_remove+0x18/0x28
    rproc_stop+0x48/0xd8
    rproc_shutdown+0x60/0xe8
    state_store+0xbc/0xf8
    dev_attr_store+0x18/0x28
    sysfs_kf_write+0x3c/0x50
    kernfs_fop_write+0x118/0x1e0
    __vfs_write+0x18/0x110
    vfs_write+0xa4/0x1a8
    ksys_write+0x48/0xb0
    sys_write+0xc/0x18
    el0_svc_naked+0x30/0x34
    Code: d2800022 8b400c21 f9800031 9ac32043 (c85f7c22)
    ---[ end trace 32020935775616a2 ]---

    Signed-off-by: Srinivas Kandagatla
    Cc: stable@vger.kernel.org
    Signed-off-by: Rob Herring

    Srinivas Kandagatla
     

27 May, 2018

1 commit

  • …it/agross/linux into next/late

    Qualcomm ARM Based Driver Updates for v4.18

    * Various SMEM updates/fixes
    * Add qcom_smem_virt_to_phys SMEM API
    * Update MAINTAINERS to include qcom_scm pattern
    * Add Qualcomm Command DB driver
    * Add Qualcomm SCM compatible for IPQ4019
    * Add MSM8998 to smd-rpm compatible list
    * Add Qualcomm GENI based QUP wrapper
    * Fix Qualcomm QMI buffer sizing bug

    * tag 'qcom-drivers-for-4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/agross/linux:
    soc: qcom: smem: introduce qcom_smem_virt_to_phys()
    soc: qcom: qmi: fix a buffer sizing bug
    MAINTAINERS: Update pattern for qcom_scm
    soc: Unconditionally include qcom Makefile
    soc: qcom: smem: check sooner in qcom_smem_set_global_partition()
    soc: qcom: smem: fix qcom_smem_set_global_partition()
    soc: qcom: smem: fix off-by-one error in qcom_smem_alloc_private()
    soc: qcom: smem: byte swap values properly
    soc: qcom: smem: return proper type for cached entry functions
    soc: qcom: smem: fix first cache entry calculation
    soc: qcom: cmd-db: Make endian-agnostic
    drivers: qcom: add command DB driver
    soc: qcom: Add GENI based QUP Wrapper driver
    soc: qcom: smd-rpm: Add msm8998 compatible
    firmware: qcom: scm: Add ipq4019 soc compatible

    Signed-off-by: Olof Johansson <olof@lixom.net>

    Olof Johansson