17 Jan, 2018

40 commits

  • commit e245c5c6a5656e4d61aa7bb08e9694fd6e5b2b9d upstream.

    no functional change.
    move fixup_bpf_calls() to verifier.c
    it's being refactored in the next patch

    Signed-off-by: Alexei Starovoitov
    Acked-by: Daniel Borkmann
    Signed-off-by: David S. Miller
    Cc: Jiri Slaby
    [backported to 4.9 - gregkh]
    Signed-off-by: Greg Kroah-Hartman

    Alexei Starovoitov
     
  • commit 1c21a48055a67ceb693e9c2587824a8de60a217c upstream.

    This patch fixes bug where early se_cmd exceptions that occur
    before backend execution can result in use-after-free if/when
    a subsequent ABORT_TASK occurs for the same tag.

    Since an early se_cmd exception will have had se_cmd added to
    se_session->sess_cmd_list via target_get_sess_cmd(), it will
    not have CMD_T_COMPLETE set by the usual target_complete_cmd()
    backend completion path.

    This causes a subsequent ABORT_TASK + __target_check_io_state()
    to signal ABORT_TASK should proceed. As core_tmr_abort_task()
    executes, it will bring the outstanding se_cmd->cmd_kref count
    down to zero releasing se_cmd, after se_cmd has already been
    queued with error status into fabric driver response path code.

    To address this bug, introduce a CMD_T_PRE_EXECUTE bit that is
    set at target_get_sess_cmd() time, and cleared immediately before
    backend driver dispatch in target_execute_cmd() once CMD_T_ACTIVE
    is set.

    Then, check CMD_T_PRE_EXECUTE within __target_check_io_state() to
    determine when an early exception has occured, and avoid aborting
    this se_cmd since it will have already been queued into fabric
    driver response path code.

    Reported-by: Donald White
    Cc: Donald White
    Cc: Mike Christie
    Cc: Hannes Reinecke
    Signed-off-by: Nicholas Bellinger
    Signed-off-by: Greg Kroah-Hartman

    Nicholas Bellinger
     
  • commit ae072726f6109bb1c94841d6fb3a82dde298ea85 upstream.

    Since commit 59b6986dbf fixed a potential NULL pointer dereference
    by allocating a se_tmr_req for ISCSI_TM_FUNC_TASK_REASSIGN, the
    se_tmr_req is currently leaked by iscsit_free_cmd() because no
    iscsi_cmd->se_cmd.se_tfo was associated.

    To address this, treat ISCSI_TM_FUNC_TASK_REASSIGN like any other
    TMR and call transport_init_se_cmd() + target_get_sess_cmd() to
    setup iscsi_cmd->se_cmd.se_tfo with se_cmd->cmd_kref of 2.

    This will ensure normal release operation once se_cmd->cmd_kref
    reaches zero and target_release_cmd_kref() is invoked, se_tmr_req
    will be released via existing target_free_cmd_mem() and
    core_tmr_release_req() code.

    Reported-by: Donald White
    Cc: Donald White
    Cc: Mike Christie
    Cc: Hannes Reinecke
    Signed-off-by: Nicholas Bellinger
    Signed-off-by: Greg Kroah-Hartman

    Nicholas Bellinger
     
  • This finally resolve crash if loaded under qemu + haxm. Haitao Shan pointed
    out that the reason of that crash is that NX bit get set for page tables.
    It seems we missed checking if _PAGE_NX is supported in kaiser_add_user_map

    Link: https://www.spinics.net/lists/kernel/msg2689835.html

    Reviewed-by: Guenter Roeck
    Signed-off-by: Lepton Wu
    Signed-off-by: Greg Kroah-Hartman

    Lepton Wu
     
  • commit 0d9cac0ca0429830c40fe1a4e50e60f6221fd7b6 upstream.

    The vmw_view_cmd_to_type() function returns vmw_view_max (3) on error.
    It's one element beyond the end of the vmw_view_cotables[] table.

    My read on this is that it's possible to hit this failure. header->id
    comes from vmw_cmd_check() and it's a user controlled number between
    1040 and 1225 so we can hit that error. But I don't have the hardware
    to test this code.

    Fixes: d80efd5cb3de ("drm/vmwgfx: Initial DX support")
    Signed-off-by: Dan Carpenter
    Reviewed-by: Thomas Hellstrom
    Signed-off-by: Greg Kroah-Hartman

    Dan Carpenter
     
  • commit 75f139aaf896d6fdeec2e468ddfa4b2fe469bf40 upstream.

    This adds a memory barrier when performing a lookup into
    the vmcs_field_to_offset_table. This is related to
    CVE-2017-5753.

    Signed-off-by: Andrew Honig
    Reviewed-by: Jim Mattson
    Signed-off-by: Paolo Bonzini
    Signed-off-by: Greg Kroah-Hartman

    Andrew Honig
     
  • commit b94b7373317164402ff7728d10f7023127a02b60 upstream.

    Instead of blacklisting all model 79 CPUs when attempting a late
    microcode loading, limit that only to CPUs with microcode revisions <
    0x0b000021 because only on those late loading may cause a system hang.

    For such processors either:

    a) a BIOS update which might contain a newer microcode revision

    or

    b) the early microcode loading method

    should be considered.

    Processors with revisions 0x0b000021 or higher will not experience such
    hangs.

    For more details, see erratum BDF90 in document #334165 (Intel Xeon
    Processor E7-8800/4800 v4 Product Family Specification Update) from
    September 2017.

    [ bp: Heavily massage commit message and pr_* statements. ]

    Fixes: 723f2828a98c ("x86/microcode/intel: Disable late loading on model 79")
    Signed-off-by: Jia Zhang
    Signed-off-by: Borislav Petkov
    Signed-off-by: Thomas Gleixner
    Acked-by: Tony Luck
    Cc: x86-ml
    Link: http://lkml.kernel.org/r/1514772287-92959-1-git-send-email-qianyue.zj@alibaba-inc.com
    Signed-off-by: Greg Kroah-Hartman

    Jia Zhang
     
  • commit 21acdf45f4958135940f0b4767185cf911d4b010 upstream.

    Commit d3834fefcfe5 ("rbd: bump queue_max_segments") bumped
    max_segments (unsigned short) to max_hw_sectors (unsigned int).
    max_hw_sectors is set to the number of 512-byte sectors in an object
    and overflows unsigned short for 32M (largest possible) objects, making
    the block layer resort to handing us single segment (i.e. single page
    or even smaller) bios in that case.

    Fixes: d3834fefcfe5 ("rbd: bump queue_max_segments")
    Signed-off-by: Ilya Dryomov
    Reviewed-by: Alex Elder
    Signed-off-by: Greg Kroah-Hartman

    Ilya Dryomov
     
  • commit 9a00674213a3f00394f4e3221b88f2d21fc05789 upstream.

    syzkaller triggered a NULL pointer dereference in crypto_remove_spawns()
    via a program that repeatedly and concurrently requests AEADs
    "authenc(cmac(des3_ede-asm),pcbc-aes-aesni)" and hashes "cmac(des3_ede)"
    through AF_ALG, where the hashes are requested as "untested"
    (CRYPTO_ALG_TESTED is set in ->salg_mask but clear in ->salg_feat; this
    causes the template to be instantiated for every request).

    Although AF_ALG users really shouldn't be able to request an "untested"
    algorithm, the NULL pointer dereference is actually caused by a
    longstanding race condition where crypto_remove_spawns() can encounter
    an instance which has had spawn(s) "grabbed" but hasn't yet been
    registered, resulting in ->cra_users still being NULL.

    We probably should properly initialize ->cra_users earlier, but that
    would require updating many templates individually. For now just fix
    the bug in a simple way that can easily be backported: make
    crypto_remove_spawns() treat a NULL ->cra_users list as empty.

    Reported-by: syzbot
    Signed-off-by: Eric Biggers
    Signed-off-by: Herbert Xu
    Signed-off-by: Greg Kroah-Hartman

    Eric Biggers
     
  • [ Upstream commit 3bb23421a504f01551b7cb9dff0e41dbf16656b0 ]

    We need to update lastuse to to the most updated value between what
    is already set and the new value.
    If HW matching fails, i.e. because of an issue, the stats are not updated
    but it could be that software did match and updated lastuse.

    Fixes: 5712bf9c5c30 ("net/sched: act_mirred: Use passed lastuse argument")
    Fixes: 9fea47d93bcc ("net/sched: act_gact: Update statistics when offloaded to hardware")
    Signed-off-by: Roi Dayan
    Reviewed-by: Paul Blakey
    Acked-by: Jiri Pirko
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Roi Dayan
     
  • [ Upstream commit 8764a8267b128405cf383157d5e9a4a3735d2409 ]

    When we remove the neighbour associated with a nexthop we should always
    refuse to write the nexthop to the adjacency table. Regardless if it is
    already present in the table or not.

    Otherwise, we risk dereferencing the NULL pointer that was set instead
    of the neighbour.

    Fixes: a7ff87acd995 ("mlxsw: spectrum_router: Implement next-hop routing")
    Signed-off-by: Ido Schimmel
    Reported-by: Alexander Petrovskiy
    Signed-off-by: Jiri Pirko
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Ido Schimmel
     
  • [ Upstream commit 71891e2dab6b55a870f8f7735e44a2963860b5c6 ]

    In kernel log ths message appears on every boot:
    "warning: `NetworkChangeNo' uses legacy ethtool link settings API,
    link modes are only partially reported"

    When ethtool link settings API changed, it started complaining about
    usages of old API. Ironically, the original patch was from google but
    the application using the legacy API is chrome.

    Linux ABI is fixed as much as possible. The kernel must not break it
    and should not complain about applications using legacy API's.
    This patch just removes the warning since using legacy API's
    in Linux is perfectly acceptable.

    Fixes: 3f1ac7a700d0 ("net: ethtool: add new ETHTOOL_xLINKSETTINGS API")
    Signed-off-by: Stephen Hemminger
    Signed-off-by: David Decotigny
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Stephen Hemminger
     
  • [ Upstream commit 862c03ee1deb7e19e0f9931682e0294ecd1fcaf9 ]

    ip6_setup_cork() might return an error, while memory allocations have
    been done and must be rolled back.

    Fixes: 6422398c2ab0 ("ipv6: introduce ipv6_make_skb")
    Signed-off-by: Eric Dumazet
    Cc: Vlad Yasevich
    Reported-by: Mike Maloney
    Acked-by: Mike Maloney
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Eric Dumazet
     
  • [ Upstream commit 879626e3a52630316d817cbda7cec9a5446d1d82 ]

    Note in the databook - Section 4.4 - EEE :
    " The EEE feature is not supported when the MAC is configured to use the
    TBI, RTBI, SMII, RMII or SGMII single PHY interface. Even if the MAC
    supports multiple PHY interfaces, you should activate the EEE mode only
    when the MAC is operating with GMII, MII, or RGMII interface."

    Applying this restriction solves a stability issue observed on Amlogic
    gxl platforms operating with RMII interface and the internal PHY.

    Fixes: 83bf79b6bb64 ("stmmac: disable at run-time the EEE if not supported")
    Signed-off-by: Jerome Brunet
    Tested-by: Arnaud Patard
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Jerome Brunet
     
  • [ Upstream commit 5133550296d43236439494aa955bfb765a89f615 ]

    Renesas SH7757 has 2 Fast and 2 Gigabit Ether controllers, while the
    'sh_eth' driver can only reset and initialize TSU of the first controller
    pair. Shimoda-san tried to solve that adding the 'needs_init' member to the
    'struct sh_eth_plat_data', however the platform code still never sets this
    flag. I think that we can infer this information from the 'devno' variable
    (set to 'platform_device::id') and reset/init the Ether controller pair
    only for an even 'devno'; therefore 'sh_eth_plat_data::needs_init' can be
    removed...

    Fixes: 150647fb2c31 ("net: sh_eth: change the condition of initialization")
    Signed-off-by: Sergei Shtylyov
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Sergei Shtylyov
     
  • [ Upstream commit dfe8266b8dd10e12a731c985b725fcf7f0e537f0 ]

    When switching the driver to the managed device API, I managed to break
    the case of a dual Ether devices sharing a single TSU: the 2nd Ether port
    wouldn't probe. Iwamatsu-san has tried to fix this but his patch was buggy
    and he then dropped the ball...

    The solution is to limit calling devm_request_mem_region() to the first
    of the two ports sharing the same TSU, so devm_ioremap_resource() can't
    be used anymore for the TSU resource...

    Fixes: d5e07e69218f ("sh_eth: use managed device API")
    Reported-by: Nobuhiro Iwamatsu
    Signed-off-by: Sergei Shtylyov
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Sergei Shtylyov
     
  • [ Upstream commit 7d11f77f84b27cef452cee332f4e469503084737 ]

    set rm->atomic.op_active to 0 when rds_pin_pages() fails
    or the user supplied address is invalid,
    this prevents a NULL pointer usage in rds_atomic_free_op()

    Signed-off-by: Mohamed Ghannam
    Acked-by: Santosh Shilimkar
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Mohamed Ghannam
     
  • [ Upstream commit c095508770aebf1b9218e77026e48345d719b17c ]

    When args->nr_local is 0, nr_pages gets also 0 due some size
    calculation via rds_rm_size(), which is later used to allocate
    pages for DMA, this bug produces a heap Out-Of-Bound write access
    to a specific memory region.

    Signed-off-by: Mohamed Ghannam
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Mohamed Ghannam
     
  • [ Upstream commit b8fd0823e0770c2d5fdbd865bccf0d5e058e5287 ]

    Use AF_INET6 instead of AF_INET in IPv6-related code path

    Signed-off-by: Andrii Vladyka
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Andrii Vladyka
     
  • [ Upstream commit 23263ec86a5f44312d2899323872468752324107 ]

    When an ip6_tunnel is in mode 'any', where the transport layer
    protocol can be either 4 or 41, dst_cache must be disabled.

    This is because xfrm policies might apply to only one of the two
    protocols. Caching dst would cause xfrm policies for one protocol
    incorrectly used for the other.

    Signed-off-by: Eli Cooper
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Eli Cooper
     
  • [ Upstream commit 78bbb15f2239bc8e663aa20bbe1987c91a0b75f6 ]

    A vlan device with vid 0 is allow to creat by not able to be fully
    cleaned up by unregister_vlan_dev() which checks for vlan_id!=0.

    Also, VLAN 0 is probably not a valid number and it is kinda
    "reserved" for HW accelerating devices, but it is probably too
    late to reject it from creation even if makes sense. Instead,
    just remove the check in unregister_vlan_dev().

    Reported-by: Dmitry Vyukov
    Fixes: ad1afb003939 ("vlan_dev: VLAN 0 should be treated as "no vlan tag" (802.1p packet)")
    Cc: Vlad Yasevich
    Cc: Ben Hutchings
    Signed-off-by: Cong Wang
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Cong Wang
     
  • This is a stable-only fix for the backport of commit 5d9b70f7d52e
    ("xhci: Don't add a virt_dev to the devs array before it's fully
    allocated").

    In branches that predate commit c5628a2af83a ("xhci: remove endpoint
    ring cache") there is an additional failure path in
    xhci_alloc_virt_device() where ring cache allocation fails, in
    which case we need to free the ring allocated for endpoint 0.

    Signed-off-by: Ben Hutchings
    Cc: Mathias Nyman

    Ben Hutchings
     
  • commit a9e840a2081ed28c2b7caa6a9a0041c950b3c37d upstream.

    We need to ensure there is enough headroom to push extra header,
    but we also need to check if we are allowed to change headers.

    skb_cow_head() is the proper helper to deal with this.

    Fixes: cc28a20e77b2 ("introduce cx82310_eth: Conexant CX82310-based ADSL router USB ethernet driver")
    Signed-off-by: Eric Dumazet
    Cc: James Hughes
    Signed-off-by: David S. Miller
    Signed-off-by: Oliver Neukum
    Signed-off-by: Greg Kroah-Hartman

    Eric Dumazet
     
  • commit b7c6d2675899cfff0180412c63fc9cbd5bacdb4d upstream.

    We need to ensure there is enough headroom to push extra header,
    but we also need to check if we are allowed to change headers.

    skb_cow_head() is the proper helper to deal with this.

    Fixes: d0cad871703b ("smsc75xx: SMSC LAN75xx USB gigabit ethernet adapter driver")
    Signed-off-by: Eric Dumazet
    Cc: James Hughes
    Signed-off-by: David S. Miller
    Signed-off-by: Oliver Neukum
    Signed-off-by: Greg Kroah-Hartman

    Eric Dumazet
     
  • commit d532c1082f68176363ed766d09bf187616e282fe upstream.

    We need to ensure there is enough headroom to push extra header,
    but we also need to check if we are allowed to change headers.

    skb_cow_head() is the proper helper to deal with this.

    Fixes: c9b37458e956 ("USB2NET : SR9700 : One chip USB 1.1 USB2NET SR9700Device Driver Support")
    Signed-off-by: Eric Dumazet
    Cc: James Hughes
    Signed-off-by: David S. Miller
    Signed-off-by: Oliver Neukum
    Signed-off-by: Greg Kroah-Hartman

    Eric Dumazet
     
  • commit d4ca73591916b760478d2b04334d5dcadc028e9c upstream.

    We need to ensure there is enough headroom to push extra header,
    but we also need to check if we are allowed to change headers.

    skb_cow_head() is the proper helper to deal with this.

    Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver")
    Signed-off-by: Eric Dumazet
    Cc: James Hughes
    Cc: Woojung Huh
    Signed-off-by: David S. Miller
    Signed-off-by: Oliver Neukum
    Signed-off-by: Greg Kroah-Hartman

    Eric Dumazet
     
  • commit fd5bb66cd934987e49557455b6497fc006521940 upstream.

    Change the zpool/compressor param callback function to release the
    zswap_pools_lock spinlock before calling param_set_charp, since that
    function may sleep when it calls kmalloc with GFP_KERNEL.

    While this problem has existed for a while, I wasn't able to trigger it
    using a tight loop changing either/both the zpool and compressor params; I
    think it's very unlikely to be an issue on the stable kernels, especially
    since most zswap users will change the compressor and/or zpool from sysfs
    only one time each boot - or zero times, if they add the params to the
    kernel boot.

    Fixes: c99b42c3529e ("zswap: use charp for zswap param strings")
    Link: http://lkml.kernel.org/r/20170126155821.4545-1-ddstreet@ieee.org
    Signed-off-by: Dan Streetman
    Reported-by: Sergey Senozhatsky
    Cc: Michal Hocko
    Cc: Minchan Kim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds
    Signed-off-by: Vlastimil Babka
    Signed-off-by: Greg Kroah-Hartman

    Dan Streetman
     
  • commit 4ee2ec1b122599f7b10c849fa7915cebb37b7edb upstream.

    The new function mp_register_ioapic_irq() is a subset of the code in
    mp_override_legacy_irq().

    Replace the code duplication by invoking mp_register_ioapic_irq() from
    mp_override_legacy_irq().

    Signed-off-by: Vikas C Sajjan
    Signed-off-by: Thomas Gleixner
    Reviewed-by: Thomas Gleixner
    Acked-by: Rafael J. Wysocki
    Cc: linux-pm@vger.kernel.org
    Cc: kkamagui@gmail.com
    Cc: linux-acpi@vger.kernel.org
    Link: https://lkml.kernel.org/r/1510848825-21965-3-git-send-email-vikas.cha.sajjan@hpe.com
    Cc: Jean Delvare
    Signed-off-by: Greg Kroah-Hartman

    Vikas C Sajjan
     
  • commit 898dfe4687f460ba337a01c11549f87269a13fa2 upstream.

    The aloop driver tries to update the hw constraints of the connected
    target on the cable of the opened PCM substream. This is done by
    adding the extra hw constraints rules referring to the substream
    runtime->hw fields, while the other substream may update the runtime
    hw of another side on the fly.

    This is, however, racy and may result in the inconsistent values when
    both PCM streams perform the prepare concurrently. One of the reason
    is that it overwrites the other's runtime->hw field; which is not only
    racy but also broken when it's called before the open of another side
    finishes. And, since the reference to runtime->hw isn't protected,
    the concurrent write may give the partial value update and become
    inconsistent.

    This patch is an attempt to fix and clean up:
    - The prepare doesn't change the runtime->hw of other side any longer,
    but only update the cable->hw that is referred commonly.
    - The extra rules refer to the loopback_pcm object instead of the
    runtime->hw. The actual hw is deduced from cable->hw.
    - The extra rules take the cable_lock to protect against the race.

    Fixes: b1c73fc8e697 ("ALSA: snd-aloop: Fix hw_params restrictions and checking")
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit b088b53e20c7d09b5ab84c5688e609f478e5c417 upstream.

    The extra hw constraint rule for the formats the aloop driver
    introduced has a slight flaw, where it doesn't return a positive value
    when the mask got changed. It came from the fact that it's basically
    a copy&paste from snd_hw_constraint_mask64(). The original code is
    supposed to be a single-shot and it modifies the mask bits only once
    and never after, while what we need for aloop is the dynamic hw rule
    that limits the mask bits.

    This difference results in the inconsistent state, as the hw_refine
    doesn't apply the dependencies fully. The worse and surprisingly
    result is that it causes a crash in OSS emulation when multiple
    full-duplex reads/writes are performed concurrently (I leave why it
    triggers Oops to readers as a homework).

    For fixing this, replace a few open-codes with the standard
    snd_mask_*() macros.

    Reported-by: syzbot+3902b5220e8ca27889ca@syzkaller.appspotmail.com
    Fixes: b1c73fc8e697 ("ALSA: snd-aloop: Fix hw_params restrictions and checking")
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit 9685347aa0a5c2869058ca6ab79fd8e93084a67f upstream.

    The aloop runtime object and its assignment in the cable are left even
    when opening a substream fails. This doesn't mean any memory leak,
    but it still keeps the invalid pointer that may be referred by the
    another side of the cable spontaneously, which is a potential Oops
    cause.

    Clean up the cable assignment and the empty cable upon the error path
    properly.

    Fixes: 597603d615d2 ("ALSA: introduce the snd-aloop module for the PCM loopback")
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit 900498a34a3ac9c611e9b425094c8106bdd7dc1c upstream.

    PCM OSS read/write loops keep taking the mutex lock for the whole
    read/write, and this might take very long when the exceptionally high
    amount of data is given. Also, since it invokes with mutex_lock(),
    the concurrent read/write becomes unbreakable.

    This patch tries to address these issues by replacing mutex_lock()
    with mutex_lock_interruptible(), and also splits / re-takes the lock
    at each read/write period chunk, so that it can switch the context
    more finely if requested.

    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit 29159a4ed7044c52e3e2cf1a9fb55cec4745c60b upstream.

    The loops for read and write in PCM OSS emulation have no proper check
    of pending signals, and they keep processing even after user tries to
    break. This results in a very long delay, often seen as RCU stall
    when a huge unprocessed bytes remain queued. The bug could be easily
    triggered by syzkaller.

    As a simple workaround, this patch adds the proper check of pending
    signals and aborts the loop appropriately.

    Reported-by: syzbot+993cb4cfcbbff3947c21@syzkaller.appspotmail.com
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit 6708913750344a900f2e73bfe4a4d6dbbce4fe8d upstream.

    In the OSS emulation plugin builder where the frame size is parsed in
    the plugin chain, some places miss the possible errors returned from
    the plugin src_ or dst_frames callback.

    This patch papers over such places.

    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit fe08f34d066f4404934a509b6806db1a4f700c86 upstream.

    syzkaller triggered kernel warnings through PCM OSS emulation at
    closing a stream:
    WARNING: CPU: 0 PID: 3502 at sound/core/pcm_lib.c:1635
    snd_pcm_hw_param_first+0x289/0x690 sound/core/pcm_lib.c:1635
    Call Trace:
    ....
    snd_pcm_hw_param_near.constprop.27+0x78d/0x9a0 sound/core/oss/pcm_oss.c:457
    snd_pcm_oss_change_params+0x17d3/0x3720 sound/core/oss/pcm_oss.c:969
    snd_pcm_oss_make_ready+0xaa/0x130 sound/core/oss/pcm_oss.c:1128
    snd_pcm_oss_sync+0x257/0x830 sound/core/oss/pcm_oss.c:1638
    snd_pcm_oss_release+0x20b/0x280 sound/core/oss/pcm_oss.c:2431
    __fput+0x327/0x7e0 fs/file_table.c:210
    ....

    This happens while it tries to open and set up the aloop device
    concurrently. The warning above (invoked from snd_BUG_ON() macro) is
    to detect the unexpected logical error where snd_pcm_hw_refine() call
    shouldn't fail. The theory is true for the case where the hw_params
    config rules are static. But for an aloop device, the hw_params rule
    condition does vary dynamically depending on the connected target;
    when another device is opened and changes the parameters, the device
    connected in another side is also affected, and it caused the error
    from snd_pcm_hw_refine().

    That is, the simplest "solution" for this is to remove the incorrect
    assumption of static rules, and treat such an error as a normal error
    path. As there are a couple of other places using snd_BUG_ON()
    incorrectly, this patch removes these spurious snd_BUG_ON() calls.

    Reported-by: syzbot+6f11c7e2a1b91d466432@syzkaller.appspotmail.com
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit 252714155f04c5d16989cb3aadb85fd1b5772f99 upstream.

    Platforms which support only IOAPIC mode, pass the SCI information above
    the legacy space (0-15) via the FADT mechanism and not via MADT.

    In such cases mp_override_legacy_irq() which is invoked from
    acpi_sci_ioapic_setup() to register SCI interrupts fails for interrupts
    greater equal 16, since it is meant to handle only the legacy space and
    emits error "Invalid bus_irq %u for legacy override".

    Add a new function to handle SCI interrupts >= 16 and invoke it
    conditionally in acpi_sci_ioapic_setup().

    The code duplication due to this new function will be cleaned up in a
    separate patch.

    Co-developed-by: Sunil V L
    Signed-off-by: Vikas C Sajjan
    Signed-off-by: Sunil V L
    Signed-off-by: Thomas Gleixner
    Tested-by: Abdul Lateef Attar
    Acked-by: Rafael J. Wysocki
    Cc: linux-pm@vger.kernel.org
    Cc: kkamagui@gmail.com
    Cc: linux-acpi@vger.kernel.org
    Link: https://lkml.kernel.org/r/1510848825-21965-2-git-send-email-vikas.cha.sajjan@hpe.com
    Cc: Jean Delvare
    Signed-off-by: Greg Kroah-Hartman

    Vikas C Sajjan
     
  • commit 98b8e4e5c17bf87c1b18ed929472051dab39878c upstream.

    Calling acpi_wmi_init() at the subsys_initcall() level causes ordering
    issues to appear on some systems and they are difficult to reproduce,
    because there is no guaranteed ordering between subsys_initcall()
    calls, so they may occur in different orders on different systems.

    In particular, commit 86d9f48534e8 (mm/slab: fix kmemcg cache
    creation delayed issue) exposed one of these issues where genl_init()
    and acpi_wmi_init() are both called at the same initcall level, but
    the former must run before the latter so as to avoid a NULL pointer
    dereference.

    For this reason, move the acpi_wmi_init() invocation to the
    initcall_sync level which should still be early enough for things
    to work correctly in the WMI land.

    Link: https://marc.info/?t=151274596700002&r=1&w=2
    Reported-by: Jonathan McDowell
    Reported-by: Joonsoo Kim
    Tested-by: Jonathan McDowell
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Darren Hart (VMware)
    Signed-off-by: Greg Kroah-Hartman

    Rafael J. Wysocki
     
  • commit 0cb5b30698fdc8f6b4646012e3acb4ddce430788 upstream.

    Guest GPR values are live in the hardware GPRs at VM-exit. Do not
    leave any guest values in hardware GPRs after the guest GPR values are
    saved to the vcpu_vmx structure.

    This is a partial mitigation for CVE 2017-5715 and CVE 2017-5753.
    Specifically, it defeats the Project Zero PoC for CVE 2017-5715.

    Suggested-by: Eric Northup
    Signed-off-by: Jim Mattson
    Reviewed-by: Eric Northup
    Reviewed-by: Benjamin Serebrin
    Reviewed-by: Andrew Honig
    [Paolo: Add AMD bits, Signed-off-by: Tom Lendacky ]
    Signed-off-by: Paolo Bonzini
    Signed-off-by: Greg Kroah-Hartman

    Jim Mattson
     
  • commit c8c5a3a24d395b14447a9a89d61586a913840a3b upstream.

    Complement commit c23b3d1a5311 ("MIPS: ptrace: Change GP regset to use
    correct core dump register layout") and also reject outsized
    PTRACE_SETREGSET requests to the NT_PRFPREG regset, like with the
    NT_PRSTATUS regset.

    Signed-off-by: Maciej W. Rozycki
    Fixes: c23b3d1a5311 ("MIPS: ptrace: Change GP regset to use correct core dump register layout")
    Cc: James Hogan
    Cc: Paul Burton
    Cc: Alex Smith
    Cc: Dave Martin
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/17930/
    Signed-off-by: Ralf Baechle
    Signed-off-by: Greg Kroah-Hartman

    Maciej W. Rozycki
     
  • commit 006501e039eec411842bb3150c41358867d320c2 upstream.

    Complement commit d614fd58a283 ("mips/ptrace: Preserve previous
    registers for short regset write") and like with the PTRACE_GETREGSET
    ptrace(2) request also apply a BUILD_BUG_ON check for the size of the
    `elf_fpreg_t' type in the PTRACE_SETREGSET request handler.

    Signed-off-by: Maciej W. Rozycki
    Fixes: d614fd58a283 ("mips/ptrace: Preserve previous registers for short regset write")
    Cc: James Hogan
    Cc: Paul Burton
    Cc: Alex Smith
    Cc: Dave Martin
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/17929/
    Signed-off-by: Ralf Baechle
    Signed-off-by: Greg Kroah-Hartman

    Maciej W. Rozycki