1. 09 7月, 2015 23 次提交
    • D
      3c59x: Fix shared IRQ handling · 4eed4d8f
      Denys Vlasenko 提交于
      As its first order of business, boomerang_interrupt() checks whether
      the device really has any pending interrupts. If it does not,
      it does nothing and returns, but it still returns IRQ_HANDLED.
      
      This is wrong: interrupt was not handled, IRQ handlers of other
      devices sharing this IRQ line need to be called.
      
      vortex_interrupt() has it right: it returns IRQ_NONE in this case
      via IRQ_RETVAL(0).
      
      Do the same in boomerang_interrupt().
      Signed-off-by: NDenys Vlasenko <dvlasenk@redhat.com>
      CC: David S. Miller <davem@davemloft.net>
      CC: linux-kernel@vger.kernel.org
      CC: netdev@vger.kernel.org
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4eed4d8f
    • N
      vmxnet3: prevent receive getting out of sequence on napi poll · 0769636c
      Neil Horman 提交于
      vmxnet3's current napi path is built to count every rx descriptor we recieve,
      and use that as a count of the napi budget.  That means its possible to return
      from a napi poll halfway through recieving a fragmented packet accross multiple
      dma descriptors.  If that happens, the next napi poll will start with the
      descriptor ring in an improper state (e.g. the first descriptor we look at may
      have the end-of-packet bit set), which will cause a BUG halt in the driver.
      
      Fix the issue by only counting whole received packets in the napi poll and
      returning that value, rather than the descriptor count.
      
      Tested by the reporter and myself, successfully
      Signed-off-by: NNeil Horman <nhorman@tuxdriver.com>
      CC: Shreyas Bhatewara <sbhatewara@vmware.com>
      CC: "David S. Miller" <davem@davemloft.net>
      Acked-by: NAndy Gospodarek <gospo@cumulusnetworks.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0769636c
    • A
      ipv4: add support for linkdown sysctl to netconf · 974d7af5
      Andy Gospodarek 提交于
      This kernel patch exports the value of the new
      ignore_routes_with_linkdown via netconf.
      
      v2: changes to notify userspace via netlink when sysctl values change
      and proposed for 'net' since this could be considered a bugfix
      Signed-off-by: NAndy Gospodarek <gospo@cumulusnetworks.com>
      Suggested-by: NNicolas Dichtel <nicolas.dichtel@6wind.com>
      Acked-by: NNicolas Dichtel <nicolas.dichtel@6wind.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      974d7af5
    • S
      sfc: Ensure down_write(&filter_sem) and up_write() are matched before calling efx_net_open() · 671b53ee
      Shradha Shah 提交于
      This patch avoids the double up_write to filter_sem if
      efx_net_open() fails.
      
      Resolves: 2d432f20Signed-off-by: NShradha Shah <sshah@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      671b53ee
    • N
      bridge: mdb: zero out the local br_ip variable before use · f1158b74
      Nikolay Aleksandrov 提交于
      Since commit b0e9a30d ("bridge: Add vlan id to multicast groups")
      there's a check in br_ip_equal() for a matching vlan id, but the mdb
      functions were not modified to use (or at least zero it) so when an
      entry was added it would have a garbage vlan id (from the local br_ip
      variable in __br_mdb_add/del) and this would prevent it from being
      matched and also deleted. So zero out the whole local ip var to protect
      ourselves from future changes and also to fix the current bug, since
      there's no vlan id support in the mdb uapi - use always vlan id 0.
      Example before patch:
      root@debian:~# bridge mdb add dev br0 port eth1 grp 239.0.0.1 permanent
      root@debian:~# bridge mdb
      dev br0 port eth1 grp 239.0.0.1 permanent
      root@debian:~# bridge mdb del dev br0 port eth1 grp 239.0.0.1 permanent
      RTNETLINK answers: Invalid argument
      
      After patch:
      root@debian:~# bridge mdb add dev br0 port eth1 grp 239.0.0.1 permanent
      root@debian:~# bridge mdb
      dev br0 port eth1 grp 239.0.0.1 permanent
      root@debian:~# bridge mdb del dev br0 port eth1 grp 239.0.0.1 permanent
      root@debian:~# bridge mdb
      Signed-off-by: NNikolay Aleksandrov <razor@blackwall.org>
      Fixes: b0e9a30d ("bridge: Add vlan id to multicast groups")
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f1158b74
    • M
      drivers: net: cpsw: fix crash while accessing second slave ethernet interface · 1973db0d
      Mugunthan V N 提交于
      When cpsw's number of slave is set to 1 in device tree and while
      accessing second slave ndev and priv in cpsw_tx_interrupt(),
      there is a kernel crash. This is due to cpsw_get_slave_priv()
      not verifying number of slaves while retriving netdev priv and
      returns a invalid memory region. Fixing the issue by introducing
      number of slave check in cpsw_get_slave_priv() and
      cpsw_get_slave_ndev().
      
      [   15.879589] Unable to handle kernel paging request at virtual address 0f0e142c
      [   15.888540] pgd = ed374000
      [   15.891359] [0f0e142c] *pgd=00000000
      [   15.895105] Internal error: Oops: 5 [#1] SMP ARM
      [   15.899936] Modules linked in:
      [   15.903139] CPU: 0 PID: 593 Comm: udhcpc Tainted: G        W       4.1.0-12205-gfda8b18c-dirty #10
      [   15.912386] Hardware name: Generic AM43 (Flattened Device Tree)
      [   15.918557] task: ed2a2e00 ti: ed3fe000 task.ti: ed3fe000
      [   15.924187] PC is at cpsw_tx_interrupt+0x30/0x44
      [   15.929008] LR is at _raw_spin_unlock_irqrestore+0x40/0x44
      [   15.934726] pc : [<c048b9cc>]    lr : [<c05ef4f4>]    psr: 20000193
      [   15.934726] sp : ed3ffc08  ip : ed2a2e40  fp : 00000000
      [   15.946685] r10: c0969ce8  r9 : c0969cfc  r8 : 00000000
      [   15.952129] r7 : 000000c6  r6 : ee54ab00  r5 : ee169c64  r4 : ee534e00
      [   15.958932] r3 : 0f0e0d0c  r2 : 00000000  r1 : ed3ffbc0  r0 : 00000001
      [   15.965735] Flags: nzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
      [   15.973261] Control: 10c5387d  Table: ad374059  DAC: 00000015
      [   15.979246] Process udhcpc (pid: 593, stack limit = 0xed3fe218)
      [   15.985414] Stack: (0xed3ffc08 to 0xed400000)
      [   15.989954] fc00:                   ee54ab00 c009928c c0a9e648 60000193 000032e4 ee169c00
      [   15.998478] fc20: ee169c64 ee169c00 ee169c64 ee54ab00 00000001 00000001 ee67e268 ee008800
      [   16.006995] fc40: ee534800 c009946c ee169c00 ee169c64 c08bd660 c009c370 c009c2a4 000000c6
      [   16.015513] fc60: c08b75c4 c08b0854 00000000 c0098b3c 000000c6 c0098c50 ed3ffcb0 0000003a
      [   16.024033] fc80: ed3ffcb0 fa24010c c08b7800 fa240100 ee7e9880 c00094c4 c05ef4e8 60000013
      [   16.032556] fca0: ffffffff ed3ffce4 ee7e9880 c05ef964 00000001 ed2a33d8 00000000 ed2a2e00
      [   16.041080] fcc0: 60000013 ee536bf8 60000013 ee51b800 ee7e9880 ee67e268 ee7e9880 ee534800
      [   16.049603] fce0: c0ad0768 ed3ffcf8 c008e910 c05ef4e8 60000013 ffffffff 00000001 00000001
      [   16.058121] fd00: ee536bf8 c0487a04 00000000 00000000 ee534800 00000000 00000156 c048c990
      [   16.066645] fd20: 00000000 00000000 c0969f40 00000000 00000000 c05000e8 00000001 00000000
      [   16.075167] fd40: 00000000 c051eefc 00000000 ee67e268 00000000 00000000 ee51b800 ed3ffd9c
      [   16.083690] fd60: 00000000 ee67e200 ee51b800 ee7e9880 ee67e268 00000000 00000000 ee67e200
      [   16.092211] fd80: ee51b800 ee7e9880 ee67e268 ee534800 ee67e200 c051eedc ee67e268 00000010
      [   16.100727] fda0: 00000000 00000000 ee7e9880 ee534800 00000000 ee67e268 ee51b800 c05006fc
      [   16.109247] fdc0: ee67e268 00000001 c0500488 00000156 ee7e9880 00000000 ed3fe000 fffffff4
      [   16.117771] fde0: ed3fff1c ee7e9880 ee534800 00000148 00000000 ed1f8340 00000000 00000000
      [   16.126289] fe00: 00000000 c05a9054 00000000 00000000 00000156 c0ab62a8 00000010 ed3e7000
      [   16.134812] fe20: 00000000 00000008 edcfb700 ed3fff1c c0fb5f94 ed2a2e00 c0fb5f64 000005d8
      [   16.143336] fe40: c0a9b3b8 00000000 ed3e7070 00000000 00000000 00000000 00009f40 00000000
      [   16.151858] fe60: 00000000 00020022 00110008 00000000 00000000 43004400 00000000 ffffffff
      [   16.160374] fe80: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      [   16.168898] fea0: edcfb700 bee5f380 00000014 00000000 ed3fe000 00000000 00004400 c04e2b64
      [   16.177415] fec0: 00000002 c04e3b00 ed3ffeec 00000001 0000011a 00000000 00000000 bee5f394
      [   16.185937] fee0: 00000148 ed3fff10 00000014 00000001 00000000 00000000 ed3ffee4 00000000
      [   16.194459] ff00: 00000000 00000000 00000000 c04e3664 00080011 00000002 06000000 ffffffff
      [   16.202980] ff20: 0000ffff ffffffff 0000ffff c008dd54 ee5a6f08 ee636e80 c096972d c0089c14
      [   16.211499] ff40: 00000000 60000013 ee5a6f40 60000013 00000000 ee5a6f40 00000002 00000006
      [   16.220023] ff60: 00000000 edcfb700 00000001 ed2a2e00 c000f60c 00000001 0000011a c008ea34
      [   16.228540] ff80: 00000006 00000000 bee5f380 00000014 bee5f380 00000014 bee5f380 00000122
      [   16.237059] ffa0: c000f7c4 c000f5e0 bee5f380 00000014 00000006 bee5f394 00000148 00000000
      [   16.245581] ffc0: bee5f380 00000014 bee5f380 00000122 fffffd6e 00004300 00004800 00004400
      [   16.254104] ffe0: bee5f378 bee5f36c 000307ec b6f39044 40000010 00000006 ed36fa40 00000000
      [   16.262642] [<c048b9cc>] (cpsw_tx_interrupt) from [<c009928c>] (handle_irq_event_percpu+0x64/0x204)
      [   16.272076] [<c009928c>] (handle_irq_event_percpu) from [<c009946c>] (handle_irq_event+0x40/0x64)
      [   16.281330] [<c009946c>] (handle_irq_event) from [<c009c370>] (handle_fasteoi_irq+0xcc/0x1a8)
      [   16.290220] [<c009c370>] (handle_fasteoi_irq) from [<c0098b3c>] (generic_handle_irq+0x20/0x30)
      [   16.299197] [<c0098b3c>] (generic_handle_irq) from [<c0098c50>] (__handle_domain_irq+0x64/0xdc)
      [   16.308273] [<c0098c50>] (__handle_domain_irq) from [<c00094c4>] (gic_handle_irq+0x20/0x60)
      [   16.316987] [<c00094c4>] (gic_handle_irq) from [<c05ef964>] (__irq_svc+0x44/0x5c)
      [   16.324779] Exception stack(0xed3ffcb0 to 0xed3ffcf8)
      [   16.330044] fca0:                                     00000001 ed2a33d8 00000000 ed2a2e00
      [   16.338567] fcc0: 60000013 ee536bf8 60000013 ee51b800 ee7e9880 ee67e268 ee7e9880 ee534800
      [   16.347090] fce0: c0ad0768 ed3ffcf8 c008e910 c05ef4e8 60000013 ffffffff
      [   16.353987] [<c05ef964>] (__irq_svc) from [<c05ef4e8>] (_raw_spin_unlock_irqrestore+0x34/0x44)
      [   16.362973] [<c05ef4e8>] (_raw_spin_unlock_irqrestore) from [<c0487a04>] (cpdma_check_free_tx_desc+0x60/0x6c)
      [   16.373311] [<c0487a04>] (cpdma_check_free_tx_desc) from [<c048c990>] (cpsw_ndo_start_xmit+0xb4/0x1ac)
      [   16.383017] [<c048c990>] (cpsw_ndo_start_xmit) from [<c05000e8>] (dev_hard_start_xmit+0x2a4/0x4c0)
      [   16.392364] [<c05000e8>] (dev_hard_start_xmit) from [<c051eedc>] (sch_direct_xmit+0xf4/0x210)
      [   16.401246] [<c051eedc>] (sch_direct_xmit) from [<c05006fc>] (__dev_queue_xmit+0x2ac/0x7bc)
      [   16.409960] [<c05006fc>] (__dev_queue_xmit) from [<c05a9054>] (packet_sendmsg+0xc68/0xeb4)
      [   16.418585] [<c05a9054>] (packet_sendmsg) from [<c04e2b64>] (sock_sendmsg+0x14/0x24)
      [   16.426663] [<c04e2b64>] (sock_sendmsg) from [<c04e3b00>] (SyS_sendto+0xb4/0xe0)
      [   16.434377] [<c04e3b00>] (SyS_sendto) from [<c000f5e0>] (ret_fast_syscall+0x0/0x54)
      [   16.442360] Code: e5943118 e593303c e3530000 0a000002 (e5930720)
      [   16.448716] ---[ end trace a68159f094d85ba6 ]---
      [   16.453526] Kernel panic - not syncing: Fatal exception in interrupt
      [   16.460149] ---[ end Kernel panic - not syncing: Fatal exception in interrupt
      Signed-off-by: NMugunthan V N <mugunthanvnm@ti.com>
      Cc: <stable@vger.kernel.org> # v3.8+
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1973db0d
    • S
      net/tipc: initialize security state for new connection socket · fdd75ea8
      Stephen Smalley 提交于
      Calling connect() with an AF_TIPC socket would trigger a series
      of error messages from SELinux along the lines of:
      SELinux: Invalid class 0
      type=AVC msg=audit(1434126658.487:34500): avc:  denied  { <unprintable> }
        for pid=292 comm="kworker/u16:5" scontext=system_u:system_r:kernel_t:s0
        tcontext=system_u:object_r:unlabeled_t:s0 tclass=<unprintable>
        permissive=0
      
      This was due to a failure to initialize the security state of the new
      connection sock by the tipc code, leaving it with junk in the security
      class field and an unlabeled secid.  Add a call to security_sk_clone()
      to inherit the security state from the parent socket.
      Reported-by: NTim Shearer <tim.shearer@overturenetworks.com>
      Signed-off-by: NStephen Smalley <sds@tycho.nsa.gov>
      Acked-by: NPaul Moore <paul@paul-moore.com>
      Acked-by: NYing Xue <ying.xue@windriver.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fdd75ea8
    • D
      Merge branch 'sfc-set-mac' · 4df48e8c
      David S. Miller 提交于
      Shradha Shah says:
      
      ====================
      sfc: compat for lack of VADAPTOR_SET_MAC in adaptor_firmware <= 4.1.1.1023
      
      This patch series resolves an incompatibility with legacy
      firmware due to the lack of MC_CMD_VADAPTOR_SET_MAC in
      adaptor_firmware <= 4.1.1.1023
      
      Unless this patch series is applied there will be a compatibility
      issue between the driver and Solarflare adapters running older
      firmware.
      
      Tested with and without CONFIG_SFC_SRIOV
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4df48e8c
    • D
    • D
      sfc: add legacy method for changing a PF's MAC address · 7a186f47
      Daniel Pieczko 提交于
      Some versions of MCFW do not support the MC_CMD_VADAPTOR_SET_MAC
      command, and ENOSYS will be returned.
      
      If the PF created its own vport, the function's datapath must be
      stopped and the vport can be reconfigured to reflect the new MAC
      address.
      
      If the MCFW created the vport for the PF (which is the case when
      the nic_data->vport_mac is blank), nothing further needs to be
      done as the vport is not under the control of the PF.
      
      This only applies to PFs because the MCFW in question does not
      support VFs.
      Signed-off-by: NShradha Shah <sshah@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7a186f47
    • D
      sfc: refactor code in efx_ef10_set_mac_address() · 9e9f665a
      Daniel Pieczko 提交于
      Re-organize the structure of error handling to avoid having
      to duplicate the netif_err() around the ifdefs.
      
      The only change to the behaviour of the error-handling is that
      the PF's data structure to record VF details should only be
      updated if the original command succeeded.
      Signed-off-by: NShradha Shah <sshah@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9e9f665a
    • M
      bonding: "primary_reselect" with "failure" is not working properly · b5a983f3
      Mazhar Rana 提交于
      When "primary_reselect" is set to "failure", primary interface should
      not become active until current active slave is down. But if we set first
      member of bond device as a "primary" interface and "primary_reselect"
      is set to "failure" then whenever primary interface's link get back(up)
      it become active slave even if current active slave is still up.
      
      With this patch, "bond_find_best_slave" will not traverse members if
      primary interface is not candidate for failover/reselection and current
      active slave is still up.
      Signed-off-by: NMazhar Rana <mazhar.rana@cyberoam.com>
      Signed-off-by: NJay Vosburgh <j.vosburgh@gmail.com>
      Signed-off-by: NJay Vosburgh <jay.vosburgh@canonical.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b5a983f3
    • T
      ip_tunnel: fix ipv4 pmtu check to honor inner ip header df · fc24f2b2
      Timo Teräs 提交于
      Frag needed should be sent only if the inner header asked
      to not fragment. Currently fragmentation is broken if the
      tunnel has df set, but df was not asked in the original
      packet. The tunnel's df needs to be still checked to update
      internally the pmtu cache.
      
      Commit 23a3647b broke it, and this commit fixes
      the ipv4 df check back to the way it was.
      
      Fixes: 23a3647b ("ip_tunnels: Use skb-len to PMTU check.")
      Cc: Pravin B Shelar <pshelar@nicira.com>
      Signed-off-by: NTimo Teräs <timo.teras@iki.fi>
      Acked-by: NPravin B Shelar <pshelar@nicira.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fc24f2b2
    • D
      rtnetlink: verify IFLA_VF_INFO attributes before passing them to driver · 4f7d2cdf
      Daniel Borkmann 提交于
      Jason Gunthorpe reported that since commit c02db8c6 ("rtnetlink: make
      SR-IOV VF interface symmetric"), we don't verify IFLA_VF_INFO attributes
      anymore with respect to their policy, that is, ifla_vfinfo_policy[].
      
      Before, they were part of ifla_policy[], but they have been nested since
      placed under IFLA_VFINFO_LIST, that contains the attribute IFLA_VF_INFO,
      which is another nested attribute for the actual VF attributes such as
      IFLA_VF_MAC, IFLA_VF_VLAN, etc.
      
      Despite the policy being split out from ifla_policy[] in this commit,
      it's never applied anywhere. nla_for_each_nested() only does basic nla_ok()
      testing for struct nlattr, but it doesn't know about the data context and
      their requirements.
      
      Fix, on top of Jason's initial work, does 1) parsing of the attributes
      with the right policy, and 2) using the resulting parsed attribute table
      from 1) instead of the nla_for_each_nested() loop (just like we used to
      do when still part of ifla_policy[]).
      
      Reference: http://thread.gmane.org/gmane.linux.network/368913
      Fixes: c02db8c6 ("rtnetlink: make SR-IOV VF interface symmetric")
      Reported-by: NJason Gunthorpe <jgunthorpe@obsidianresearch.com>
      Cc: Chris Wright <chrisw@sous-sol.org>
      Cc: Sucheta Chakraborty <sucheta.chakraborty@qlogic.com>
      Cc: Greg Rose <gregory.v.rose@intel.com>
      Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
      Cc: Rony Efraim <ronye@mellanox.com>
      Cc: Vlad Zolotarov <vladz@cloudius-systems.com>
      Cc: Nicolas Dichtel <nicolas.dichtel@6wind.com>
      Cc: Thomas Graf <tgraf@suug.ch>
      Signed-off-by: NJason Gunthorpe <jgunthorpe@obsidianresearch.com>
      Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: NVlad Zolotarov <vladz@cloudius-systems.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4f7d2cdf
    • A
      net: fec: Ensure clocks are enabled while using mdio bus · 6c3e921b
      Andrew Lunn 提交于
      When a switch is attached to the mdio bus, the mdio bus can be used
      while the interface is not open. If the IPG clock is not enabled, MDIO
      reads/writes will simply time out.
      
      Add support for runtime PM to control this clock. Enable/disable this
      clock using runtime PM, with open()/close() and mdio read()/write()
      function triggering runtime PM operations. Since PM is optional, the
      IPG clock is enabled at probe and is no longer modified by
      fec_enet_clk_enable(), thus if PM is not enabled in the kernel, it is
      guaranteed the clock is running when MDIO operations are performed.
      Signed-off-by: NAndrew Lunn <andrew@lunn.ch>
      Acked-by: NFugang Duan <B38611@freescale.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6c3e921b
    • L
      amd-xgbe: Fix DMA API debug warning · cfbfd86b
      Lendacky, Thomas 提交于
      When running a kernel configured with CONFIG_DMA_API_DEBUG=y a warning
      is issued:
        DMA-API: device driver tries to sync DMA memory it has not allocated
      
      This warning is the result of mapping the full range of the Rx buffer
      pages allocated and then performing a dma_sync_single_for_cpu against
      a calculated DMA address. The proper thing to do is to use the
      dma_sync_single_range_for_cpu with a base DMA address and an offset.
      Reported-by: NKim Phillips <kim.phillips@arm.com>
      Signed-off-by: NTom Lendacky <thomas.lendacky@amd.com>
      Tested-by: NKim Phillips <kim.phillips@arm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cfbfd86b
    • N
      Revert "dev: set iflink to 0 for virtual interfaces" · 95ec655b
      Nicolas Dichtel 提交于
      This reverts commit e1622baf.
      
      The side effect of this commit is to add a '@NONE' after each virtual
      interface name with a 'ip link'. It may break existing scripts.
      Reported-by: NOlivier Hartkopp <socketcan@hartkopp.net>
      Signed-off-by: NNicolas Dichtel <nicolas.dichtel@6wind.com>
      Tested-by: NOliver Hartkopp <socketcan@hartkopp.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      95ec655b
    • E
      net: graceful exit from netif_alloc_netdev_queues() · d339727c
      Eric Dumazet 提交于
      User space can crash kernel with
      
      ip link add ifb10 numtxqueues 100000 type ifb
      
      We must replace a BUG_ON() by proper test and return -EINVAL for
      crazy values.
      
      Fixes: 60877a32 ("net: allow large number of tx queues")
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d339727c
    • P
      rhashtable: fix for resize events during table walk · 142b942a
      Phil Sutter 提交于
      If rhashtable_walk_next detects a resize operation in progress, it jumps
      to the new table and continues walking that one. But it misses to drop
      the reference to it's current item, leading it to continue traversing
      the new table's bucket in which the current item is sorted into, and
      after reaching that bucket's end continues traversing the new table's
      second bucket instead of the first one, thereby potentially missing
      items.
      
      This fixes the rhashtable runtime test for me. Bug probably introduced
      by Herbert Xu's patch eddee5ba ("rhashtable: Fix walker behaviour during
      rehash") although not explicitly tested.
      
      Fixes: eddee5ba ("rhashtable: Fix walker behaviour during rehash")
      Signed-off-by: NPhil Sutter <phil@nwl.cc>
      Acked-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      142b942a
    • S
      bridge: mdb: start delete timer for temp static entries · f7e2965d
      Satish Ashok 提交于
      Start the delete timer when adding temp static entries so they can expire.
      Signed-off-by: NSatish Ashok <sashok@cumulusnetworks.com>
      Signed-off-by: NNikolay Aleksandrov <nikolay@cumulusnetworks.com>
      Fixes: ccb1c31a ("bridge: add flags to distinguish permanent mdb entires")
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f7e2965d
    • R
      net: phy: add dependency on HAS_IOMEM to MDIO_BUS_MUX_MMIOREG · cfa52005
      Rob Herring 提交于
      On UML builds, mdio-mux-mmioreg.c fails to compile:
      
      drivers/net/phy/mdio-mux-mmioreg.c:50:3: error: implicit declaration of function ‘ioremap’ [-Werror=implicit-function-declaration]
      drivers/net/phy/mdio-mux-mmioreg.c:63:3: error: implicit declaration of function ‘iounmap’ [-Werror=implicit-function-declaration]
      
      This is due to CONFIG_OF now being user selectable. Add a dependency on
      HAS_IOMEM to fix this.
      Signed-off-by: NRob Herring <robh@kernel.org>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: David S. Miller <davem@davemloft.net>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cfa52005
    • R
      NET: hamradio: Fix IP over bpq encapsulation. · aa43c5ff
      Ralf Baechle 提交于
      Since 1d5da757 (ax25: Stop using magic
      neighbour cache operations.) any attempt to transmit IP packets over
      a bpqether device will result in a message like "Dead loop on virtual
      device bpq0, fix it urgently!"
      
      Fix suggested by Eric W. Biederman <ebiederm@xmission.com>.
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      Cc: <stable@vger.kernel.org> # 4.1
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      aa43c5ff
    • E
      net_sched: gen_estimator: extend pps limit · 32f675bb
      Eric Dumazet 提交于
      rate estimators are limited to 4 Mpps, which was fine years ago, but
      too small with current hardware generation.
      
      Lets use 2^5 scaling instead of 2^10 to get 128 Mpps new limit.
      
      On 64bit arch, use an "unsigned long" for temp storage and remove limit.
      (We do not expect 32bit arches to be able to reach this point)
      
      Tested:
      
      tc -s -d filter sh dev eth0 parent ffff:
      
      filter protocol ip pref 1 u32
      filter protocol ip pref 1 u32 fh 800: ht divisor 1
      filter protocol ip pref 1 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:15
        match 07000000/ff000000 at 12
      	action order 1: gact action drop
      	 random type none pass val 0
      	 index 1 ref 1 bind 1 installed 166 sec
       	Action statistics:
      	Sent 39734251496 bytes 863788076 pkt (dropped 863788117, overlimits 0 requeues 0)
      	rate 4067Mbit 11053596pps backlog 0b 0p requeues 0
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Acked-by: NAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      32f675bb
  2. 04 7月, 2015 5 次提交
  3. 03 7月, 2015 9 次提交
    • N
      bridge: vlan: fix usage of vlan 0 and 4095 again · 462e1ead
      Nikolay Aleksandrov 提交于
      Vlan ids 0 and 4095 were disallowed by commit:
      8adff41c ("bridge: Don't use VID 0 and 4095 in vlan filtering")
      but then the check was removed when vlan ranges were introduced by:
      bdced7ef ("bridge: support for multiple vlans and vlan ranges in setlink and dellink requests")
      So reintroduce the vlan range check.
      Before patch:
      [root@testvm ~]# bridge vlan add vid 0 dev eth0 master
      (succeeds)
      After Patch:
      [root@testvm ~]# bridge vlan add vid 0 dev eth0 master
      RTNETLINK answers: Invalid argument
      Signed-off-by: NNikolay Aleksandrov <nikolay@cumulusnetworks.com>
      Fixes: bdced7ef ("bridge: support for multiple vlans and vlan ranges in setlink and dellink requests")
      Acked-by: NToshiaki Makita <toshiaki.makita1@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      462e1ead
    • D
      Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth · c4555d16
      David S. Miller 提交于
      Johan Hedberg says:
      
      ====================
      pull request: bluetooth 2015-07-02
      
      A couple of regressions crept in because of a patch to use proper list
      APIs rather than manually reading & writing the next/prev pointers
      (commit 835a6a2f). Turns out this was
      masking a few bugs: a missing INIT_LIST_HEAD() call and incorrectly
      using list_del() rather than list_del_init(). The two patches in this
      set fix these, and it'd be nice they could still make it to 4.2-rc1 to
      avoid new bug reports from users.
      
      Please let me know if there are any issues pulling. Thanks.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c4555d16
    • G
      enic: fix issues in enic_poll · 25c14ef8
      Govindarajulu Varadarajan 提交于
      In enic_poll, we clean tx and rx queues, when low latency busy socket polling
      is happening, enic_poll will only clean tx queue. After cleaning tx, it should
      return total budget for re-poll.
      
      There is a small window between vnic_intr_unmask() and enic_poll_unlock_napi().
      In this window if an irq occurs and napi is scheduled on different cpu, it tries
      to acquire enic_poll_lock_napi() and fails. Unlock napi_poll before unmasking
      the interrupt.
      
      v2:
      Do not change tx wonk done behaviour. Consider only rx work done for completing
      napi.
      Signed-off-by: NGovindarajulu Varadarajan <_govind@gmx.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      25c14ef8
    • L
      Merge tag 'module-misc-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux · a611fb75
      Linus Torvalds 提交于
      Pull init.h/module.h fragility fixes from Paul Gortmaker:
       "Fixup various init.h misuses that are fragile wrt code moving to
        module.h
      
        What started as a removal of no longer required include <linux/init.h>
        due to the earlier __cpuinit and __devinit removal led to the
        observation that some module specfic support was living in init.h
        itself, thus preventing the full removal from introducing compile
        regressions.
      
        This series includes a few final fixups needed prior to the relocation
        of the modular init code from <init.h> to <module.h>.  These are
        things that weren't easily categorized into any of the other previous
        series categories already requested for pull.
      
        That said, each fixup branch (including this one) is independent and
        there are no ordering constraints.  Only the final code relocation
        (which is NOT in this pull) requires that all my cleanup branches be
        merged first"
      
      * tag 'module-misc-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
        tile: add init.h to usb.c to avoid compile failure
        arm: fix implicit #include <linux/init.h> in entry asm.
        x86: replace __init_or_module with __init in non-modular vsmp_64.c
      a611fb75
    • L
      Merge tag 'module-builtin_driver-v4.1-rc8' of... · 75462c8a
      Linus Torvalds 提交于
      Merge tag 'module-builtin_driver-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux
      
      Pull module_platform_driver replacement from Paul Gortmaker:
       "Replace module_platform_driver with builtin_platform driver in non
        modules.
      
        We see an increasing number of non-modular drivers using
        modular_driver() type register functions.  There are several downsides
        to letting this continue unchecked:
      
         - The code can appear modular to a reader of the code, and they won't
           know if the code really is modular without checking the Makefile
           and Kconfig to see if compilation is governed by a bool or
           tristate.
      
         - Coders of drivers may be tempted to code up an __exit function that
           is never used, just in order to satisfy the required three args of
           the modular registration function.
      
         - Non-modular code ends up including the <module.h> which increases
           CPP overhead that they don't need.
      
         - It hinders us from performing better separation of the module init
           code and the generic init code.
      
        So here we introduce similar macros for builtin drivers.  Then we
        convert builtin drivers (controlled by a bool Kconfig) by making the
        following type of mapping:
      
          module_platform_driver()       --->  builtin_platform_driver()
          module_platform_driver_probe() --->  builtin_platform_driver_probe().
      
        The set of drivers that are converted here are just the ones that
        showed up as relying on an implicit include of <module.h> during a
        pending header cleanup.  So we convert them here vs adding an include
        of <module.h> to non-modular code to avoid compile fails.  Additonal
        conversions can be done asynchronously at any time.
      
        Once again, an unused module_exit function that is removed here
        appears in the diffstat as an outlier wrt all the other changes"
      
      * tag 'module-builtin_driver-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
        drivers/clk: convert sunxi/clk-mod0.c to use builtin_platform_driver
        drivers/power: Convert non-modular syscon-reboot to use builtin_platform_driver
        drivers/soc: Convert non-modular soc-realview to use builtin_platform_driver
        drivers/soc: Convert non-modular tegra/pmc to use builtin_platform_driver
        drivers/cpufreq: Convert non-modular s5pv210-cpufreq.c to use builtin_platform_driver
        drivers/cpuidle: Convert non-modular drivers to use builtin_platform_driver
        drivers/platform: Convert non-modular pdev_bus to use builtin_platform_driver
        platform_device: better support builtin boilerplate avoidance
      75462c8a
    • L
      Merge tag 'module_init-alternate_initcall-v4.1-rc8' of... · 9d90f035
      Linus Torvalds 提交于
      Merge tag 'module_init-alternate_initcall-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux
      
      Pull module_init replacement part two from Paul Gortmaker:
       "Replace module_init with appropriate alternate initcall in non
        modules.
      
        This series converts non-modular code that is using the module_init()
        call to hook itself into the system to instead use one of our
        alternate priority initcalls.
      
        Unlike the previous series that used device_initcall and hence was a
        runtime no-op, these commits change to one of the alternate initcalls,
        because (a) we have them and (b) it seems like the right thing to do.
      
        For example, it would seem logical to use arch_initcall for arch
        specific setup code and fs_initcall for filesystem setup code.
      
        This does mean however, that changes in the init ordering will be
        taking place, and so there is a small risk that some kind of implicit
        init ordering issue may lie uncovered.  But I think it is still better
        to give these ones sensible priorities than to just assign them all to
        device_initcall in order to exactly preserve the old ordering.
      
        Thad said, we have already made similar changes in core kernel code in
        commit c96d6660 ("kernel: audit/fix non-modular users of
        module_init in core code") without any regressions reported, so this
        type of change isn't without precedent.  It has also got the same
        local testing and linux-next coverage as all the other pull requests
        that I'm sending for this merge window have got.
      
        Once again, there is an unused module_exit function removal that shows
        up as an outlier upon casual inspection of the diffstat"
      
      * tag 'module_init-alternate_initcall-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
        x86: perf_event_intel_pt.c: use arch_initcall to hook in enabling
        x86: perf_event_intel_bts.c: use arch_initcall to hook in enabling
        mm/page_owner.c: use late_initcall to hook in enabling
        lib/list_sort: use late_initcall to hook in self tests
        arm: use subsys_initcall in non-modular pl320 IPC code
        powerpc: don't use module_init for non-modular core hugetlb code
        powerpc: use subsys_initcall for Freescale Local Bus
        x86: don't use module_init for non-modular core bootflag code
        netfilter: don't use module_init/exit in core IPV4 code
        fs/notify: don't use module_init for non-modular inotify_user code
        mm: replace module_init usages with subsys_initcall in nommu.c
      9d90f035
    • L
      Merge tag 'module_init-device_initcall-v4.1-rc8' of... · 2d440707
      Linus Torvalds 提交于
      Merge tag 'module_init-device_initcall-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux
      
      Pull module_init replacement part one from Paul Gortmaker:
       "Replace module_init with equivalent device_initcall in non modules.
      
        This series of commits converts non-modular code that is using the
        module_init() call to hook itself into the system to instead use
        device_initcall().
      
        The conversion is a runtime no-op, since module_init actually becomes
        __initcall in the non-modular case, and that in turn gets mapped onto
        device_initcall.  A couple files show a larger negative diffstat,
        representing ones that had a module_exit function that we remove here
        vs previously relying on the linker to dispose of it.
      
        We make this conversion now, so that we can relocate module_init from
        init.h into module.h in the future.
      
        The files changed here are just limited to those that would otherwise
        have to add module.h to obviously non-modular code, in order to avoid
        a compile fail, as testing has shown"
      
      * tag 'module_init-device_initcall-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
        MIPS: don't use module_init in non-modular cobalt/mtd.c file
        drivers/leds: don't use module_init in non-modular leds-cobalt-raq.c
        cris: don't use module_init for non-modular core eeprom.c code
        tty/metag_da: Avoid module_init/module_exit in non-modular code
        drivers/clk: don't use module_init in clk-nomadik.c which is non-modular
        xtensa: don't use module_init for non-modular core network.c code
        sh: don't use module_init in non-modular psw.c code
        mn10300: don't use module_init in non-modular flash.c code
        parisc64: don't use module_init for non-modular core perf code
        parisc: don't use module_init for non-modular core pdc_cons code
        cris: don't use module_init for non-modular core intmem.c code
        ia64: don't use module_init in non-modular sim/simscsi.c code
        ia64: don't use module_init for non-modular core kernel/mca.c code
        arm: don't use module_init in non-modular mach-vexpress/spc.c code
        powerpc: don't use module_init in non-modular 83xx suspend code
        powerpc: use device_initcall for registering rtc devices
        x86: don't use module_init in non-modular devicetree.c code
        x86: don't use module_init in non-modular intel_mid_vrtc.c
      2d440707
    • L
      Merge tag 'module-implicit-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux · 9d86b412
      Linus Torvalds 提交于
      Pull implicit module.h fixes from Paul Gortmaker:
       "Fix up implicit <module.h> users that will break later.
      
        The files changed here are simply modular source files that are
        implicitly relying on <module.h> being present.  We fix them up now,
        so that we can decouple some of the module related init code from the
        core init code in the future.
      
        The addition of the module.h include to several files here is also a
        no-op from a code generation point of view, else there would already
        be compile issues with these files today.
      
        There may be lots more implicit includes of <module.h> in tree, but
        these are the ones that extensive build test coverage has shown that
        must be fixed in order to avoid build breakage fallout for the pending
        module.h <---> init.h code relocation we desire to complete"
      
      * tag 'module-implicit-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
        frv: add module.h to mb93090-mb00/flash.c to avoid compile fail
        drivers/cpufreq: include <module.h> for modular exynos-cpufreq.c code
        drivers/staging: include <module.h> for modular android tegra_ion code
        crypto/asymmetric_keys: pkcs7_key_type needs module.h
        sh: mach-highlander/psw.c is tristate and should use module.h
        drivers/regulator: include <module.h> for modular max77802 code
        drivers/pcmcia: include <module.h> for modular xxs1500_ss code
        drivers/hsi: include <module.h> for modular omap_ssi code
        drivers/gpu: include <module.h> for modular rockchip code
        drivers/gpio: include <module.h> for modular crystalcove code
        drivers/clk: include <module.h> for clk-max77xxx modular code
      9d86b412
    • L
      Merge tag 'cpuinit-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux · 47f92418
      Linus Torvalds 提交于
      Pull __cpuinit removal from Paul Gortmaker:
       "Remove __cpuinit macros and users.
      
        We removed the __cpuinit stuff in 3.11-rc1 with commit 22f0a273
        ("init.h: remove __cpuinit sections from the kernel") but we left some
        no-op stubs as a courtesy to unmerged code.
      
        Here we get rid of the stubs as well, since (as can be seen in these
        changes) they are enabling use cases to sneak back in, primarily from
        older BSP code that has been living out of tree for some time prior to
        getting mainlined.  So we get rid of these "new" users 1st and then
        get rid of the stubs.
      
        Obviously, getting rid of the stubs can't happen until all the users
        are gone, so I had to keep this together as a series, even though some
        of these commits since got picked up into maintainers trees as well.
      
        The nature of this change is such that it should have zero impact on
        the generated runtime.
      
        This is one of several independent cleanup branches aimed at enabling
        better organization in the init.h and module.h code.  They have been
        getting coverage in the linux-next tree for the last month, in
        addition to my local testing, which also covers approximately a half
        dozen or more architectures"
      
      * tag 'cpuinit-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
        init: delete the __cpuinit related stubs
        kernel/cpu.c: remove new instance of __cpuinit that crept back in
        sched/core: remove __cpuinit section tag that crept back in.
        mips/mm/tlbex: remove new instance of __cpuinit that crept back in
        mips/c-r4k: remove legacy __cpuinit section that crept in
        mips/bcm77xx: remove legacy __cpuinit sections that crept in
        mips/ath25: remove legacy __cpuinit section that crept in
        arm/mach-hisi: remove legacy __CPUINIT section that crept in
        arm/mach-rockchip: remove legacy __cpuinit section that crept in
        arm/mach-mvebu: remove legacy __cpuinit sections that crept in
        arm/mach-keystone: remove legacy __cpuinit sections that crept in
      47f92418
  4. 02 7月, 2015 3 次提交
    • L
      Merge tag 'devicetree-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/glikely/linux · 4da3064d
      Linus Torvalds 提交于
      Pull devicetree updates from Grant Likely:
       "A whole lot of bug fixes.
      
        Nothing stands out here except the ability to enable CONFIG_OF on
        every architecture, and an import of a newer version of dtc"
      
      * tag 'devicetree-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/glikely/linux: (22 commits)
        of/irq: Rename "intc_desc" to "of_intc_desc" to fix OF on sh
        of/irq: Fix pSeries boot failure
        Documentation: DT: Fix a typo in the filename "lantiq,<chip>-pinumx.txt"
        of: define of_find_node_by_phandle for !CONFIG_OF
        of/address: use atomic allocation in pci_register_io_range()
        of: Add vendor prefix for Zodiac Inflight Innovations
        dt/fdt: add empty versions of early_init_dt_*_memory_arch
        of: clean-up unnecessary libfdt include paths
        of: make unittest select OF_EARLY_FLATTREE instead of depend on it
        of: make CONFIG_OF user selectable
        MIPS: prepare for user enabling of CONFIG_OF
        of/fdt: fix argument name and add comments of unflatten_dt_node()
        of: return NUMA_NO_NODE from fallback of_node_to_nid()
        tps6507x.txt: Remove executable permission
        of/overlay: Grammar s/an negative/a negative/
        of/fdt: Make fdt blob input parameters of unflatten functions const
        of: add helper function to retrive match data
        of: Grammar s/property exist/property exists/
        of: Move OF flags to be visible even when !CONFIG_OF
        scripts/dtc: Update to upstream version 9d3649bd3be245c9
        ...
      4da3064d
    • L
      Merge git://www.linux-watchdog.org/linux-watchdog · 93899e39
      Linus Torvalds 提交于
      Pull watchdog updates from Wim Van Sebroeck:
       "This contains:
      
         - new driver for ST's LPC Watchdog
         - new driver for Conexant Digicolor CX92755 SoC
         - new driver for DA9062 watchdog
         - Addition of the watchdog registration deferral mechanism
         - several improvements on omap_wdt
         - several improvements and reboot-support for imgpdc_wdt
         - max63xx_wdt improvements
         - imx2_wdt improvements
         - dw_wdt improvements
         - and other small improvements and fixes"
      
      * git://www.linux-watchdog.org/linux-watchdog: (37 commits)
        watchdog: omap_wdt: early_enable module parameter
        watchdog: gpio_wdt: Add option for early registration
        watchdog: watchdog_core: Add watchdog registration deferral mechanism
        watchdog: max63xx: dynamically allocate device
        watchdog: imx2_wdt: Disable previously acquired clock on error path
        watchdog: imx2_wdt: Check for clk_prepare_enable() error
        watchdog: hpwdt: Add support for WDIOC_SETOPTIONS
        watchdog: docs: omap_wdt also understands nowayout
        watchdog: omap_wdt: implement get_timeleft
        watchdog: da9062: DA9062 watchdog driver
        watchdog: imx2_wdt: set watchdog parent device
        watchdog: mena21_wdt: Fix possible NULL pointer dereference
        watchdog: dw_wdt: keepalive the watchdog at write time
        watchdog: dw_wdt: No need for a spinlock
        watchdog: imx2_wdt: also set wdog->timeout to new_timeout
        watchdog: Allow compile test of GPIO consumers if !GPIOLIB
        watchdog: cadence: Add dependency on HAS_IOMEM
        watchdog: max63xx_wdt: Constify platform_device_id
        watchdog: MAX63XX_WATCHDOG does not depend on ARM
        watchdog: imgpdc: Add some documentation about the timeout
        ...
      93899e39
    • L
      Merge tag 'clk-for-linus-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux · 5f1201d5
      Linus Torvalds 提交于
      Pull clock framework updates from Michael Turquette:
       "The changes to the common clock framework for 4.2 are dominated by new
        drivers and updates to existing ones, as usual.
      
        There are some fixes to the framework itself and several cleanups for
        sparse warnings, etc"
      
      * tag 'clk-for-linus-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux: (135 commits)
        clk: stm32: Add clock driver for STM32F4[23]xxx devices
        dt-bindings: Document the STM32F4 clock bindings
        cpufreq: exynos: remove Exynos4210 specific cpufreq driver support
        ARM: Exynos: switch to using generic cpufreq driver for Exynos4210
        clk: samsung: exynos4: add cpu clock configuration data and instantiate cpu clock
        clk: samsung: add infrastructure to register cpu clocks
        clk: add CLK_RECALC_NEW_RATES clock flag for Exynos cpu clock support
        doc: dt: add documentation for lpc1850-ccu clk driver
        clk: add lpc18xx ccu clk driver
        doc: dt: add documentation for lpc1850-cgu clk driver
        clk: add lpc18xx cgu clk driver
        clk: keystone: add support for post divider register for main pll
        clk: mvebu: flag the crypto clk as CLK_IGNORE_UNUSED
        clk: cygnus: remove Cygnus dummy clock binding
        clk: cygnus: add clock support for Broadcom Cygnus
        clk: Change bcm clocks build dependency
        clk: iproc: add initial common clock support
        clk: iproc: define Broadcom iProc clock binding
        MAINTAINERS: update email for Michael Turquette
        clk: meson: add some error handling in meson_clk_register_cpu()
        ...
      5f1201d5