10 Jul, 2016

6 commits

  • In the prep work I did before enabling BH while handling socket backlog,
    I missed two points in DCCP :

    1) dccp_v4_ctl_send_reset() uses bh_lock_sock(), assuming BH were
    blocked. It is not anymore always true.

    2) dccp_v4_route_skb() was using __IP_INC_STATS() instead of
    IP_INC_STATS()

    A similar fix was done for TCP, in commit 47dcc20a39d0
    ("ipv4: tcp: ip_send_unicast_reply() is not BH safe")

    Fixes: 7309f8821fd6 ("dccp: do not assume DCCP code is non preemptible")
    Fixes: 5413d1babe8f ("net: do not block BH while processing socket backlog")
    Signed-off-by: Eric Dumazet
    Reported-by: Dmitry Vyukov
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • Thomas Falcon says:

    ====================
    ibmvnic driver bugfixes and improvements

    Miscellaneous fixes and improvements on the ibmvnic driver.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • In some cases, if there is no VNIC server available during the driver
    probe, the driver should wait until it receives an initialization
    request from the VNIC Server to start the login process. Recent testing
    has show that this is incorrectly handled in the current driver.

    The proposed solution handles this initialization request by scheduling
    a task in the shared workqueue that completes the login process and
    registers the net device.

    Signed-off-by: Thomas Falcon
    Signed-off-by: David S. Miller

    Thomas Falcon
     
  • This patch creates a function that handles sub-CRQ IRQ creation
    separately from sub-CRQ initialization. Another function is then needed
    to release sub-CRQ resources prior to sub-CRQ IRQ creation.

    These additions allow the driver probe function to be simplified,
    specifically during the VNIC Server login process. A timeout is also
    included while waiting for completion of the login process in case
    the VNIC Server is not available or some other error occurs.

    Signed-off-by: Thomas Falcon
    Signed-off-by: David S. Miller

    Thomas Falcon
     
  • IRQ mappings were not being properly disposed when releasing sub-CRQ's.

    Signed-off-by: Thomas Falcon
    Signed-off-by: David S. Miller

    Thomas Falcon
     
  • Since ibmvnic uses multiple tx queues, start and stop all queues when
    opening and closing devices.

    Signed-off-by: Thomas Falcon
    Signed-off-by: David S. Miller

    Thomas Falcon
     

09 Jul, 2016

4 commits

  • …kernel/git/jberg/mac80211

    Johannes Berg says:

    ====================
    Two more fixes:
    * handle allocation failures in new(ish) A-MSDU decapsulation
    * don't leak memory on nl80211 ACL parse errors
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     
  • The LAN_WAKE_EN is not used to determine if the device could support
    WOL. It is used to signal a GPIO pin when a WOL event occurs. The WOL
    still works even though it is disabled.

    Signed-off-by: Hayes Wang
    Signed-off-by: David S. Miller

    hayeswang
     
  • Matt reported that we have a NULL pointer dereference
    in ppp_pernet() from ppp_connect_channel(),
    i.e. pch->chan_net is NULL.

    This is due to that a parallel ppp_unregister_channel()
    could happen while we are in ppp_connect_channel(), during
    which pch->chan_net set to NULL. Since we need a reference
    to net per channel, it makes sense to sync the refcnt
    with the life time of the channel, therefore we should
    release this reference when we destroy it.

    Fixes: 1f461dcdd296 ("ppp: take reference on channels netns")
    Reported-by: Matt Bennett
    Cc: Paul Mackerras
    Cc: linux-ppp@vger.kernel.org
    Cc: Guillaume Nault
    Cc: Cyrill Gorcunov
    Signed-off-by: Cong Wang
    Reviewed-by: Cyrill Gorcunov
    Signed-off-by: David S. Miller

    WANG Cong
     
  • Commit aebea2ba0f74 ("net: mvneta: fix Tx interrupt delay") intended to
    set coalescing threshold to a value guaranteeing interrupt generation
    per each sent packet, so that buffers can be released with no delay.

    In fact setting threshold to '1' was wrong, because it causes interrupt
    every two packets. According to the documentation a reason behind it is
    following - interrupt occurs once sent buffers counter reaches a value,
    which is higher than one specified in MVNETA_TXQ_SIZE_REG(q). This
    behavior was confirmed during tests. Also when testing the SoC working
    as a NAS device, better performance was observed with int-per-packet,
    as it strongly depends on the fact that all transmitted packets are
    released immediately.

    This commit enables NETA controller work in interrupt per sent packet mode
    by setting coalescing threshold to 0.

    Signed-off-by: Dmitri Epshtein
    Signed-off-by: Marcin Wojtas
    Cc: # v3.10+
    Fixes aebea2ba0f74 ("net: mvneta: fix Tx interrupt delay")
    Acked-by: Willy Tarreau
    Signed-off-by: David S. Miller

    Dmitri Epshtein
     

07 Jul, 2016

3 commits

  • Pull networking fixes from David Miller:

    1) All users of AF_PACKET's fanout feature want a symmetric packet
    header hash for load balancing purposes, so give it to them.

    2) Fix vlan state synchronization in e1000e, from Jarod Wilson.

    3) Use correct socket pointer in ip_skb_dst_mtu(), from Shmulik
    Ladkani.

    4) mlx5 bug fixes from Mohamad Haj Yahia, Daniel Jurgens, Matthew
    Finlay, Rana Shahout, and Shaker Daibes. Mostly to do with
    operation timeouts and PCI error handling.

    5) Fix checksum handling in mirred packet action, from WANG Cong.

    6) Set skb->dev correctly when transmitting in !protect_frames case of
    macsec driver, from Daniel Borkmann.

    7) Fix MTU calculation in geneve driver, from Haishuang Yan.

    8) Missing netif_napi_del() in unregister path of qeth driver, from
    Ursula Braun.

    9) Handle malformed route netlink messages in decnet properly, from
    Vergard Nossum.

    10) Memory leak of percpu data in ipv6 routing code, from Martin KaFai
    Lau.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (41 commits)
    ipv6: Fix mem leak in rt6i_pcpu
    net: fix decnet rtnexthop parsing
    cxgb4: update latest firmware version supported
    net/mlx5: Avoid setting unused var when modifying vport node GUID
    bonding: fix enslavement slave link notifications
    r8152: fix runtime function for RTL8152
    qeth: delete napi struct when removing a qeth device
    Revert "fsl/fman: fix error handling"
    fsl/fman: fix error handling
    cdc_ncm: workaround for EM7455 "silent" data interface
    RDS: fix rds_tcp_init() error path
    geneve: fix max_mtu setting
    net: phy: dp83867: Fix initialization of PHYCR register
    enc28j60: Fix race condition in enc28j60 driver
    net: stmmac: Fix null-function call in ISR on stmmac1000
    tipc: fix nl compat regression for link statistics
    net: bcmsysport: Device stats are unsigned long
    macsec: set actual real device for xmit when !protect_frames
    net_sched: fix mirrored packets checksum
    packet: Use symmetric hash for PACKET_FANOUT_HASH.
    ...

    Linus Torvalds
     
  • Pull sound fixes from Takashi Iwai:
    "Here are a collection of small fixes: at this time, we've got a
    slightly high amount, but all small and trivial fixes, and nothing
    scary can be seen there"

    * tag 'sound-4.7-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (21 commits)
    ALSA: hda/realtek: Add Lenovo L460 to docking unit fixup
    ALSA: timer: Fix negative queue usage by racy accesses
    ASoC: rt5645: fix reg-2f default value.
    ASoC: fsl_ssi: Fix number of words per frame for I2S-slave mode
    ALSA: au88x0: Fix calculation in vortex_wtdma_bufshift()
    ALSA: hda - Add PCI ID for Kabylake-H
    ALSA: echoaudio: Fix memory allocation
    ASoC: Intel: atom: fix missing breaks that would cause the wrong operation to execute
    ALSA: hda - fix read before array start
    ASoC: cx20442: set tty->receiver_room in v253_open
    ASoC: ak4613: Enable cache usage to fix crashes on resume
    ASoC: wm8940: Enable cache usage to fix crashes on resume
    ASoC: Intel: Skylake: Initialize module list for Broxton
    ASoC: wm5102: Correct supported channels on trace compressed DAI
    ASoC: wm5110: Add missing route from OUT3R to SYSCLK
    ASoC: rt5670: fix HP Playback Volume control
    ASoC: hdmi-codec: select CONFIG_HDMI
    ASoC: davinci-mcasp: Fix dra7 DMA offset when using CFG port
    ASoC: hdac_hdmi: Fix potential NULL dereference
    ASoC: ak4613: Remove owner assignment from platform_driver
    ...

    Linus Torvalds
     
  • Pull chrome platform fix from Olof Johansson:
    "A single fix this time, closing a window where ioctl args are fetched
    twice"

    * tag 'chrome-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/olof/chrome-platform:
    platform/chrome: cros_ec_dev - double fetch bug in ioctl

    Linus Torvalds
     

06 Jul, 2016

9 commits

  • Handle the case when dev_alloc_skb returns NULL.

    Cc: stable@vger.kernel.org
    Fixes: 2b67f944f88c2 ("cfg80211: reuse existing page fragments in A-MSDU rx")
    Signed-off-by: Gregory Greenman
    Signed-off-by: Luca Coelho
    Signed-off-by: Johannes Berg

    Gregory Greenman
     
  • No support for pbss results in a memory leak for the acl_data
    (if parse_acl_data succeeds). Fix this by moving the ACL parsing later.

    Cc: stable@vger.kernel.org
    Fixes: 34d505193bd10 ("cfg80211: basic support for PBSS network type")
    Signed-off-by: Purushottam Kushwaha
    Signed-off-by: Johannes Berg

    Purushottam Kushwaha
     
  • It was first reported and reproduced by Petr (thanks!) in
    https://bugzilla.kernel.org/show_bug.cgi?id=119581

    free_percpu(rt->rt6i_pcpu) used to always happen in ip6_dst_destroy().

    However, after fixing a deadlock bug in
    commit 9c7370a166b4 ("ipv6: Fix a potential deadlock when creating pcpu rt"),
    free_percpu() is not called before setting non_pcpu_rt->rt6i_pcpu to NULL.

    It is worth to note that rt6i_pcpu is protected by table->tb6_lock.

    kmemleak somehow did not report it. We nailed it down by
    observing the pcpu entries in /proc/vmallocinfo (first suggested
    by Hannes, thanks!).

    Signed-off-by: Martin KaFai Lau
    Fixes: 9c7370a166b4 ("ipv6: Fix a potential deadlock when creating pcpu rt")
    Reported-by: Petr Novopashenniy
    Tested-by: Petr Novopashenniy
    Acked-by: Hannes Frederic Sowa
    Cc: Hannes Frederic Sowa
    Cc: Petr Novopashenniy
    Signed-off-by: David S. Miller

    Martin KaFai Lau
     
  • dn_fib_count_nhs() could enter an infinite loop if nhp->rtnh_len == 0
    (i.e. if userspace passes a malformed netlink message).

    Let's use the helpers from net/nexthop.h which take care of all this
    stuff. We can do exactly the same as e.g. fib_count_nexthops() and
    fib_get_nhs() from net/ipv4/fib_semantics.c.

    This fixes the softlockup for me.

    Cc: Thomas Graf
    Signed-off-by: Vegard Nossum
    Signed-off-by: David S. Miller

    Vegard Nossum
     
  • We verify "u_cmd.outsize" and "u_cmd.insize" but we need to make sure
    that those values have not changed between the two copy_from_user()
    calls. Otherwise it could lead to a buffer overflow.

    Additionally, cros_ec_cmd_xfer() can set s_cmd->insize to a lower value.
    We should use the new smaller value so we don't copy too much data to
    the user.

    Reported-by: Pengfei Wang
    Fixes: a841178445bb ('mfd: cros_ec: Use a zero-length array for command data')
    Signed-off-by: Dan Carpenter
    Reviewed-by: Kees Cook
    Tested-by: Gwendal Grignou
    Cc: # v4.2+
    Signed-off-by: Olof Johansson

    Dan Carpenter
     
  • Change t4fw_version.h to update latest firmware version number

    Signed-off-by: Ganesh Goudar
    Signed-off-by: David S. Miller

    Ganesh Goudar
     
  • GCC complains on unused-but-set-variable, clean this up.

    Fixes: 23898c763f4a ('net/mlx5: E-Switch, Modify node guid on vf set MAC')
    Signed-off-by: Or Gerlitz
    Acked-by: Saeed Mahameed
    Signed-off-by: David S. Miller

    Or Gerlitz
     
  • Currently, link notifications are not sent by
    bond_set_slave_link_state() upon enslavement if
    the slave is enslaved when up.

    This happens because slave->link default init value
    is 0, which is the same as BOND_LINK_UP, resulting
    in bond_set_slave_link_state() ignoring this transition.

    This patch sets the default value of slave->link to
    BOND_LINK_NOCHANGE, assuring it will count as a state
    transition and thus trigger notification logic.

    Signed-off-by: Aviv Heller
    Reviewed-by: Jiri Pirko
    Signed-off-by: Saeed Mahameed
    Signed-off-by: David S. Miller

    Aviv Heller
     
  • The RTL8152 doesn't have U1U2 and U2P3 features, so use different
    runtime functions for RTL812 and RTL8153 by adding autosuspend_en()
    to rtl_ops.

    Signed-off-by: Hayes Wang
    Signed-off-by: David S. Miller

    hayeswang
     

05 Jul, 2016

7 commits

  • This solves the issue that a headphone is not working on the docking
    unit.

    Signed-off-by: Torsten Hilbrich
    Cc:
    Signed-off-by: Takashi Iwai

    Torsten Hilbrich
     
  • A qeth_card contains a napi_struct linked to the net_device during
    device probing. This struct must be deleted when removing the qeth
    device, otherwise Panic on oops can occur when qeth devices are
    repeatedly removed and added.

    Fixes: a1c3ed4c9ca ("qeth: NAPI support for l2 and l3 discipline")
    Cc: stable@vger.kernel.org # v2.6.37+
    Signed-off-by: Ursula Braun
    Tested-by: Alexander Klein
    Signed-off-by: David S. Miller

    Ursula Braun
     
  • This reverts commit a788a4a040e003574b8ad17115706ab1601ec572.

    This patch is wrong, the type returned doesn't fit
    what the error pointer macros expect.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • This is likely that checking 'fman->fifo_offset' instead of
    'fman->cam_offset' is expected here.

    Signed-off-by: Christophe JAILLET
    Signed-off-by: David S. Miller

    Christophe Jaillet
     
  • Several Lenovo users have reported problems with their Sierra
    Wireless EM7455 modem. The driver has loaded successfully and
    the MBIM management channel has appeared to work, including
    establishing a connection to the mobile network. But no frames
    have been received over the data interface.

    The problem affects all EM7455 and MC7455, and is assumed to
    affect other modems based on the same Qualcomm chipset and
    baseband firmware.

    Testing narrowed the problem down to what seems to be a
    firmware timing bug during initialization. Adding a short sleep
    while probing is sufficient to make the problem disappear.
    Experiments have shown that 1-2 ms is too little to have any
    effect, while 10-20 ms is enough to reliably succeed.

    Reported-by: Stefan Armbruster
    Reported-by: Ralph Plawetzki
    Reported-by: Andreas Fett
    Reported-by: Rasmus Lerdorf
    Reported-by: Samo Ratnik
    Reported-and-tested-by: Aleksander Morgado
    Signed-off-by: Bjørn Mork
    Signed-off-by: David S. Miller

    Bjørn Mork
     
  • If register_pernet_subsys() fails, we shouldn't try to call
    unregister_pernet_subsys().

    Fixes: 467fa15356 ("RDS-TCP: Support multiple RDS-TCP listen endpoints, one per netns.")
    Cc: stable@vger.kernel.org
    Cc: Sowmini Varadhan
    Cc: David S. Miller
    Signed-off-by: Vegard Nossum
    Acked-by: Sowmini Varadhan
    Acked-by: Santosh Shilimkar
    Signed-off-by: David S. Miller

    Vegard Nossum
     
  • For ipv6+udp+geneve encapsulation data, the max_mtu should subtract
    sizeof(ipv6hdr), instead of sizeof(iphdr).

    Signed-off-by: Haishuang Yan
    Signed-off-by: David S. Miller

    Haishuang Yan
     

04 Jul, 2016

4 commits


03 Jul, 2016

7 commits

  • overlay needs underlying fs to support d_type. Recently I put in a
    patch in to detect this condition and started failing mount if
    underlying fs did not support d_type.

    But this breaks existing configurations over kernel upgrade. Those who
    are running docker (partially broken configuration) with xfs not
    supporting d_type, are surprised that after kernel upgrade docker does
    not run anymore.

    https://github.com/docker/docker/issues/22937#issuecomment-229881315

    So instead of erroring out, detect broken configuration and warn
    about it. This should allow existing docker setups to continue
    working after kernel upgrade.

    Signed-off-by: Vivek Goyal
    Signed-off-by: Miklos Szeredi
    Fixes: 45aebeaf4f67 ("ovl: Ensure upper filesystem supports d_type")
    Cc: 4.6

    Vivek Goyal
     
  • Pull MIPS fix from Ralf Baechle:
    "Only a single fix for 4.7 pending at this point. It fixes an issue
    that may lead to corruption of the cache mode bits in the page table"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
    MIPS: Fix possible corruption of cache mode by mprotect.

    Linus Torvalds
     
  • Pull powerpc fixes from Michael Ellerman:

    - tm: Always reclaim in start_thread() for exec() class syscalls from
    Cyril Bur

    - tm: Avoid SLB faults in treclaim/trecheckpoint when RI=0 from Michael
    Neuling

    - eeh: Fix wrong argument passed to eeh_rmv_device() from Gavin Shan

    - Initialise pci_io_base as early as possible from Darren Stevens

    * tag 'powerpc-4.7-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc: Initialise pci_io_base as early as possible
    powerpc/tm: Avoid SLB faults in treclaim/trecheckpoint when RI=0
    powerpc/eeh: Fix wrong argument passed to eeh_rmv_device()
    powerpc/tm: Always reclaim in start_thread() for exec() class syscalls

    Linus Torvalds
     
  • When initializing the PHY control register, the FIFO depth bits are
    written without reading the previous register value, i.e. all other
    bits are overwritten with zero. This disables automatic MDI-X
    configuration, which is enabled by default. Fix initialization by doing
    a read/modify/write operation.

    Signed-off-by: Stefan Hauser
    Reviewed-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Stefan Hauser
     
  • The interrupt worker code for the enc28j60 relies only on the TXIF flag to
    determinate if the packet transmission was completed. However the datasheet
    specifies in section 12.1.3 that TXERIF will clear the TXRTS after a
    transmit abort. Also in section 12.1.4 that TXIF will be set
    when TXRTS transitions from '1' to '0'. Therefore the TXIF flag is enabled
    during transmission errors.

    This causes a race condition, since the worker code will invoke
    enc28j60_tx_clear() -> netif_wake_queue(), potentially invoking the
    ndo_start_xmit function to send a new packet. The enc28j60_send_packet function
    uses a workqueue that invokes enc28j60_hw_tx(). In between this function is
    called, the worker from the interrupt handler will enter the path for error
    handler because of the TXERIF flag, causing to invoke enc28j60_tx_clear() again
    and releasing the packet scheduled for transmission, causing a kernel crash with
    due a NULL pointer.

    These crashes due a NULL pointer were observed under stress conditions of the
    device. A BUG_ON() sequence was used to validate the issue was fixed, and has
    been running without problems for 2 years now.

    Signed-off-by: Diego Dompe
    Acked-by: Sergio Valverde
    Signed-off-by: David S. Miller

    Sergio Valverde
     
  • (resent due to overhelpful mail client corrupting patch)

    At least on Meson GXBB, the CORE_IRQ_MTL_RX_OVERFLOW interrupt is thrown
    with the stmmac1000 driver, which does not support set_rx_tail_ptr. With
    this patch and the clock fixes, 1G ethernet works on ODROID-C2.

    Signed-off-by: Matt Corallo
    Signed-off-by: David S. Miller

    Matt Corallo
     
  • Pull drm fixes frlm Dave Airlie:
    "Just some AMD and Intel fixes, the AMD ones are further production
    Polaris fixes, and the Intel ones fix some early timeouts, some PCI ID
    changes and a couple of other fixes.

    Still a bit Internet challenged here, hopefully end of next week will
    solve it"

    * tag 'drm-fixes-for-v4.7-rc6' of git://people.freedesktop.org/~airlied/linux:
    drm/i915: Fix missing unlock on error in i915_ppgtt_info()
    drm/amd/powerplay: workaround for UVD clock issue
    drm/amdgpu: add ACLK_CNTL setting for polaris10
    drm/amd/powerplay: fix issue uvd dpm can't enabled on Polaris11.
    drm/amd/powerplay: Workaround for Memory EDC Error on Polaris10.
    drm/i915: Removing PCI IDs that are no longer listed as Kabylake.
    drm/i915: Add more Kabylake PCI IDs.
    drm/i915: Avoid early timeout during AUX transfers
    drm/i915/hsw: Avoid early timeout during LCPLL disable/restore
    drm/i915/lpt: Avoid early timeout during FDI PHY reset
    drm/i915/bxt: Avoid early timeout during PLL enable
    drm/i915: Refresh cached DP port register value on resume
    drm/amd/powerplay: Update CKS on/ CKS off voltage offset calculation
    drm/amd/powerplay: disable FFC.
    drm/amd/powerplay: add some definition for FFC feature on polaris.

    Linus Torvalds