1. 06 May, 2015 8 commits
    • Alexey Khoroshilov's avatar
      pxa168: fix double deallocation of managed resources · f80e3eb9
      Alexey Khoroshilov authored
      [ Upstream commit 0e03fd3e ]
      
      Commit 43d3ddf8 ("net: pxa168_eth: add device tree support") starts
      to use managed resources by adding devm_clk_get() and
      devm_ioremap_resource(), but it leaves explicit iounmap() and clock_put()
      in pxa168_eth_remove() and in failure handling code of pxa168_eth_probe().
      As a result double free can happen.
      
      The patch removes explicit resource deallocation. Also it converts
      clk_disable() to clk_disable_unprepare() to make it symmetrical with
      clk_prepare_enable().
      
      Found by Linux Driver Verification project (linuxtesting.org).
      Signed-off-by: default avatarAlexey Khoroshilov <khoroshilov@ispras.ru>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f80e3eb9
    • Eric Dumazet's avatar
      net: fix crash in build_skb() · f009181d
      Eric Dumazet authored
      [ Upstream commit 2ea2f62c ]
      
      When I added pfmemalloc support in build_skb(), I forgot netlink
      was using build_skb() with a vmalloc() area.
      
      In this patch I introduce __build_skb() for netlink use,
      and build_skb() is a wrapper handling both skb->head_frag and
      skb->pfmemalloc
      
      This means netlink no longer has to hack skb->head_frag
      
      [ 1567.700067] kernel BUG at arch/x86/mm/physaddr.c:26!
      [ 1567.700067] invalid opcode: 0000 [#1] PREEMPT SMP KASAN
      [ 1567.700067] Dumping ftrace buffer:
      [ 1567.700067]    (ftrace buffer empty)
      [ 1567.700067] Modules linked in:
      [ 1567.700067] CPU: 9 PID: 16186 Comm: trinity-c182 Not tainted 4.0.0-next-20150424-sasha-00037-g4796e21 #2167
      [ 1567.700067] task: ffff880127efb000 ti: ffff880246770000 task.ti: ffff880246770000
      [ 1567.700067] RIP: __phys_addr (arch/x86/mm/physaddr.c:26 (discriminator 3))
      [ 1567.700067] RSP: 0018:ffff8802467779d8  EFLAGS: 00010202
      [ 1567.700067] RAX: 000041000ed8e000 RBX: ffffc9008ed8e000 RCX: 000000000000002c
      [ 1567.700067] RDX: 0000000000000004 RSI: 0000000000000000 RDI: ffffffffb3fd6049
      [ 1567.700067] RBP: ffff8802467779f8 R08: 0000000000000019 R09: ffff8801d0168000
      [ 1567.700067] R10: ffff8801d01680c7 R11: ffffed003a02d019 R12: ffffc9000ed8e000
      [ 1567.700067] R13: 0000000000000f40 R14: 0000000000001180 R15: ffffc9000ed8e000
      [ 1567.700067] FS:  00007f2a7da3f700(0000) GS:ffff8801d1000000(0000) knlGS:0000000000000000
      [ 1567.700067] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [ 1567.700067] CR2: 0000000000738308 CR3: 000000022e329000 CR4: 00000000000007e0
      [ 1567.700067] Stack:
      [ 1567.700067]  ffffc9000ed8e000 ffff8801d0168000 ffffc9000ed8e000 ffff8801d0168000
      [ 1567.700067]  ffff880246777a28 ffffffffad7c0a21 0000000000001080 ffff880246777c08
      [ 1567.700067]  ffff88060d302e68 ffff880246777b58 ffff880246777b88 ffffffffad9a6821
      [ 1567.700067] Call Trace:
      [ 1567.700067] build_skb (include/linux/mm.h:508 net/core/skbuff.c:316)
      [ 1567.700067] netlink_sendmsg (net/netlink/af_netlink.c:1633 net/netlink/af_netlink.c:2329)
      [ 1567.774369] ? sched_clock_cpu (kernel/sched/clock.c:311)
      [ 1567.774369] ? netlink_unicast (net/netlink/af_netlink.c:2273)
      [ 1567.774369] ? netlink_unicast (net/netlink/af_netlink.c:2273)
      [ 1567.774369] sock_sendmsg (net/socket.c:614 net/socket.c:623)
      [ 1567.774369] sock_write_iter (net/socket.c:823)
      [ 1567.774369] ? sock_sendmsg (net/socket.c:806)
      [ 1567.774369] __vfs_write (fs/read_write.c:479 fs/read_write.c:491)
      [ 1567.774369] ? get_lock_stats (kernel/locking/lockdep.c:249)
      [ 1567.774369] ? default_llseek (fs/read_write.c:487)
      [ 1567.774369] ? vtime_account_user (kernel/sched/cputime.c:701)
      [ 1567.774369] ? rw_verify_area (fs/read_write.c:406 (discriminator 4))
      [ 1567.774369] vfs_write (fs/read_write.c:539)
      [ 1567.774369] SyS_write (fs/read_write.c:586 fs/read_write.c:577)
      [ 1567.774369] ? SyS_read (fs/read_write.c:577)
      [ 1567.774369] ? __this_cpu_preempt_check (lib/smp_processor_id.c:63)
      [ 1567.774369] ? trace_hardirqs_on_caller (kernel/locking/lockdep.c:2594 kernel/locking/lockdep.c:2636)
      [ 1567.774369] ? trace_hardirqs_on_thunk (arch/x86/lib/thunk_64.S:42)
      [ 1567.774369] system_call_fastpath (arch/x86/kernel/entry_64.S:261)
      
      Fixes: 79930f58 ("net: do not deplete pfmemalloc reserve")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarSasha Levin <sasha.levin@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f009181d
    • Eric Dumazet's avatar
      net: do not deplete pfmemalloc reserve · e591662c
      Eric Dumazet authored
      [ Upstream commit 79930f58 ]
      
      build_skb() should look at the page pfmemalloc status.
      If set, this means page allocator allocated this page in the
      expectation it would help to free other pages. Networking
      stack can do that only if skb->pfmemalloc is also set.
      
      Also, we must refrain using high order pages from the pfmemalloc
      reserve, so __page_frag_refill() must also use __GFP_NOMEMALLOC for
      them. Under memory pressure, using order-0 pages is probably the best
      strategy.
      Signed-off-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>
      e591662c
    • Eric Dumazet's avatar
      tcp: avoid looping in tcp_send_fin() · 7e724697
      Eric Dumazet authored
      [ Upstream commit 845704a5 ]
      
      Presence of an unbound loop in tcp_send_fin() had always been hard
      to explain when analyzing crash dumps involving gigantic dying processes
      with millions of sockets.
      
      Lets try a different strategy :
      
      In case of memory pressure, try to add the FIN flag to last packet
      in write queue, even if packet was already sent. TCP stack will
      be able to deliver this FIN after a timeout event. Note that this
      FIN being delivered by a retransmit, it also carries a Push flag
      given our current implementation.
      
      By checking sk_under_memory_pressure(), we anticipate that cooking
      many FIN packets might deplete tcp memory.
      
      In the case we could not allocate a packet, even with __GFP_WAIT
      allocation, then not sending a FIN seems quite reasonable if it allows
      to get rid of this socket, free memory, and not block the process from
      eventually doing other useful work.
      Signed-off-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>
      7e724697
    • Eric Dumazet's avatar
      tcp: fix possible deadlock in tcp_send_fin() · e1b095eb
      Eric Dumazet authored
      [ Upstream commit d83769a5 ]
      
      Using sk_stream_alloc_skb() in tcp_send_fin() is dangerous in
      case a huge process is killed by OOM, and tcp_mem[2] is hit.
      
      To be able to free memory we need to make progress, so this
      patch allows FIN packets to not care about tcp_mem[2], if
      skb allocation succeeded.
      
      In a follow-up patch, we might abort tcp_send_fin() infinite loop
      in case TIF_MEMDIE is set on this thread, as memory allocator
      did its best getting extra memory already.
      
      This patch reverts d22e1537 ("tcp: fix tcp fin memory accounting")
      
      Fixes: d22e1537 ("tcp: fix tcp fin memory accounting")
      Signed-off-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>
      e1b095eb
    • Tom Herbert's avatar
      ppp: call skb_checksum_complete_unset in ppp_receive_frame · 5a248fca
      Tom Herbert authored
      [ Upstream commit 3dfb0534 ]
      
      Call checksum_complete_unset in PPP receive to discard checksum-complete
      value. PPP does not pull checksum for headers and also modifies packet
      as in VJ compression.
      Signed-off-by: default avatarTom Herbert <tom@herbertland.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5a248fca
    • Tom Herbert's avatar
      net: add skb_checksum_complete_unset · 8a6846e3
      Tom Herbert authored
      [ Upstream commit 4e18b9ad ]
      
      This function changes ip_summed to CHECKSUM_NONE if CHECKSUM_COMPLETE
      is set. This is called to discard checksum-complete when packet
      is being modified and checksum is not pulled for headers in a layer.
      Signed-off-by: default avatarTom Herbert <tom@herbertland.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8a6846e3
    • Sebastian Pöhn's avatar
      ip_forward: Drop frames with attached skb->sk · 7bebf970
      Sebastian Pöhn authored
      [ Upstream commit 2ab95749 ]
      
      Initial discussion was:
      [FYI] xfrm: Don't lookup sk_policy for timewait sockets
      
      Forwarded frames should not have a socket attached. Especially
      tw sockets will lead to panics later-on in the stack.
      
      This was observed with TPROXY assigning a tw socket and broken
      policy routing (misconfigured). As a result frame enters
      forwarding path instead of input. We cannot solve this in
      TPROXY as it cannot know that policy routing is broken.
      
      v2:
      Remove useless comment
      Signed-off-by: default avatarSebastian Poehn <sebastian.poehn@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7bebf970
  2. 29 Apr, 2015 8 commits
  3. 12 Apr, 2015 3 commits
  4. 11 Apr, 2015 11 commits
  5. 10 Apr, 2015 6 commits
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending · 49850a14
      Linus Torvalds authored
      Pull SCSI target fixes from Nicholas Bellinger:
       "Just a few small fixes:
      
        Two from Andy, the first addresses a v4.0 target specific regression
        to a user visible configfs attribute, and the second adds a set of
        missing brackets around IPv6 discovery portal information within
        iscsi-target.
      
        And one from Mike that fixes an OOPs regression in traditional
        iscsi-target when an iovec allocation fails, that has been present
        since v3.10.y code.  (CC'd to stable)"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending:
        iscsi target: fix oops when adding reject pdu
        iscsi-target: TargetAddress in SendTargets should bracket ipv6 addresses
        target: Allow userspace to write 1 to attrib/emulate_fua_write
      49850a14
    • Mike Christie's avatar
      iscsi target: fix oops when adding reject pdu · b815fc12
      Mike Christie authored
      This fixes a oops due to a double list add when adding a reject PDU for
      iscsit_allocate_iovecs allocation failures. The cmd has already been
      added to the conn_cmd_list in iscsit_setup_scsi_cmd, so this has us call
      iscsit_reject_cmd.
      
      Note that for ERL0 the reject PDU is not actually sent, so this patch
      is not completely tested. Just verified we do not oops. The problem is the
      add reject functions return -1 which is returned all the way up to
      iscsi_target_rx_thread which for ERL0 will drop the connection.
      Signed-off-by: default avatarMike Christie <michaelc@cs.wisc.edu>
      Cc: <stable@vger.kernel.org> # v3.10+
      Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
      b815fc12
    • Linus Torvalds's avatar
      Merge tag 'sound-4.0' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · cfc4957b
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "Here are fixes gathered for 4.0-final; one FireFire endian fix, two
        USB-audio quirks, and three HD-audio quirks.
      
        All relatively small and device-specific fixes, should be pretty safe
        to apply"
      
      * tag 'sound-4.0' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: usb - Creative USB X-Fi Pro SB1095 volume knob support
        ALSA: hda - Fix headphone pin config for Lifebook T731
        ALSA: bebob: fix to processing in big-endian machine for sending cue
        ALSA: hda/realtek - Make more stable to get pin sense for ALC283
        ALSA: usb-audio: don't try to get Benchmark DAC1 sample rate
        ALSA: hda/realtek - Support Dell headset mode for ALC256
      cfc4957b
    • Linus Torvalds's avatar
      Merge tag 'nios2-fixes-v4.0-final' of git://git.rocketboards.org/linux-socfpga-next · 6fb805fb
      Linus Torvalds authored
      Pull arch/nios2 fixes from Ley Foon Tan:
       "There are 3 arch/nios2 fixes for 4.0 final:
      
         - fix cache coherency issue when debugging with gdb
      
         - move restart_block to struct task_struct (aligned with other
           architectures)
      
         - fix for missing registers defines for ptrace"
      
      * tag 'nios2-fixes-v4.0-final' of git://git.rocketboards.org/linux-socfpga-next:
        nios2: fix cache coherency issue when debug with gdb
        nios2: add missing ptrace registers defines
        nios2: signal: Move restart_block to struct task_struct
      6fb805fb
    • Ley Foon Tan's avatar
      nios2: fix cache coherency issue when debug with gdb · 4a89c308
      Ley Foon Tan authored
      Remove the end address checking for flushda function. We need to flush
      each address line for flushda instruction, from start to end address.
      This is because flushda instruction only flush the cache if tag and line
      fields are matched.
      
      Change to use ldwio instruction (bypass cache) to load the instruction
      that causing trap. Our interest is the actual instruction that executed
      by the processor, this should be uncached.
      Note, EA address might be an userspace cached address.
      Signed-off-by: default avatarLey Foon Tan <lftan@altera.com>
      4a89c308
    • Linus Torvalds's avatar
      Merge tag 'pm+acpi-4.0-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · e5e02de0
      Linus Torvalds authored
      Pull power management and ACPI fixes from Rafael Wysocki:
       "These are stable-candidate fixes of some recently reported issues in
        the cpufreq core, cpuidle core, the ACPI cpuidle driver and the
        hibernate core.
      
        Specifics:
      
         - Revert a 3.17 hibernate commit that was supposed to fix an issue
           related to e820 reserved regions, but broke resume from hibernation
           on Lenovo x230 (Rafael J Wysocki).
      
         - Prevent the ACPI cpuidle driver from overwriting the name and
           description of the C0 state set by the core when the list of
           C-states changes (Thomas Schlichter).
      
         - Remove the no longer needed state_count field from struct
           cpuidle_device which prevents the list of C-states shown by the
           sysfs interface from becoming incorrect when the current number of
           them is different from the number of C-states on boot (Bartlomiej
           Zolnierkiewicz).
      
         - The cpufreq core updates the policy object of the only online CPU
           during system resume to make it reflect the current hardware state,
           but it always assumes that CPU to be CPU0 which need not be the
           case, so fix the code to avoid that assumption (Viresh Kumar)"
      
      * tag 'pm+acpi-4.0-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        Revert "PM / hibernate: avoid unsafe pages in e820 reserved regions"
        cpuidle: ACPI: do not overwrite name and description of C0
        cpuidle: remove state_count field from struct cpuidle_device
        cpufreq: Schedule work for the first-online CPU on resume
      e5e02de0
  6. 09 Apr, 2015 4 commits
    • Rafael J. Wysocki's avatar
      Merge branches 'pm-sleep', 'pm-cpufreq' and 'pm-cpuidle' · b2d5fb97
      Rafael J. Wysocki authored
      * pm-sleep:
        Revert "PM / hibernate: avoid unsafe pages in e820 reserved regions"
      
      * pm-cpufreq:
        cpufreq: Schedule work for the first-online CPU on resume
      
      * pm-cpuidle:
        cpuidle: ACPI: do not overwrite name and description of C0
        cpuidle: remove state_count field from struct cpuidle_device
      b2d5fb97
    • Linus Torvalds's avatar
      Merge tag 'pci-v4.0-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci · 3cfb2f79
      Linus Torvalds authored
      Pull PCI fixes from Bjorn Helgaas:
       "Here are some fixes for v4.0.  I apologize for how late they are.  We
        were hoping for some better fixes, but couldn't get them polished in
        time.  These fix:
      
         - a Xen domU oops with PCI passthrough devices
         - a sparc T5 boot failure
         - a STM SPEAr13xx crash (use after initdata freed)
         - a cpcihp hotplug driver thinko
         - an AER thinko that printed stack junk
      
        Details:
      
        Enumeration
          - Don't look for ACPI hotplug parameters if ACPI is disabled (Bjorn Helgaas)
      
        Resource management
          - Revert "sparc/PCI: Clip bridge windows to fit in upstream windows" (Bjorn Helgaas)
      
        AER
          - Avoid info leak in __print_tlp_header() (Rasmus Villemoes)
      
        PCI device hotplug
          - Add missing curly braces in cpci_configure_slot() (Dan Carpenter)
      
        ST Microelectronics SPEAr13xx host bridge driver
          - Drop __initdata from spear13xx_pcie_driver (Matwey V. Kornilov)
      
      * tag 'pci-v4.0-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
        Revert "sparc/PCI: Clip bridge windows to fit in upstream windows"
        PCI: Don't look for ACPI hotplug parameters if ACPI is disabled
        PCI: cpcihp: Add missing curly braces in cpci_configure_slot()
        PCI/AER: Avoid info leak in __print_tlp_header()
        PCI: spear: Drop __initdata from spear13xx_pcie_driver
      3cfb2f79
    • Dmitry M. Fedin's avatar
      ALSA: usb - Creative USB X-Fi Pro SB1095 volume knob support · 3dc8523f
      Dmitry M. Fedin authored
      Adds an entry for Creative USB X-Fi to the rc_config array in
      mixer_quirks.c to allow use of volume knob on the device.
      Adds support for newer X-Fi Pro card, known as "Model No. SB1095"
      with USB ID "041e:3237"
      Signed-off-by: default avatarDmitry M. Fedin <dmitry.fedin@gmail.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      3dc8523f
    • Al Viro's avatar
      ocfs2: _really_ sync the right range · 64b4e252
      Al Viro authored
      "ocfs2 syncs the wrong range" had been broken; prior to it the
      code was doing the wrong thing in case of O_APPEND, all right,
      but _after_ it we were syncing the wrong range in 100% cases.
      *ppos, aka iocb->ki_pos is incremented prior to that point,
      so we are always doing sync on the area _after_ the one we'd
      written to.
      
      Spotted by Joseph Qi <joseph.qi@huawei.com> back in January;
      unfortunately, I'd missed his mail back then ;-/
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      64b4e252