commit 2df16141a2c4ab648b5eceb6cd1ca8c72061c51d
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Jun 11 12:19:23 2019 +0200

    Linux 5.1.9

commit 24741972810afa6e0682067fec022189d1d6728e
Author: David Ahern <dsahern@gmail.com>
Date:   Sun May 5 11:16:20 2019 -0700

    ipv4: Define __ipv4_neigh_lookup_noref when CONFIG_INET is disabled
    
    commit 9b3040a6aafd7898ece7fc7efcbca71e42aa8069 upstream.
    
    Define __ipv4_neigh_lookup_noref to return NULL when CONFIG_INET is disabled.
    
    Fixes: 4b2a2bfeb3f0 ("neighbor: Call __ipv4_neigh_lookup_noref in neigh_xmit")
    Reported-by: kbuild test robot <lkp@intel.com>
    Signed-off-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b6dc42e5d08fb8ed936f562691313da1991b5927
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Wed Apr 17 10:58:53 2019 +0200

    TTY: serial_core, add ->install
    
    commit 4cdd17ba1dff20ffc99fdbd2e6f0201fc7fe67df upstream.
    
    We need to compute the uart state only on the first open. This is
    usually what is done in the ->install hook. serial_core used to do this
    in ->open on every open. So move it to ->install.
    
    As a side effect, it ensures the state is set properly in the window
    after tty_init_dev is called, but before uart_open. This fixes a bunch
    of races between tty_open and flush_to_ldisc we were dealing with
    recently.
    
    One of such bugs was attempted to fix in commit fedb5760648a (serial:
    fix race between flush_to_ldisc and tty_open), but it only took care of
    a couple of functions (uart_start and uart_unthrottle).  I was able to
    reproduce the crash on a SLE system, but in uart_write_room which is
    also called from flush_to_ldisc via process_echoes. I was *unable* to
    reproduce the bug locally. It is due to having this patch in my queue
    since 2012!
    
     general protection fault: 0000 [#1] SMP KASAN PTI
     CPU: 1 PID: 5 Comm: kworker/u4:0 Tainted: G             L 4.12.14-396-default #1 SLE15-SP1 (unreleased)
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-0-ga698c89-prebuilt.qemu.org 04/01/2014
     Workqueue: events_unbound flush_to_ldisc
     task: ffff8800427d8040 task.stack: ffff8800427f0000
     RIP: 0010:uart_write_room+0xc4/0x590
     RSP: 0018:ffff8800427f7088 EFLAGS: 00010202
     RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000000000000
     RDX: 000000000000002f RSI: 00000000000000ee RDI: ffff88003888bd90
     RBP: ffffffffb9545850 R08: 0000000000000001 R09: 0000000000000400
     R10: ffff8800427d825c R11: 000000000000006e R12: 1ffff100084fee12
     R13: ffffc900004c5000 R14: ffff88003888bb28 R15: 0000000000000178
     FS:  0000000000000000(0000) GS:ffff880043300000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000561da0794148 CR3: 000000000ebf4000 CR4: 00000000000006e0
     Call Trace:
      tty_write_room+0x6d/0xc0
      __process_echoes+0x55/0x870
      n_tty_receive_buf_common+0x105e/0x26d0
      tty_ldisc_receive_buf+0xb7/0x1c0
      tty_port_default_receive_buf+0x107/0x180
      flush_to_ldisc+0x35d/0x5c0
    ...
    
    0 in rbx means tty->driver_data is NULL in uart_write_room. 0x178 is
    tried to be dereferenced (0x178 >> 3 is 0x2f in rdx) at
    uart_write_room+0xc4. 0x178 is exactly (struct uart_state *)NULL->refcount
    used in uart_port_lock from uart_write_room.
    
    So revert the upstream commit here as my local patch should fix the
    whole family.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: Li RongQing <lirongqing@baidu.com>
    Cc: Wang Li <wangli39@baidu.com>
    Cc: Zhang Yu <zhangyu31@baidu.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fda8c1c5a05a1c04e78e1a38ff777941e02b1b97
Author: Helen Koike <helen.koike@collabora.com>
Date:   Mon Jun 3 13:56:07 2019 -0300

    drm/amd: fix fb references in async update
    
    commit 332af874db929f92931727bfe191b2c666438c81 upstream.
    
    Async update callbacks are expected to set the old_fb in the new_state
    so prepare/cleanup framebuffers are balanced.
    
    Calling drm_atomic_set_fb_for_plane() (which gets a reference of the new
    fb and put the old fb) is not required, as it's taken care by
    drm_mode_cursor_universal() when calling drm_atomic_helper_update_plane().
    
    Cc: <stable@vger.kernel.org> # v4.20+
    Fixes: 674e78acae0d ("drm/amd/display: Add fast path for cursor plane updates")
    Suggested-by: Boris Brezillon <boris.brezillon@collabora.com>
    Signed-off-by: Helen Koike <helen.koike@collabora.com>
    Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190603165610.24614-3-helen.koike@collabora.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f8bf917c2a081338c658dcec12058cbf02a7913
Author: Tina Zhang <tina.zhang@intel.com>
Date:   Thu May 23 06:18:36 2019 +0800

    drm/i915/gvt: Initialize intel_gvt_gtt_entry in stack
    
    commit 387a4c2b55291b37e245c840813bd8a8bd06ed49 upstream.
    
    Stack struct intel_gvt_gtt_entry value needs to be initialized before
    being used, as the fields may contain garbage values.
    
    W/o this patch, set_ggtt_entry prints:
    -------------------------------------
    274.046840: set_ggtt_entry: vgpu1:set ggtt entry 0x9bed8000ffffe900
    274.046846: set_ggtt_entry: vgpu1:set ggtt entry 0xe55df001
    274.046852: set_ggtt_entry: vgpu1:set ggtt entry 0x9bed8000ffffe900
    
    0x9bed8000 is the stack grabage.
    
    W/ this patch, set_ggtt_entry prints:
    ------------------------------------
    274.046840: set_ggtt_entry: vgpu1:set ggtt entry 0xffffe900
    274.046846: set_ggtt_entry: vgpu1:set ggtt entry 0xe55df001
    274.046852: set_ggtt_entry: vgpu1:set ggtt entry 0xffffe900
    
    v2:
    - Initialize during declaration. (Zhenyu)
    
    Fixes: 7598e8700e9a ("drm/i915/gvt: Missed to cancel dma map for ggtt entries")
    Cc: stable@vger.kernel.org # v4.20+
    Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
    Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com>
    Signed-off-by: Tina Zhang <tina.zhang@intel.com>
    Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27e8c560a3cab7fd96ca6724e34186eb904ca980
Author: Helen Koike <helen.koike@collabora.com>
Date:   Mon Jun 3 13:56:10 2019 -0300

    drm: don't block fb changes for async plane updates
    
    commit 89a4aac0ab0e6f5eea10d7bf4869dd15c3de2cd4 upstream.
    
    In the case of a normal sync update, the preparation of framebuffers (be
    it calling drm_atomic_helper_prepare_planes() or doing setups with
    drm_framebuffer_get()) are performed in the new_state and the respective
    cleanups are performed in the old_state.
    
    In the case of async updates, the preparation is also done in the
    new_state but the cleanups are done in the new_state (because updates
    are performed in place, i.e. in the current state).
    
    The current code blocks async udpates when the fb is changed, turning
    async updates into sync updates, slowing down cursor updates and
    introducing regressions in igt tests with errors of type:
    
    "CRITICAL: completed 97 cursor updated in a period of 30 flips, we
    expect to complete approximately 15360 updates, with the threshold set
    at 7680"
    
    Fb changes in async updates were prevented to avoid the following scenario:
    
    - Async update, oldfb = NULL, newfb = fb1, prepare fb1, cleanup fb1
    - Async update, oldfb = fb1, newfb = fb2, prepare fb2, cleanup fb2
    - Non-async commit, oldfb = fb2, newfb = fb1, prepare fb1, cleanup fb2 (wrong)
    Where we have a single call to prepare fb2 but double cleanup call to fb2.
    
    To solve the above problems, instead of blocking async fb changes, we
    place the old framebuffer in the new_state object, so when the code
    performs cleanups in the new_state it will cleanup the old_fb and we
    will have the following scenario instead:
    
    - Async update, oldfb = NULL, newfb = fb1, prepare fb1, no cleanup
    - Async update, oldfb = fb1, newfb = fb2, prepare fb2, cleanup fb1
    - Non-async commit, oldfb = fb2, newfb = fb1, prepare fb1, cleanup fb2
    
    Where calls to prepare/cleanup are balanced.
    
    Cc: <stable@vger.kernel.org> # v4.14+
    Fixes: 25dc194b34dd ("drm: Block fb changes for async plane updates")
    Suggested-by: Boris Brezillon <boris.brezillon@collabora.com>
    Signed-off-by: Helen Koike <helen.koike@collabora.com>
    Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
    Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190603165610.24614-6-helen.koike@collabora.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 151fbcb9cd5d6fb454db08ced41b25f794f3e5bf
Author: Jonathan Corbet <corbet@lwn.net>
Date:   Thu May 23 10:06:46 2019 -0600

    drm/i915: Maintain consistent documentation subsection ordering
    
    commit 551bd3368a7b3cfef01edaade8970948d178d40a upstream.
    
    With Sphinx 2.0 (or prior versions with the deprecation warnings fixed) the
    docs build fails with:
    
      Documentation/gpu/i915.rst:403: WARNING: Title level inconsistent:
    
      Global GTT Fence Handling
      ~~~~~~~~~~~~~~~~~~~~~~~~~
    
      reST markup error:
      Documentation/gpu/i915.rst:403: (SEVERE/4) Title level inconsistent:
    
    I "fixed" it by changing the subsections in i915.rst, but that didn't seem
    like the correct change.  It turns out that a couple of i915 files create
    their own subsections in kerneldoc comments using apostrophes as the
    heading marker:
    
      Layout
      ''''''
    
    That breaks the normal subsection marker ordering, and newer Sphinx is
    rather more strict about enforcing that ordering.  So fix the offending
    comments to make Sphinx happy.
    
    (This is unfortunate, in that kerneldoc comments shouldn't need to be aware
    of where they might be included in the heading hierarchy, but I don't see
    a better way around it).
    
    Cc: stable@vger.kernel.org  # v4.14+
    Acked-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Jonathan Corbet <corbet@lwn.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67150514e51f55c7540dc9ac1214439bf620e7a5
Author: Weinan <weinan.z.li@intel.com>
Date:   Fri May 10 15:57:20 2019 +0800

    drm/i915/gvt: emit init breadcrumb for gvt request
    
    commit a8c2d5ab9e71be3f9431c47bd45329a36e1fc650 upstream.
    
    "To track whether a request has started on HW, we can emit a breadcrumb at
    the beginning of the request and check its timeline's HWSP to see if the
    breadcrumb has advanced past the start of this request." It means all the
    request which timeline's has_init_breadcrumb is true, then the
    emit_init_breadcrumb process must have before emitting the real commands,
    otherwise, the scheduler might get a wrong state of this request during
    reset. If the request is exactly the guilty one, the scheduler won't
    terminate it with the wrong state. To avoid this, do emit_init_breadcrumb
    for all the requests from gvt.
    
    v2: cc to stable kernel
    
    Fixes: 8547444137ec ("drm/i915: Identify active requests")
    Cc: stable@vger.kernel.org
    Acked-by: Zhenyu Wang <zhenyuw@linux.intel.com>
    Signed-off-by: Weinan <weinan.z.li@intel.com>
    Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ab4dde306ec677b01da8e71aa000a1d65b47004
Author: Daniel Drake <drake@endlessm.com>
Date:   Tue Apr 23 17:28:10 2019 +0800

    drm/i915/fbc: disable framebuffer compression on GeminiLake
    
    commit 396dd8143bdd94bd1c358a228a631c8c895a1126 upstream.
    
    On many (all?) the Gemini Lake systems we work with, there is frequent
    momentary graphical corruption at the top of the screen, and it seems
    that disabling framebuffer compression can avoid this.
    
    The ticket was reported 6 months ago and has already affected a
    multitude of users, without any real progress being made. So, lets
    disable framebuffer compression on GeminiLake until a solution is found.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108085
    Fixes: fd7d6c5c8f3e ("drm/i915: enable FBC on gen9+ too")
    Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: <stable@vger.kernel.org> # v4.11+
    Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
    Signed-off-by: Daniel Drake <drake@endlessm.com>
    Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190423092810.28359-1-jian-hong@endlessm.com
    (cherry picked from commit 1d25724b41fad7eeb2c3058a5c8190d6ece73e08)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34d07ce3d6a120056e4763ae9a3db0d769ab7c63
Author: Louis Li <Ching-shih.Li@amd.com>
Date:   Sat May 25 06:39:47 2019 +0800

    drm/amdgpu: fix ring test failure issue during s3 in vce 3.0 (V2)
    
    commit ce0e22f5d886d1b56c7ab4347c45b9ac5fcc058d upstream.
    
    [What]
    vce ring test fails consistently during resume in s3 cycle, due to
    mismatch read & write pointers.
    On debug/analysis its found that rptr to be compared is not being
    correctly updated/read, which leads to this failure.
    Below is the failure signature:
            [drm:amdgpu_vce_ring_test_ring] *ERROR* amdgpu: ring 12 test failed
            [drm:amdgpu_device_ip_resume_phase2] *ERROR* resume of IP block <vce_v3_0> failed -110
            [drm:amdgpu_device_resume] *ERROR* amdgpu_device_ip_resume failed (-110).
    
    [How]
    fetch rptr appropriately, meaning move its read location further down
    in the code flow.
    With this patch applied the s3 failure is no more seen for >5k s3 cycles,
    which otherwise is pretty consistent.
    
    V2: remove reduntant fetch of rptr
    
    Signed-off-by: Louis Li <Ching-shih.Li@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22d546a5cc1bf4c03031d584d637ce6236ae8334
Author: Harry Wentland <harry.wentland@amd.com>
Date:   Tue May 14 09:05:37 2019 -0400

    drm/amd/display: Add ASICREV_IS_PICASSO
    
    commit ada637e70f96862ff5ba20a169506b58cf567db9 upstream.
    
    [WHY]
    We only want to load DMCU FW on Picasso and Raven 2, not on Raven 1.
    
    Signed-off-by: Harry Wentland <harry.wentland@amd.com>
    Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f3b80306996f6f32c2b8a90f67dc207f65661281
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Fri May 17 09:21:13 2019 -0500

    drm/amdgpu/soc15: skip reset on init
    
    commit 5887a59961e2295c5b02f39dbc0ecf9212709b7b upstream.
    
    Not necessary on soc15 and breaks driver reload on server cards.
    
    Acked-by: Amber Lin <Amber.Lin@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5b4ed2d2f663ca47fb8a7adb99227d51c62dcdf
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Fri Mar 1 14:03:47 2019 +0000

    drm/i915: Fix I915_EXEC_RING_MASK
    
    commit d90c06d57027203f73021bb7ddb30b800d65c636 upstream.
    
    This was supposed to be a mask of all known rings, but it is being used
    by execbuffer to filter out invalid rings, and so is instead mapping high
    unused values onto valid rings. Instead of a mask of all known rings,
    we need it to be the mask of all possible rings.
    
    Fixes: 549f7365820a ("drm/i915: Enable SandyBridge blitter ring")
    Fixes: de1add360522 ("drm/i915: Decouple execbuf uAPI from internal implementation")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: <stable@vger.kernel.org> # v4.6+
    Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190301140404.26690-21-chris@chris-wilson.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f9d5b81e03202797d3e5c41de5a047d30278f74
Author: Aaron Liu <aaron.liu@amd.com>
Date:   Tue Apr 30 09:47:25 2019 +0800

    drm/amdgpu: remove ATPX_DGPU_REQ_POWER_FOR_DISPLAYS check when hotplug-in
    
    commit bdb1ccb080dafc1b4224873a5b759ff85a7d1c10 upstream.
    
    In amdgpu_atif_handler, when hotplug event received, remove
    ATPX_DGPU_REQ_POWER_FOR_DISPLAYS check. This bit's check will cause missing
    system resume.
    
    Signed-off-by: Aaron Liu <aaron.liu@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e65cf94af7711c03ba10bdf811e8390569b030d2
Author: Christian König <christian.koenig@amd.com>
Date:   Mon May 6 19:57:52 2019 +0200

    drm/radeon: prefer lower reference dividers
    
    commit 2e26ccb119bde03584be53406bbd22e711b0d6e6 upstream.
    
    Instead of the closest reference divider prefer the lowest,
    this fixes flickering issues on HP Compaq nx9420.
    
    Bugs: https://bugs.freedesktop.org/show_bug.cgi?id=108514
    Suggested-by: Paul Dufresne <dufresnep@gmail.com>
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad4cfd494bb6efb3474b4adc4289b22ef2122af2
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed May 8 21:45:06 2019 -0500

    drm/amdgpu/psp: move psp version specific function pointers to early_init
    
    commit 9d6fea5744d6798353f37ac42a8a653a2607ca69 upstream.
    
    In case we need to use them for GPU reset prior initializing the
    asic.  Fixes a crash if the driver attempts to reset the GPU at driver
    load time.
    
    Acked-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 440a11b95637855e8a275850886a867189d23dce
Author: Mario Kleiner <mario.kleiner.de@gmail.com>
Date:   Thu Apr 18 08:01:57 2019 +0200

    drm: Fix timestamp docs for variable refresh properties.
    
    commit 0cbd0adc4429930567083d18cc8c0fbc5f635d96 upstream.
    
    As discussed with Nicholas and Daniel Vetter (patchwork
    link to discussion below), the VRR timestamping behaviour
    produced utterly useless and bogus vblank/pageflip
    timestamps. We have found a way to fix this and provide
    sane behaviour.
    
    As of Linux 5.2, the amdgpu driver will be able to
    provide exactly the same vblank / pageflip timestamp
    semantic in variable refresh rate mode as in standard
    fixed refresh rate mode. This is achieved by deferring
    core vblank handling (drm_crtc_handle_vblank()) until
    the end of front porch, and also defer the sending of
    pageflip completion events until end of front porch,
    when we can safely compute correct pageflip/vblank
    timestamps.
    
    The same approach will be possible for other VRR
    capable kms drivers, so we can actually have sane
    and useful timestamps in VRR mode.
    
    This patch removes the section of the docs that
    describes the broken timestamp behaviour present
    in Linux 5.0/5.1.
    
    Fixes: ab7a664f7a2d ("drm: Document variable refresh properties")
    Link: https://patchwork.freedesktop.org/patch/285333/
    Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190418060157.18968-1-mario.kleiner.de@gmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7a8b913459d8cdbf5b760b029969a9dbe2daf43
Author: Ryan Pavlik <ryan.pavlik@collabora.com>
Date:   Mon Dec 3 10:46:44 2018 -0600

    drm: add non-desktop quirks to Sensics and OSVR headsets.
    
    commit 29054230f3e11ea818eccfa7bb4e4b3e89544164 upstream.
    
    Add two EDID vendor/product pairs used across a variety of
    Sensics products, as well as the OSVR HDK and HDK 2.
    
    Signed-off-by: Ryan Pavlik <ryan.pavlik@collabora.com>
    Signed-off-by: Daniel Stone <daniels@collabora.com>
    Reviewed-by: Daniel Stone <daniels@collabora.com>
    Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181203164644.13974-1-ryan.pavlik@collabora.com
    Cc: <stable@vger.kernel.org> # v4.15+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e07d637497788971018d9e9e5a184940b1ade0f
Author: Dave Airlie <airlied@redhat.com>
Date:   Thu Apr 18 16:45:15 2019 +1000

    drm/nouveau: add kconfig option to turn off nouveau legacy contexts. (v3)
    
    commit b30a43ac7132cdda833ac4b13dd1ebd35ace14b7 upstream.
    
    There was a nouveau DDX that relied on legacy context ioctls to work,
    but we fixed it years ago, give distros that have a modern DDX the
    option to break the uAPI and close the mess of holes that legacy
    context support is.
    
    Full context of the story:
    
    commit 0e975980d435d58df2d430d688b8c18778b42218
    Author: Peter Antoine <peter.antoine@intel.com>
    Date:   Tue Jun 23 08:18:49 2015 +0100
    
        drm: Turn off Legacy Context Functions
    
        The context functions are not used by the i915 driver and should not
        be used by modeset drivers. These driver functions contain several bugs
        and security holes. This change makes these functions optional can be
        turned on by a setting, they are turned off by default for modeset
        driver with the exception of the nouvea driver that may require them with
        an old version of libdrm.
    
        The previous attempt was
    
        commit 7c510133d93dd6f15ca040733ba7b2891ed61fd1
        Author: Daniel Vetter <daniel.vetter@ffwll.ch>
        Date:   Thu Aug 8 15:41:21 2013 +0200
    
            drm: mark context support as a legacy subsystem
    
        but this had to be reverted
    
        commit c21eb21cb50d58e7cbdcb8b9e7ff68b85cfa5095
        Author: Dave Airlie <airlied@redhat.com>
        Date:   Fri Sep 20 08:32:59 2013 +1000
    
            Revert "drm: mark context support as a legacy subsystem"
    
        v2: remove returns from void function, and formatting (Daniel Vetter)
    
        v3:
        - s/Nova/nouveau/ in the commit message, and add references to the
          previous attempts
        - drop the part touching the drm hw lock, that should be a separate
          patch.
    
        Signed-off-by: Peter Antoine <peter.antoine@intel.com> (v2)
        Cc: Peter Antoine <peter.antoine@intel.com> (v2)
        Reviewed-by: Peter Antoine <peter.antoine@intel.com>
        Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    
    v2: move DRM_VM dependency into legacy config.
    v3: fix missing dep (kbuild robot)
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a253d975225ea919966c63d46c991d82b939858d
Author: Andres Rodriguez <andresx7@gmail.com>
Date:   Thu May 2 15:31:57 2019 -0400

    drm: add non-desktop quirk for Valve HMDs
    
    commit 30d62d4453e49f85dd17b2ba60bbb68b6593dba0 upstream.
    
    Add vendor/product pairs for the Valve Index HMDs.
    
    Signed-off-by: Andres Rodriguez <andresx7@gmail.com>
    Cc: Dave Airlie <airlied@redhat.com>
    Cc: <stable@vger.kernel.org> # v4.15
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190502193157.15692-1-andresx7@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8cca2ec2b6a086d6f8e41e46574d7fe1b0f82c73
Author: Helen Koike <helen.koike@collabora.com>
Date:   Mon Jun 3 13:56:08 2019 -0300

    drm/msm: fix fb references in async update
    
    commit 474d952b4870cfbdc55d3498f4d498775fe77e81 upstream.
    
    Async update callbacks are expected to set the old_fb in the new_state
    so prepare/cleanup framebuffers are balanced.
    
    Cc: <stable@vger.kernel.org> # v4.14+
    Fixes: 224a4c970987 ("drm/msm: update cursors asynchronously through atomic")
    Suggested-by: Boris Brezillon <boris.brezillon@collabora.com>
    Signed-off-by: Helen Koike <helen.koike@collabora.com>
    Acked-by: Rob Clark <robdclark@gmail.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190603165610.24614-4-helen.koike@collabora.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59b3172cf2c8915785abc76ee0d7768be1d3fb31
Author: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Date:   Tue Apr 16 13:46:07 2019 +0200

    drm/gma500/cdv: Check vbt config bits when detecting lvds panels
    
    commit 7c420636860a719049fae9403e2c87804f53bdde upstream.
    
    Some machines have an lvds child device in vbt even though a panel is
    not attached. To make detection more reliable we now also check the lvds
    config bits available in the vbt.
    
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1665766
    Cc: stable@vger.kernel.org
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190416114607.1072-1-patrik.r.jakobsson@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1438cd3bc3bf91f01a4641b8cb7173188adaeabc
Author: Helen Koike <helen.koike@collabora.com>
Date:   Mon Jun 3 13:56:09 2019 -0300

    drm/vc4: fix fb references in async update
    
    commit c16b85559dcfb5a348cc085a7b4c75ed49b05e2c upstream.
    
    Async update callbacks are expected to set the old_fb in the new_state
    so prepare/cleanup framebuffers are balanced.
    
    Calling drm_atomic_set_fb_for_plane() (which gets a reference of the new
    fb and put the old fb) is not required, as it's taken care by
    drm_mode_cursor_universal() when calling drm_atomic_helper_update_plane().
    
    Cc: <stable@vger.kernel.org> # v4.19+
    Fixes: 539c320bfa97 ("drm/vc4: update cursors asynchronously through atomic")
    Suggested-by: Boris Brezillon <boris.brezillon@collabora.com>
    Signed-off-by: Helen Koike <helen.koike@collabora.com>
    Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190603165610.24614-5-helen.koike@collabora.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c8c4b3c81ac11ed585328e2092e08c4d1eafa36
Author: Helen Koike <helen.koike@collabora.com>
Date:   Mon Jun 3 13:56:06 2019 -0300

    drm/rockchip: fix fb references in async update
    
    commit d985a3533274ef7dd1ccb25cb05a72259b25268f upstream.
    
    In the case of async update, modifications are done in place, i.e. in the
    current plane state, so the new_state is prepared and the new_state is
    cleaned up (instead of the old_state, unlike what happens in a
    normal sync update).
    To cleanup the old_fb properly, it needs to be placed in the new_state
    in the end of async_update, so cleanup call will unreference the old_fb
    correctly.
    
    Also, the previous code had a:
    
            plane_state = plane->funcs->atomic_duplicate_state(plane);
            ...
            swap(plane_state, plane->state);
    
            if (plane->state->fb && plane->state->fb != new_state->fb) {
            ...
            }
    
    Which was wrong, as the fb were just assigned to be equal, so this if
    statement nevers evaluates to true.
    
    Another details is that the function drm_crtc_vblank_get() can only be
    called when vop->is_enabled is true, otherwise it has no effect and
    trows a WARN_ON().
    
    Calling drm_atomic_set_fb_for_plane() (which get a referent of the new
    fb and pus the old fb) is not required, as it is taken care by
    drm_mode_cursor_universal() when calling
    drm_atomic_helper_update_plane().
    
    Fixes: 15609559a834 ("drm/rockchip: update cursors asynchronously through atomic.")
    Cc: <stable@vger.kernel.org> # v4.20+
    Signed-off-by: Helen Koike <helen.koike@collabora.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190603165610.24614-2-helen.koike@collabora.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f2d20a8d4ca262eb0ebae653e359310d6be0c65
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed May 15 12:33:22 2019 +0300

    test_firmware: Use correct snprintf() limit
    
    commit bd17cc5a20ae9aaa3ed775f360b75ff93cd66a1d upstream.
    
    The limit here is supposed to be how much of the page is left, but it's
    just using PAGE_SIZE as the limit.
    
    The other thing to remember is that snprintf() returns the number of
    bytes which would have been copied if we had had enough room.  So that
    means that if we run out of space then this code would end up passing a
    negative value as the limit and the kernel would print an error message.
    I have change the code to use scnprintf() which returns the number of
    bytes that were successfully printed (not counting the NUL terminator).
    
    Fixes: c92316bf8e94 ("test_firmware: add batched firmware tests")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06666ce18c0febb74b8503730e5b2a236c178c5a
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue May 7 11:36:34 2019 +0300

    genwqe: Prevent an integer overflow in the ioctl
    
    commit 110080cea0d0e4dfdb0b536e7f8a5633ead6a781 upstream.
    
    There are a couple potential integer overflows here.
    
            round_up(m->size + (m->addr & ~PAGE_MASK), PAGE_SIZE);
    
    The first thing is that the "m->size + (...)" addition could overflow,
    and the second is that round_up() overflows to zero if the result is
    within PAGE_SIZE of the type max.
    
    In this code, the "m->size" variable is an u64 but we're saving the
    result in "map_size" which is an unsigned long and genwqe_user_vmap()
    takes an unsigned long as well.  So I have used ULONG_MAX as the upper
    bound.  From a practical perspective unsigned long is fine/better than
    trying to change all the types to u64.
    
    Fixes: eaf4722d4645 ("GenWQE Character device and DDCB queue")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bfacbe9723e463f617811e29a79c8e91e7cd54d3
Author: Paul Burton <paul.burton@mips.com>
Date:   Tue May 28 17:21:26 2019 +0000

    MIPS: pistachio: Build uImage.gz by default
    
    commit e4f2d1af7163becb181419af9dece9206001e0a6 upstream.
    
    The pistachio platform uses the U-Boot bootloader & generally boots a
    kernel in the uImage format. As such it's useful to build one when
    building the kernel, but to do so currently requires the user to
    manually specify a uImage target on the make command line.
    
    Make uImage.gz the pistachio platform's default build target, so that
    the default is to build a kernel image that we can actually boot on a
    board such as the MIPS Creator Ci40.
    
    Marked for stable backport as far as v4.1 where pistachio support was
    introduced. This is primarily useful for CI systems such as kernelci.org
    which will benefit from us building a suitable image which can then be
    booted as part of automated testing, extending our test coverage to the
    affected stable branches.
    
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
    Reviewed-by: Kevin Hilman <khilman@baylibre.com>
    Tested-by: Kevin Hilman <khilman@baylibre.com>
    URL: https://groups.io/g/kernelci/message/388
    Cc: stable@vger.kernel.org # v4.1+
    Cc: linux-mips@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed9db5c02c7c273bd3fbfee02183c3492bb06594
Author: Paul Burton <paul.burton@mips.com>
Date:   Tue May 28 17:05:03 2019 +0000

    MIPS: Bounds check virt_addr_valid
    
    commit 074a1e1167afd82c26f6d03a9a8b997d564bb241 upstream.
    
    The virt_addr_valid() function is meant to return true iff
    virt_to_page() will return a valid struct page reference. This is true
    iff the address provided is found within the unmapped address range
    between PAGE_OFFSET & MAP_BASE, but we don't currently check for that
    condition. Instead we simply mask the address to obtain what will be a
    physical address if the virtual address is indeed in the desired range,
    shift it to form a PFN & then call pfn_valid(). This can incorrectly
    return true if called with a virtual address which, after masking,
    happens to form a physical address corresponding to a valid PFN.
    
    For example we may vmalloc an address in the kernel mapped region
    starting a MAP_BASE & obtain the virtual address:
    
      addr = 0xc000000000002000
    
    When masked by virt_to_phys(), which uses __pa() & in turn CPHYSADDR(),
    we obtain the following (bogus) physical address:
    
      addr = 0x2000
    
    In a common system with PHYS_OFFSET=0 this will correspond to a valid
    struct page which should really be accessed by virtual address
    PAGE_OFFSET+0x2000, causing virt_addr_valid() to incorrectly return 1
    indicating that the original address corresponds to a struct page.
    
    This is equivalent to the ARM64 change made in commit ca219452c6b8
    ("arm64: Correctly bounds check virt_addr_valid").
    
    This fixes fallout when hardened usercopy is enabled caused by the
    related commit 517e1fbeb65f ("mm/usercopy: Drop extra
    is_vmalloc_or_module() check") which removed a check for the vmalloc
    range that was present from the introduction of the hardened usercopy
    feature.
    
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    References: ca219452c6b8 ("arm64: Correctly bounds check virt_addr_valid")
    References: 517e1fbeb65f ("mm/usercopy: Drop extra is_vmalloc_or_module() check")
    Reported-by: Julien Cristau <jcristau@debian.org>
    Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
    Tested-by: YunQiang Su <ysu@wavecomp.com>
    URL: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=929366
    Cc: stable@vger.kernel.org # v4.12+
    Cc: linux-mips@vger.kernel.org
    Cc: Yunqiang Su <ysu@wavecomp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 11901477bc2486041f4c44a136e394b1fcef4489
Author: Roger Pau Monne <roger.pau@citrix.com>
Date:   Fri May 3 17:04:01 2019 +0200

    xen-blkfront: switch kcalloc to kvcalloc for large array allocation
    
    commit 1d5c76e66433382a1e170d1d5845bb0fed7467aa upstream.
    
    There's no reason to request physically contiguous memory for those
    allocations.
    
    [boris: added CC to stable]
    
    Cc: stable@vger.kernel.org
    Reported-by: Ian Jackson <ian.jackson@citrix.com>
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8a303bd8452396a928f5ca2c7957167b2d185f0
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Tue May 28 22:49:04 2019 -0700

    nvme-rdma: fix queue mapping when queue count is limited
    
    commit 5651cd3c43368873d0787b52acb2e0e08f3c5da4 upstream.
    
    When the controller supports less queues than requested, we
    should make sure that queue mapping does the right thing and
    not assume that all queues are available. This fixes a crash
    when the controller supports less queues than requested.
    
    The rules are:
    1. if no write/poll queues are requested, we assign the available queues
       to the default queue map. The default and read queue maps share the
       existing queues.
    2. if write queues are requested:
      - first make sure that read queue map gets the requested
        nr_io_queues count
      - then grant the default queue map the minimum between the requested
        nr_write_queues and the remaining queues. If there are no available
        queues to dedicate to the default queue map, fallback to (1) and
        share all the queues in the existing queue map.
    3. if poll queues are requested:
      - map the remaining queues to the poll queue map.
    
    Also, provide a log indication on how we constructed the different
    queue maps.
    
    Reported-by: Harris, James R <james.r.harris@intel.com>
    Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
    Tested-by: Jim Harris <james.r.harris@intel.com>
    Cc: <stable@vger.kernel.org> # v5.0+
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit affc4c420a2911a1c632df8a0286938b654bade4
Author: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Date:   Mon May 27 18:40:19 2019 +0200

    s390/mm: fix address space detection in exception handling
    
    commit 962f0af83c239c0aef05639631e871c874b00f99 upstream.
    
    Commit 0aaba41b58bc ("s390: remove all code using the access register
    mode") removed access register mode from the kernel, and also from the
    address space detection logic. However, user space could still switch
    to access register mode (trans_exc_code == 1), and exceptions in that
    mode would not be correctly assigned.
    
    Fix this by adding a check for trans_exc_code == 1 to get_fault_type(),
    and remove the wrong comment line before that function.
    
    Fixes: 0aaba41b58bc ("s390: remove all code using the access register mode")
    Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: <stable@vger.kernel.org> # v4.15+
    Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18da05b04c87fc906596b30f6123cc2de7f1440b
Author: Robert Hancock <hancock@sedsystems.ca>
Date:   Tue Jun 4 15:55:51 2019 -0600

    i2c: xiic: Add max_read_len quirk
    
    commit 49b809586730a77b57ce620b2f9689de765d790b upstream.
    
    This driver does not support reading more than 255 bytes at once because
    the register for storing the number of bytes to read is only 8 bits. Add
    a max_read_len quirk to enforce this.
    
    This was found when using this driver with the SFP driver, which was
    previously reading all 256 bytes in the SFP EEPROM in one transaction.
    This caused a bunch of hard-to-debug errors in the xiic driver since the
    driver/logic was treating the number of bytes to read as zero.
    Rejecting transactions that aren't supported at least allows the problem
    to be diagnosed more easily.
    
    Signed-off-by: Robert Hancock <hancock@sedsystems.ca>
    Reviewed-by: Michal Simek <michal.simek@xilinx.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea07fe89acf7e42b1080ac0306b343d40de9af5b
Author: Jann Horn <jannh@google.com>
Date:   Sun Jun 2 03:15:58 2019 +0200

    x86/insn-eval: Fix use-after-free access to LDT entry
    
    commit de9f869616dd95e95c00bdd6b0fcd3421e8a4323 upstream.
    
    get_desc() computes a pointer into the LDT while holding a lock that
    protects the LDT from being freed, but then drops the lock and returns the
    (now potentially dangling) pointer to its caller.
    
    Fix it by giving the caller a copy of the LDT entry instead.
    
    Fixes: 670f928ba09b ("x86/insn-eval: Add utility function to get segment descriptor")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 949525fff5f722245ee2e2b1fe1e860e7e603579
Author: Jiri Kosina <jkosina@suse.cz>
Date:   Thu May 30 00:09:39 2019 +0200

    x86/power: Fix 'nosmt' vs hibernation triple fault during resume
    
    commit ec527c318036a65a083ef68d8ba95789d2212246 upstream.
    
    As explained in
    
            0cc3cd21657b ("cpu/hotplug: Boot HT siblings at least once")
    
    we always, no matter what, have to bring up x86 HT siblings during boot at
    least once in order to avoid first MCE bringing the system to its knees.
    
    That means that whenever 'nosmt' is supplied on the kernel command-line,
    all the HT siblings are as a result sitting in mwait or cpudile after
    going through the online-offline cycle at least once.
    
    This causes a serious issue though when a kernel, which saw 'nosmt' on its
    commandline, is going to perform resume from hibernation: if the resume
    from the hibernated image is successful, cr3 is flipped in order to point
    to the address space of the kernel that is being resumed, which in turn
    means that all the HT siblings are all of a sudden mwaiting on address
    which is no longer valid.
    
    That results in triple fault shortly after cr3 is switched, and machine
    reboots.
    
    Fix this by always waking up all the SMT siblings before initiating the
    'restore from hibernation' process; this guarantees that all the HT
    siblings will be properly carried over to the resumed kernel waiting in
    resume_play_dead(), and acted upon accordingly afterwards, based on the
    target kernel configuration.
    
    Symmetricaly, the resumed kernel has to push the SMT siblings to mwait
    again in case it has SMT disabled; this means it has to online all
    the siblings when resuming (so that they come out of hlt) and offline
    them again to let them reach mwait.
    
    Cc: 4.19+ <stable@vger.kernel.org> # v4.19+
    Debugged-by: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 0cc3cd21657b ("cpu/hotplug: Boot HT siblings at least once")
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Acked-by: Pavel Machek <pavel@ucw.cz>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92ce69f3a5e8277c2b0d7628abf1f0d089081e71
Author: Faiz Abbas <faiz_abbas@ti.com>
Date:   Tue May 28 15:29:26 2019 +0530

    mmc: sdhci_am654: Fix SLOTTYPE write
    
    commit 7397993145872c74871ab2aa7fa26a427144088a upstream.
    
    In the call to regmap_update_bits() for SLOTTYPE, the mask and value
    fields are exchanged. Fix this.
    
    Signed-off-by: Faiz Abbas <faiz_abbas@ti.com>
    Fixes: 41fd4caeb00b ("mmc: sdhci_am654: Add Initial Support for AM654 SDHCI driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b27cbe569e993e2d804ff0cceae683bcf27f0314
Author: Takeshi Saito <takeshi.saito.xv@renesas.com>
Date:   Wed May 15 20:23:46 2019 +0200

    mmc: tmio: fix SCC error handling to avoid false positive CRC error
    
    commit 51b72656bb39fdcb8f3174f4007bcc83ad1d275f upstream.
    
    If an SCC error occurs during a read/write command execution, a false
    positive CRC error message is output.
    
    mmcblk0: response CRC error sending r/w cmd command, card status 0x900
    
    check_scc_error() checks SCC_RVSREQ.RVSERR bit. RVSERR detects a
    correction error in the next (up or down) delay tap position. However,
    since the command is successful, only retuning needs to be executed.
    This has been confirmed by HW engineers.
    
    Thus, on SCC error, set retuning flag instead of setting an error code.
    
    Fixes: b85fb0a1c8ae ("mmc: tmio: Fix SCC error detection")
    Signed-off-by: Takeshi Saito <takeshi.saito.xv@renesas.com>
    [wsa: updated comment and commit message, removed some braces]
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
    Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a1ef8ab4aadc568a890a85a33ee15cf60d5cf2a
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri May 10 14:24:41 2019 +0300

    memstick: mspro_block: Fix an error code in mspro_block_issue_req()
    
    commit 61009f82a93f7c0b33cd9b3b263a6ab48f8b49d4 upstream.
    
    We accidentally changed the error code from -EAGAIN to 1 when we did the
    blk-mq conversion.
    
    Maybe a contributing factor to this mistake is that it wasn't obvious
    that the "while (chunk) {" condition is always true.  I have cleaned
    that up as well.
    
    Fixes: d0be12274dad ("mspro_block: convert to blk-mq")
    Cc: stable@vger.kernel.org
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df14ab43d848a0d78f38374898b921f01bf525cd
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Thu Jun 6 13:13:58 2019 +0900

    kbuild: use more portable 'command -v' for cc-cross-prefix
    
    commit 913ab9780fc021298949cc5514d6255a008e69f9 upstream.
    
    To print the pathname that will be used by shell in the current
    environment, 'command -v' is a standardized way. [1]
    
    'which' is also often used in scripts, but it is less portable.
    
    When I worked on commit bd55f96fa9fc ("kbuild: refactor cc-cross-prefix
    implementation"), I was eager to use 'command -v' but it did not work.
    (The reason is explained below.)
    
    I kept 'which' as before but got rid of '> /dev/null 2>&1' as I
    thought it was no longer needed. Sorry, I was wrong.
    
    It works well on my Ubuntu machine, but Alexey Brodkin reports noisy
    warnings on CentOS7 when 'which' fails to find the given command in
    the PATH environment.
    
      $ which foo
      which: no foo in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin)
    
    Given that behavior of 'which' depends on system (and it may not be
    installed by default), I want to try 'command -v' once again.
    
    The specification [1] clearly describes the behavior of 'command -v'
    when the given command is not found:
    
      Otherwise, no output shall be written and the exit status shall reflect
      that the name was not found.
    
    However, we need a little magic to use 'command -v' from Make.
    
    $(shell ...) passes the argument to a subshell for execution, and
    returns the standard output of the command.
    
    Here is a trick. GNU Make may optimize this by executing the command
    directly instead of forking a subshell, if no shell special characters
    are found in the command and omitting the subshell will not change the
    behavior.
    
    In this case, no shell special character is used. So, Make will try
    to run it directly. However, 'command' is a shell-builtin command,
    then Make would fail to find it in the PATH environment:
    
      $ make ARCH=m68k defconfig
      make: command: Command not found
      make: command: Command not found
      make: command: Command not found
    
    In fact, Make has a table of shell-builtin commands because it must
    ask the shell to execute them.
    
    Until recently, 'command' was missing in the table.
    
    This issue was fixed by the following commit:
    
    | commit 1af314465e5dfe3e8baa839a32a72e83c04f26ef
    | Author: Paul Smith <psmith@gnu.org>
    | Date:   Sun Nov 12 18:10:28 2017 -0500
    |
    |     * job.c: Add "command" as a known shell built-in.
    |
    |     This is not a POSIX shell built-in but it's common in UNIX shells.
    |     Reported by Nick Bowler <nbowler@draconx.ca>.
    
    Because the latest release is GNU Make 4.2.1 in 2016, this commit is
    not included in any released versions. (But some distributions may
    have back-ported it.)
    
    We need to trick Make to spawn a subshell. There are various ways to
    do so:
    
     1) Use a shell special character '~' as dummy
    
        $(shell : ~; command -v $(c)gcc)
    
     2) Use a variable reference that always expands to the empty string
        (suggested by David Laight)
    
        $(shell command$${x:+} -v $(c)gcc)
    
     3) Use redirect
    
        $(shell command -v $(c)gcc 2>/dev/null)
    
    I chose 3) to not confuse people. The stderr would not be polluted
    anyway, but it will provide extra safety, and is easy to understand.
    
    Tested on Make 3.81, 3.82, 4.0, 4.1, 4.2, 4.2.1
    
    [1] http://pubs.opengroup.org/onlinepubs/9699919799/utilities/command.html
    
    Fixes: bd55f96fa9fc ("kbuild: refactor cc-cross-prefix implementation")
    Cc: linux-stable <stable@vger.kernel.org> # 5.1
    Reported-by: Alexey Brodkin <abrodkin@synopsys.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Tested-by: Alexey Brodkin <abrodkin@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e66c7cd0e2649b7105ff53e7cbed4df8120aa40d
Author: Kees Cook <keescook@chromium.org>
Date:   Thu May 30 23:37:29 2019 -0700

    pstore/ram: Run without kernel crash dump region
    
    commit 8880fa32c557600f5f624084152668ed3c2ea51e upstream.
    
    The ram pstore backend has always had the crash dumper frontend enabled
    unconditionally. However, it was possible to effectively disable it
    by setting a record_size=0. All the machinery would run (storing dumps
    to the temporary crash buffer), but 0 bytes would ultimately get stored
    due to there being no przs allocated for dumps. Commit 89d328f637b9
    ("pstore/ram: Correctly calculate usable PRZ bytes"), however, assumed
    that there would always be at least one allocated dprz for calculating
    the size of the temporary crash buffer. This was, of course, not the
    case when record_size=0, and would lead to a NULL deref trying to find
    the dprz buffer size:
    
    BUG: unable to handle kernel NULL pointer dereference at (null)
    ...
    IP: ramoops_probe+0x285/0x37e (fs/pstore/ram.c:808)
    
            cxt->pstore.bufsize = cxt->dprzs[0]->buffer_size;
    
    Instead, we need to only enable the frontends based on the success of the
    prz initialization and only take the needed actions when those zones are
    available. (This also fixes a possible error in detecting if the ftrace
    frontend should be enabled.)
    
    Reported-and-tested-by: Yaro Slav <yaro330@gmail.com>
    Fixes: 89d328f637b9 ("pstore/ram: Correctly calculate usable PRZ bytes")
    Cc: stable@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d388ad42027b8155c635aa3b9699eba76e4585b
Author: Pi-Hsun Shih <pihsun@chromium.org>
Date:   Mon May 20 14:51:19 2019 +0800

    pstore: Set tfm to NULL on free_buf_for_compression
    
    commit a9fb94a99bb515d8720ba8440ce3aba84aec80f8 upstream.
    
    Set tfm to NULL on free_buf_for_compression() after crypto_free_comp().
    
    This avoid a use-after-free when allocate_buf_for_compression()
    and free_buf_for_compression() are called twice. Although
    free_buf_for_compression() freed the tfm, allocate_buf_for_compression()
    won't reinitialize the tfm since the tfm pointer is not NULL.
    
    Fixes: 95047b0519c1 ("pstore: Refactor compression initialization")
    Signed-off-by: Pi-Hsun Shih <pihsun@chromium.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62fc9aae41bd9f2f5da55847c5e30be838106e90
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Tue May 28 13:22:50 2019 +0200

    fuse: fix copy_file_range() in the writeback case
    
    commit a2bc92362941006830afa3dfad6caec1f99acbf5 upstream.
    
    Prior to sending COPY_FILE_RANGE to userspace filesystem, we must flush all
    dirty pages in both the source and destination files.
    
    This patch adds the missing flush of the source file.
    
    Tested on libfuse-3.5.0 with:
    
      libfuse/example/passthrough_ll /mnt/fuse/ -o writeback
      libfuse/test/test_syscalls /mnt/fuse/tmp/test
    
    Fixes: 88bc7d5097a1 ("fuse: add support for copy_file_range()")
    Cc: <stable@vger.kernel.org> # v4.20
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dbe54b432a013431c8557716acdb15b364a10d85
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Mon May 27 11:42:07 2019 +0200

    fuse: fallocate: fix return with locked inode
    
    commit 35d6fcbb7c3e296a52136347346a698a35af3fda upstream.
    
    Do the proper cleanup in case the size check fails.
    
    Tested with xfstests:generic/228
    
    Reported-by: kbuild test robot <lkp@intel.com>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Fixes: 0cbade024ba5 ("fuse: honor RLIMIT_FSIZE in fuse_file_fallocate")
    Cc: Liu Bo <bo.liu@linux.alibaba.com>
    Cc: <stable@vger.kernel.org> # v3.5
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 11f087841e8650fbe51d112a21b465ad0c35ca5f
Author: Yihao Wu <wuyihao@linux.alibaba.com>
Date:   Mon May 13 14:58:22 2019 +0800

    NFSv4.1: Fix bug only first CB_NOTIFY_LOCK is handled
    
    commit ba851a39c9703f09684a541885ed176f8fb7c868 upstream.
    
    When a waiter is waked by CB_NOTIFY_LOCK, it will retry
    nfs4_proc_setlk(). The waiter may fail to nfs4_proc_setlk() and sleep
    again. However, the waiter is already removed from clp->cl_lock_waitq
    when handling CB_NOTIFY_LOCK in nfs4_wake_lock_waiter(). So any
    subsequent CB_NOTIFY_LOCK won't wake this waiter anymore. We should
    put the waiter back to clp->cl_lock_waitq before retrying.
    
    Cc: stable@vger.kernel.org #4.9+
    Signed-off-by: Yihao Wu <wuyihao@linux.alibaba.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1d8b49a1b041752af08da839ddb78dba7f37cab
Author: Yihao Wu <wuyihao@linux.alibaba.com>
Date:   Wed May 22 01:57:10 2019 +0800

    NFSv4.1: Again fix a race where CB_NOTIFY_LOCK fails to wake a waiter
    
    commit 52b042ab9948cc367b61f9ca9c18603aa7813c3a upstream.
    
    Commit b7dbcc0e433f "NFSv4.1: Fix a race where CB_NOTIFY_LOCK fails to wake a waiter"
    found this bug. However it didn't fix it.
    
    This commit replaces schedule_timeout() with wait_woken() and
    default_wake_function() with woken_wake_function() in function
    nfs4_retry_setlk() and nfs4_wake_lock_waiter(). wait_woken() uses
    memory barriers in its implementation to avoid potential race condition
    when putting a process into sleeping state and then waking it up.
    
    Fixes: a1d617d8f134 ("nfs: allow blocking locks to be awoken by lock callbacks")
    Cc: stable@vger.kernel.org #4.9+
    Signed-off-by: Yihao Wu <wuyihao@linux.alibaba.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 42b761f6066a1be9a7bdbf2a79939567b3563a13
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Wed May 29 12:49:52 2019 -0400

    SUNRPC: Fix a use after free when a server rejects the RPCSEC_GSS credential
    
    commit 7987b694ade8cc465ce10fb3dceaa614f13ceaf3 upstream.
    
    The addition of rpc_check_timeout() to call_decode causes an Oops
    when the RPCSEC_GSS credential is rejected.
    The reason is that rpc_decode_header() will call xprt_release() in
    order to free task->tk_rqstp, which is needed by rpc_check_timeout()
    to check whether or not we should exit due to a soft timeout.
    
    The fix is to move the call to xprt_release() into call_decode() so
    we can perform it after rpc_check_timeout().
    
    Reported-by: Olga Kornievskaia <olga.kornievskaia@gmail.com>
    Reported-by: Nick Bowler <nbowler@draconx.ca>
    Fixes: cea57789e408 ("SUNRPC: Clean up")
    Cc: stable@vger.kernel.org # v5.1+
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca41657949ab1a1f04b6fc2d9d30d32b13b5677d
Author: Olga Kornievskaia <kolga@netapp.com>
Date:   Wed May 29 10:46:00 2019 -0400

    SUNRPC fix regression in umount of a secure mount
    
    commit ec6017d9035986a36de064f48a63245930bfad6f upstream.
    
    If call_status returns ENOTCONN, we need to re-establish the connection
    state after. Otherwise the client goes into an infinite loop of call_encode,
    call_transmit, call_status (ENOTCONN), call_encode.
    
    Fixes: c8485e4d63 ("SUNRPC: Handle ECONNREFUSED correctly in xprt_transmit()")
    Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
    Cc: stable@vger.kernel.org # v2.6.29+
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d40905fa41467d0a2e968850263e5aa87e1c4239
Author: Helge Deller <deller@gmx.de>
Date:   Mon May 27 21:20:00 2019 +0200

    parisc: Fix crash due alternative coding for NP iopdir_fdc bit
    
    commit 527a1d1ede98479bf90c31a64822107ac7e6d276 upstream.
    
    According to the found documentation, data cache flushes and sync
    instructions are needed on the PCX-U+ (PA8200, e.g. C200/C240)
    platforms, while PCX-W (PA8500, e.g. C360) platforms aparently don't
    need those flushes when changing the IO PDIR data structures.
    
    We have no documentation for PCX-W+ (PA8600) and PCX-W2 (PA8700) CPUs,
    but Carlo Pisani reported that his C3600 machine (PA8600, PCX-W+) fails
    when the fdc instructions were removed. His firmware didn't set the NIOP
    bit, so one may assume it's a firmware bug since other C3750 machines
    had the bit set.
    
    Even if documentation (as mentioned above) states that PCX-W (PA8500,
    e.g.  J5000) does not need fdc flushes, Sven could show that an Adaptec
    29320A PCI-X SCSI controller reliably failed on a dd command during the
    first five minutes in his J5000 when fdc flushes were missing.
    
    Going forward, we will now NOT replace the fdc and sync assembler
    instructions by NOPS if:
    a) the NP iopdir_fdc bit was set by firmware, or
    b) we find a CPU up to and including a PCX-W+ (PA8600).
    
    This fixes the HPMC crashes on a C240 and C36XX machines. For other
    machines we rely on the firmware to set the bit when needed.
    
    In case one finds HPMC issues, people could try to boot their machines
    with the "no-alternatives" kernel option to turn off any alternative
    patching.
    
    Reported-by: Sven Schnelle <svens@stackframe.org>
    Reported-by: Carlo Pisani <carlojpisani@gmail.com>
    Tested-by: Sven Schnelle <svens@stackframe.org>
    Fixes: 3847dab77421 ("parisc: Add alternative coding infrastructure")
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: stable@vger.kernel.org # 5.0+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ca4fb12c3109c737c5ae80327e0f2d0feca9a26
Author: John David Anglin <dave.anglin@bell.net>
Date:   Mon May 27 20:15:14 2019 -0400

    parisc: Use implicit space register selection for loading the coherence index of I/O pdirs
    
    commit 63923d2c3800919774f5c651d503d1dd2adaddd5 upstream.
    
    We only support I/O to kernel space. Using %sr1 to load the coherence
    index may be racy unless interrupts are disabled. This patch changes the
    code used to load the coherence index to use implicit space register
    selection. This saves one instruction and eliminates the race.
    
    Tested on rp3440, c8000 and c3750.
    
    Signed-off-by: John David Anglin <dave.anglin@bell.net>
    Cc: stable@vger.kernel.org
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35f473d145a1d904d8838d09912dc9ec95cc5eb9
Author: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Date:   Mon May 13 20:28:00 2019 +0300

    ARC: mm: SIGSEGV userspace trying to access kernel virtual memory
    
    commit a8c715b4dd73c26a81a9cc8dc792aa715d8b4bb2 upstream.
    
    As of today if userspace process tries to access a kernel virtual addres
    (0x7000_0000 to 0x7ffff_ffff) such that a legit kernel mapping already
    exists, that process hangs instead of being killed with SIGSEGV
    
    Fix that by ensuring that do_page_fault() handles kenrel vaddr only if
    in kernel mode.
    
    And given this, we can also simplify the code a bit. Now a vmalloc fault
    implies kernel mode so its failure (for some reason) can reuse the
    @no_context label and we can remove @bad_area_nosemaphore.
    
    Reproduce user test for original problem:
    
    ------------------------>8-----------------
     #include <stdlib.h>
     #include <stdint.h>
    
     int main(int argc, char *argv[])
     {
            volatile uint32_t temp;
    
            temp = *(uint32_t *)(0x70000000);
     }
    ------------------------>8-----------------
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de3cfea50bafea1dfd9da6fb31198ab2ff2da424
Author: Jann Horn <jannh@google.com>
Date:   Sat May 4 15:56:08 2019 +0200

    habanalabs: fix debugfs code
    
    commit 8438846cce61e284a22316c13aa4b63772963070 upstream.
    
    This fixes multiple things in the habanalabs debugfs code, in particular:
    
     - mmu_write() was unnecessarily verbose, copying around between multiple
       buffers
     - mmu_write() could write a user-specified, unbounded amount of userspace
       memory into a kernel buffer (out-of-bounds write)
     - multiple debugfs read handlers ignored the user-supplied count,
       potentially corrupting out-of-bounds userspace data
     - hl_device_read() was unnecessarily verbose
     - hl_device_write() could read uninitialized stack memory
     - multiple debugfs read handlers copied terminating null characters to
       userspace
    
    Signed-off-by: Jann Horn <jannh@google.com>
    Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com>
    Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4277a2b8af588f734c938f21a047762de647587
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Mon Jun 3 13:26:20 2019 -0700

    rcu: locking and unlocking need to always be at least barriers
    
    commit 66be4e66a7f422128748e3c3ef6ee72b20a6197b upstream.
    
    Herbert Xu pointed out that commit bb73c52bad36 ("rcu: Don't disable
    preemption for Tiny and Tree RCU readers") was incorrect in making the
    preempt_disable/enable() be conditional on CONFIG_PREEMPT_COUNT.
    
    If CONFIG_PREEMPT_COUNT isn't enabled, the preemption enable/disable is
    a no-op, but still is a compiler barrier.
    
    And RCU locking still _needs_ that compiler barrier.
    
    It is simply fundamentally not true that RCU locking would be a complete
    no-op: we still need to guarantee (for example) that things that can
    trap and cause preemption cannot migrate into the RCU locked region.
    
    The way we do that is by making it a barrier.
    
    See for example commit 386afc91144b ("spinlocks and preemption points
    need to be at least compiler barriers") from back in 2013 that had
    similar issues with spinlocks that become no-ops on UP: they must still
    constrain the compiler from moving other operations into the critical
    region.
    
    Now, it is true that a lot of RCU operations already use READ_ONCE() and
    WRITE_ONCE() (which in practice likely would never be re-ordered wrt
    anything remotely interesting), but it is also true that that is not
    globally the case, and that it's not even necessarily always possible
    (ie bitfields etc).
    
    Reported-by: Herbert Xu <herbert@gondor.apana.org.au>
    Fixes: bb73c52bad36 ("rcu: Don't disable preemption for Tiny and Tree RCU readers")
    Cc: stable@kernel.org
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9749d62bda159db5e360f3d3e2e0825dba0dad9b
Author: Jakub Kicinski <jakub.kicinski@netronome.com>
Date:   Tue Jun 4 12:00:12 2019 -0700

    net/tls: replace the sleeping lock around RX resync with a bit lock
    
    [ Upstream commit e52972c11d6b1262964db96d65934196db621685 ]
    
    Commit 38030d7cb779 ("net/tls: avoid NULL-deref on resync during device removal")
    tried to fix a potential NULL-dereference by taking the
    context rwsem.  Unfortunately the RX resync may get called
    from soft IRQ, so we can't use the rwsem to protect from
    the device disappearing.  Because we are guaranteed there
    can be only one resync at a time (it's called from strparser)
    use a bit to indicate resync is busy and make device
    removal wait for the bit to get cleared.
    
    Note that there is a leftover "flags" field in struct
    tls_context already.
    
    Fixes: 4799ac81e52a ("tls: Add rx inline crypto offload")
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e246505558d6d987aba2eead3b1e54f2b7b163f3
Author: Erez Alfasi <ereza@mellanox.com>
Date:   Mon May 20 17:42:52 2019 +0300

    net/mlx4_en: ethtool, Remove unsupported SFP EEPROM high pages query
    
    [ Upstream commit 135dd9594f127c8a82d141c3c8430e9e2143216a ]
    
    Querying EEPROM high pages data for SFP module is currently
    not supported by our driver but is still tried, resulting in
    invalid FW queries.
    
    Set the EEPROM ethtool data length to 256 for SFP module to
    limit the reading for page 0 only and prevent invalid FW queries.
    
    Fixes: 7202da8b7f71 ("ethtool, net/mlx4_en: Cable info, get_module_info/eeprom ethtool support")
    Signed-off-by: Erez Alfasi <ereza@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad491eac759043244471e748081adcbf63d299f4
Author: David Ahern <dsahern@gmail.com>
Date:   Thu May 2 15:14:15 2019 -0700

    ipmr_base: Do not reset index in mr_table_dump
    
    [ Upstream commit 7fcd1e033dacedd520abebc943c960dcf5add3ae ]
    
    e is the counter used to save the location of a dump when an
    skb is filled. Once the walk of the table is complete, mr_table_dump
    needs to return without resetting that index to 0. Dump of a specific
    table is looping because of the reset because there is no way to
    indicate the walk of the table is done.
    
    Move the reset to the caller so the dump of each table starts at 0,
    but the loop counter is maintained if a dump fills an skb.
    
    Fixes: e1cedae1ba6b0 ("ipmr: Refactor mr_rtm_dumproute")
    Signed-off-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb6794b72c9dbc010f0933d543be2c2e993b3cfe
Author: Matteo Croce <mcroce@redhat.com>
Date:   Thu May 2 10:51:05 2019 +0200

    cls_matchall: avoid panic when receiving a packet before filter set
    
    [ Upstream commit 25426043ec9e22b90c789407c28e40f32a9d1985 ]
    
    When a matchall classifier is added, there is a small time interval in
    which tp->root is NULL. If we receive a packet in this small time slice
    a NULL pointer dereference will happen, leading to a kernel panic:
    
        # tc qdisc replace dev eth0 ingress
        # tc filter add dev eth0 parent ffff: matchall action gact drop
        Unable to handle kernel NULL pointer dereference at virtual address 0000000000000034
        Mem abort info:
          ESR = 0x96000005
          Exception class = DABT (current EL), IL = 32 bits
          SET = 0, FnV = 0
          EA = 0, S1PTW = 0
        Data abort info:
          ISV = 0, ISS = 0x00000005
          CM = 0, WnR = 0
        user pgtable: 4k pages, 39-bit VAs, pgdp = 00000000a623d530
        [0000000000000034] pgd=0000000000000000, pud=0000000000000000
        Internal error: Oops: 96000005 [#1] SMP
        Modules linked in: cls_matchall sch_ingress nls_iso8859_1 nls_cp437 vfat fat m25p80 spi_nor mtd xhci_plat_hcd xhci_hcd phy_generic sfp mdio_i2c usbcore i2c_mv64xxx marvell10g mvpp2 usb_common spi_orion mvmdio i2c_core sbsa_gwdt phylink ip_tables x_tables autofs4
        Process ksoftirqd/0 (pid: 9, stack limit = 0x0000000009de7d62)
        CPU: 0 PID: 9 Comm: ksoftirqd/0 Not tainted 5.1.0-rc6 #21
        Hardware name: Marvell 8040 MACCHIATOBin Double-shot (DT)
        pstate: 40000005 (nZcv daif -PAN -UAO)
        pc : mall_classify+0x28/0x78 [cls_matchall]
        lr : tcf_classify+0x78/0x138
        sp : ffffff80109db9d0
        x29: ffffff80109db9d0 x28: ffffffc426058800
        x27: 0000000000000000 x26: ffffffc425b0dd00
        x25: 0000000020000000 x24: 0000000000000000
        x23: ffffff80109dbac0 x22: 0000000000000001
        x21: ffffffc428ab5100 x20: ffffffc425b0dd00
        x19: ffffff80109dbac0 x18: 0000000000000000
        x17: 0000000000000000 x16: 0000000000000000
        x15: 0000000000000000 x14: 0000000000000000
        x13: ffffffbf108ad288 x12: dead000000000200
        x11: 00000000f0000000 x10: 0000000000000001
        x9 : ffffffbf1089a220 x8 : 0000000000000001
        x7 : ffffffbebffaa950 x6 : 0000000000000000
        x5 : 000000442d6ba000 x4 : 0000000000000000
        x3 : ffffff8008735ad8 x2 : ffffff80109dbac0
        x1 : ffffffc425b0dd00 x0 : ffffff8010592078
        Call trace:
         mall_classify+0x28/0x78 [cls_matchall]
         tcf_classify+0x78/0x138
         __netif_receive_skb_core+0x29c/0xa20
         __netif_receive_skb_one_core+0x34/0x60
         __netif_receive_skb+0x28/0x78
         netif_receive_skb_internal+0x2c/0xc0
         napi_gro_receive+0x1a0/0x1d8
         mvpp2_poll+0x928/0xb18 [mvpp2]
         net_rx_action+0x108/0x378
         __do_softirq+0x128/0x320
         run_ksoftirqd+0x44/0x60
         smpboot_thread_fn+0x168/0x1b0
         kthread+0x12c/0x130
         ret_from_fork+0x10/0x1c
        Code: aa0203f3 aa1e03e0 d503201f f9400684 (b9403480)
        ---[ end trace fc71e2ef7b8ab5a5 ]---
        Kernel panic - not syncing: Fatal exception in interrupt
        SMP: stopping secondary CPUs
        Kernel Offset: disabled
        CPU features: 0x002,00002000
        Memory Limit: none
        Rebooting in 1 seconds..
    
    Fix this by adding a NULL check in mall_classify().
    
    Fixes: ed76f5edccc9 ("net: sched: protect filter_chain list with filter_chain_lock mutex")
    Signed-off-by: Matteo Croce <mcroce@redhat.com>
    Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0c0f274da4b95f95558eb207ba1ce6e98cf53c6
Author: David Ahern <dsahern@gmail.com>
Date:   Wed May 1 18:18:42 2019 -0700

    neighbor: Call __ipv4_neigh_lookup_noref in neigh_xmit
    
    [ Upstream commit 4b2a2bfeb3f056461a90bd621e8bd7d03fa47f60 ]
    
    Commit cd9ff4de0107 changed the key for IFF_POINTOPOINT devices to
    INADDR_ANY but neigh_xmit which is used for MPLS encapsulations was not
    updated to use the altered key. The result is that every packet Tx does
    a lookup on the gateway address which does not find an entry, a new one
    is created only to find the existing one in the table right before the
    insert since arp_constructor was updated to reset the primary key. This
    is seen in the allocs and destroys counters:
        ip -s -4 ntable show | head -10 | grep alloc
    
    which increase for each packet showing the unnecessary overhread.
    
    Fix by having neigh_xmit use __ipv4_neigh_lookup_noref for NEIGH_ARP_TABLE.
    
    Fixes: cd9ff4de0107 ("ipv4: Make neigh lookup keys for loopback/point-to-point devices be INADDR_ANY")
    Reported-by: Alan Maguire <alan.maguire@oracle.com>
    Signed-off-by: David Ahern <dsahern@gmail.com>
    Tested-by: Alan Maguire <alan.maguire@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 450b9d8ee661606a0b6614df01214c9d0b9f9a0a
Author: David Ahern <dsahern@gmail.com>
Date:   Wed May 1 18:08:34 2019 -0700

    neighbor: Reset gc_entries counter if new entry is released before insert
    
    [ Upstream commit 64c6f4bbca748c3b2101469a76d88b7cd1c00476 ]
    
    Ian and Alan both reported seeing overflows after upgrades to 5.x kernels:
      neighbour: arp_cache: neighbor table overflow!
    
    Alan's mpls script helped get to the bottom of this bug. When a new entry
    is created the gc_entries counter is bumped in neigh_alloc to check if a
    new one is allowed to be created. ___neigh_create then searches for an
    existing entry before inserting the just allocated one. If an entry
    already exists, the new one is dropped in favor of the existing one. In
    this case the cleanup path needs to drop the gc_entries counter. There
    is no memory leak, only a counter leak.
    
    Fixes: 58956317c8d ("neighbor: Improve garbage collection")
    Reported-by: Ian Kumlien <ian.kumlien@gmail.com>
    Reported-by: Alan Maguire <alan.maguire@oracle.com>
    Signed-off-by: David Ahern <dsahern@gmail.com>
    Tested-by: Alan Maguire <alan.maguire@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 713f03fa6bf86d116a78211e739aeeb68a95f9e7
Author: Nikita Danilov <nikita.danilov@aquantia.com>
Date:   Tue Jun 4 13:23:49 2019 +0000

    net: aquantia: fix wol configuration not applied sometimes
    
    [ Upstream commit 930b9a0543385d4eb8ef887e88cf84d95a844577 ]
    
    WoL magic packet configuration sometimes does not work due to
    couple of leakages found.
    
    Mainly there was a regression introduced during readx_poll refactoring.
    
    Next, fw request waiting time was too small. Sometimes that
    caused sleep proxy config function to return with an error
    and to skip WoL configuration.
    At last, WoL data were passed to FW from not clean buffer.
    That could cause FW to accept garbage as a random configuration data.
    
    Fixes: 6a7f2277313b ("net: aquantia: replace AQ_HW_WAIT_FOR with readx_poll_timeout_atomic")
    Signed-off-by: Nikita Danilov <nikita.danilov@aquantia.com>
    Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cba55c16fbf59fea9e6677323b278713a062f275
Author: Olivier Matz <olivier.matz@6wind.com>
Date:   Thu Jun 6 09:15:19 2019 +0200

    ipv6: fix EFAULT on sendto with icmpv6 and hdrincl
    
    [ Upstream commit b9aa52c4cb457e7416cc0c95f475e72ef4a61336 ]
    
    The following code returns EFAULT (Bad address):
    
      s = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
      setsockopt(s, SOL_IPV6, IPV6_HDRINCL, 1);
      sendto(ipv6_icmp6_packet, addr);   /* returns -1, errno = EFAULT */
    
    The IPv4 equivalent code works. A workaround is to use IPPROTO_RAW
    instead of IPPROTO_ICMPV6.
    
    The failure happens because 2 bytes are eaten from the msghdr by
    rawv6_probe_proto_opt() starting from commit 19e3c66b52ca ("ipv6
    equivalent of "ipv4: Avoid reading user iov twice after
    raw_probe_proto_opt""), but at that time it was not a problem because
    IPV6_HDRINCL was not yet introduced.
    
    Only eat these 2 bytes if hdrincl == 0.
    
    Fixes: 715f504b1189 ("ipv6: add IPV6_HDRINCL option for raw sockets")
    Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
    Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c64c725dac3ab53811b1b0c69f0f046e5c6ef66f
Author: Olivier Matz <olivier.matz@6wind.com>
Date:   Thu Jun 6 09:15:18 2019 +0200

    ipv6: use READ_ONCE() for inet->hdrincl as in ipv4
    
    [ Upstream commit 59e3e4b52663a9d97efbce7307f62e4bc5c9ce91 ]
    
    As it was done in commit 8f659a03a0ba ("net: ipv4: fix for a race
    condition in raw_sendmsg") and commit 20b50d79974e ("net: ipv4: emulate
    READ_ONCE() on ->hdrincl bit-field in raw_sendmsg()") for ipv4, copy the
    value of inet->hdrincl in a local variable, to avoid introducing a race
    condition in the next commit.
    
    Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43ec962ddfc40070a0a9c3bbc8850bcad9bc1e19
Author: Tim Beale <timbeale@catalyst.net.nz>
Date:   Tue Jun 4 13:56:23 2019 +1200

    udp: only choose unbound UDP socket for multicast when not in a VRF
    
    [ Upstream commit 82ba25c6de200d7a9e9c970c998cdd6dfa8637ae ]
    
    By default, packets received in another VRF should not be passed to an
    unbound socket in the default VRF. This patch updates the IPv4 UDP
    multicast logic to match the unicast VRF logic (in compute_score()),
    as well as the IPv6 mcast logic (in __udp_v6_is_mcast_sock()).
    
    The particular case I noticed was DHCP discover packets going
    to the 255.255.255.255 address, which are handled by
    __udp4_lib_mcast_deliver(). The previous code meant that running
    multiple different DHCP server or relay agent instances across VRFs
    did not work correctly - any server/relay agent in the default VRF
    received DHCP discover packets for all other VRFs.
    
    Fixes: 6da5b0f027a8 ("net: ensure unbound datagram socket to be chosen when not in a VRF")
    Signed-off-by: Tim Beale <timbeale@catalyst.net.nz>
    Reviewed-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c3234ec92590d2768d99a0075c240301dec4b3e
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Wed Jun 5 12:27:14 2019 +0800

    Revert "fib_rules: return 0 directly if an exactly same rule exists when NLM_F_EXCL not supplied"
    
    [ Upstream commit 4970b42d5c362bf873982db7d93245c5281e58f4 ]
    
    This reverts commit e9919a24d3022f72bcadc407e73a6ef17093a849.
    
    Nathan reported the new behaviour breaks Android, as Android just add
    new rules and delete old ones.
    
    If we return 0 without adding dup rules, Android will remove the new
    added rules and causing system to soft-reboot.
    
    Fixes: e9919a24d302 ("fib_rules: return 0 directly if an exactly same rule exists when NLM_F_EXCL not supplied")
    Reported-by: Nathan Chancellor <natechancellor@gmail.com>
    Reported-by: Yaro Slav <yaro330@gmail.com>
    Reported-by: Maciej Żenczykowski <zenczykowski@gmail.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Tested-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b34227e7b616b91962be9ec1bcfdb0d06cf1de8
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Thu Jun 6 15:45:03 2019 +0200

    pktgen: do not sleep with the thread lock held.
    
    [ Upstream commit 720f1de4021f09898b8c8443f3b3e995991b6e3a ]
    
    Currently, the process issuing a "start" command on the pktgen procfs
    interface, acquires the pktgen thread lock and never release it, until
    all pktgen threads are completed. The above can blocks indefinitely any
    other pktgen command and any (even unrelated) netdevice removal - as
    the pktgen netdev notifier acquires the same lock.
    
    The issue is demonstrated by the following script, reported by Matteo:
    
    ip -b - <<'EOF'
            link add type dummy
            link add type veth
            link set dummy0 up
    EOF
    modprobe pktgen
    echo reset >/proc/net/pktgen/pgctrl
    {
            echo rem_device_all
            echo add_device dummy0
    } >/proc/net/pktgen/kpktgend_0
    echo count 0 >/proc/net/pktgen/dummy0
    echo start >/proc/net/pktgen/pgctrl &
    sleep 1
    rmmod veth
    
    Fix the above releasing the thread lock around the sleep call.
    
    Additionally we must prevent racing with forcefull rmmod - as the
    thread lock no more protects from them. Instead, acquire a self-reference
    before waiting for any thread. As a side effect, running
    
    rmmod pktgen
    
    while some thread is running now fails with "module in use" error,
    before this patch such command hanged indefinitely.
    
    Note: the issue predates the commit reported in the fixes tag, but
    this fix can't be applied before the mentioned commit.
    
    v1 -> v2:
     - no need to check for thread existence after flipping the lock,
       pktgen threads are freed only at net exit time
     -
    
    Fixes: 6146e6a43b35 ("[PKTGEN]: Removes thread_{un,}lock() macros.")
    Reported-and-tested-by: Matteo Croce <mcroce@redhat.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2bba1f6379f4c0fe6a203b56b700f587d02be66
Author: Willem de Bruijn <willemb@google.com>
Date:   Fri May 31 12:37:23 2019 -0400

    packet: unconditionally free po->rollover
    
    [ Upstream commit afa0925c6fcc6a8f610e996ca09bc3215048033c ]
    
    Rollover used to use a complex RCU mechanism for assignment, which had
    a race condition. The below patch fixed the bug and greatly simplified
    the logic.
    
    The feature depends on fanout, but the state is private to the socket.
    Fanout_release returns f only when the last member leaves and the
    fanout struct is to be freed.
    
    Destroy rollover unconditionally, regardless of fanout state.
    
    Fixes: 57f015f5eccf2 ("packet: fix crash in fanout_demux_rollover()")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Diagnosed-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bab4057c77a4195f11af2c59f4f68d426fe31722
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Sun Jun 2 15:13:00 2019 +0100

    net: sfp: read eeprom in maximum 16 byte increments
    
    [ Upstream commit 28e74a7cfd6403f0d1c0f8b10b45d6fae37b227e ]
    
    Some SFP modules do not like reads longer than 16 bytes, so read the
    EEPROM in chunks of 16 bytes at a time.  This behaviour is not specified
    in the SFP MSAs, which specifies:
    
     "The serial interface uses the 2-wire serial CMOS E2PROM protocol
      defined for the ATMEL AT24C01A/02/04 family of components."
    
    and
    
     "As long as the SFP+ receives an acknowledge, it shall serially clock
      out sequential data words. The sequence is terminated when the host
      responds with a NACK and a STOP instead of an acknowledge."
    
    We must avoid breaking a read across a 16-bit quantity in the diagnostic
    page, thankfully all 16-bit quantities in that page are naturally
    aligned.
    
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 023998c9946c49de14c6c9cc5a32fef81f5898c0
Author: Zhu Yanjun <yanjun.zhu@oracle.com>
Date:   Thu Jun 6 04:00:03 2019 -0400

    net: rds: fix memory leak in rds_ib_flush_mr_pool
    
    [ Upstream commit 85cb928787eab6a2f4ca9d2a798b6f3bed53ced1 ]
    
    When the following tests last for several hours, the problem will occur.
    
    Server:
        rds-stress -r 1.1.1.16 -D 1M
    Client:
        rds-stress -r 1.1.1.14 -s 1.1.1.16 -D 1M -T 30
    
    The following will occur.
    
    "
    Starting up....
    tsks   tx/s   rx/s  tx+rx K/s    mbi K/s    mbo K/s tx us/c   rtt us cpu
    %
      1      0      0       0.00       0.00       0.00    0.00 0.00 -1.00
      1      0      0       0.00       0.00       0.00    0.00 0.00 -1.00
      1      0      0       0.00       0.00       0.00    0.00 0.00 -1.00
      1      0      0       0.00       0.00       0.00    0.00 0.00 -1.00
    "
    >From vmcore, we can find that clean_list is NULL.
    
    >From the source code, rds_mr_flushd calls rds_ib_mr_pool_flush_worker.
    Then rds_ib_mr_pool_flush_worker calls
    "
     rds_ib_flush_mr_pool(pool, 0, NULL);
    "
    Then in function
    "
    int rds_ib_flush_mr_pool(struct rds_ib_mr_pool *pool,
                             int free_all, struct rds_ib_mr **ibmr_ret)
    "
    ibmr_ret is NULL.
    
    In the source code,
    "
    ...
    list_to_llist_nodes(pool, &unmap_list, &clean_nodes, &clean_tail);
    if (ibmr_ret)
            *ibmr_ret = llist_entry(clean_nodes, struct rds_ib_mr, llnode);
    
    /* more than one entry in llist nodes */
    if (clean_nodes->next)
            llist_add_batch(clean_nodes->next, clean_tail, &pool->clean_list);
    ...
    "
    When ibmr_ret is NULL, llist_entry is not executed. clean_nodes->next
    instead of clean_nodes is added in clean_list.
    So clean_nodes is discarded. It can not be used again.
    The workqueue is executed periodically. So more and more clean_nodes are
    discarded. Finally the clean_list is NULL.
    Then this problem will occur.
    
    Fixes: 1bc144b62524 ("net, rds, Replace xlist in net/rds/xlist.h with llist")
    Signed-off-by: Zhu Yanjun <yanjun.zhu@oracle.com>
    Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d659f5cd70bd25f5e1c4ab45339e0a2c0a12386
Author: Maxime Chevallier <maxime.chevallier@bootlin.com>
Date:   Thu Jun 6 10:42:56 2019 +0200

    net: mvpp2: Use strscpy to handle stat strings
    
    [ Upstream commit d37acd5aa99c57505b64913e0e2624ec3daed8c5 ]
    
    Use a safe strscpy call to copy the ethtool stat strings into the
    relevant buffers, instead of a memcpy that will be accessing
    out-of-bound data.
    
    Fixes: 118d6298f6f0 ("net: mvpp2: add ethtool GOP statistics")
    Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae4133dfdcd5dcb8f198365bb34f460cdeb3961c
Author: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>
Date:   Fri May 31 16:47:25 2019 +0300

    net: ethernet: ti: cpsw_ethtool: fix ethtool ring param set
    
    [ Upstream commit 09faf5a7d7c0bcb07faba072f611937af9dd5788 ]
    
    Fix ability to set RX descriptor number, the reason - initially
    "tx_max_pending" was set incorrectly, but the issue appears after
    adding sanity check, so fix is for "sanity" patch.
    
    Fixes: 37e2d99b59c476 ("ethtool: Ensure new ring parameters are within bounds during SRINGPARAM")
    Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>
    Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5622df0ec696e22d1ae89455eae152c3cfce163
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sun Jun 2 19:10:46 2019 +0800

    ipv6: fix the check before getting the cookie in rt6_get_cookie
    
    [ Upstream commit b7999b07726c16974ba9ca3bb9fe98ecbec5f81c ]
    
    In Jianlin's testing, netperf was broken with 'Connection reset by peer',
    as the cookie check failed in rt6_check() and ip6_dst_check() always
    returned NULL.
    
    It's caused by Commit 93531c674315 ("net/ipv6: separate handling of FIB
    entries from dst based routes"), where the cookie can be got only when
    'c1'(see below) for setting dst_cookie whereas rt6_check() is called
    when !'c1' for checking dst_cookie, as we can see in ip6_dst_check().
    
    Since in ip6_dst_check() both rt6_dst_from_check() (c1) and rt6_check()
    (!c1) will check the 'from' cookie, this patch is to remove the c1 check
    in rt6_get_cookie(), so that the dst_cookie can always be set properly.
    
    c1:
      (rt->rt6i_flags & RTF_PCPU || unlikely(!list_empty(&rt->rt6i_uncached)))
    
    Fixes: 93531c674315 ("net/ipv6: separate handling of FIB entries from dst based routes")
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b470bcc4123e2adb88ad0abbbbd96fcccdaff609
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sun Jun 2 19:10:24 2019 +0800

    ipv4: not do cache for local delivery if bc_forwarding is enabled
    
    [ Upstream commit 0a90478b93a46bdcd56ba33c37566a993e455d54 ]
    
    With the topo:
    
        h1 ---| rp1            |
              |     route  rp3 |--- h3 (192.168.200.1)
        h2 ---| rp2            |
    
    If rp1 bc_forwarding is set while rp2 bc_forwarding is not, after
    doing "ping 192.168.200.255" on h1, then ping 192.168.200.255 on
    h2, and the packets can still be forwared.
    
    This issue was caused by the input route cache. It should only do
    the cache for either bc forwarding or local delivery. Otherwise,
    local delivery can use the route cache for bc forwarding of other
    interfaces.
    
    This patch is to fix it by not doing cache for local delivery if
    all.bc_forwarding is enabled.
    
    Note that we don't fix it by checking route cache local flag after
    rt_cache_valid() in "local_input:" and "ip_mkroute_input", as the
    common route code shouldn't be touched for bc_forwarding.
    
    Fixes: 5cbf777cfdf6 ("route: add support for directed broadcast forwarding")
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8bcd52096232d83be1beddecd621a9b8aee08c88
Author: Neil Horman <nhorman@tuxdriver.com>
Date:   Mon Jun 3 16:32:59 2019 -0400

    Fix memory leak in sctp_process_init
    
    [ Upstream commit 0a8dd9f67cd0da7dc284f48b032ce00db1a68791 ]
    
    syzbot found the following leak in sctp_process_init
    BUG: memory leak
    unreferenced object 0xffff88810ef68400 (size 1024):
      comm "syz-executor273", pid 7046, jiffies 4294945598 (age 28.770s)
      hex dump (first 32 bytes):
        1d de 28 8d de 0b 1b e3 b5 c2 f9 68 fd 1a 97 25  ..(........h...%
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<00000000a02cebbd>] kmemleak_alloc_recursive include/linux/kmemleak.h:55
    [inline]
        [<00000000a02cebbd>] slab_post_alloc_hook mm/slab.h:439 [inline]
        [<00000000a02cebbd>] slab_alloc mm/slab.c:3326 [inline]
        [<00000000a02cebbd>] __do_kmalloc mm/slab.c:3658 [inline]
        [<00000000a02cebbd>] __kmalloc_track_caller+0x15d/0x2c0 mm/slab.c:3675
        [<000000009e6245e6>] kmemdup+0x27/0x60 mm/util.c:119
        [<00000000dfdc5d2d>] kmemdup include/linux/string.h:432 [inline]
        [<00000000dfdc5d2d>] sctp_process_init+0xa7e/0xc20
    net/sctp/sm_make_chunk.c:2437
        [<00000000b58b62f8>] sctp_cmd_process_init net/sctp/sm_sideeffect.c:682
    [inline]
        [<00000000b58b62f8>] sctp_cmd_interpreter net/sctp/sm_sideeffect.c:1384
    [inline]
        [<00000000b58b62f8>] sctp_side_effects net/sctp/sm_sideeffect.c:1194
    [inline]
        [<00000000b58b62f8>] sctp_do_sm+0xbdc/0x1d60 net/sctp/sm_sideeffect.c:1165
        [<0000000044e11f96>] sctp_assoc_bh_rcv+0x13c/0x200
    net/sctp/associola.c:1074
        [<00000000ec43804d>] sctp_inq_push+0x7f/0xb0 net/sctp/inqueue.c:95
        [<00000000726aa954>] sctp_backlog_rcv+0x5e/0x2a0 net/sctp/input.c:354
        [<00000000d9e249a8>] sk_backlog_rcv include/net/sock.h:950 [inline]
        [<00000000d9e249a8>] __release_sock+0xab/0x110 net/core/sock.c:2418
        [<00000000acae44fa>] release_sock+0x37/0xd0 net/core/sock.c:2934
        [<00000000963cc9ae>] sctp_sendmsg+0x2c0/0x990 net/sctp/socket.c:2122
        [<00000000a7fc7565>] inet_sendmsg+0x64/0x120 net/ipv4/af_inet.c:802
        [<00000000b732cbd3>] sock_sendmsg_nosec net/socket.c:652 [inline]
        [<00000000b732cbd3>] sock_sendmsg+0x54/0x70 net/socket.c:671
        [<00000000274c57ab>] ___sys_sendmsg+0x393/0x3c0 net/socket.c:2292
        [<000000008252aedb>] __sys_sendmsg+0x80/0xf0 net/socket.c:2330
        [<00000000f7bf23d1>] __do_sys_sendmsg net/socket.c:2339 [inline]
        [<00000000f7bf23d1>] __se_sys_sendmsg net/socket.c:2337 [inline]
        [<00000000f7bf23d1>] __x64_sys_sendmsg+0x23/0x30 net/socket.c:2337
        [<00000000a8b4131f>] do_syscall_64+0x76/0x1a0 arch/x86/entry/common.c:3
    
    The problem was that the peer.cookie value points to an skb allocated
    area on the first pass through this function, at which point it is
    overwritten with a heap allocated value, but in certain cases, where a
    COOKIE_ECHO chunk is included in the packet, a second pass through
    sctp_process_init is made, where the cookie value is re-allocated,
    leaking the first allocation.
    
    Fix is to always allocate the cookie value, and free it when we are done
    using it.
    
    Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
    Reported-by: syzbot+f7e9153b037eac9b1df8@syzkaller.appspotmail.com
    CC: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    CC: "David S. Miller" <davem@davemloft.net>
    CC: netdev@vger.kernel.org
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 698d9dc3ea67ca1293cf505ed742558f1f404de5
Author: Vivien Didelot <vivien.didelot@gmail.com>
Date:   Mon Jun 3 16:57:13 2019 -0400

    ethtool: fix potential userspace buffer overflow
    
    [ Upstream commit 0ee4e76937d69128a6a66861ba393ebdc2ffc8a2 ]
    
    ethtool_get_regs() allocates a buffer of size ops->get_regs_len(),
    and pass it to the kernel driver via ops->get_regs() for filling.
    
    There is no restriction about what the kernel drivers can or cannot do
    with the open ethtool_regs structure. They usually set regs->version
    and ignore regs->len or set it to the same size as ops->get_regs_len().
    
    But if userspace allocates a smaller buffer for the registers dump,
    we would cause a userspace buffer overflow in the final copy_to_user()
    call, which uses the regs.len value potentially reset by the driver.
    
    To fix this, make this case obvious and store regs.len before calling
    ops->get_regs(), to only copy as much data as requested by userspace,
    up to the value returned by ops->get_regs_len().
    
    While at it, remove the redundant check for non-null regbuf.
    
    Signed-off-by: Vivien Didelot <vivien.didelot@gmail.com>
    Reviewed-by: Michal Kubecek <mkubecek@suse.cz>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>