1. 14 May, 2015 2 commits
    • Eric Dumazet's avatar
      netlink: move nl_table in read_mostly section · 91dd93f9
      Eric Dumazet authored
      netlink sockets creation and deletion heavily modify nl_table_users
      and nl_table_lock.
      
      If nl_table is sharing one cache line with one of them, netlink
      performance is really bad on SMP.
      
      ffffffff81ff5f00 B nl_table
      ffffffff81ff5f0c b nl_table_users
      
      Putting nl_table in read_mostly section increased performance
      of my open/delete netlink sockets test by about 80 %
      
      This came up while diagnosing a getaddrinfo() problem.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      91dd93f9
    • Vlad Yasevich's avatar
      vlan: Correctly propagate promisc|allmulti flags in notifier. · be346ffa
      Vlad Yasevich authored
      Currently vlan notifier handler will try to update all vlans
      for a device when that device comes up.  A problem occurs,
      however, when the vlan device was set to promiscuous, but not
      by the user (ex: a bridge).  In that case, dev->gflags are
      not updated.  What results is that the lower device ends
      up with an extra promiscuity count.  Here are the
      backtraces that prove this:
      [62852.052179]  [<ffffffff814fe248>] __dev_set_promiscuity+0x38/0x1e0
      [62852.052186]  [<ffffffff8160bcbb>] ? _raw_spin_unlock_bh+0x1b/0x40
      [62852.052188]  [<ffffffff814fe4be>] ? dev_set_rx_mode+0x2e/0x40
      [62852.052190]  [<ffffffff814fe694>] dev_set_promiscuity+0x24/0x50
      [62852.052194]  [<ffffffffa0324795>] vlan_dev_open+0xd5/0x1f0 [8021q]
      [62852.052196]  [<ffffffff814fe58f>] __dev_open+0xbf/0x140
      [62852.052198]  [<ffffffff814fe88d>] __dev_change_flags+0x9d/0x170
      [62852.052200]  [<ffffffff814fe989>] dev_change_flags+0x29/0x60
      
      The above comes from the setting the vlan device to IFF_UP state.
      
      [62852.053569]  [<ffffffff814fe248>] __dev_set_promiscuity+0x38/0x1e0
      [62852.053571]  [<ffffffffa032459b>] ? vlan_dev_set_rx_mode+0x2b/0x30
      [8021q]
      [62852.053573]  [<ffffffff814fe8d5>] __dev_change_flags+0xe5/0x170
      [62852.053645]  [<ffffffff814fe989>] dev_change_flags+0x29/0x60
      [62852.053647]  [<ffffffffa032334a>] vlan_device_event+0x18a/0x690
      [8021q]
      [62852.053649]  [<ffffffff8161036c>] notifier_call_chain+0x4c/0x70
      [62852.053651]  [<ffffffff8109d456>] raw_notifier_call_chain+0x16/0x20
      [62852.053653]  [<ffffffff814f744d>] call_netdevice_notifiers+0x2d/0x60
      [62852.053654]  [<ffffffff814fe1a3>] __dev_notify_flags+0x33/0xa0
      [62852.053656]  [<ffffffff814fe9b2>] dev_change_flags+0x52/0x60
      [62852.053657]  [<ffffffff8150cd57>] do_setlink+0x397/0xa40
      
      And this one comes from the notification code.  What we end
      up with is a vlan with promiscuity count of 1 and and a physical
      device with a promiscuity count of 2.  They should both have
      a count 1.
      
      To resolve this issue, vlan code can use dev_get_flags() api
      which correctly masks promiscuity and allmulti flags.
      Signed-off-by: default avatarVlad Yasevich <vyasevic@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      be346ffa
  2. 13 May, 2015 6 commits
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 110bc767
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) Handle max TX power properly wrt VIFs and the MAC in iwlwifi, from
          Avri Altman.
      
       2) Use the correct FW API for scan completions in iwlwifi, from Avraham
          Stern.
      
       3) FW monitor in iwlwifi accidently uses unmapped memory, fix from Liad
          Kaufman.
      
       4) rhashtable conversion of mac80211 station table was buggy, the
          virtual interface was not taken into account.  Fix from Johannes
          Berg.
      
       5) Fix deadlock in rtlwifi by not using a zero timeout for
          usb_control_msg(), from Larry Finger.
      
       6) Update reordering state before calculating loss detection, from
          Yuchung Cheng.
      
       7) Fix off by one in bluetooth firmward parsing, from Dan Carpenter.
      
       8) Fix extended frame handling in xiling_can driver, from Jeppe
          Ledet-Pedersen.
      
       9) Fix CODEL packet scheduler behavior in the presence of TSO packets,
          from Eric Dumazet.
      
      10) Fix NAPI budget testing in fm10k driver, from Alexander Duyck.
      
      11) macvlan needs to propagate promisc settings down the the lower
          device, from Vlad Yasevich.
      
      12) igb driver can oops when changing number of rings, from Toshiaki
          Makita.
      
      13) Source specific default routes not handled properly in ipv6, from
          Markus Stenberg.
      
      14) Use after free in tc_ctl_tfilter(), from WANG Cong.
      
      15) Use softirq spinlocking in netxen driver, from Tony Camuso.
      
      16) Two ARM bpf JIT fixes from Nicolas Schichan.
      
      17) Handle MSG_DONTWAIT properly in ring based AF_PACKET sends, from
          Mathias Kretschmer.
      
      18) Fix x86 bpf JIT implementation of FROM_{BE16,LE16,LE32}, from Alexei
          Starovoitov.
      
      19) ll_temac driver DMA maps TX packet header with incorrect length, fix
          from Michal Simek.
      
      20) We removed pm_qos bits from netdevice.h, but some indirect
          references remained.  Kill them.  From David Ahern.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (90 commits)
        net: Remove remaining remnants of pm_qos from netdevice.h
        e1000e: Add pm_qos header
        net: phy: micrel: Fix regression in kszphy_probe
        net: ll_temac: Fix DMA map size bug
        x86: bpf_jit: fix FROM_BE16 and FROM_LE16/32 instructions
        netns: return RTM_NEWNSID instead of RTM_GETNSID on a get
        Update be2net maintainers' email addresses
        net_sched: gred: use correct backlog value in WRED mode
        pppoe: drop pppoe device in pppoe_unbind_sock_work
        net: qca_spi: Fix possible race during probe
        net: mdio-gpio: Allow for unspecified bus id
        af_packet / TX_RING not fully non-blocking (w/ MSG_DONTWAIT).
        bnx2x: limit fw delay in kdump to 5s after boot
        ARM: net: delegate filter to kernel interpreter when imm_offset() return value can't fit into 12bits.
        ARM: net fix emit_udiv() for BPF_ALU | BPF_DIV | BPF_K intruction.
        mpls: Change reserved label names to be consistent with netbsd
        usbnet: avoid integer overflow in start_xmit
        netxen_nic: use spin_[un]lock_bh around tx_clean_lock (2)
        net: xgene_enet: Set hardware dependency
        net: amd-xgbe: Add hardware dependency
        ...
      110bc767
    • David Ahern's avatar
      net: Remove remaining remnants of pm_qos from netdevice.h · 01d460dd
      David Ahern authored
      Commit e2c65448 removed pm_qos from struct net_device but left the
      comment and header file. Remove those.
      Signed-off-by: default avatarDavid Ahern <dsahern@gmail.com>
      Cc: Thomas Graf <tgraf@suug.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      01d460dd
    • David Ahern's avatar
      e1000e: Add pm_qos header · 5684044f
      David Ahern authored
      Commit e2c65448 moved pm_qos_req to e1000_adapter. Add the header file
      that defines the struct.
      Signed-off-by: default avatarDavid Ahern <dsahern@gmail.com>
      Cc: Thomas Graf <tgraf@suug.ch>
      Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5684044f
    • Niklas Cassel's avatar
      net: phy: micrel: Fix regression in kszphy_probe · bced8701
      Niklas Cassel authored
      Don't do clock-mode-select if clk == NULL,
      since when building without CONFIG_HAVE_CLK,
      clk_get returns NULL and clk_get_rate returns 0.
      
      Doing clock-mode-select in this cause causes kszphy_probe to
      return -EINVAL and thus prevents the device from being probed.
      
      The original code (before regression) would return 0
      when building without CONFIG_HAVE_CLK.
      
      Cc: stable <stable@vger.kernel.org> # 3.18+
      Fixes: 1fadee0c ("net/phy: micrel: Add clock support for
      KSZ8021/KSZ8031")
      Reviewed-by: default avatarFabio Estevam <fabio.estevam@freescale.com>
      Reviewed-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarNiklas Cassel <niklass@axis.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bced8701
    • Michal Simek's avatar
      net: ll_temac: Fix DMA map size bug · 44d4f8d7
      Michal Simek authored
      DMA allocates skb->len instead of headlen
      which is used for DMA.
      Signed-off-by: default avatarMichal Simek <michal.simek@xilinx.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      44d4f8d7
    • Alexei Starovoitov's avatar
      x86: bpf_jit: fix FROM_BE16 and FROM_LE16/32 instructions · 343f845b
      Alexei Starovoitov authored
      FROM_BE16:
      'ror %reg, 8' doesn't clear upper bits of the register,
      so use additional 'movzwl' insn to zero extend 16 bits into 64
      
      FROM_LE16:
      should zero extend lower 16 bits into 64 bit
      
      FROM_LE32:
      should zero extend lower 32 bits into 64 bit
      
      Fixes: 89aa0758 ("net: sock: allow eBPF programs to be attached to sockets")
      Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      343f845b
  3. 12 May, 2015 11 commits
    • Linus Torvalds's avatar
      Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus · 6c9d370c
      Linus Torvalds authored
      Pull MIPS fixes from Ralf Baechle:
       "One build fix for build breakage of all MIPS SMP kernels caused by
        Rusty's fix of obsolete use of cpu mask helpers, another to fix the FP
        ABI selection when loading an ELF binary"
      
      * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
        MIPS: fix FP mode selection in lieu of .MIPS.abiflags data
        MIPS: SMP: Fix build error.
      6c9d370c
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma · 03906ca3
      Linus Torvalds authored
      Pull rdma fixes from Doug Ledford:
       - update MAINTAINERS git repo pointer
       - printk garbage fix
       - fix for qib and iw_cxgb4 bugs introduced in 4.1 window
       - fix for an older iWARP netlink bug
       - fix a memcpy issue in ehca driver
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma:
        infiniband: Remove duplicated KERN_<LEVEL> from pr_<level> uses
        IB/qib: fix test of unsigned variable
        RDMA/core: Fix for parsing netlink string attribute
        MAINTAINERS: update the official rdma git repo
        iw_cxgb4: use wildcard mapping for getting remote addr info
        IB/ehca: use correct destination for memcpy
      03906ca3
    • Nicolas Dichtel's avatar
      netns: return RTM_NEWNSID instead of RTM_GETNSID on a get · e3d8ecb7
      Nicolas Dichtel authored
      Usually, RTM_NEWxxx is returned on a get (same as a dump).
      
      Fixes: 0c7aecd4 ("netns: add rtnl cmd to add and get peer netns ids")
      Signed-off-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e3d8ecb7
    • Linus Torvalds's avatar
      Merge tag 'for-v4.1-rc' of git://git.infradead.org/battery-2.6 · cc49e8c9
      Linus Torvalds authored
      Pull power supply and reset fixes from Sebastian Reichel:
       "misc fixes"
      
      * tag 'for-v4.1-rc' of git://git.infradead.org/battery-2.6:
        power: bq27x00_battery: Add missing MODULE_ALIAS
        power: reset: Add MFD_SYSCON depends for brcmstb
        power: reset: ltc2952: Remove bogus hrtimer_start() return value checks
        power_supply: fix oops in collie_battery driver
        power/reset: at91: fix return value check in at91_reset_platform_probe()
        MAINTAINERS: Add me as maintainer of Nokia N900 power supply drivers
        axp288_fuel_gauge: Add original author details
      cc49e8c9
    • Joe Perches's avatar
      infiniband: Remove duplicated KERN_<LEVEL> from pr_<level> uses · f4f01b54
      Joe Perches authored
      These KERN_<LEVEL> uses are unnecessary with pr_<level> and cause
      bad logging output so remove them.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Acked-by: default avatarSteve Wise <swise@opengridcomputing.com>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      f4f01b54
    • Mike Marciniszyn's avatar
      IB/qib: fix test of unsigned variable · ec40f925
      Mike Marciniszyn authored
      Commit d4988623 ("IB/qib: use arch_phys_wc_add()")
      adjusted mtrr inititialization to use the new interface.
      
      Unfortunately, the new interface returns a signed
      value and the patch tested the unsigned wc_cookie.
      
      Fix the issue by changing the type of wc_cookie to int.  For
      the success case the ret left at zero to avoid
      a warning from the caller.  For failure wc_cookie
      is used as the ret.
      Signed-off-by: default avatarMike Marciniszyn <mike.marciniszyn@intel.com>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      ec40f925
    • Tatyana Nikolova's avatar
      RDMA/core: Fix for parsing netlink string attribute · ec04847c
      Tatyana Nikolova authored
      The string iwpm_ulib_name is recorded in a nlmsg as a netlink attribute.
      Without this fix parsing of the nlmsg by the userspace port mapper service fails
      because of unknown attribute length, causing the port mapper service not to
      register the client, which has sent the nlmsg.
      Signed-off-by: default avatarTatyana Nikolova <tatyana.e.nikolova@intel.com>
      Cc: <stable@vger.kernel.org> #v3.16
      Reviewed-By: default avatarJason Gunthorpe <jgunthorpe@obsidianresearch.com>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      ec04847c
    • Paul Burton's avatar
      MIPS: fix FP mode selection in lieu of .MIPS.abiflags data · 620b1550
      Paul Burton authored
      Commit 46490b57 ("MIPS: kernel: elf: Improve the overall ABI and FPU
      mode checks") reworked the ELF FP ABI mode selection logic, but when
      CONFIG_MIPS_O32_FP64_SUPPORT is enabled it breaks the use of binaries
      which have no PT_MIPS_ABIFLAGS program header & associated
      .MIPS.abiflags section.
      
      A default mode is selected based upon whether the ELF contains MIPS32 or
      MIPS64 code, but that selection is made in arch_elf_pt_proc.
      arch_elf_pt_proc only executes when a PT_MIPS_ABIFLAGS program header is
      found. If one is not found then arch_elf_pt_proc is never called, and no
      default overall_fp_mode value is selected. When arch_check_elf is
      called, both abi0 & abi1 are MIPS_ABI_FP_UNKNOWN which leads to both
      prog_req & interp_req being set to none_req. none_req matches none of
      the conditions for mode selection at the end of arch_check_elf, so
      overall_fp_mode is left untouched. Finally once mips_set_personality_fp
      is called the BUG() in the default case is then hit & the kernel likely
      panics.
      
      Fix this by moving the selection of a default overall mode to the start
      of arch_check_elf, which runs once per ELF executed regardless of
      whether it has a PT_MIPS_ABIFLAGS program header.
      Signed-off-by: default avatarPaul Burton <paul.burton@imgtec.com>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Cc: Matthew Fortune <matthew.fortune@imgtec.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: linux-mips@linux-mips.org
      Cc: stable@vger.kernel.org # v4.0+
      Patchwork: http://patchwork.linux-mips.org/patch/9978/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      620b1550
    • Sathya Perla's avatar
      Update be2net maintainers' email addresses · 6938f855
      Sathya Perla authored
      Emulex developers' email addresses are now "@avagotech" instead of
      "@emulex". I'm also replacing Subbu with Padmanabh and Sriharsha in the
      maintainers list. The driver's heading was outdated and did not include
      some of the chip types (BE3, Lancer and Skyhawk) that the driver has
      been supporting for a longtime. I've updated this too.
      Signed-off-by: default avatarSathya Perla <sathya.perla@avagotech.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6938f855
    • Ralf Baechle's avatar
      MIPS: SMP: Fix build error. · cafb45b2
      Ralf Baechle authored
        CC      arch/mips/kernel/smp.o
      arch/mips/kernel/smp.c: In function ‘start_secondary’:
      arch/mips/kernel/smp.c:149:2: error: passing argument 2 of ‘cpumask_set_cpu’ discards ‘volatile’ qualifier from pointer target type [-Werror]
        cpumask_set_cpu(cpu, &cpu_callin_map);
        ^
      In file included from ./arch/mips/include/asm/processor.h:14:0,
                       from ./arch/mips/include/asm/thread_info.h:15,
                       from include/linux/thread_info.h:54,
                       from include/asm-generic/preempt.h:4,
                       from arch/mips/include/generated/asm/preempt.h:1,
                       from include/linux/preempt.h:18,
                       from include/linux/interrupt.h:8,
                       from arch/mips/kernel/smp.c:24:
      include/linux/cpumask.h:272:91: note: expected ‘struct cpumask *’ but argument is of type ‘volatile struct cpumask_t *’
       static inline void cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp)
                                                                                                 ^
      arch/mips/kernel/smp.c: In function ‘smp_prepare_boot_cpu’:
      arch/mips/kernel/smp.c:211:2: error: passing argument 2 of ‘cpumask_set_cpu’ discards ‘volatile’ qualifier from pointer target type [-Werror]
        cpumask_set_cpu(0, &cpu_callin_map);
        ^
      In file included from ./arch/mips/include/asm/processor.h:14:0,
                       from ./arch/mips/include/asm/thread_info.h:15,
                       from include/linux/thread_info.h:54,
                       from include/asm-generic/preempt.h:4,
                       from arch/mips/include/generated/asm/preempt.h:1,
                       from include/linux/preempt.h:18,
                       from include/linux/interrupt.h:8,
                       from arch/mips/kernel/smp.c:24:
      include/linux/cpumask.h:272:91: note: expected ‘struct cpumask *’ but argument is of type ‘volatile struct cpumask_t *’
       static inline void cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp)
                                                                                                 ^
      arch/mips/kernel/smp.c: In function ‘__cpu_up’:
      arch/mips/kernel/smp.c:221:10: error: passing argument 2 of ‘cpumask_test_cpu’ discards ‘volatile’ qualifier from pointer target type [-Werror]
        while (!cpumask_test_cpu(cpu, &cpu_callin_map))
                ^
      In file included from ./arch/mips/include/asm/processor.h:14:0,
                       from ./arch/mips/include/asm/thread_info.h:15,
                       from include/linux/thread_info.h:54,
                       from include/asm-generic/preempt.h:4,
                       from arch/mips/include/generated/asm/preempt.h:1,
                       from include/linux/preempt.h:18,
                       from include/linux/interrupt.h:8,
                       from arch/mips/kernel/smp.c:24:
      include/linux/cpumask.h:294:90: note: expected ‘const struct cpumask *’ but argument is of type ‘volatile struct cpumask_t *’
       static inline int cpumask_test_cpu(int cpu, const struct cpumask *cpumask)
                                                                                                ^
      cc1: all warnings being treated as errors
      make[2]: *** [arch/mips/kernel/smp.o] Error 1
      make[1]: *** [arch/mips/kernel] Error 2
      make: *** [arch/mips] Error 2
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      cafb45b2
    • Doug Ledford's avatar
      MAINTAINERS: update the official rdma git repo · 2936ae04
      Doug Ledford authored
      Linus prefers kernel.org repos to github repos for security.
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      2936ae04
  4. 11 May, 2015 14 commits
    • Linus Torvalds's avatar
      Merge branch 'for-4.1' of git://linux-nfs.org/~bfields/linux · 4cfceaf0
      Linus Torvalds authored
      Pull nfsd bugfixes from Bruce Fields:
       "Mainly pnfs fixes (and for problems with generic callback code made
        more obvious by pnfs)"
      
      * 'for-4.1' of git://linux-nfs.org/~bfields/linux:
        nfsd: skip CB_NULL probes for 4.1 or later
        nfsd: fix callback restarts
        nfsd: split transport vs operation errors for callbacks
        svcrpc: fix potential GSSX_ACCEPT_SEC_CONTEXT decoding failures
        nfsd: fix pNFS return on close semantics
        nfsd: fix the check for confirmed openowner in nfs4_preprocess_stateid_op
        nfsd/blocklayout: pretend we can send deviceid notifications
      4cfceaf0
    • Steve Wise's avatar
      iw_cxgb4: use wildcard mapping for getting remote addr info · 940fd304
      Steve Wise authored
      For listening endpoints bound to the wildcard address, we need to pass
      the wildcard address mapping to iwpm_get_remote_info() instead of the
      mapped address of the new child connection.
      
      Without this fix, and with iwarp port mapping enabled, each iw_cxgb4
      connection that is spawned from a listening endpoint bound to the wildcard
      address, will generate an annoying dmesg entry about failing to find
      the remote address mapping info, and the connection state displayed in
      debugfs under /sys/kernel/debug/iw_cxgb4/<pci-slot-no>/eps  will not have
      the peer's address/port mapping info.  The connection still works though.
      
      Fixes: 5b6b8fe6 ("RDMA/cxgb4: Report the actual address of the remote connecting peer")
      Signed-off-by: default avatarSteve Wise <swise@opengridcomputing.com>
      Reviewed-by: default avatarTatyana Nikolova <Tatyana.E.Nikolova@intel.com>
      Reviewed-by: default avatarJason Gunthorpe <jgunthorpe@obsidianresearch.com>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      940fd304
    • Nicholas Mc Guire's avatar
      IB/ehca: use correct destination for memcpy · 94634e98
      Nicholas Mc Guire authored
      Using an element of a struct as the address for the memcpy of the whole
      struct may introduce a buffer overflow and does not help readability either
      simply pass the real thing as first argument to memcpy.
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarNicholas Mc Guire <hofrat@osadl.org>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      94634e98
    • Linus Torvalds's avatar
      Merge tag 'spi-fix-v4.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi · ef208162
      Linus Torvalds authored
      Pull spi fixes from Mark Brown:
       "A number of driver specific fixes (including several missing
        dependencies for randconfig type cases) plus two core fixes.
      
        One makes the setup_transfer() callback optional which unbreaks some
        drivers which had been merged with it omitted due to local versions of
        this patch and another ensures that we don't corrupt data by leaking
        internal dummy buffers to callers, causing the callers to think they
        allocated those buffers"
      
      * tag 'spi-fix-v4.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
        spi: fsl-espi: fix behaviour for full-duplex xfers
        spi: fsl-spi: fix devm_ioremap_resource() error case
        spi: Kconfig: Add SOC_LS1021A to SPI_FSL_DSPI dependence
        spi/omap2-mcpsi: Always call spi_finalize_current_message()
        spi: fsl-spi: use devm_ioremap_resource() to map parameter ram on CPM1
        spi: bitbang: Make setup_transfer() callback optional
        spi: check tx_buf and rx_buf in spi_unmap_msg
        spi: bcm2835: change timeout of polling driver to 1s
        spi: bcm2835: Add GPIOLIB dependency
      ef208162
    • Linus Torvalds's avatar
      Merge tag 'iommu-fixes-v4.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu · a156e068
      Linus Torvalds authored
      Pull iommu fixes from Joerg Roedel:
       "Three fixes have queued up:
      
         - reference count fix in the AMD IOMMUv2 driver
      
         - sign extension fix in the ARM-SMMU driver
      
         - build fix for rockchip driver with device tree"
      
      * tag 'iommu-fixes-v4.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
        iommu/arm-smmu: Fix sign-extension of upstream bus addresses at stage 1
        iommu/rockchip: Fix build without CONFIG_OF
        iommu/amd: Fix bug in put_pasid_state_wait
      a156e068
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 · 9c922a55
      Linus Torvalds authored
      Pull crypto fixes from Herbert Xu:
       "This fixes a the implementation of CRC32 on arm64 where it incorrectly
        applied negation on the result.
      
        It also fixes the arm64 implementations of SHA/SHA256 where in some
        cases it may end up finalising the result twice"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
        crypto: arm64/sha2-ce - prevent asm code finalization in final() path
        crypto: arm64/sha1-ce - prevent asm code finalization in final() path
        crypto: arm64/crc32 - bring in line with generic CRC32
      9c922a55
    • Linus Torvalds's avatar
      Merge branch 'for-4.1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata · b3e5838a
      Linus Torvalds authored
      Pull libata fixes from Tejun Heo:
       "Rather big for fixes pull.
      
         - SCC controllers never lived to see the light of the day.  Both
           libata and ide drivers removed.
      
         - In some configurations, link power management policy changes
           sometimes cause delayed spurious PHY events which can develop into
           noticeable failures.  This has been reported several times over the
           years.  Gabriele's patches suppress PHY events for a while after
           LPM policy changes which should help most of these failures without
           causing too much problem for hotplug use cases.
      
         - A few controller specific fixes"
      
      [ Hmm.  I don't think removing SSC support is really a "fix", but hey, it
        removes a lot of lines of code.  Which I like.  So ...  good riddance ]
      
      * 'for-4.1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
        ahci: avoton port-disable reset-quirk
        ata: select DW_DMAC in case of SATA_DWC
        libata: Blacklist queued TRIM on all Samsung 800-series
        libata: Ignore spurious PHY event on LPM policy change
        libata: Add helper to determine when PHY events should be ignored
        ata: ahci_st: fixup layering violations / drvdata errors
        Remove celleb-only SCC PATA drivers
      b3e5838a
    • Linus Torvalds's avatar
      Merge tag 'md/4.1-rc3-fixes' of git://neil.brown.name/md · c91aa67e
      Linus Torvalds authored
      Pull md bugfixes from Neil Brown:
       "A few fixes for md.
      
        Most of these are related to the new "batched stripe writeout", but
        there are a few others"
      
      * tag 'md/4.1-rc3-fixes' of git://neil.brown.name/md:
        md/raid5: fix handling of degraded stripes in batches.
        md/raid5: fix allocation of 'scribble' array.
        md/raid5: don't record new size if resize_stripes fails.
        md/raid5: avoid reading parity blocks for full-stripe write to degraded array
        md/raid5: more incorrect BUG_ON in handle_stripe_fill.
        md/raid5: new alloc_stripe() to allocate an initialize a stripe.
        md-raid0: conditional mddev->queue access to suit dm-raid
      c91aa67e
    • David Ward's avatar
      net_sched: gred: use correct backlog value in WRED mode · 145a42b3
      David Ward authored
      In WRED mode, the backlog for a single virtual queue (VQ) should not be
      used to determine queue behavior; instead the backlog is summed across
      all VQs. This sum is currently used when calculating the average queue
      lengths. It also needs to be used when determining if the queue's hard
      limit has been reached, or when reporting each VQ's backlog via netlink.
      q->backlog will only be used if the queue switches out of WRED mode.
      Signed-off-by: default avatarDavid Ward <david.ward@ll.mit.edu>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      145a42b3
    • Felix Fietkau's avatar
      pppoe: drop pppoe device in pppoe_unbind_sock_work · 665a6cd8
      Felix Fietkau authored
      After receiving a PADT and the socket is closed, user space will no
      longer drop the reference to the pppoe device.
      This leads to errors like this:
      
      [  488.570000] unregister_netdevice: waiting for eth0.2 to become free. Usage count = 2
      
      Fixes: 287f3a94 ("pppoe: Use workqueue to die properly when a PADT is received")
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      665a6cd8
    • Will Deacon's avatar
      iommu/arm-smmu: Fix sign-extension of upstream bus addresses at stage 1 · 5dc5616e
      Will Deacon authored
      Stage 1 translation is controlled by two sets of page tables (TTBR0 and
      TTBR1) which grow up and down from zero respectively in the ARMv8
      translation regime. For the SMMU, we only care about TTBR0 and, in the
      case of a 48-bit virtual space, we expect to map virtual addresses 0x0
      through to 0xffff_ffff_ffff.
      
      Given that some masters may be incapable of emitting virtual addresses
      targetting TTBR1 (e.g. because they sit on a 48-bit bus), the SMMU
      architecture allows bit 47 to be sign-extended, halving the virtual
      range of TTBR0 but allowing TTBR1 to be used. This is controlled by the
      SEP field in TTBCR2.
      
      The SMMU driver incorrectly enables this sign-extension feature, which
      causes problems when userspace addresses are programmed into a master
      device with the SMMU expecting to map the incoming transactions via
      TTBR0; if the top bit of address is set, we will instead get a
      translation fault since TTBR1 walks are disabled in the TTBCR.
      
      This patch fixes the issue by disabling sign-extension of a fixed
      virtual address bit and instead basing the behaviour on the upstream bus
      size: the incoming address is zero extended unless the upstream bus is
      only 49 bits wide, in which case bit 48 is used as the sign bit and is
      replicated to the upper bits.
      
      Cc: <stable@vger.kernel.org> # v4.0+
      Reported-by: default avatarVarun Sethi <varun.sethi@freescale.com>
      Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
      5dc5616e
    • Mark Brown's avatar
      Merge remote-tracking branches 'spi/fix/fsl-cpm', 'spi/fix/fsl-dspi' and... · c8b35042
      Mark Brown authored
      Merge remote-tracking branches 'spi/fix/fsl-cpm', 'spi/fix/fsl-dspi' and 'spi/fix/fsl-espi' into spi-linus
      c8b35042
    • Mark Brown's avatar
      Merge tag 'spi-v4.1-rc1' into spi-linus · bed5e4d8
      Mark Brown authored
      spi: Fixes for v4.1
      
      A few driver fixes plus two changes for the core, one to make the
      setup_transfer() callback optional which fixes crashes in some drivers
      which were updated to use new interfaces without apparent testing and
      one to ensure we don't expose the data buffers we use for dummy
      transfers to drivers which avoids potential issues with multiple
      accesses to them or reuse.
      
      # gpg: Signature made Sat 25 Apr 2015 10:59:47 BST using RSA key ID 5D5487D0
      # gpg: key CD7BEEBC: no public key for trusted key - skipped
      # gpg: key CD7BEEBC marked as ultimately trusted
      # gpg: key AF88CD16: no public key for trusted key - skipped
      # gpg: key AF88CD16 marked as ultimately trusted
      # gpg: key 16005C11: no public key for trusted key - skipped
      # gpg: key 16005C11 marked as ultimately trusted
      # gpg: key 5621E907: no public key for trusted key - skipped
      # gpg: key 5621E907 marked as ultimately trusted
      # gpg: key 5C6153AD: no public key for trusted key - skipped
      # gpg: key 5C6153AD marked as ultimately trusted
      # gpg: Good signature from "Mark Brown <broonie@sirena.org.uk>"
      # gpg:                 aka "Mark Brown <broonie@debian.org>"
      # gpg:                 aka "Mark Brown <broonie@kernel.org>"
      # gpg:                 aka "Mark Brown <broonie@tardis.ed.ac.uk>"
      # gpg:                 aka "Mark Brown <broonie@linaro.org>"
      # gpg:                 aka "Mark Brown <Mark.Brown@linaro.org>"
      bed5e4d8
    • Stefan Wahren's avatar
      net: qca_spi: Fix possible race during probe · 268be0f7
      Stefan Wahren authored
      Registering the netdev before setting the priv data is unsafe.
      So fix this possible race by setting the priv data first.
      Signed-off-by: default avatarStefan Wahren <stefan.wahren@i2se.com>
      Cc: <stable@vger.kernel.org> # v3.18+
      Fixes: 291ab06e (net: qualcomm: new Ethernet over SPI driver for QCA7000)
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      268be0f7
  5. 10 May, 2015 7 commits
    • Bert Vermeulen's avatar
      net: mdio-gpio: Allow for unspecified bus id · 7c0c8268
      Bert Vermeulen authored
      When the bus id was supplied via a struct platform_device, the driver wasn't
      handling -1 to mean an unspecified id of the only instance of this driver,
      as the platform spec requires.
      Signed-off-by: default avatarBert Vermeulen <bert@biot.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7c0c8268
    • Kretschmer, Mathias's avatar
      af_packet / TX_RING not fully non-blocking (w/ MSG_DONTWAIT). · fbf33a28
      Kretschmer, Mathias authored
      This patch fixes an issue where the send(MSG_DONTWAIT) call
      on a TX_RING is not fully non-blocking in cases where the device's sndBuf is
      full. We pass nonblock=true to sock_alloc_send_skb() and return any possibly
      occuring error code (most likely EGAIN) to the caller. As the fast-path stays
      as it is, we keep the unlikely() around skb == NULL.
      Signed-off-by: default avatarMathias Kretschmer <mathias.kretschmer@fokus.fraunhofer.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fbf33a28
    • Michal Schmidt's avatar
      bnx2x: limit fw delay in kdump to 5s after boot · cd9c3997
      Michal Schmidt authored
      Commit 12a8541d "bnx2x: Delay during kdump load" added a 5 seconds
      delay to bnx2x's probe function in the kdump case to let the firmware
      realize the old driver is gone.
      
      The problem with the delay is that it is per-device, so if you have
      several bnx2x NICs in NPAR mode, the delays can accumulate to minutes.
      
      Fix it by adjusting the delay so that we do not wait more than
      necessary, i.e. no more delaying after 5 seconds of kernel boot time.
      Signed-off-by: default avatarMichal Schmidt <mschmidt@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cd9c3997
    • Nicolas Schichan's avatar
      ARM: net: delegate filter to kernel interpreter when imm_offset() return value... · 0b59d880
      Nicolas Schichan authored
      ARM: net: delegate filter to kernel interpreter when imm_offset() return value can't fit into 12bits.
      
      The ARM JIT code emits "ldr rX, [pc, #offset]" to access the literal
      pool. #offset maximum value is 4095 and if the generated code is too
      large, the #offset value can overflow and not point to the expected
      slot in the literal pool. Additionally, when overflow occurs, bits of
      the overflow can end up changing the destination register of the ldr
      instruction.
      
      Fix that by detecting the overflow in imm_offset() and setting a flag
      that is checked for each BPF instructions converted in
      build_body(). As of now it can only be detected in the second pass. As
      a result the second build_body() call can now fail, so add the
      corresponding cleanup code in that case.
      
      Using multiple literal pools in the JITed code is going to require
      lots of intrusive changes to the JIT code (which would better be done
      as a feature instead of fix), just delegating to the kernel BPF
      interpreter in that case is a more straight forward, minimal fix and
      easy to backport.
      
      Fixes: ddecdfce ("ARM: 7259/3: net: JIT compiler for packet filters")
      Signed-off-by: default avatarNicolas Schichan <nschichan@freebox.fr>
      Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0b59d880
    • Nicolas Schichan's avatar
      ARM: net fix emit_udiv() for BPF_ALU | BPF_DIV | BPF_K intruction. · 19fc99d0
      Nicolas Schichan authored
      In that case, emit_udiv() will be called with rn == ARM_R0 (r_scratch)
      and loading rm first into ARM_R0 will result in jit_udiv() function
      being called the same dividend and divisor. Fix that by loading rn
      first into ARM_R1 and then rm into ARM_R0.
      Signed-off-by: default avatarNicolas Schichan <nschichan@freebox.fr>
      Cc: <stable@vger.kernel.org> # v3.13+
      Fixes: aee636c4 (bpf: do not use reciprocal divide)
      Acked-by: default avatarMircea Gherzan <mgherzan@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      19fc99d0
    • Linus Torvalds's avatar
      Linux 4.1-rc3 · 030bbdbf
      Linus Torvalds authored
      030bbdbf
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 01d07351
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "I really need to get back to sending these on my Friday, instead of my
        Monday morning, but nothing too amazing in here: a few amdkfd fixes, a
        few radeon fixes, i915 fixes, one tegra fix and one core fix"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm: Zero out invalid vblank timestamp in drm_update_vblank_count.
        drm/tegra: Don't use vblank_disable_immediate on incapable driver.
        drm/radeon: stop trying to suspend UVD sessions
        drm/radeon: more strictly validate the UVD codec
        drm/radeon: make UVD handle checking more strict
        drm/radeon: make VCE handle check more strict
        drm/radeon: fix userptr lockup
        drm/radeon: fix userptr BO unpin bug v3
        drm/amdkfd: Initialize sdma vm when creating sdma queue
        drm/amdkfd: Don't report local memory size
        drm/amdkfd: allow unregister process with queues
        drm/i915: Drop PIPE-A quirk for 945GSE HP Mini
        drm/i915: Sink rate read should be saved in deca-kHz
        drm/i915/dp: there is no audio on port A
        drm/i915: Add missing MacBook Pro models with dual channel LVDS
        drm/i915: Assume dual channel LVDS if pixel clock necessitates it
        drm/radeon: don't setup audio on asics that don't support it
        drm/radeon: disable semaphores for UVD V1 (v2)
      01d07351