1. 19 12月, 2016 26 次提交
  2. 18 12月, 2016 14 次提交
    • T
      x86/tsc: Limit the adjust value further · 8c9b9d87
      Thomas Gleixner 提交于
      Adjust value 0x80000000 and other values larger than that render the TSC
      deadline timer disfunctional.
      
      We have not yet any information about this from Intel, but experimentation
      clearly proves that this is a 32/64 bit and sign extension issue.
      
      If adjust values larger than that are actually required, which might be the
      case for physical CPU hotplug, then we need to disable the deadline timer
      on the affected package/CPUs and use the local APIC timer instead.
      
      That requires some surgery in the APIC setup code, so we just limit the
      ADJUST register value into the known to work range for now and revisit this
      when Intel comes forth with proper information.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Roland Scheidegger <rscheidegger_lists@hispeed.ch>
      Cc: Bruce Schlobohm <bruce.schlobohm@intel.com>
      Cc: Kevin Stanton <kevin.b.stanton@intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Borislav Petkov <bp@alien8.de>
      8c9b9d87
    • T
      x86/tsc: Annotate printouts as firmware bug · 16588f65
      Thomas Gleixner 提交于
      Make it more obvious that the BIOS is screwed up.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Roland Scheidegger <rscheidegger_lists@hispeed.ch>
      Cc: Bruce Schlobohm <bruce.schlobohm@intel.com>
      Cc: Kevin Stanton <kevin.b.stanton@intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Borislav Petkov <bp@alien8.de>
      16588f65
    • K
      x86/floppy: Use designated initializers · ffc7dc8d
      Kees Cook 提交于
      Prepare to mark sensitive kernel structures for randomization by making
      sure they're using designated initializers. These were identified during
      allyesconfig builds of x86, arm, and arm64, with most initializer fixes
      extracted from grsecurity.
      Signed-off-by: NKees Cook <keescook@chromium.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: http://lkml.kernel.org/r/20161217213705.GA1248@beastSigned-off-by: NIngo Molnar <mingo@kernel.org>
      ffc7dc8d
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 52f40e9d
      Linus Torvalds 提交于
      Pull networking fixes and cleanups from David Miller:
      
       1) Revert bogus nla_ok() change, from Alexey Dobriyan.
      
       2) Various bpf validator fixes from Daniel Borkmann.
      
       3) Add some necessary SET_NETDEV_DEV() calls to hsis_femac and hip04
          drivers, from Dongpo Li.
      
       4) Several ethtool ksettings conversions from Philippe Reynes.
      
       5) Fix bugs in inet port management wrt. soreuseport, from Tom Herbert.
      
       6) XDP support for virtio_net, from John Fastabend.
      
       7) Fix NAT handling within a vrf, from David Ahern.
      
       8) Endianness fixes in dpaa_eth driver, from Claudiu Manoil
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (63 commits)
        net: mv643xx_eth: fix build failure
        isdn: Constify some function parameters
        mlxsw: spectrum: Mark split ports as such
        cgroup: Fix CGROUP_BPF config
        qed: fix old-style function definition
        net: ipv6: check route protocol when deleting routes
        r6040: move spinlock in r6040_close as SOFTIRQ-unsafe lock order detected
        irda: w83977af_ir: cleanup an indent issue
        net: sfc: use new api ethtool_{get|set}_link_ksettings
        net: davicom: dm9000: use new api ethtool_{get|set}_link_ksettings
        net: cirrus: ep93xx: use new api ethtool_{get|set}_link_ksettings
        net: chelsio: cxgb3: use new api ethtool_{get|set}_link_ksettings
        net: chelsio: cxgb2: use new api ethtool_{get|set}_link_ksettings
        bpf: fix mark_reg_unknown_value for spilled regs on map value marking
        bpf: fix overflow in prog accounting
        bpf: dynamically allocate digest scratch buffer
        gtp: Fix initialization of Flags octet in GTPv1 header
        gtp: gtp_check_src_ms_ipv4() always return success
        net/x25: use designated initializers
        isdn: use designated initializers
        ...
      52f40e9d
    • L
      Merge uncontroversial parts of branch 'readlink' of... · 231753ef
      Linus Torvalds 提交于
      Merge uncontroversial parts of branch 'readlink' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs
      
      Pull partial readlink cleanups from Miklos Szeredi.
      
      This is the uncontroversial part of the readlink cleanup patch-set that
      simplifies the default readlink handling.
      
      Miklos and Al are still discussing the rest of the series.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs:
        vfs: make generic_readlink() static
        vfs: remove ".readlink = generic_readlink" assignments
        vfs: default to generic_readlink()
        vfs: replace calling i_op->readlink with vfs_readlink()
        proc/self: use generic_readlink
        ecryptfs: use vfs_get_link()
        bad_inode: add missing i_op initializers
      231753ef
    • S
      net: mv643xx_eth: fix build failure · 3e3397e7
      Sudip Mukherjee 提交于
      The build of sparc allmodconfig fails with the error:
      "of_irq_to_resource" [drivers/net/ethernet/marvell/mv643xx_eth.ko]
      	undefined!
      
      of_irq_to_resource() is defined when CONFIG_OF_IRQ is defined. And also
      CONFIG_OF_IRQ can only be defined if CONFIG_IRQ is defined. So we can
      safely use #if defined(CONFIG_OF_IRQ) in the code.
      Signed-off-by: NSudip Mukherjee <sudip.mukherjee@codethink.co.uk>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3e3397e7
    • E
      isdn: Constify some function parameters · a6b3c483
      Emese Revfy 提交于
      The coming initify gcc plugin expects const pointer types, and caught
      some __printf arguments that weren't const yet. This fixes those.
      Signed-off-by: NEmese Revfy <re.emese@gmail.com>
      [kees: expanded commit message]
      Signed-off-by: NKees Cook <keescook@chromium.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a6b3c483
    • I
      mlxsw: spectrum: Mark split ports as such · 9a60c907
      Ido Schimmel 提交于
      When a port is split we should mark it as such, as otherwise the split
      ports aren't renamed correctly (e.g. sw1p3 -> sw1p3s1) and the unsplit
      operation fails:
      
      $ devlink port split sw1p3 count 4
      $ devlink port unsplit eth0
      devlink answers: Invalid argument
      [  598.565307] mlxsw_spectrum 0000:03:00.0 eth0: Port wasn't split
      
      Fixes: 67963a33 ("mlxsw: Make devlink port instances independent of spectrum/switchx2 port instances")
      Signed-off-by: NIdo Schimmel <idosch@mellanox.com>
      Reported-by: NTamir Winetroub <tamirw@mellanox.com>
      Reviewed-by: NElad Raz <eladr@mellanox.com>
      Tested-by: NTamir Winetroub <tamirw@mellanox.com>
      Signed-off-by: NJiri Pirko <jiri@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9a60c907
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 0110c350
      Linus Torvalds 提交于
      Pull more vfs updates from Al Viro:
       "In this pile:
      
         - autofs-namespace series
         - dedupe stuff
         - more struct path constification"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (40 commits)
        ocfs2: implement the VFS clone_range, copy_range, and dedupe_range features
        ocfs2: charge quota for reflinked blocks
        ocfs2: fix bad pointer cast
        ocfs2: always unlock when completing dio writes
        ocfs2: don't eat io errors during _dio_end_io_write
        ocfs2: budget for extent tree splits when adding refcount flag
        ocfs2: prohibit refcounted swapfiles
        ocfs2: add newlines to some error messages
        ocfs2: convert inode refcount test to a helper
        simple_write_end(): don't zero in short copy into uptodate
        exofs: don't mess with simple_write_{begin,end}
        9p: saner ->write_end() on failing copy into non-uptodate page
        fix gfs2_stuffed_write_end() on short copies
        fix ceph_write_end()
        nfs_write_end(): fix handling of short copies
        vfs: refactor clone/dedupe_file_range common functions
        fs: try to clone files first in vfs_copy_file_range
        vfs: misc struct path constification
        namespace.c: constify struct path passed to a bunch of primitives
        quota: constify struct path in quota_on
        ...
      0110c350
    • A
      cgroup: Fix CGROUP_BPF config · 483c4933
      Andy Lutomirski 提交于
      CGROUP_BPF depended on SOCK_CGROUP_DATA which can't be manually
      enabled, making it rather challenging to turn CGROUP_BPF on.
      Signed-off-by: NAndy Lutomirski <luto@kernel.org>
      Acked-by: NAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      483c4933
    • D
      Merge tag 'mac80211-for-davem-2016-12-16' of... · 67a72a58
      David S. Miller 提交于
      Merge tag 'mac80211-for-davem-2016-12-16' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211
      
      Johannes Berg says:
      
      ====================
      Three fixes:
       * avoid a WARN_ON() when trying to use WEP with AP_VLANs
       * ensure enough headroom on mesh forwarding packets
       * don't report unknown/invalid rates to userspace
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      67a72a58
    • A
      qed: fix old-style function definition · 7729bad4
      Arnd Bergmann 提交于
      The newly added file causes a harmless warning, with "make W=1":
      
      drivers/net/ethernet/qlogic/qed/qed_iscsi.c: In function 'qed_get_iscsi_ops':
      drivers/net/ethernet/qlogic/qed/qed_iscsi.c:1268:29: warning: old-style function definition [-Wold-style-definition]
      
      This makes it a proper prototype.
      
      Fixes: fc831825 ("qed: Add support for hardware offloaded iSCSI.")
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Reviewed-by: NJohannes Thumshirn <jthumshirn@suse.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7729bad4
    • M
      net: ipv6: check route protocol when deleting routes · c2ed1880
      Mantas M 提交于
      The protocol field is checked when deleting IPv4 routes, but ignored for
      IPv6, which causes problems with routing daemons accidentally deleting
      externally set routes (observed by multiple bird6 users).
      
      This can be verified using `ip -6 route del <prefix> proto something`.
      Signed-off-by: NMantas Mikulėnas <grawity@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c2ed1880
    • M
      r6040: move spinlock in r6040_close as SOFTIRQ-unsafe lock order detected · c762eaa7
      Manuel Bessler 提交于
      'ifconfig eth0 down' makes r6040_close() trigger:
       INFO: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
      
      Fixed by moving calls to phy_stop(), napi_disable(), netif_stop_queue()
      to outside of the module's private spin_lock_irq block.
      
      Found on a Versalogic Tomcat SBC with a Vortex86 SoC
      
      s1660e_5150:~# sudo ifconfig eth0 down
      [   61.306415] ======================================================
      [   61.306415] [ INFO: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected ]
      [   61.306415] 4.9.0-gb898d2d-manuel #1 Not tainted
      [   61.306415] ------------------------------------------------------
      [   61.306415] ifconfig/449 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
      [   61.306415]  (&dev->lock){+.+...}, at: [<c1336276>] phy_stop+0x16/0x80
      
      [   61.306415] and this task is already holding:
      [   61.306415]  (&(&lp->lock)->rlock){+.-...}, at: [<d0934c84>] r6040_close+0x24/0x230 [r6040]
      which would create a new lock dependency:
      [   61.306415]  (&(&lp->lock)->rlock){+.-...} -> (&dev->lock){+.+...}
      
      [   61.306415] but this new dependency connects a SOFTIRQ-irq-safe lock:
      [   61.306415]  (&(&lp->lock)->rlock){+.-...}
      [   61.306415] ... which became SOFTIRQ-irq-safe at:
      [   61.306415]   [   61.306415] [<c1075bc5>] __lock_acquire+0x555/0x1770
      [   61.306415]   [   61.306415] [<c107717c>] lock_acquire+0x7c/0x150
      [   61.306415]   [   61.306415] [<c14bb334>] _raw_spin_lock_irqsave+0x24/0x40
      [   61.306415]   [   61.306415] [<d0934ac0>] r6040_start_xmit+0x30/0x1d0 [r6040]
      [   61.306415]   [   61.306415] [<c13a7d4d>] dev_hard_start_xmit+0x9d/0x2d0
      [   61.306415]   [   61.306415] [<c13c8a38>] sch_direct_xmit+0xa8/0x140
      [   61.306415]   [   61.306415] [<c13a8436>] __dev_queue_xmit+0x416/0x780
      [   61.306415]   [   61.306415] [<c13a87aa>] dev_queue_xmit+0xa/0x10
      [   61.306415]   [   61.306415] [<c13b4837>] neigh_resolve_output+0x147/0x220
      [   61.306415]   [   61.306415] [<c144541b>] ip6_finish_output2+0x2fb/0x910
      [   61.306415]   [   61.306415] [<c14494e6>] ip6_finish_output+0xa6/0x1a0
      [   61.306415]   [   61.306415] [<c1449635>] ip6_output+0x55/0x320
      [   61.306415]   [   61.306415] [<c146f4d2>] mld_sendpack+0x352/0x560
      [   61.306415]   [   61.306415] [<c146fe55>] mld_ifc_timer_expire+0x155/0x280
      [   61.306415]   [   61.306415] [<c108b081>] call_timer_fn+0x81/0x270
      [   61.306415]   [   61.306415] [<c108b331>] expire_timers+0xc1/0x180
      [   61.306415]   [   61.306415] [<c108b4f7>] run_timer_softirq+0x77/0x150
      [   61.306415]   [   61.306415] [<c1043d04>] __do_softirq+0xb4/0x3d0
      [   61.306415]   [   61.306415] [<c101a15c>] do_softirq_own_stack+0x1c/0x30
      [   61.306415]   [   61.306415] [<c104416e>] irq_exit+0x8e/0xa0
      [   61.306415]   [   61.306415] [<c1019d31>] do_IRQ+0x51/0x100
      [   61.306415]   [   61.306415] [<c14bc176>] common_interrupt+0x36/0x40
      [   61.306415]   [   61.306415] [<c1134928>] set_root+0x68/0xf0
      [   61.306415]   [   61.306415] [<c1136120>] path_init+0x400/0x640
      [   61.306415]   [   61.306415] [<c11386bf>] path_lookupat+0xf/0xe0
      [   61.306415]   [   61.306415] [<c1139ebc>] filename_lookup+0x6c/0x100
      [   61.306415]   [   61.306415] [<c1139fd5>] user_path_at_empty+0x25/0x30
      [   61.306415]   [   61.306415] [<c11298c6>] SyS_faccessat+0x86/0x1e0
      [   61.306415]   [   61.306415] [<c1129a30>] SyS_access+0x10/0x20
      [   61.306415]   [   61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110
      [   61.306415]   [   61.306415] [<c14bba3f>] restore_all+0x0/0x61
      [   61.306415]
      [   61.306415] to a SOFTIRQ-irq-unsafe lock:
      [   61.306415]  (&dev->lock){+.+...}
      [   61.306415] ... which became SOFTIRQ-irq-unsafe at:
      [   61.306415] ...[   61.306415]
      [   61.306415] [<c1075c0c>] __lock_acquire+0x59c/0x1770
      [   61.306415]   [   61.306415] [<c107717c>] lock_acquire+0x7c/0x150
      [   61.306415]   [   61.306415] [<c14b7add>] mutex_lock_nested+0x2d/0x4a0
      [   61.306415]   [   61.306415] [<c133747d>] phy_probe+0x4d/0xc0
      [   61.306415]   [   61.306415] [<c1338afe>] phy_attach_direct+0xbe/0x190
      [   61.306415]   [   61.306415] [<c1338ca7>] phy_connect_direct+0x17/0x60
      [   61.306415]   [   61.306415] [<c1338d23>] phy_connect+0x33/0x70
      [   61.306415]   [   61.306415] [<d09357a0>] r6040_init_one+0x3a0/0x500 [r6040]
      [   61.306415]   [   61.306415] [<c12a78c7>] pci_device_probe+0x77/0xd0
      [   61.306415]   [   61.306415] [<c12f5e15>] driver_probe_device+0x145/0x280
      [   61.306415]   [   61.306415] [<c12f5fd9>] __driver_attach+0x89/0x90
      [   61.306415]   [   61.306415] [<c12f43ef>] bus_for_each_dev+0x4f/0x80
      [   61.306415]   [   61.306415] [<c12f5954>] driver_attach+0x14/0x20
      [   61.306415]   [   61.306415] [<c12f55b7>] bus_add_driver+0x197/0x210
      [   61.306415]   [   61.306415] [<c12f6a21>] driver_register+0x51/0xd0
      [   61.306415]   [   61.306415] [<c12a6955>] __pci_register_driver+0x45/0x50
      [   61.306415]   [   61.306415] [<d0938017>] 0xd0938017
      [   61.306415]   [   61.306415] [<c100043f>] do_one_initcall+0x2f/0x140
      [   61.306415]   [   61.306415] [<c10e48c0>] do_init_module+0x4a/0x19b
      [   61.306415]   [   61.306415] [<c10a680e>] load_module+0x1b2e/0x2070
      [   61.306415]   [   61.306415] [<c10a6eb9>] SyS_finit_module+0x69/0x80
      [   61.306415]   [   61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110
      [   61.306415]   [   61.306415] [<c14bba3f>] restore_all+0x0/0x61
      [   61.306415]
      [   61.306415] other info that might help us debug this:
      [   61.306415]
      [   61.306415]  Possible interrupt unsafe locking scenario:
      [   61.306415]
      [   61.306415]        CPU0                    CPU1
      [   61.306415]        ----                    ----
      [   61.306415]   lock(&dev->lock);
      [   61.306415]                                local_irq_disable();
      [   61.306415]                                lock(&(&lp->lock)->rlock);
      [   61.306415]                                lock(&dev->lock);
      [   61.306415]   <Interrupt>
      [   61.306415]     lock(&(&lp->lock)->rlock);
      [   61.306415]
      [   61.306415]  *** DEADLOCK ***
      [   61.306415]
      [   61.306415] 2 locks held by ifconfig/449:
      [   61.306415]  #0:  (rtnl_mutex){+.+.+.}, at: [<c13b68ef>] rtnl_lock+0xf/0x20
      [   61.306415]  #1:  (&(&lp->lock)->rlock){+.-...}, at: [<d0934c84>] r6040_close+0x24/0x230 [r6040]
      [   61.306415]
      [   61.306415] the dependencies between SOFTIRQ-irq-safe lock and the holding lock:
      [   61.306415] -> (&(&lp->lock)->rlock){+.-...} ops: 3049 {
      [   61.306415]    HARDIRQ-ON-W at:
      [   61.306415]                     [   61.306415] [<c1075be7>] __lock_acquire+0x577/0x1770
      [   61.306415]                     [   61.306415] [<c107717c>] lock_acquire+0x7c/0x150
      [   61.306415]                     [   61.306415] [<c14bb21b>] _raw_spin_lock+0x1b/0x30
      [   61.306415]                     [   61.306415] [<d09343cc>] r6040_poll+0x2c/0x330 [r6040]
      [   61.306415]                     [   61.306415] [<c13a5577>] net_rx_action+0x197/0x340
      [   61.306415]                     [   61.306415] [<c1043d04>] __do_softirq+0xb4/0x3d0
      [   61.306415]                     [   61.306415] [<c1044037>] run_ksoftirqd+0x17/0x40
      [   61.306415]                     [   61.306415] [<c105fe91>] smpboot_thread_fn+0x141/0x180
      [   61.306415]                     [   61.306415] [<c105c84e>] kthread+0xde/0x110
      [   61.306415]                     [   61.306415] [<c14bb949>] ret_from_fork+0x19/0x30
      [   61.306415]    IN-SOFTIRQ-W at:
      [   61.306415]                     [   61.306415] [<c1075bc5>] __lock_acquire+0x555/0x1770
      [   61.306415]                     [   61.306415] [<c107717c>] lock_acquire+0x7c/0x150
      [   61.306415]                     [   61.306415] [<c14bb334>] _raw_spin_lock_irqsave+0x24/0x40
      [   61.306415]                     [   61.306415] [<d0934ac0>] r6040_start_xmit+0x30/0x1d0 [r6040]
      [   61.306415]                     [   61.306415] [<c13a7d4d>] dev_hard_start_xmit+0x9d/0x2d0
      [   61.306415]                     [   61.306415] [<c13c8a38>] sch_direct_xmit+0xa8/0x140
      [   61.306415]                     [   61.306415] [<c13a8436>] __dev_queue_xmit+0x416/0x780
      [   61.306415]                     [   61.306415] [<c13a87aa>] dev_queue_xmit+0xa/0x10
      [   61.306415]                     [   61.306415] [<c13b4837>] neigh_resolve_output+0x147/0x220
      [   61.306415]                     [   61.306415] [<c144541b>] ip6_finish_output2+0x2fb/0x910
      [   61.306415]                     [   61.306415] [<c14494e6>] ip6_finish_output+0xa6/0x1a0
      [   61.306415]                     [   61.306415] [<c1449635>] ip6_output+0x55/0x320
      [   61.306415]                     [   61.306415] [<c146f4d2>] mld_sendpack+0x352/0x560
      [   61.306415]                     [   61.306415] [<c146fe55>] mld_ifc_timer_expire+0x155/0x280
      [   61.306415]                     [   61.306415] [<c108b081>] call_timer_fn+0x81/0x270
      [   61.306415]                     [   61.306415] [<c108b331>] expire_timers+0xc1/0x180
      [   61.306415]                     [   61.306415] [<c108b4f7>] run_timer_softirq+0x77/0x150
      [   61.306415]                     [   61.306415] [<c1043d04>] __do_softirq+0xb4/0x3d0
      [   61.306415]                     [   61.306415] [<c101a15c>] do_softirq_own_stack+0x1c/0x30
      [   61.306415]                     [   61.306415] [<c104416e>] irq_exit+0x8e/0xa0
      [   61.306415]                     [   61.306415] [<c1019d31>] do_IRQ+0x51/0x100
      [   61.306415]                     [   61.306415] [<c14bc176>] common_interrupt+0x36/0x40
      [   61.306415]                     [   61.306415] [<c1134928>] set_root+0x68/0xf0
      [   61.306415]                     [   61.306415] [<c1136120>] path_init+0x400/0x640
      [   61.306415]                     [   61.306415] [<c11386bf>] path_lookupat+0xf/0xe0
      [   61.306415]                     [   61.306415] [<c1139ebc>] filename_lookup+0x6c/0x100
      [   61.306415]                     [   61.306415] [<c1139fd5>] user_path_at_empty+0x25/0x30
      [   61.306415]                     [   61.306415] [<c11298c6>] SyS_faccessat+0x86/0x1e0
      [   61.306415]                     [   61.306415] [<c1129a30>] SyS_access+0x10/0x20
      [   61.306415]                     [   61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110
      [   61.306415]                     [   61.306415] [<c14bba3f>] restore_all+0x0/0x61
      [   61.306415]    INITIAL USE at:
      [   61.306415]                    [   61.306415] [<c107586e>] __lock_acquire+0x1fe/0x1770
      [   61.306415]                    [   61.306415] [<c107717c>] lock_acquire+0x7c/0x150
      [   61.306415]                    [   61.306415] [<c14bb334>] _raw_spin_lock_irqsave+0x24/0x40
      [   61.306415]                    [   61.306415] [<d093474e>] r6040_get_stats+0x1e/0x60 [r6040]
      [   61.306415]                    [   61.306415] [<c139fb16>] dev_get_stats+0x96/0xc0
      [   61.306415]                    [   61.306415] [<c14b416e>] rtnl_fill_stats+0x36/0xfd
      [   61.306415]                    [   61.306415] [<c13b7b3c>] rtnl_fill_ifinfo+0x47c/0xce0
      [   61.306415]                    [   61.306415] [<c13bc08e>] rtmsg_ifinfo_build_skb+0x4e/0xd0
      [   61.306415]                    [   61.306415] [<c13bc120>] rtmsg_ifinfo.part.20+0x10/0x40
      [   61.306415]                    [   61.306415] [<c13bc16b>] rtmsg_ifinfo+0x1b/0x20
      [   61.306415]                    [   61.306415] [<c13a9d19>] register_netdevice+0x409/0x550
      [   61.306415]                    [   61.306415] [<c13a9e72>] register_netdev+0x12/0x20
      [   61.306415]                    [   61.306415] [<d09357e8>] r6040_init_one+0x3e8/0x500 [r6040]
      [   61.306415]                    [   61.306415] [<c12a78c7>] pci_device_probe+0x77/0xd0
      [   61.306415]                    [   61.306415] [<c12f5e15>] driver_probe_device+0x145/0x280
      [   61.306415]                    [   61.306415] [<c12f5fd9>] __driver_attach+0x89/0x90
      [   61.306415]                    [   61.306415] [<c12f43ef>] bus_for_each_dev+0x4f/0x80
      [   61.306415]                    [   61.306415] [<c12f5954>] driver_attach+0x14/0x20
      [   61.306415]                    [   61.306415] [<c12f55b7>] bus_add_driver+0x197/0x210
      [   61.306415]                    [   61.306415] [<c12f6a21>] driver_register+0x51/0xd0
      [   61.306415]                    [   61.306415] [<c12a6955>] __pci_register_driver+0x45/0x50
      [   61.306415]                    [   61.306415] [<d0938017>] 0xd0938017
      [   61.306415]                    [   61.306415] [<c100043f>] do_one_initcall+0x2f/0x140
      [   61.306415]                    [   61.306415] [<c10e48c0>] do_init_module+0x4a/0x19b
      [   61.306415]                    [   61.306415] [<c10a680e>] load_module+0x1b2e/0x2070
      [   61.306415]                    [   61.306415] [<c10a6eb9>] SyS_finit_module+0x69/0x80
      [   61.306415]                    [   61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110
      [   61.306415]                    [   61.306415] [<c14bba3f>] restore_all+0x0/0x61
      [   61.306415]  }
      [   61.306415]  ... key      at: [<d0936280>] __key.45893+0x0/0xfffff739 [r6040]
      [   61.306415]  ... acquired at:
      [   61.306415]    [   61.306415] [<c1074a32>] check_irq_usage+0x42/0xb0
      [   61.306415]    [   61.306415] [<c107677c>] __lock_acquire+0x110c/0x1770
      [   61.306415]    [   61.306415] [<c107717c>] lock_acquire+0x7c/0x150
      [   61.306415]    [   61.306415] [<c14b7add>] mutex_lock_nested+0x2d/0x4a0
      [   61.306415]    [   61.306415] [<c1336276>] phy_stop+0x16/0x80
      [   61.306415]    [   61.306415] [<d0934ce9>] r6040_close+0x89/0x230 [r6040]
      [   61.306415]    [   61.306415] [<c13a0a91>] __dev_close_many+0x61/0xa0
      [   61.306415]    [   61.306415] [<c13a0bbf>] __dev_close+0x1f/0x30
      [   61.306415]    [   61.306415] [<c13a9127>] __dev_change_flags+0x87/0x150
      [   61.306415]    [   61.306415] [<c13a9213>] dev_change_flags+0x23/0x60
      [   61.306415]    [   61.306415] [<c1416238>] devinet_ioctl+0x5f8/0x6f0
      [   61.306415]    [   61.306415] [<c1417f75>] inet_ioctl+0x65/0x90
      [   61.306415]    [   61.306415] [<c1389b54>] sock_ioctl+0x124/0x2b0
      [   61.306415]    [   61.306415] [<c113cf7c>] do_vfs_ioctl+0x7c/0x790
      [   61.306415]    [   61.306415] [<c113d6b8>] SyS_ioctl+0x28/0x50
      [   61.306415]    [   61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110
      [   61.306415]    [   61.306415] [<c14bba3f>] restore_all+0x0/0x61
      [   61.306415]
      [   61.306415]
      the dependencies between the lock to be acquired[   61.306415]  and SOFTIRQ-irq-unsafe lock:
      [   61.306415] -> (&dev->lock){+.+...} ops: 56 {
      [   61.306415]    HARDIRQ-ON-W at:
      [   61.306415]                     [   61.306415] [<c1075be7>] __lock_acquire+0x577/0x1770
      [   61.306415]                     [   61.306415] [<c107717c>] lock_acquire+0x7c/0x150
      [   61.306415]                     [   61.306415] [<c14b7add>] mutex_lock_nested+0x2d/0x4a0
      [   61.306415]                     [   61.306415] [<c133747d>] phy_probe+0x4d/0xc0
      [   61.306415]                     [   61.306415] [<c1338afe>] phy_attach_direct+0xbe/0x190
      [   61.306415]                     [   61.306415] [<c1338ca7>] phy_connect_direct+0x17/0x60
      [   61.306415]                     [   61.306415] [<c1338d23>] phy_connect+0x33/0x70
      [   61.306415]                     [   61.306415] [<d09357a0>] r6040_init_one+0x3a0/0x500 [r6040]
      [   61.306415]                     [   61.306415] [<c12a78c7>] pci_device_probe+0x77/0xd0
      [   61.306415]                     [   61.306415] [<c12f5e15>] driver_probe_device+0x145/0x280
      [   61.306415]                     [   61.306415] [<c12f5fd9>] __driver_attach+0x89/0x90
      [   61.306415]                     [   61.306415] [<c12f43ef>] bus_for_each_dev+0x4f/0x80
      [   61.306415]                     [   61.306415] [<c12f5954>] driver_attach+0x14/0x20
      [   61.306415]                     [   61.306415] [<c12f55b7>] bus_add_driver+0x197/0x210
      [   61.306415]                     [   61.306415] [<c12f6a21>] driver_register+0x51/0xd0
      [   61.306415]                     [   61.306415] [<c12a6955>] __pci_register_driver+0x45/0x50
      [   61.306415]                     [   61.306415] [<d0938017>] 0xd0938017
      [   61.306415]                     [   61.306415] [<c100043f>] do_one_initcall+0x2f/0x140
      [   61.306415]                     [   61.306415] [<c10e48c0>] do_init_module+0x4a/0x19b
      [   61.306415]                     [   61.306415] [<c10a680e>] load_module+0x1b2e/0x2070
      [   61.306415]                     [   61.306415] [<c10a6eb9>] SyS_finit_module+0x69/0x80
      [   61.306415]                     [   61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110
      [   61.306415]                     [   61.306415] [<c14bba3f>] restore_all+0x0/0x61
      [   61.306415]    SOFTIRQ-ON-W at:
      [   61.306415]                     [   61.306415] [<c1075c0c>] __lock_acquire+0x59c/0x1770
      [   61.306415]                     [   61.306415] [<c107717c>] lock_acquire+0x7c/0x150
      [   61.306415]                     [   61.306415] [<c14b7add>] mutex_lock_nested+0x2d/0x4a0
      [   61.306415]                     [   61.306415] [<c133747d>] phy_probe+0x4d/0xc0
      [   61.306415]                     [   61.306415] [<c1338afe>] phy_attach_direct+0xbe/0x190
      [   61.306415]                     [   61.306415] [<c1338ca7>] phy_connect_direct+0x17/0x60
      [   61.306415]                     [   61.306415] [<c1338d23>] phy_connect+0x33/0x70
      [   61.306415]                     [   61.306415] [<d09357a0>] r6040_init_one+0x3a0/0x500 [r6040]
      [   61.306415]                     [   61.306415] [<c12a78c7>] pci_device_probe+0x77/0xd0
      [   61.306415]                     [   61.306415] [<c12f5e15>] driver_probe_device+0x145/0x280
      [   61.306415]                     [   61.306415] [<c12f5fd9>] __driver_attach+0x89/0x90
      [   61.306415]                     [   61.306415] [<c12f43ef>] bus_for_each_dev+0x4f/0x80
      [   61.306415]                     [   61.306415] [<c12f5954>] driver_attach+0x14/0x20
      [   61.306415]                     [   61.306415] [<c12f55b7>] bus_add_driver+0x197/0x210
      [   61.306415]                     [   61.306415] [<c12f6a21>] driver_register+0x51/0xd0
      [   61.306415]                     [   61.306415] [<c12a6955>] __pci_register_driver+0x45/0x50
      [   61.306415]                     [   61.306415] [<d0938017>] 0xd0938017
      [   61.306415]                     [   61.306415] [<c100043f>] do_one_initcall+0x2f/0x140
      [   61.306415]                     [   61.306415] [<c10e48c0>] do_init_module+0x4a/0x19b
      [   61.306415]                     [   61.306415] [<c10a680e>] load_module+0x1b2e/0x2070
      [   61.306415]                     [   61.306415] [<c10a6eb9>] SyS_finit_module+0x69/0x80
      [   61.306415]                     [   61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110
      [   61.306415]                     [   61.306415] [<c14bba3f>] restore_all+0x0/0x61
      [   61.306415]    INITIAL USE at:
      [   61.306415]                    [   61.306415] [<c107586e>] __lock_acquire+0x1fe/0x1770
      [   61.306415]                    [   61.306415] [<c107717c>] lock_acquire+0x7c/0x150
      [   61.306415]                    [   61.306415] [<c14b7add>] mutex_lock_nested+0x2d/0x4a0
      [   61.306415]                    [   61.306415] [<c133747d>] phy_probe+0x4d/0xc0
      [   61.306415]                    [   61.306415] [<c1338afe>] phy_attach_direct+0xbe/0x190
      [   61.306415]                    [   61.306415] [<c1338ca7>] phy_connect_direct+0x17/0x60
      [   61.306415]                    [   61.306415] [<c1338d23>] phy_connect+0x33/0x70
      [   61.306415]                    [   61.306415] [<d09357a0>] r6040_init_one+0x3a0/0x500 [r6040]
      [   61.306415]                    [   61.306415] [<c12a78c7>] pci_device_probe+0x77/0xd0
      [   61.306415]                    [   61.306415] [<c12f5e15>] driver_probe_device+0x145/0x280
      [   61.306415]                    [   61.306415] [<c12f5fd9>] __driver_attach+0x89/0x90
      [   61.306415]                    [   61.306415] [<c12f43ef>] bus_for_each_dev+0x4f/0x80
      [   61.306415]                    [   61.306415] [<c12f5954>] driver_attach+0x14/0x20
      [   61.306415]                    [   61.306415] [<c12f55b7>] bus_add_driver+0x197/0x210
      [   61.306415]                    [   61.306415] [<c12f6a21>] driver_register+0x51/0xd0
      [   61.306415]                    [   61.306415] [<c12a6955>] __pci_register_driver+0x45/0x50
      [   61.306415]                    [   61.306415] [<d0938017>] 0xd0938017
      [   61.306415]                    [   61.306415] [<c100043f>] do_one_initcall+0x2f/0x140
      [   61.306415]                    [   61.306415] [<c10e48c0>] do_init_module+0x4a/0x19b
      [   61.306415]                    [   61.306415] [<c10a680e>] load_module+0x1b2e/0x2070
      [   61.306415]                    [   61.306415] [<c10a6eb9>] SyS_finit_module+0x69/0x80
      [   61.306415]                    [   61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110
      [   61.306415]                    [   61.306415] [<c14bba3f>] restore_all+0x0/0x61
      [   61.306415]  }
      [   61.306415]  ... key      at: [<c1f28f39>] __key.43998+0x0/0x8
      [   61.306415]  ... acquired at:
      [   61.306415]    [   61.306415] [<c1074a32>] check_irq_usage+0x42/0xb0
      [   61.306415]    [   61.306415] [<c107677c>] __lock_acquire+0x110c/0x1770
      [   61.306415]    [   61.306415] [<c107717c>] lock_acquire+0x7c/0x150
      [   61.306415]    [   61.306415] [<c14b7add>] mutex_lock_nested+0x2d/0x4a0
      [   61.306415]    [   61.306415] [<c1336276>] phy_stop+0x16/0x80
      [   61.306415]    [   61.306415] [<d0934ce9>] r6040_close+0x89/0x230 [r6040]
      [   61.306415]    [   61.306415] [<c13a0a91>] __dev_close_many+0x61/0xa0
      [   61.306415]    [   61.306415] [<c13a0bbf>] __dev_close+0x1f/0x30
      [   61.306415]    [   61.306415] [<c13a9127>] __dev_change_flags+0x87/0x150
      [   61.306415]    [   61.306415] [<c13a9213>] dev_change_flags+0x23/0x60
      [   61.306415]    [   61.306415] [<c1416238>] devinet_ioctl+0x5f8/0x6f0
      [   61.306415]    [   61.306415] [<c1417f75>] inet_ioctl+0x65/0x90
      [   61.306415]    [   61.306415] [<c1389b54>] sock_ioctl+0x124/0x2b0
      [   61.306415]    [   61.306415] [<c113cf7c>] do_vfs_ioctl+0x7c/0x790
      [   61.306415]    [   61.306415] [<c113d6b8>] SyS_ioctl+0x28/0x50
      [   61.306415]    [   61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110
      [   61.306415]    [   61.306415] [<c14bba3f>] restore_all+0x0/0x61
      [   61.306415]
      [   61.306415]
      [   61.306415] stack backtrace:
      [   61.306415] CPU: 0 PID: 449 Comm: ifconfig Not tainted 4.9.0-gb898d2d-manuel #1
      [   61.306415] Call Trace:
      [   61.306415]  dump_stack+0x16/0x19
      [   61.306415]  check_usage+0x3f6/0x550
      [   61.306415]  ? check_usage+0x4d/0x550
      [   61.306415]  check_irq_usage+0x42/0xb0
      [   61.306415]  __lock_acquire+0x110c/0x1770
      [   61.306415]  lock_acquire+0x7c/0x150
      [   61.306415]  ? phy_stop+0x16/0x80
      [   61.306415]  mutex_lock_nested+0x2d/0x4a0
      [   61.306415]  ? phy_stop+0x16/0x80
      [   61.306415]  ? r6040_close+0x24/0x230 [r6040]
      [   61.306415]  ? __delay+0x9/0x10
      [   61.306415]  phy_stop+0x16/0x80
      [   61.306415]  r6040_close+0x89/0x230 [r6040]
      [   61.306415]  __dev_close_many+0x61/0xa0
      [   61.306415]  __dev_close+0x1f/0x30
      [   61.306415]  __dev_change_flags+0x87/0x150
      [   61.306415]  dev_change_flags+0x23/0x60
      [   61.306415]  devinet_ioctl+0x5f8/0x6f0
      [   61.306415]  inet_ioctl+0x65/0x90
      [   61.306415]  sock_ioctl+0x124/0x2b0
      [   61.306415]  ? dlci_ioctl_set+0x30/0x30
      [   61.306415]  do_vfs_ioctl+0x7c/0x790
      [   61.306415]  ? trace_hardirqs_on+0xb/0x10
      [   61.306415]  ? call_rcu_sched+0xd/0x10
      [   61.306415]  ? __put_cred+0x32/0x50
      [   61.306415]  ? SyS_faccessat+0x178/0x1e0
      [   61.306415]  SyS_ioctl+0x28/0x50
      [   61.306415]  do_int80_syscall_32+0x3f/0x110
      [   61.306415]  entry_INT80_32+0x2f/0x2f
      [   61.306415] EIP: 0xb764d364
      [   61.306415] EFLAGS: 00000286 CPU: 0
      [   61.306415] EAX: ffffffda EBX: 00000004 ECX: 00008914 EDX: bfa99d7c
      [   61.306415] ESI: bfa99e4c EDI: fffffffe EBP: 00000004 ESP: bfa99d58
      [   61.306415]  DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 007b
      [   63.836607] r6040 0000:00:08.0 eth0: Link is Down
      Signed-off-by: NManuel Bessler <manuel.bessler@sensus.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c762eaa7