1. 29 Nov, 2013 20 commits
  2. 20 Nov, 2013 20 commits
    • Greg Kroah-Hartman's avatar
      Linux 3.12.1 · 6beb1be0
      Greg Kroah-Hartman authored
      6beb1be0
    • Xenia Ragiadakou's avatar
      usbcore: set lpm_capable field for LPM capable root hubs · 60e102ac
      Xenia Ragiadakou authored
      commit 9df89d85 upstream.
      
      This patch sets the lpm_capable field for root hubs with LPM capabilities.
      Signed-off-by: default avatarXenia Ragiadakou <burzalodowa@gmail.com>
      Reported-by: default avatarMartin MOKREJS <mmokrejs@gmail.com>
      Suggested-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      60e102ac
    • Johan Hovold's avatar
      backlight: atmel-pwm-bl: fix deferred probe from __init · beb92943
      Johan Hovold authored
      commit 9d3fde86 upstream.
      
      Move probe out of __init section and don't use platform_driver_probe
      which cannot be used with deferred probing.
      
      Since commit e9354576 ("gpiolib: Defer failed gpio requests by default")
      this driver might return -EPROBE_DEFER if a gpio_request fails.
      
      Cc: Richard Purdie <rpurdie@rpsys.net>
      Cc: Jingoo Han <jg1.han@samsung.com>
      Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      beb92943
    • Johan Hovold's avatar
      misc: atmel_pwm: add deferred-probing support · 0fe6a2bc
      Johan Hovold authored
      commit 5c6d6fd1 upstream.
      
      Two drivers (atmel-pwm-bl and leds-atmel-pwm) currently depend on the
      atmel_pwm driver to have bound to any pwm-device before their devices
      are probed.
      
      Support deferred probing of such devices by making sure to return
      -EPROBE_DEFER from pwm_channel_alloc when no pwm-device has yet been
      bound.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0fe6a2bc
    • Steven Rostedt's avatar
      tracing: Fix potential out-of-bounds in trace_get_user() · a80d0c3c
      Steven Rostedt authored
      commit 057db848 upstream.
      
      Andrey reported the following report:
      
      ERROR: AddressSanitizer: heap-buffer-overflow on address ffff8800359c99f3
      ffff8800359c99f3 is located 0 bytes to the right of 243-byte region [ffff8800359c9900, ffff8800359c99f3)
      Accessed by thread T13003:
        #0 ffffffff810dd2da (asan_report_error+0x32a/0x440)
        #1 ffffffff810dc6b0 (asan_check_region+0x30/0x40)
        #2 ffffffff810dd4d3 (__tsan_write1+0x13/0x20)
        #3 ffffffff811cd19e (ftrace_regex_release+0x1be/0x260)
        #4 ffffffff812a1065 (__fput+0x155/0x360)
        #5 ffffffff812a12de (____fput+0x1e/0x30)
        #6 ffffffff8111708d (task_work_run+0x10d/0x140)
        #7 ffffffff810ea043 (do_exit+0x433/0x11f0)
        #8 ffffffff810eaee4 (do_group_exit+0x84/0x130)
        #9 ffffffff810eafb1 (SyS_exit_group+0x21/0x30)
        #10 ffffffff81928782 (system_call_fastpath+0x16/0x1b)
      
      Allocated by thread T5167:
        #0 ffffffff810dc778 (asan_slab_alloc+0x48/0xc0)
        #1 ffffffff8128337c (__kmalloc+0xbc/0x500)
        #2 ffffffff811d9d54 (trace_parser_get_init+0x34/0x90)
        #3 ffffffff811cd7b3 (ftrace_regex_open+0x83/0x2e0)
        #4 ffffffff811cda7d (ftrace_filter_open+0x2d/0x40)
        #5 ffffffff8129b4ff (do_dentry_open+0x32f/0x430)
        #6 ffffffff8129b668 (finish_open+0x68/0xa0)
        #7 ffffffff812b66ac (do_last+0xb8c/0x1710)
        #8 ffffffff812b7350 (path_openat+0x120/0xb50)
        #9 ffffffff812b8884 (do_filp_open+0x54/0xb0)
        #10 ffffffff8129d36c (do_sys_open+0x1ac/0x2c0)
        #11 ffffffff8129d4b7 (SyS_open+0x37/0x50)
        #12 ffffffff81928782 (system_call_fastpath+0x16/0x1b)
      
      Shadow bytes around the buggy address:
        ffff8800359c9700: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
        ffff8800359c9780: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa
        ffff8800359c9800: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
        ffff8800359c9880: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
        ffff8800359c9900: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      =>ffff8800359c9980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00[03]fb
        ffff8800359c9a00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
        ffff8800359c9a80: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
        ffff8800359c9b00: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
        ffff8800359c9b80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        ffff8800359c9c00: 00 00 00 00 00 00 00 00 fa fa fa fa fa fa fa fa
      Shadow byte legend (one shadow byte represents 8 application bytes):
        Addressable:           00
        Partially addressable: 01 02 03 04 05 06 07
        Heap redzone:          fa
        Heap kmalloc redzone:  fb
        Freed heap region:     fd
        Shadow gap:            fe
      
      The out-of-bounds access happens on 'parser->buffer[parser->idx] = 0;'
      
      Although the crash happened in ftrace_regex_open() the real bug
      occurred in trace_get_user() where there's an incrementation to
      parser->idx without a check against the size. The way it is triggered
      is if userspace sends in 128 characters (EVENT_BUF_SIZE + 1), the loop
      that reads the last character stores it and then breaks out because
      there is no more characters. Then the last character is read to determine
      what to do next, and the index is incremented without checking size.
      
      Then the caller of trace_get_user() usually nulls out the last character
      with a zero, but since the index is equal to the size, it writes a nul
      character after the allocated space, which can corrupt memory.
      
      Luckily, only root user has write access to this file.
      
      Link: http://lkml.kernel.org/r/20131009222323.04fd1a0d@gandalf.local.homeReported-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a80d0c3c
    • Anssi Hannula's avatar
      ALSA: hda - hdmi: Fix reported channel map on common default layouts · 7e6d47e2
      Anssi Hannula authored
      commit 56cac413 upstream.
      
      hdmi_setup_fake_chmap() is supposed to set the reported channel map when
      the channel map is not specified by the user.
      
      However, the function indexes channel_allocations[] with a wrong value
      and extracts the wrong nibble from hdmi_channel_mapping[], causing wrong
      channel maps to be shown.
      
      Fix those issues.
      
      Tested on Intel HDMI to correctly generate various channel maps, for
      example 3,4,14,15,7,8,5,6 (instead of incorrect 3,4,8,7,5,6,14,0) for
      standard 7.1 channel audio. (Note that the side and rear channels are
      reported as RL/RR and RLC/RRC, respectively, as per the CEA-861
      standard, instead of the more traditional SL/SR and RL/RR.)
      
      Note that this only fixes the layouts that only contain traditional 7.1
      speakers (2.0, 2.1, 4.0, 5.1, 7.1, etc.). E.g. the rear center of 6.1
      is still being shown wrongly due to an issue with from_cea_slot()
      which will be fixed in a later patch.
      Signed-off-by: default avatarAnssi Hannula <anssi.hannula@iki.fi>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7e6d47e2
    • Rui li's avatar
      USB: add new zte 3g-dongle's pid to option.c · eef0a125
      Rui li authored
      commit 0636fc50 upstream.
      Signed-off-by: default avatarRui li <li.rui27@zte.com.cn>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      eef0a125
    • Gerd Hoffmann's avatar
      hyperv-fb: add pci stub · 65c27e27
      Gerd Hoffmann authored
      commit 7ad96847 upstream.
      
      This patch adds a pci stub driver to hyper-fb.  The hyperv framebuffer
      driver will bind to the pci device then, so linux kernel and userspace
      know there is a proper kernel driver for the device active.  lspci shows
      this for example:
      
      [root@dhcp231 ~]# lspci -vs8
      00:08.0 VGA compatible controller: Microsoft Corporation Hyper-V virtual
      VGA (prog-if 00 [VGA controller])
              Flags: bus master, fast devsel, latency 0, IRQ 11
              Memory at f8000000 (32-bit, non-prefetchable) [size=64M]
              Expansion ROM at <unassigned> [disabled]
              Kernel driver in use: hyperv_fb
      
      Another effect is that the xorg vesa driver will not attach to the
      device and thus the Xorg server will automatically use the fbdev
      driver instead.
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      Acked-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      65c27e27
    • Hannes Frederic Sowa's avatar
      ipv6: reset dst.expires value when clearing expire flag · f5fa9283
      Hannes Frederic Sowa authored
      [ Upstream commit 01ba16d6 ]
      
      On receiving a packet too big icmp error we update the expire value by
      calling rt6_update_expires. This function uses dst_set_expires which is
      implemented that it can only reduce the expiration value of the dst entry.
      
      If we insert new routing non-expiry information into the ipv6 fib where
      we already have a matching rt6_info we only clear the RTF_EXPIRES flag
      in rt6i_flags and leave the dst.expires value as is.
      
      When new mtu information arrives for that cached dst_entry we again
      call dst_set_expires. This time it won't update the dst.expire value
      because we left the dst.expire value intact from the last update. So
      dst_set_expires won't touch dst.expires.
      
      Fix this by resetting dst.expires when clearing the RTF_EXPIRE flag.
      dst_set_expires checks for a zero expiration and updates the
      dst.expires.
      
      In the past this (not updating dst.expires) was necessary because
      dst.expire was placed in a union with the dst_entry *from reference
      and rt6_clean_expires did assign NULL to it. This split happend in
      ecd98837 ("ipv6: fix race condition
      regarding dst->expires and dst->from").
      Reported-by: default avatarSteinar H. Gunderson <sgunderson@bigfoot.com>
      Reported-by: default avatarValentijn Sessink <valentyn@blub.net>
      Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Tested-by: default avatarValentijn Sessink <valentyn@blub.net>
      Signed-off-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f5fa9283
    • Hannes Frederic Sowa's avatar
      ipv6: ip6_dst_check needs to check for expired dst_entries · f3e0e136
      Hannes Frederic Sowa authored
      [ Upstream commit e3bc10bd ]
      
      On receiving a packet too big icmp error we check if our current cached
      dst_entry in the socket is still valid. This validation check did not
      care about the expiration of the (cached) route.
      
      The error path I traced down:
      The socket receives a packet too big mtu notification. It still has a
      valid dst_entry and thus issues the ip6_rt_pmtu_update on this dst_entry,
      setting RTF_EXPIRE and updates the dst.expiration value (which could
      fail because of not up-to-date expiration values, see previous patch).
      
      In some seldom cases we race with a) the ip6_fib gc or b) another routing
      lookup which would result in a recreation of the cached rt6_info from its
      parent non-cached rt6_info. While copying the rt6_info we reinitialize the
      metrics store by copying it over from the parent thus invalidating the
      just installed pmtu update (both dsts use the same key to the inetpeer
      storage). The dst_entry with the just invalidated metrics data would
      just get its RTF_EXPIRES flag cleared and would continue to stay valid
      for the socket.
      
      We should have not issued the pmtu update on the already expired dst_entry
      in the first placed. By checking the expiration on the dst entry and
      doing a relookup in case it is out of date we close the race because
      we would install a new rt6_info into the fib before we issue the pmtu
      update, thus closing this race.
      
      Not reliably updating the dst.expire value was fixed by the patch "ipv6:
      reset dst.expires value when clearing expire flag".
      Reported-by: default avatarSteinar H. Gunderson <sgunderson@bigfoot.com>
      Reported-by: default avatarValentijn Sessink <valentyn@blub.net>
      Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
      Signed-off-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
      Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
      Tested-by: default avatarValentijn Sessink <valentyn@blub.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f3e0e136
    • Yuchung Cheng's avatar
      tcp: do not rearm RTO when future data are sacked · f22ede93
      Yuchung Cheng authored
      [ Upstream commit 2f715c1d ]
      
      Patch ed08495c "tcp: use RTT from SACK for RTO" always re-arms RTO upon
      obtaining a RTT sample from newly sacked data.
      
      But technically RTO should only be re-armed when the data sent before
      the last (re)transmission of write queue head are (s)acked. Otherwise
      the RTO may continue to extend during loss recovery on data sent
      in the future.
      
      Note that RTTs from ACK or timestamps do not have this problem, as the RTT
      source must be from data sent before.
      
      The new RTO re-arm policy is
      1) Always re-arm RTO if SND.UNA is advanced
      2) Re-arm RTO if sack RTT is available, provided the sacked data was
         sent before the last time write_queue_head was sent.
      Signed-off-by: default avatarLarry Brakmo <brakmo@google.com>
      Signed-off-by: default avatarYuchung Cheng <ycheng@google.com>
      Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f22ede93
    • Yuchung Cheng's avatar
      tcp: only take RTT from timestamps if new data is acked · 6f21a693
      Yuchung Cheng authored
      [ Upstream commit 2909d874 ]
      
      Patch ed08495c "tcp: use RTT from SACK for RTO" has a bug that
      it does not check if the ACK acknowledge new data before taking
      the RTT sample from TCP timestamps. This patch adds the check
      back as required by the RFC.
      Signed-off-by: default avatarYuchung Cheng <ycheng@google.com>
      Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6f21a693
    • Yuchung Cheng's avatar
      tcp: fix SYNACK RTT estimation in Fast Open · f5bc40e8
      Yuchung Cheng authored
      [ Upstream commit bc15afa3 ]
      
      tp->lsndtime may not always be the SYNACK timestamp if a passive
      Fast Open socket sends data before handshake completes. And if the
      remote acknowledges both the data and the SYNACK, the RTT sample
      is already taken in tcp_ack(), so no need to call
      tcp_update_ack_rtt() in tcp_synack_rtt_meas() aagain.
      Signed-off-by: default avatarYuchung Cheng <ycheng@google.com>
      Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f5bc40e8
    • Eric Dumazet's avatar
      tcp: gso: fix truesize tracking · d5f8887f
      Eric Dumazet authored
      [ Upstream commit 0d08c42c ]
      
      commit 6ff50cd5 ("tcp: gso: do not generate out of order packets")
      had an heuristic that can trigger a warning in skb_try_coalesce(),
      because skb->truesize of the gso segments were exactly set to mss.
      
      This breaks the requirement that
      
      skb->truesize >= skb->len + truesizeof(struct sk_buff);
      
      It can trivially be reproduced by :
      
      ifconfig lo mtu 1500
      ethtool -K lo tso off
      netperf
      
      As the skbs are looped into the TCP networking stack, skb_try_coalesce()
      warns us of these skb under-estimating their truesize.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d5f8887f
    • Ben Hutchings's avatar
      cxgb3: Fix length calculation in write_ofld_wr() on 32-bit architectures · 28803de3
      Ben Hutchings authored
      [ Upstream commit 262e827f ]
      
      The length calculation here is now invalid on 32-bit architectures,
      since sk_buff::tail is a pointer and sk_buff::transport_header is
      an integer offset:
      
      drivers/net/ethernet/chelsio/cxgb3/sge.c: In function 'write_ofld_wr':
      drivers/net/ethernet/chelsio/cxgb3/sge.c:1603:9: warning: passing argument 4 of 'make_sgl' makes integer from pointer without a cast [enabled by default]
               adap->pdev);
               ^
      drivers/net/ethernet/chelsio/cxgb3/sge.c:964:28: note: expected 'unsigned int' but argument is of type 'sk_buff_data_t'
       static inline unsigned int make_sgl(const struct sk_buff *skb,
                                  ^
      
      Use the appropriate skb accessor functions.
      
      Compile-tested only.
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Fixes: 1a37e412 ('net: Use 16bits for *_headers fields of struct skbuff')
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      28803de3
    • Wei Liu's avatar
      xen-netback: use jiffies_64 value to calculate credit timeout · b6842aab
      Wei Liu authored
      [ Upstream commit 059dfa6a ]
      
      time_after_eq() only works if the delta is < MAX_ULONG/2.
      
      For a 32bit Dom0, if netfront sends packets at a very low rate, the time
      between subsequent calls to tx_credit_exceeded() may exceed MAX_ULONG/2
      and the test for timer_after_eq() will be incorrect. Credit will not be
      replenished and the guest may become unable to send packets (e.g., if
      prior to the long gap, all credit was exhausted).
      
      Use jiffies_64 variant to mitigate this problem for 32bit Dom0.
      Suggested-by: default avatarJan Beulich <jbeulich@suse.com>
      Signed-off-by: default avatarWei Liu <wei.liu2@citrix.com>
      Reviewed-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
      Cc: Ian Campbell <ian.campbell@citrix.com>
      Cc: Jason Luan <jianhai.luan@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b6842aab
    • Jason Wang's avatar
      virtio-net: correctly handle cpu hotplug notifier during resuming · 5a285188
      Jason Wang authored
      [ Upstream commit ec9debbd ]
      
      commit 3ab098df (virtio-net: don't respond to
      cpu hotplug notifier if we're not ready) tries to bypass the cpu hotplug
      notifier by checking the config_enable and does nothing is it was false. So it
      need to try to hold the config_lock mutex which may happen in atomic
      environment which leads the following warnings:
      
      [  622.944441] CPU0 attaching NULL sched-domain.
      [  622.944446] CPU1 attaching NULL sched-domain.
      [  622.944485] CPU0 attaching NULL sched-domain.
      [  622.950795] BUG: sleeping function called from invalid context at kernel/mutex.c:616
      [  622.950796] in_atomic(): 1, irqs_disabled(): 1, pid: 10, name: migration/1
      [  622.950796] no locks held by migration/1/10.
      [  622.950798] CPU: 1 PID: 10 Comm: migration/1 Not tainted 3.12.0-rc5-wl-01249-gb91e82d #317
      [  622.950799] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
      [  622.950802]  0000000000000000 ffff88001d42dba0 ffffffff81a32f22 ffff88001bfb9c70
      [  622.950803]  ffff88001d42dbb0 ffffffff810edb02 ffff88001d42dc38 ffffffff81a396ed
      [  622.950805]  0000000000000046 ffff88001d42dbe8 ffffffff810e861d 0000000000000000
      [  622.950805] Call Trace:
      [  622.950810]  [<ffffffff81a32f22>] dump_stack+0x54/0x74
      [  622.950815]  [<ffffffff810edb02>] __might_sleep+0x112/0x114
      [  622.950817]  [<ffffffff81a396ed>] mutex_lock_nested+0x3c/0x3c6
      [  622.950818]  [<ffffffff810e861d>] ? up+0x39/0x3e
      [  622.950821]  [<ffffffff8153ea7c>] ? acpi_os_signal_semaphore+0x21/0x2d
      [  622.950824]  [<ffffffff81565ed1>] ? acpi_ut_release_mutex+0x5e/0x62
      [  622.950828]  [<ffffffff816d04ec>] virtnet_cpu_callback+0x33/0x87
      [  622.950830]  [<ffffffff81a42576>] notifier_call_chain+0x3c/0x5e
      [  622.950832]  [<ffffffff810e86a8>] __raw_notifier_call_chain+0xe/0x10
      [  622.950835]  [<ffffffff810c5556>] __cpu_notify+0x20/0x37
      [  622.950836]  [<ffffffff810c5580>] cpu_notify+0x13/0x15
      [  622.950838]  [<ffffffff81a237cd>] take_cpu_down+0x27/0x3a
      [  622.950841]  [<ffffffff81136289>] stop_machine_cpu_stop+0x93/0xf1
      [  622.950842]  [<ffffffff81136167>] cpu_stopper_thread+0xa0/0x12f
      [  622.950844]  [<ffffffff811361f6>] ? cpu_stopper_thread+0x12f/0x12f
      [  622.950847]  [<ffffffff81119710>] ? lock_release_holdtime.part.7+0xa3/0xa8
      [  622.950848]  [<ffffffff81135e4b>] ? cpu_stop_should_run+0x3f/0x47
      [  622.950850]  [<ffffffff810ea9b0>] smpboot_thread_fn+0x1c5/0x1e3
      [  622.950852]  [<ffffffff810ea7eb>] ? lg_global_unlock+0x67/0x67
      [  622.950854]  [<ffffffff810e36b7>] kthread+0xd8/0xe0
      [  622.950857]  [<ffffffff81a3bfad>] ? wait_for_common+0x12f/0x164
      [  622.950859]  [<ffffffff810e35df>] ? kthread_create_on_node+0x124/0x124
      [  622.950861]  [<ffffffff81a45ffc>] ret_from_fork+0x7c/0xb0
      [  622.950862]  [<ffffffff810e35df>] ? kthread_create_on_node+0x124/0x124
      [  622.950876] smpboot: CPU 1 is now offline
      [  623.194556] SMP alternatives: lockdep: fixing up alternatives
      [  623.194559] smpboot: Booting Node 0 Processor 1 APIC 0x1
      ...
      
      A correct fix is to unregister the hotcpu notifier during restore and register a
      new one in resume.
      Reported-by: default avatarFengguang Wu <fengguang.wu@intel.com>
      Tested-by: default avatarFengguang Wu <fengguang.wu@intel.com>
      Cc: Wanlong Gao <gaowanlong@cn.fujitsu.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Michael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Reviewed-by: default avatarWanlong Gao <gaowanlong@cn.fujitsu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5a285188
    • Jason Wang's avatar
      net: flow_dissector: fail on evil iph->ihl · cec64fec
      Jason Wang authored
      [ Upstream commit 6f092343 ]
      
      We don't validate iph->ihl which may lead a dead loop if we meet a IPIP
      skb whose iph->ihl is zero. Fix this by failing immediately when iph->ihl
      is evil (less than 5).
      
      This issue were introduced by commit ec5efe79
      (rps: support IPIP encapsulation).
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Cc: Eric Dumazet <edumazet@google.com>
      Cc: Petr Matousek <pmatouse@redhat.com>
      Cc: Michael S. Tsirkin <mst@redhat.com>
      Cc: Daniel Borkmann <dborkman@redhat.com>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      cec64fec
    • Daniel Borkmann's avatar
      net: sctp: do not trigger BUG_ON in sctp_cmd_delete_tcb · 2cb79d15
      Daniel Borkmann authored
      [ Upstream commit 7926c1d5 ]
      
      Introduced in f9e42b85 ("net: sctp: sideeffect: throw BUG if
      primary_path is NULL"), we intended to find a buggy assoc that's
      part of the assoc hash table with a primary_path that is NULL.
      However, we better remove the BUG_ON for now and find a more
      suitable place to assert for these things as Mark reports that
      this also triggers the bug when duplication cookie processing
      happens, and the assoc is not part of the hash table (so all
      good in this case). Such a situation can for example easily be
      reproduced by:
      
        tc qdisc add dev eth0 root handle 1: prio bands 2 priomap 1 1 1 1 1 1
        tc qdisc add dev eth0 parent 1:2 handle 20: netem loss 20%
        tc filter add dev eth0 protocol ip parent 1: prio 2 u32 match ip \
                  protocol 132 0xff match u8 0x0b 0xff at 32 flowid 1:2
      
      This drops 20% of COOKIE-ACK packets. After some follow-up
      discussion with Vlad we came to the conclusion that for now we
      should still better remove this BUG_ON() assertion, and come up
      with two follow-ups later on, that is, i) find a more suitable
      place for this assertion, and possibly ii) have a special
      allocator/initializer for such kind of temporary assocs.
      Reported-by: default avatarMark Thomas <Mark.Thomas@metaswitch.com>
      Signed-off-by: default avatarVlad Yasevich <vyasevich@gmail.com>
      Signed-off-by: default avatarDaniel Borkmann <dborkman@redhat.com>
      Acked-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2cb79d15
    • Jack Morgenstein's avatar
      net/mlx4_core: Fix call to __mlx4_unregister_mac · 65879edf
      Jack Morgenstein authored
      [ Upstream commit c32b7dfb ]
      
      In function mlx4_master_deactivate_admin_state() __mlx4_unregister_mac was
      called using the MAC index. It should be called with the value of the MAC itself.
      Signed-off-by: default avatarJack Morgenstein <jackm@dev.mellanox.co.il>
      Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      65879edf