1. 19 12月, 2016 8 次提交
    • L
      Merge tag 'platform-drivers-x86-v4.10-2' of... · 8421c604
      Linus Torvalds 提交于
      Merge tag 'platform-drivers-x86-v4.10-2' of git://git.infradead.org/users/dvhart/linux-platform-drivers-x86
      
      Pull more x86 platform driver updates from Darren Hart:
       "Move and add registration for the mlx-platform driver. Introduce
        button and lid drivers for the surface3 (different from the
        surface3-pro). Add BXT PMIC TMU support. Add Y700 to existing
        ideapad-laptop quirk.
      
        Summary:
      
        ideapad-laptop:
         - Add Y700 15-ACZ to no_hw_rfkill DMI list
      
        surface3_button:
         - Introduce button support for the Surface 3
      
        surface3-wmi:
         - Add custom surface3 platform device for controlling LID
         - Balance locking on error path
      
        mlx-platform:
         - Add mlxcpld-hotplug driver registration
         - Fix semicolon.cocci warnings
         - Move module from arch/x86
      
        platform/x86:
         - Add Whiskey Cove PMIC TMU support"
      
      * tag 'platform-drivers-x86-v4.10-2' of git://git.infradead.org/users/dvhart/linux-platform-drivers-x86:
        platform/x86: surface3-wmi: Balance locking on error path
        platform/x86: Add Whiskey Cove PMIC TMU support
        platform/x86: ideapad-laptop: Add Y700 15-ACZ to no_hw_rfkill DMI list
        platform/x86: Introduce button support for the Surface 3
        platform/x86: Add custom surface3 platform device for controlling LID
        platform/x86: mlx-platform: Add mlxcpld-hotplug driver registration
        platform/x86: mlx-platform: Fix semicolon.cocci warnings
        platform/x86: mlx-platform: Move module from arch/x86
      8421c604
    • A
      platform/x86: surface3-wmi: Balance locking on error path · 83da6b59
      Andy Shevchenko 提交于
      There is a possibility that lock will be left acquired.
      Consolidate error path under out_free_unlock label.
      Reported-by: Nkbuild test robot <fengguang.wu@intel.com>
      Reviewed-by: NBenjamin Tissoires <benjamin.tissoires@redhat.com>
      Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      83da6b59
    • N
      platform/x86: Add Whiskey Cove PMIC TMU support · 957ae509
      Nilesh Bacchewar 提交于
      This adds TMU (Time Management Unit) support for Intel BXT platform.
      It enables the alarm wake-up functionality in the TMU unit of Whiskey Cove
      PMIC.
      Signed-off-by: NNilesh Bacchewar <nilesh.bacchewar@intel.com>
      Reviewed-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      [andy: resolve merge conflict in Kconfig]
      Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      957ae509
    • L
      Merge branch 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f7dd3b17
      Linus Torvalds 提交于
      Pull timer updates from Thomas Gleixner:
       "This is the last functional update from the tip tree for 4.10. It got
        delayed due to a newly reported and anlyzed variant of BIOS bug and
        the resulting wreckage:
      
         - Seperation of TSC being marked realiable and the fact that the
           platform provides the TSC frequency via CPUID/MSRs and making use
           for it for GOLDMONT.
      
         - TSC adjust MSR validation and sanitizing:
      
           The TSC adjust MSR contains the offset to the hardware counter. The
           sum of the adjust MSR and the counter is the TSC value which is
           read via RDTSC.
      
           On at least two machines from different vendors the BIOS sets the
           TSC adjust MSR to negative values. This happens on cold and warm
           boot. While on cold boot the offset is a few milliseconds, on warm
           boot it basically compensates the power on time of the system. The
           BIOSes are not even using the adjust MSR to set all CPUs in the
           package to the same offset. The offsets are different which renders
           the TSC unusable,
      
           What's worse is that the TSC deadline timer has a HW feature^Wbug.
           It malfunctions when the TSC adjust value is negative or greater
           equal 0x80000000 resulting in silent boot failures, hard lockups or
           non firing timers. This looks like some hardware internal 32/64bit
           issue with a sign extension problem. Intel has been silent so far
           on the issue.
      
           The update contains sanity checks and keeps the adjust register
           within working limits and in sync on the package.
      
           As it looks like this disease is spreading via BIOS crapware, we
           need to address this urgently as the boot failures are hard to
           debug for users"
      
      * 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/tsc: Limit the adjust value further
        x86/tsc: Annotate printouts as firmware bug
        x86/tsc: Force TSC_ADJUST register to value >= zero
        x86/tsc: Validate TSC_ADJUST after resume
        x86/tsc: Validate cpumask pointer before accessing it
        x86/tsc: Fix broken CONFIG_X86_TSC=n build
        x86/tsc: Try to adjust TSC if sync test fails
        x86/tsc: Prepare warp test for TSC adjustment
        x86/tsc: Move sync cleanup to a safe place
        x86/tsc: Sync test only for the first cpu in a package
        x86/tsc: Verify TSC_ADJUST from idle
        x86/tsc: Store and check TSC ADJUST MSR
        x86/tsc: Detect random warps
        x86/tsc: Use X86_FEATURE_TSC_ADJUST in detect_art()
        x86/tsc: Finalize the split of the TSC_RELIABLE flag
        x86/tsc: Set TSC_KNOWN_FREQ and TSC_RELIABLE flags on Intel Atom SoCs
        x86/tsc: Mark Intel ATOM_GOLDMONT TSC reliable
        x86/tsc: Mark TSC frequency determined by CPUID as known
        x86/tsc: Add X86_FEATURE_TSC_KNOWN_FREQ flag
      f7dd3b17
    • L
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 1bbb05f5
      Linus Torvalds 提交于
      Pull x86 fixes and cleanups from Thomas Gleixner:
       "This set of updates contains:
      
         - Robustification for the logical package managment. Cures the AMD
           and virtualization issues.
      
         - Put the correct start_cpu() return address on the stack of the idle
           task.
      
         - Fixups for the fallout of the nodeid <-> cpuid persistent mapping
           modifciations
      
         - Move the x86/MPX specific mm_struct member to the arch specific
           mm_context where it belongs
      
         - Cleanups for C89 struct initializers and useless function
           arguments"
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/floppy: Use designated initializers
        x86/mpx: Move bd_addr to mm_context_t
        x86/mm: Drop unused argument 'removed' from sync_global_pgds()
        ACPI/NUMA: Do not map pxm to node when NUMA is turned off
        x86/acpi: Use proper macro for invalid node
        x86/smpboot: Prevent false positive out of bounds cpumask access warning
        x86/boot/64: Push correct start_cpu() return address
        x86/boot/64: Use 'push' instead of 'call' in start_cpu()
        x86/smpboot: Make logical package management more robust
      1bbb05f5
    • L
      Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 451bb1a6
      Linus Torvalds 提交于
      Pull timer fix from Thomas Gleixner:
       "Prevent NULL pointer dereferencing in the tick broadcast code. Old
        bug, which got unearthed by the hotplug ordering problem"
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        tick/broadcast: Prevent NULL pointer dereference
      451bb1a6
    • L
      Merge branch 'smp-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 98da295b
      Linus Torvalds 提交于
      Pull SMP hotplug fixes from Thomas Gleixner:
       "Two fixlets for cpu hotplug:
      
         - Fix a subtle ordering problem with the dummy timer. This happened
           to work before the conversion by chance due to initcall ordering.
      
         - Fix the function comment for __cpuhp_setup_state()"
      
      * 'smp-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        cpu/hotplug: Clarify description of __cpuhp_setup_state() return value
        clocksource/dummy_timer: Move hotplug callback after the real timers
      98da295b
    • L
      Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · eb3a3c07
      Linus Torvalds 提交于
      Pull irq fix from Thomas Gleixner:
       "A fix for the irq affinity spread algorithm so it handles non linear
        node numbering nicely"
      
      * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        genirq/affinity: Fix node generation from cpumask
      eb3a3c07
  2. 18 12月, 2016 32 次提交
    • 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
    • D
      irda: w83977af_ir: cleanup an indent issue · 3a7f0762
      Dan Carpenter 提交于
      In commit 99d8d215 ("irda: w83977af_ir: Neaten logging"), we
      accidentally added an extra tab to these lines.
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3a7f0762
    • P
      net: sfc: use new api ethtool_{get|set}_link_ksettings · 7cafe8f8
      Philippe Reynes 提交于
      The ethtool api {get|set}_settings is deprecated.
      We move this driver to new api {get|set}_link_ksettings.
      Signed-off-by: NPhilippe Reynes <tremyfr@gmail.com>
      Tested-by: NBert Kenward <bkenward@solarflare.com>
      Acked-by: NBert Kenward <bkenward@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7cafe8f8
    • P
      net: davicom: dm9000: use new api ethtool_{get|set}_link_ksettings · 99bff5ee
      Philippe Reynes 提交于
      The ethtool api {get|set}_settings is deprecated.
      We move this driver to new api {get|set}_link_ksettings.
      Signed-off-by: NPhilippe Reynes <tremyfr@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      99bff5ee
    • P
      net: cirrus: ep93xx: use new api ethtool_{get|set}_link_ksettings · 93dfe6c2
      Philippe Reynes 提交于
      The ethtool api {get|set}_settings is deprecated.
      We move this driver to new api {get|set}_link_ksettings.
      Signed-off-by: NPhilippe Reynes <tremyfr@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      93dfe6c2
    • P
      net: chelsio: cxgb3: use new api ethtool_{get|set}_link_ksettings · b7b44fd2
      Philippe Reynes 提交于
      The ethtool api {get|set}_settings is deprecated.
      We move this driver to new api {get|set}_link_ksettings.
      Signed-off-by: NPhilippe Reynes <tremyfr@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b7b44fd2
    • P
      net: chelsio: cxgb2: use new api ethtool_{get|set}_link_ksettings · 49cad939
      Philippe Reynes 提交于
      The ethtool api {get|set}_settings is deprecated.
      We move this driver to new api {get|set}_link_ksettings.
      Signed-off-by: NPhilippe Reynes <tremyfr@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      49cad939
    • D
      Merge branch 'bpf-fixes' · 6219d055
      David S. Miller 提交于
      Daniel Borkmann says:
      
      ====================
      Couple of BPF fixes
      
      This set contains three BPF fixes for net, one that addresses the
      complaint from Geert wrt static allocations, and the other is a fix
      wrt mem accounting that I found recently during testing and there's
      still one more fix on the map value marking.
      
      Thanks!
      
      v1 -> v2:
        - Patch 1 as is.
        - Fixed kbuild bot issue by letting charging helpers stay in the
          syscall.c, since there locked_vm is valid and only export the
          ones needed by bpf_prog_realloc(). Add empty stubs in case the
          bpf syscall is not enabled.
        - Added patch 3 that addresses one more issue in map val marking.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6219d055
    • D
      bpf: fix mark_reg_unknown_value for spilled regs on map value marking · 6760bf2d
      Daniel Borkmann 提交于
      Martin reported a verifier issue that hit the BUG_ON() for his
      test case in the mark_reg_unknown_value() function:
      
        [  202.861380] kernel BUG at kernel/bpf/verifier.c:467!
        [...]
        [  203.291109] Call Trace:
        [  203.296501]  [<ffffffff811364d5>] mark_map_reg+0x45/0x50
        [  203.308225]  [<ffffffff81136558>] mark_map_regs+0x78/0x90
        [  203.320140]  [<ffffffff8113938d>] do_check+0x226d/0x2c90
        [  203.331865]  [<ffffffff8113a6ab>] bpf_check+0x48b/0x780
        [  203.343403]  [<ffffffff81134c8e>] bpf_prog_load+0x27e/0x440
        [  203.355705]  [<ffffffff8118a38f>] ? handle_mm_fault+0x11af/0x1230
        [  203.369158]  [<ffffffff812d8188>] ? security_capable+0x48/0x60
        [  203.382035]  [<ffffffff811351a4>] SyS_bpf+0x124/0x960
        [  203.393185]  [<ffffffff810515f6>] ? __do_page_fault+0x276/0x490
        [  203.406258]  [<ffffffff816db320>] entry_SYSCALL_64_fastpath+0x13/0x94
      
      This issue got uncovered after the fix in a08dd0da ("bpf: fix
      regression on verifier pruning wrt map lookups"). The reason why it
      wasn't noticed before was, because as mentioned in a08dd0da,
      mark_map_regs() was doing the id matching incorrectly based on the
      uncached regs[regno].id. So, in the first loop, we walked all regs
      and as soon as we found regno == i, then this reg's id was cleared
      when calling mark_reg_unknown_value() thus that every subsequent
      register was probed against id of 0 (which, in combination with the
      PTR_TO_MAP_VALUE_OR_NULL type is an invalid condition that no other
      register state can hold), and therefore wasn't type transitioned such
      as in the spilled register case for the second loop.
      
      Now since that got fixed, it turned out that 57a09bf0 ("bpf:
      Detect identical PTR_TO_MAP_VALUE_OR_NULL registers") used
      mark_reg_unknown_value() incorrectly for the spilled regs, and thus
      hitting the BUG_ON() in some cases due to regno >= MAX_BPF_REG.
      
      Although spilled regs have the same type as the non-spilled regs
      for the verifier state, that is, struct bpf_reg_state, they are
      semantically different from the non-spilled regs. In other words,
      there can be up to 64 (MAX_BPF_STACK / BPF_REG_SIZE) spilled regs
      in the stack, for example, register R<x> could have been spilled by
      the program to stack location X, Y, Z, and in mark_map_regs() we
      need to scan these stack slots of type STACK_SPILL for potential
      registers that we have to transition from PTR_TO_MAP_VALUE_OR_NULL.
      Therefore, depending on the location, the spilled_regs regno can
      be a lot higher than just MAX_BPF_REG's value since we operate on
      stack instead. The reset in mark_reg_unknown_value() itself is
      just fine, only that the BUG_ON() was inappropriate for this. Fix
      it by making a __mark_reg_unknown_value() version that can be
      called from mark_map_reg() generically; we know for the non-spilled
      case that the regno is always < MAX_BPF_REG anyway.
      
      Fixes: 57a09bf0 ("bpf: Detect identical PTR_TO_MAP_VALUE_OR_NULL registers")
      Reported-by: NMartin KaFai Lau <kafai@fb.com>
      Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: NAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6760bf2d
    • D
      bpf: fix overflow in prog accounting · 5ccb071e
      Daniel Borkmann 提交于
      Commit aaac3ba9 ("bpf: charge user for creation of BPF maps and
      programs") made a wrong assumption of charging against prog->pages.
      Unlike map->pages, prog->pages are still subject to change when we
      need to expand the program through bpf_prog_realloc().
      
      This can for example happen during verification stage when we need to
      expand and rewrite parts of the program. Should the required space
      cross a page boundary, then prog->pages is not the same anymore as
      its original value that we used to bpf_prog_charge_memlock() on. Thus,
      we'll hit a wrap-around during bpf_prog_uncharge_memlock() when prog
      is freed eventually. I noticed this that despite having unlimited
      memlock, programs suddenly refused to load with EPERM error due to
      insufficient memlock.
      
      There are two ways to fix this issue. One would be to add a cached
      variable to struct bpf_prog that takes a snapshot of prog->pages at the
      time of charging. The other approach is to also account for resizes. I
      chose to go with the latter for a couple of reasons: i) We want accounting
      rather to be more accurate instead of further fooling limits, ii) adding
      yet another page counter on struct bpf_prog would also be a waste just
      for this purpose. We also do want to charge as early as possible to
      avoid going into the verifier just to find out later on that we crossed
      limits. The only place that needs to be fixed is bpf_prog_realloc(),
      since only here we expand the program, so we try to account for the
      needed delta and should we fail, call-sites check for outcome anyway.
      On cBPF to eBPF migrations, we don't grab a reference to the user as
      they are charged differently. With that in place, my test case worked
      fine.
      
      Fixes: aaac3ba9 ("bpf: charge user for creation of BPF maps and programs")
      Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: NAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5ccb071e
    • D
      bpf: dynamically allocate digest scratch buffer · aafe6ae9
      Daniel Borkmann 提交于
      Geert rightfully complained that 7bd509e3 ("bpf: add prog_digest
      and expose it via fdinfo/netlink") added a too large allocation of
      variable 'raw' from bss section, and should instead be done dynamically:
      
        # ./scripts/bloat-o-meter kernel/bpf/core.o.1 kernel/bpf/core.o.2
        add/remove: 3/0 grow/shrink: 0/0 up/down: 33291/0 (33291)
        function                                     old     new   delta
        raw                                            -   32832  +32832
        [...]
      
      Since this is only relevant during program creation path, which can be
      considered slow-path anyway, lets allocate that dynamically and be not
      implicitly dependent on verifier mutex. Move bpf_prog_calc_digest() at
      the beginning of replace_map_fd_with_map_ptr() and also error handling
      stays straight forward.
      Reported-by: NGeert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: NAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      aafe6ae9
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile · d9cb5bfc
      Linus Torvalds 提交于
      Pull arch/tile updates from Chris Metcalf:
       "Another grab-bag of miscellaneous changes"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
        tile: use __ro_after_init instead of tile-specific __write_once
        tile: migrate exception table users off module.h and onto extable.h
        tile: remove #pragma unroll from finv_buffer_remote()
        tile-module: Rename jump labels in module_alloc()
        tile-module: Use kmalloc_array() in module_alloc()
        tile/pci_gx: fix spelling mistake: "delievered" -> "delivered"
      d9cb5bfc
    • L
      Merge tag 'kvmgt-vfio-mdev-for-v4.10-rc1' of git://github.com/01org/gvt-linux · 0f484e42
      Linus Torvalds 提交于
      Pull i915/gvt KVMGT updates from Zhenyu Wang:
       "KVMGT support depending on the VFIO/mdev framework"
      
      * tag 'kvmgt-vfio-mdev-for-v4.10-rc1' of git://github.com/01org/gvt-linux:
        drm/i915/gvt/kvmgt: add vfio/mdev support to KVMGT
        drm/i915/gvt/kvmgt: read/write GPA via KVM API
        drm/i915/gvt/kvmgt: replace kmalloc() by kzalloc()
      0f484e42
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · af79ce47
      Linus Torvalds 提交于
      Pull input subsystem updates from Dmitry Torokhov:
      
       - updated support for Synaptics RMI4 devices, including support for
         SMBus controllers, firmware update support, sensor tuning, and PS/2
         guest support
      
       - ALPS driver now supports tracksticks on SS5 controllers
      
       - i8042 now uses chassis info to skip selftest on Asus laptops as list
         of individual models became too unwieldy
      
       - miscellaneous fixes to other drivers
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (67 commits)
        Input: imx6ul_tsc - generalize the averaging property
        Input: drv260x - use generic device properties
        Input: drv260x - use temporary for &client->dev
        Input: drv260x - fix input device's parent assignment
        Input: synaptics-rmi4 - add support for F34 V7 bootloader
        Input: drv260x - fix initializing overdrive voltage
        Input: ALPS - fix protcol -> protocol
        Input: i8042 - comment #else/#endif of CONFIG_PNP
        Input: lpc32xx-keys - fix invalid error handling of a requested irq
        Input: synaptics-rmi4 - fix debug for sensor clip
        Input: synaptics-rmi4 - store the attn data in the driver
        Input: synaptics-rmi4 - allow to add attention data
        Input: synaptics-rmi4 - f03 - grab data passed by transport device
        Input: synaptics-rmi4 - add support for F03
        Input: imx6ul_tsc - convert int to u32
        Input: imx6ul_tsc - add mask when set REG_ADC_CFG
        Input: synaptics-rmi4 - have only one struct platform data
        Input: synaptics-rmi4 - remove EXPORT_SYMBOL_GPL for internal functions
        Input: synaptics-rmi4 - remove mutex calls while updating the firmware
        Input: drv2667 - fix misuse of regmap_update_bits
        ...
      af79ce47
    • L
      Merge tag 'for-linus-20161216' of git://git.infradead.org/linux-mtd · c07dee73
      Linus Torvalds 提交于
      Pull MTD updates from Brian Norris:
       "Nothing enormous here, though notably we have some of the first work
        of a few new maintainers. I think for now I'll still be sending pull
        requests, but that's open to change in the future. Summary:
      
        Core:
      
         - dynamic BDI object allocation (resolves some problems when built as
           a module)
         - cleanups in the ooblayout handling
      
        NAND:
      
         - new tango NAND controller driver
         - new ox820 NAND controller driver
         - addition of a new full-ID entry in the nand_ids table
         - rework of the s3c240 driver to support DT
         - extension of the nand_sdr_timings to expose tCCS, tPROG and tR
         - addition of a new flag to ask the core to wait for tCCS when
           sending a RNDIN/RNDOUT command
         - addition of a new flag to ask the core to let the controller driver
           send the READ/PROGPAGE command
      
        Minor fixes/cleanup/cosmetic changes:
      
         - properly support 512 ECC step size in the sunxi driver
         - improve the error messages in the PXA probe path
         - fix module autoload in the omap2 driver
         - cleanup of several nand drivers to return nand_scan{_tail}() error
           code instead of returning -EIO
         - various cleanups in the denali driver
         - fix an error check in nandsim
      
        SPI NOR:
      
         - new flash IDs
         - wait for Spansion flash to be ready after quad-enable
         - error handling fixes for Candence QSPI
         - constify some structures in Freescale QSPI driver"
      
      * tag 'for-linus-20161216' of git://git.infradead.org/linux-mtd: (71 commits)
        mtd: Allocate bdi objects dynamically
        mtd: nand: tango: Add standard legalese header
        mtd: maps: add missing iounmap() in error path
        mtd: spi-nor: constify fsl_qspi_devtype_data
        mtd: spi-nor: Add support for mr25h40
        mtd: spi-nor: Add support for N25Q016A
        mtd: spi-nor: Add at25df321 spi-nor flash support
        mtd: spi-nor: Fix some error codes in cqspi_setup_flash()
        mtd: spi-nor: Off by one in cqspi_setup_flash()
        mtd: spi-nor: add support for s25fl208k
        mtd: spi-nor: fix flags for s25fl128s
        mtd: spi-nor: fix spansion quad enable
        mtd: spi-nor: add Macronix mx25u25635f to list of known devices.
        mtd: mtdswap: fix spelling mistake "erassure" -> "erasure"
        mtd: bcm47xxpart: fix parsing first block after aligned TRX
        mtd: nand: tango: Use nand_to_mtd() instead of directly accessing chip->mtd
        mtd: remove unneeded initializer in mtd_ooblayout_count_bytes()
        mtd: use min_t() to refactor mtd_ooblayout_{get, set}_bytes()
        mtd: remove unneeded initializer in mtd_ooblayout_{get, set}_bytes()
        mtd: nand: nandsim: fix error check
        ...
      c07dee73
    • L
      Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild · 135c9197
      Linus Torvalds 提交于
      Pull kbuild misc updates from Michal Marek:
      
       - one new coccinelle check and improvements to irqf_oneshot.cocci
      
       - 'make rpm' POSIX compatibility fix
      
       - 'make deb-pkg' arm64 cross-compiling fix. I forgot to send this one
         during the v4.9 rc-phase, therefor the pull request is based on -rc6
         and not -rc1
      
      * 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
        Coccinelle: misc: Add support for devm variant in all modes
        Coccinelle: misc: Improve the result given by context mode
        Coccinelle: misc: Improve the matching of rules
        kbuild/mkspec: avoid using brace expansion
        Coccinelle: Add misc/boolconv.cocci
        builddeb: fix cross-building to arm64 producing host-arch debs
      135c9197
    • L
      Merge branch 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild · 37861ffa
      Linus Torvalds 提交于
      Pull kconfig updates from Michal Marek:
      
       - 'make xconfig' gui fixes
      
       - 'make nconfig' fix for options with long prompts
      
       - fix 'make nconfig' warning when pkg-config forces -D_GNU_SOURCE
      
      * 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
        xconfig: fix missing suboption and help panels on first run
        xconfig: fix 'Show Debug' functionality
        kconfig/nconf: Fix hang when editing symbol with a long prompt
        Scripts: kconfig: nconf: fix _GNU_SOURCE redefined warning
      37861ffa
    • L
      Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild · 41e0e24b
      Linus Torvalds 提交于
      Pull kbuild updates from Michal Marek:
      
       - prototypes for x86 asm-exported symbols (Adam Borowski) and a warning
         about missing CRCs (Nick Piggin)
      
       - asm-exports fix for LTO (Nicolas Pitre)
      
       - thin archives improvements (Nick Piggin)
      
       - linker script fix for CONFIG_LD_DEAD_CODE_DATA_ELIMINATION (Nick
         Piggin)
      
       - genksyms support for __builtin_va_list keyword
      
       - misc minor fixes
      
      * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
        x86/kbuild: enable modversions for symbols exported from asm
        kbuild: fix scripts/adjust_autoksyms.sh* for the no modules case
        scripts/kallsyms: remove last remnants of --page-offset option
        make use of make variable CURDIR instead of calling pwd
        kbuild: cmd_export_list: tighten the sed script
        kbuild: minor improvement for thin archives build
        kbuild: modpost warn if export version crc is missing
        kbuild: keep data tables through dead code elimination
        kbuild: improve linker compatibility with lib-ksyms.o build
        genksyms: Regenerate parser
        kbuild/genksyms: handle va_list type
        kbuild: thin archives for multi-y targets
        kbuild: kallsyms allow 3-pass generation if symbols size has changed
      41e0e24b
    • L
      Merge tag 'docs-4.10-2' of git://git.lwn.net/linux · 0aaf2146
      Linus Torvalds 提交于
      Pull more documentation updates from Jonathan Corbet:
       "This converts the crypto DocBook to Sphinx"
      
      * tag 'docs-4.10-2' of git://git.lwn.net/linux:
        crypto: doc - optimize compilation
        crypto: doc - clarify AEAD memory structure
        crypto: doc - remove crypto_alloc_ablkcipher
        crypto: doc - add KPP documentation
        crypto: doc - fix separation of cipher / req API
        crypto: doc - fix source comments for Sphinx
        crypto: doc - remove crypto API DocBook
        crypto: doc - convert crypto API documentation to Sphinx
      0aaf2146