commit 49a6ef532c77a869ac776d7764e1cf46755faba2
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Dec 17 10:07:13 2018 +0100

    Linux 3.18.130

commit 1ee4aba9b0f5aff0a887c92de5df5f15b72e1b79
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Thu Sep 15 08:36:07 2016 -0600

    selftests: Move networking/timestamping from Documentation
    
    commit 3d2c86e3057995270e08693231039d9d942871f0 upstream.
    
    Remove networking from Documentation Makefile to move the test to
    selftests. Update networking/timestamping Makefile to work under
    selftests. These tests will not be run as part of selftests suite
    and will not be included in install targets. They can be built and
    run separately for now.
    
    This is part of the effort to move runnable code from Documentation.
    
    Acked-by: Jonathan Corbet <corbet@lwn.net>
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    [ added to 3.18.y stable to remove a build warning - gregkh]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit deadac7f194395f2b95cd310eda1aeb0d504797a
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Sep 5 09:33:32 2017 +0200

    staging: rts5208: fix gcc-8 logic error warning
    
    commit 58930cced012adb01bc78b3687049b17ef44d0a3 upstream.
    
    As gcc-8 points out, the bit mask check makes no sense here:
    
    drivers/staging/rts5208/sd.c: In function 'ext_sd_send_cmd_get_rsp':
    drivers/staging/rts5208/sd.c:4130:25: error: bitwise comparison always evaluates to true [-Werror=tautological-compare]
    
    However, the code is even more bogus, as we have already
    checked for the SD_RSP_TYPE_R0 case earlier in the function
    and returned success. As seen in the mmc/sd driver core,
    SD_RSP_TYPE_R0 means "no response" anyway, so checking for
    a particular response would not help either.
    
    This just removes the nonsensical code to get rid of the
    warning.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ecf8d2b259c29edfea037b55c02d76613f9dcb06
Author: Dmitry Kalinkin <dmitry.kalinkin@gmail.com>
Date:   Thu May 28 15:07:07 2015 +0300

    vme: ca91cx42: fix LM_CTL address mask
    
    commit 5a2f8831243337dd05df42174b4d7b1e01daacda upstream.
    
    Universe II datasheet defines following address space values
    for LM_CTL[16:18]
    
    000=A16
    001=A24
    010=A32
    011,100,101=Reserved
    110=User1
    111=User2
    
    Mask 5<<16 is not the right one for matching [16:18], instead we should
    use 7<<16.
    
    Signed-off-by: Dmitry Kalinkin <dmitry.kalinkin@gmail.com>
    Cc: Igor Alekseev <igor.alekseev@itep.ru>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d94d6b2d7284fb3894fd0164f22ffb5ba7b725d
Author: Augusto Mecking Caringi <augustocaringi@gmail.com>
Date:   Tue Jan 10 10:45:00 2017 +0000

    vme: Fix wrong pointer utilization in ca91cx42_slave_get
    
    commit c8a6a09c1c617402cc9254b2bc8da359a0347d75 upstream.
    
    In ca91cx42_slave_get function, the value pointed by vme_base pointer is
    set through:
    
    *vme_base = ioread32(bridge->base + CA91CX42_VSI_BS[i]);
    
    So it must be dereferenced to be used in calculation of pci_base:
    
    *pci_base = (dma_addr_t)*vme_base + pci_offset;
    
    This bug was caught thanks to the following gcc warning:
    
    drivers/vme/bridges/vme_ca91cx42.c: In function ‘ca91cx42_slave_get’:
    drivers/vme/bridges/vme_ca91cx42.c:467:14: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
    *pci_base = (dma_addr_t)vme_base + pci_offset;
    
    Signed-off-by: Augusto Mecking Caringi <augustocaringi@gmail.com>
    Acked-By: Martyn Welch <martyn@welchs.me.uk>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b0673c3f6989976265f8816ab250f39ee33f47a
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Dec 14 15:32:41 2017 -0800

    exec: avoid gcc-8 warning for get_task_comm
    
    commit 3756f6401c302617c5e091081ca4d26ab604bec5 upstream.
    
    gcc-8 warns about using strncpy() with the source size as the limit:
    
      fs/exec.c:1223:32: error: argument to 'sizeof' in 'strncpy' call is the same expression as the source; did you mean to use the size of the destination? [-Werror=sizeof-pointer-memaccess]
    
    This is indeed slightly suspicious, as it protects us from source
    arguments without NUL-termination, but does not guarantee that the
    destination is terminated.
    
    This keeps the strncpy() to ensure we have properly padded target
    buffer, but ensures that we use the correct length, by passing the
    actual length of the destination buffer as well as adding a build-time
    check to ensure it is exactly TASK_COMM_LEN.
    
    There are only 23 callsites which I all reviewed to ensure this is
    currently the case.  We could get away with doing only the check or
    passing the right length, but it doesn't hurt to do both.
    
    Link: http://lkml.kernel.org/r/20171205151724.1764896-1-arnd@arndb.de
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Suggested-by: Kees Cook <keescook@chromium.org>
    Acked-by: Kees Cook <keescook@chromium.org>
    Acked-by: Ingo Molnar <mingo@kernel.org>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Serge Hallyn <serge@hallyn.com>
    Cc: James Morris <james.l.morris@oracle.com>
    Cc: Aleksa Sarai <asarai@suse.de>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Frederic Weisbecker <frederic@kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1eb9d79208d9ef30ee5a83a80a888b015521a0b4
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Sat Jun 2 09:02:09 2018 -0700

    kconfig: Avoid format overflow warning from GCC 8.1
    
    commit 2ae89c7a82ea9d81a19b4fc2df23bef4b112f24e upstream.
    
    In file included from scripts/kconfig/zconf.tab.c:2485:
    scripts/kconfig/confdata.c: In function ‘conf_write’:
    scripts/kconfig/confdata.c:773:22: warning: ‘%s’ directive writing likely 7 or more bytes into a region of size between 1 and 4097 [-Wformat-overflow=]
      sprintf(newname, "%s%s", dirname, basename);
                          ^~
    scripts/kconfig/confdata.c:773:19: note: assuming directive output of 7 bytes
      sprintf(newname, "%s%s", dirname, basename);
                       ^~~~~~
    scripts/kconfig/confdata.c:773:2: note: ‘sprintf’ output 1 or more bytes (assuming 4104) into a destination of size 4097
      sprintf(newname, "%s%s", dirname, basename);
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    scripts/kconfig/confdata.c:776:23: warning: ‘.tmpconfig.’ directive writing 11 bytes into a region of size between 1 and 4097 [-Wformat-overflow=]
       sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid());
                           ^~~~~~~~~~~
    scripts/kconfig/confdata.c:776:3: note: ‘sprintf’ output between 13 and 4119 bytes into a destination of size 4097
       sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid());
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Increase the size of tmpname and newname to make GCC happy.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78047d77b200f0f94525010a4b420e8ff9c24b3f
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sun Jul 1 13:57:24 2018 -0700

    staging: speakup: Replace strncpy with memcpy
    
    commit fd29edc7232bc19f969e8f463138afc5472b3d5f upstream.
    
    gcc 8.1.0 generates the following warnings.
    
    drivers/staging/speakup/kobjects.c: In function 'punc_store':
    drivers/staging/speakup/kobjects.c:522:2: warning:
            'strncpy' output truncated before terminating nul
            copying as many bytes from a string as its length
    drivers/staging/speakup/kobjects.c:504:6: note: length computed here
    
    drivers/staging/speakup/kobjects.c: In function 'synth_store':
    drivers/staging/speakup/kobjects.c:391:2: warning:
            'strncpy' output truncated before terminating nul
            copying as many bytes from a string as its length
    drivers/staging/speakup/kobjects.c:388:8: note: length computed here
    
    Using strncpy() is indeed less than perfect since the length of data to
    be copied has already been determined with strlen(). Replace strncpy()
    with memcpy() to address the warning and optimize the code a little.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e643399ec4d9ce7dd20771bfdfcc41f36cd63086
Author: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Date:   Thu Aug 25 23:14:12 2016 +0530

    matroxfb: fix size of memcpy
    
    commit 59921b239056fb6389a865083284e00ce0518db6 upstream.
    
    hw->DACreg has a size of 80 bytes and MGADACbpp32 has 21. So when
    memcpy copies MGADACbpp32 to hw->DACreg it copies 80 bytes but
    only 21 bytes are valid.
    
    Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1bb31e3fbbdb8fd4c64cfbd7715229b32b795662
Author: Namhyung Kim <namhyung@kernel.org>
Date:   Wed Oct 19 10:23:41 2016 +0900

    pstore: Convert console write to use ->write_buf
    
    [ Upstream commit 70ad35db3321a6d129245979de4ac9d06eed897c ]
    
    Maybe I'm missing something, but I don't know why it needs to copy the
    input buffer to psinfo->buf and then write.  Instead we can write the
    input buffer directly.  The only implementation that supports console
    message (i.e. ramoops) already does it for ftrace messages.
    
    For the upcoming virtio backend driver, it needs to protect psinfo->buf
    overwritten from console messages.  If it could use ->write_buf method
    instead of ->write, the problem will be solved easily.
    
    Cc: Stefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c65f79f6b78ec40c9b6e111192ddc74bb3f67428
Author: Pan Bian <bianpan2016@163.com>
Date:   Fri Nov 30 14:10:54 2018 -0800

    ocfs2: fix potential use after free
    
    [ Upstream commit 164f7e586739d07eb56af6f6d66acebb11f315c8 ]
    
    ocfs2_get_dentry() calls iput(inode) to drop the reference count of
    inode, and if the reference count hits 0, inode is freed.  However, in
    this function, it then reads inode->i_generation, which may result in a
    use after free bug.  Move the put operation later.
    
    Link: http://lkml.kernel.org/r/1543109237-110227-1-git-send-email-bianpan2016@163.com
    Fixes: 781f200cb7a("ocfs2: Remove masklog ML_EXPORT.")
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Joseph Qi <jiangqi903@gmail.com>
    Cc: Changwei Ge <ge.changwei@h3c.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 35318849bc809a468b1f9ba45bb126fb4f4c93a8
Author: Qian Cai <cai@gmx.us>
Date:   Fri Nov 30 14:09:48 2018 -0800

    debugobjects: avoid recursive calls with kmemleak
    
    [ Upstream commit 8de456cf87ba863e028c4dd01bae44255ce3d835 ]
    
    CONFIG_DEBUG_OBJECTS_RCU_HEAD does not play well with kmemleak due to
    recursive calls.
    
    fill_pool
      kmemleak_ignore
        make_black_object
          put_object
            __call_rcu (kernel/rcu/tree.c)
              debug_rcu_head_queue
                debug_object_activate
                  debug_object_init
                    fill_pool
                      kmemleak_ignore
                        make_black_object
                          ...
    
    So add SLAB_NOLEAKTRACE to kmem_cache_create() to not register newly
    allocated debug objects at all.
    
    Link: http://lkml.kernel.org/r/20181126165343.2339-1-cai@gmx.us
    Signed-off-by: Qian Cai <cai@gmx.us>
    Suggested-by: Catalin Marinas <catalin.marinas@arm.com>
    Acked-by: Waiman Long <longman@redhat.com>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Yang Shi <yang.shi@linux.alibaba.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e148582796a64b6f456c7bf48836ef9fffb71f24
Author: Pan Bian <bianpan2016@163.com>
Date:   Fri Nov 30 14:09:18 2018 -0800

    hfsplus: do not free node before using
    
    [ Upstream commit c7d7d620dcbd2a1c595092280ca943f2fced7bbd ]
    
    hfs_bmap_free() frees node via hfs_bnode_put(node).  However it then
    reads node->this when dumping error message on an error path, which may
    result in a use-after-free bug.  This patch frees node only when it is
    never used.
    
    Link: http://lkml.kernel.org/r/1543053441-66942-1-git-send-email-bianpan2016@163.com
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Ernesto A. Fernandez <ernesto.mnd.fernandez@gmail.com>
    Cc: Joe Perches <joe@perches.com>
    Cc: Viacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 417baf058c05de8aa7ca06ae1a0adb769ea7e1e2
Author: Pan Bian <bianpan2016@163.com>
Date:   Fri Nov 30 14:09:14 2018 -0800

    hfs: do not free node before using
    
    [ Upstream commit ce96a407adef126870b3f4a1b73529dd8aa80f49 ]
    
    hfs_bmap_free() frees the node via hfs_bnode_put(node).  However, it
    then reads node->this when dumping error message on an error path, which
    may result in a use-after-free bug.  This patch frees the node only when
    it is never again used.
    
    Link: http://lkml.kernel.org/r/1542963889-128825-1-git-send-email-bianpan2016@163.com
    Fixes: a1185ffa2fc ("HFS rewrite")
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Joe Perches <joe@perches.com>
    Cc: Ernesto A. Fernandez <ernesto.mnd.fernandez@gmail.com>
    Cc: Viacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 408303b1c3791e7be706cb6eecf1f466e9ed9c19
Author: Larry Chen <lchen@suse.com>
Date:   Fri Nov 30 14:08:56 2018 -0800

    ocfs2: fix deadlock caused by ocfs2_defrag_extent()
    
    [ Upstream commit e21e57445a64598b29a6f629688f9b9a39e7242a ]
    
    ocfs2_defrag_extent may fall into deadlock.
    
    ocfs2_ioctl_move_extents
        ocfs2_ioctl_move_extents
          ocfs2_move_extents
            ocfs2_defrag_extent
              ocfs2_lock_allocators_move_extents
    
                ocfs2_reserve_clusters
                  inode_lock GLOBAL_BITMAP_SYSTEM_INODE
    
              __ocfs2_flush_truncate_log
                  inode_lock GLOBAL_BITMAP_SYSTEM_INODE
    
    As backtrace shows above, ocfs2_reserve_clusters() will call inode_lock
    against the global bitmap if local allocator has not sufficient cluters.
    Once global bitmap could meet the demand, ocfs2_reserve_cluster will
    return success with global bitmap locked.
    
    After ocfs2_reserve_cluster(), if truncate log is full,
    __ocfs2_flush_truncate_log() will definitely fall into deadlock because
    it needs to inode_lock global bitmap, which has already been locked.
    
    To fix this bug, we could remove from
    ocfs2_lock_allocators_move_extents() the code which intends to lock
    global allocator, and put the removed code after
    __ocfs2_flush_truncate_log().
    
    ocfs2_lock_allocators_move_extents() is referred by 2 places, one is
    here, the other does not need the data allocator context, which means
    this patch does not affect the caller so far.
    
    Link: http://lkml.kernel.org/r/20181101071422.14470-1-lchen@suse.com
    Signed-off-by: Larry Chen <lchen@suse.com>
    Reviewed-by: Changwei Ge <ge.changwei@h3c.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Joseph Qi <jiangqi903@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ddf7572f6e3bfed9d6d66e56adbe88702a8c3938
Author: Colin Ian King <colin.king@canonical.com>
Date:   Tue Jul 17 09:53:42 2018 +0100

    fscache, cachefiles: remove redundant variable 'cache'
    
    [ Upstream commit 31ffa563833576bd49a8bf53120568312755e6e2 ]
    
    Variable 'cache' is being assigned but is never used hence it is
    redundant and can be removed.
    
    Cleans up clang warning:
    warning: variable 'cache' set but not used [-Wunused-but-set-variable]
    
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 64703bf3ad57b08181cb2b682c6aa294ff78a39f
Author: NeilBrown <neilb@suse.com>
Date:   Fri Oct 26 17:16:29 2018 +1100

    fscache: fix race between enablement and dropping of object
    
    [ Upstream commit c5a94f434c82529afda290df3235e4d85873c5b4 ]
    
    It was observed that a process blocked indefintely in
    __fscache_read_or_alloc_page(), waiting for FSCACHE_COOKIE_LOOKING_UP
    to be cleared via fscache_wait_for_deferred_lookup().
    
    At this time, ->backing_objects was empty, which would normaly prevent
    __fscache_read_or_alloc_page() from getting to the point of waiting.
    This implies that ->backing_objects was cleared *after*
    __fscache_read_or_alloc_page was was entered.
    
    When an object is "killed" and then "dropped",
    FSCACHE_COOKIE_LOOKING_UP is cleared in fscache_lookup_failure(), then
    KILL_OBJECT and DROP_OBJECT are "called" and only in DROP_OBJECT is
    ->backing_objects cleared.  This leaves a window where
    something else can set FSCACHE_COOKIE_LOOKING_UP and
    __fscache_read_or_alloc_page() can start waiting, before
    ->backing_objects is cleared
    
    There is some uncertainty in this analysis, but it seems to be fit the
    observations.  Adding the wake in this patch will be handled correctly
    by __fscache_read_or_alloc_page(), as it checks if ->backing_objects
    is empty again, after waiting.
    
    Customer which reported the hang, also report that the hang cannot be
    reproduced with this fix.
    
    The backtrace for the blocked process looked like:
    
    PID: 29360  TASK: ffff881ff2ac0f80  CPU: 3   COMMAND: "zsh"
     #0 [ffff881ff43efbf8] schedule at ffffffff815e56f1
     #1 [ffff881ff43efc58] bit_wait at ffffffff815e64ed
     #2 [ffff881ff43efc68] __wait_on_bit at ffffffff815e61b8
     #3 [ffff881ff43efca0] out_of_line_wait_on_bit at ffffffff815e625e
     #4 [ffff881ff43efd08] fscache_wait_for_deferred_lookup at ffffffffa04f2e8f [fscache]
     #5 [ffff881ff43efd18] __fscache_read_or_alloc_page at ffffffffa04f2ffe [fscache]
     #6 [ffff881ff43efd58] __nfs_readpage_from_fscache at ffffffffa0679668 [nfs]
     #7 [ffff881ff43efd78] nfs_readpage at ffffffffa067092b [nfs]
     #8 [ffff881ff43efda0] generic_file_read_iter at ffffffff81187a73
     #9 [ffff881ff43efe50] nfs_file_read at ffffffffa066544b [nfs]
    #10 [ffff881ff43efe70] __vfs_read at ffffffff811fc756
    #11 [ffff881ff43efee8] vfs_read at ffffffff811fccfa
    #12 [ffff881ff43eff18] sys_read at ffffffff811fda62
    #13 [ffff881ff43eff50] entry_SYSCALL_64_fastpath at ffffffff815e986e
    
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 97f2494f461a970970d40883509fc8b570d561a4
Author: Y.C. Chen <yc_chen@aspeedtech.com>
Date:   Thu Nov 22 11:56:28 2018 +0800

    drm/ast: fixed reading monitor EDID not stable issue
    
    [ Upstream commit 300625620314194d9e6d4f6dda71f2dc9cf62d9f ]
    
    v1: over-sample data to increase the stability with some specific monitors
    v2: refine to avoid infinite loop
    v3: remove un-necessary "volatile" declaration
    
    [airlied: fix two checkpatch warnings]
    
    Signed-off-by: Y.C. Chen <yc_chen@aspeedtech.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/1542858988-1127-1-git-send-email-yc_chen@aspeedtech.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 38c29898c6bfbf8d566f451fb74cb072929c8a8d
Author: Yi Wang <wang.yi59@zte.com.cn>
Date:   Thu Nov 8 16:48:36 2018 +0800

    KVM: x86: fix empty-body warnings
    
    [ Upstream commit 354cb410d87314e2eda344feea84809e4261570a ]
    
    We get the following warnings about empty statements when building
    with 'W=1':
    
    arch/x86/kvm/lapic.c:632:53: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
    arch/x86/kvm/lapic.c:1907:42: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
    arch/x86/kvm/lapic.c:1936:65: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
    arch/x86/kvm/lapic.c:1975:44: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
    
    Rework the debug helper macro to get rid of these warnings.
    
    Signed-off-by: Yi Wang <wang.yi59@zte.com.cn>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6d22ef74f416cc45567ebcb64fd0c780f9317077
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sun Nov 25 00:17:07 2018 +0200

    USB: omap_udc: fix USB gadget functionality on Palm Tungsten E
    
    [ Upstream commit 2c2322fbcab8102b8cadc09d66714700a2da42c2 ]
    
    On Palm TE nothing happens when you try to use gadget drivers and plug
    the USB cable. Fix by adding the board to the vbus sense quirk list.
    
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0f5a5ea30702ed60f2183bdca44b2b5a8d4252a3
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sun Nov 25 00:17:06 2018 +0200

    USB: omap_udc: fix omap_udc_start() on 15xx machines
    
    [ Upstream commit 6ca6695f576b8453fe68865e84d25946d63b10ad ]
    
    On OMAP 15xx machines there are no transceivers, and omap_udc_start()
    always fails as it forgot to adjust the default return value.
    
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3737d8b658159dca7fc48f542f3eda8c0a3145be
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sun Nov 25 00:17:05 2018 +0200

    USB: omap_udc: fix crashes on probe error and module removal
    
    [ Upstream commit 99f700366fcea1aa2fa3c49c99f371670c3c62f8 ]
    
    We currently crash if usb_add_gadget_udc_release() fails, since the
    udc->done is not initialized until in the remove function.
    Furthermore, on module removal the udc data is accessed although
    the release function is already triggered by usb_del_gadget_udc()
    early in the function.
    
    Fix by rewriting the release and remove functions, basically moving
    all the cleanup into the release function, and doing the completion
    only in the module removal case.
    
    The patch fixes omap_udc module probe with a failing gadged, and also
    allows the removal of omap_udc. Tested by running "modprobe omap_udc;
    modprobe -r omap_udc" in a loop.
    
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9ea692784b84a0e03ace94b6a20cc6496930b84a
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sun Nov 25 00:17:04 2018 +0200

    USB: omap_udc: use devm_request_irq()
    
    [ Upstream commit 286afdde1640d8ea8916a0f05e811441fbbf4b9d ]
    
    The current code fails to release the third irq on the error path
    (observed by reading the code), and we get also multiple WARNs with
    failing gadget drivers due to duplicate IRQ releases. Fix by using
    devm_request_irq().
    
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4eb2095c80a56fec125c06465a2f61dcc3ed5369
Author: Pan Bian <bianpan2016@163.com>
Date:   Fri Nov 23 15:56:33 2018 +0800

    exportfs: do not read dentry after free
    
    [ Upstream commit 2084ac6c505a58f7efdec13eba633c6aaa085ca5 ]
    
    The function dentry_connected calls dput(dentry) to drop the previously
    acquired reference to dentry. In this case, dentry can be released.
    After that, IS_ROOT(dentry) checks the condition
    (dentry == dentry->d_parent), which may result in a use-after-free bug.
    This patch directly compares dentry with its parent obtained before
    dropping the reference.
    
    Fixes: a056cc8934c("exportfs: stop retrying once we race with
    rename/remove")
    
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ba318581cddd7a254cf854fa9ad8bd5170edd18e
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Wed Nov 14 13:06:23 2018 +0200

    ASoC: omap-dmic: Add pm_qos handling to avoid overruns with CPU_IDLE
    
    [ Upstream commit ffdcc3638c58d55a6fa68b6e5dfd4fb4109652eb ]
    
    We need to block sleep states which would require longer time to leave than
    the time the DMA must react to the DMA request in order to keep the FIFO
    serviced without overrun.
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d536c4e93c3dd0b215e80cc523b46ef9f9481a1c
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Wed Nov 14 13:06:22 2018 +0200

    ASoC: omap-mcpdm: Add pm_qos handling to avoid under/overruns with CPU_IDLE
    
    [ Upstream commit 373a500e34aea97971c9d71e45edad458d3da98f ]
    
    We need to block sleep states which would require longer time to leave than
    the time the DMA must react to the DMA request in order to keep the FIFO
    serviced without under of overrun.
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e91a56155d83d512263f5a09ea0e53aee2488beb
Author: Robbie Ko <robbieko@synology.com>
Date:   Wed Nov 14 18:32:37 2018 +0000

    Btrfs: send, fix infinite loop due to directory rename dependencies
    
    [ Upstream commit a4390aee72713d9e73f1132bcdeb17d72fbbf974 ]
    
    When doing an incremental send, due to the need of delaying directory move
    (rename) operations we can end up in infinite loop at
    apply_children_dir_moves().
    
    An example scenario that triggers this problem is described below, where
    directory names correspond to the numbers of their respective inodes.
    
    Parent snapshot:
    
     .
     |--- 261/
           |--- 271/
                 |--- 266/
                       |--- 259/
                       |--- 260/
                       |     |--- 267
                       |
                       |--- 264/
                       |     |--- 258/
                       |           |--- 257/
                       |
                       |--- 265/
                       |--- 268/
                       |--- 269/
                       |     |--- 262/
                       |
                       |--- 270/
                       |--- 272/
                       |     |--- 263/
                       |     |--- 275/
                       |
                       |--- 274/
                             |--- 273/
    
    Send snapshot:
    
     .
     |-- 275/
          |-- 274/
               |-- 273/
                    |-- 262/
                         |-- 269/
                              |-- 258/
                                   |-- 271/
                                        |-- 268/
                                             |-- 267/
                                                  |-- 270/
                                                       |-- 259/
                                                       |    |-- 265/
                                                       |
                                                       |-- 272/
                                                            |-- 257/
                                                                 |-- 260/
                                                                 |-- 264/
                                                                      |-- 263/
                                                                           |-- 261/
                                                                                |-- 266/
    
    When processing inode 257 we delay its move (rename) operation because its
    new parent in the send snapshot, inode 272, was not yet processed. Then
    when processing inode 272, we delay the move operation for that inode
    because inode 274 is its ancestor in the send snapshot. Finally we delay
    the move operation for inode 274 when processing it because inode 275 is
    its new parent in the send snapshot and was not yet moved.
    
    When finishing processing inode 275, we start to do the move operations
    that were previously delayed (at apply_children_dir_moves()), resulting in
    the following iterations:
    
    1) We issue the move operation for inode 274;
    
    2) Because inode 262 depended on the move operation of inode 274 (it was
       delayed because 274 is its ancestor in the send snapshot), we issue the
       move operation for inode 262;
    
    3) We issue the move operation for inode 272, because it was delayed by
       inode 274 too (ancestor of 272 in the send snapshot);
    
    4) We issue the move operation for inode 269 (it was delayed by 262);
    
    5) We issue the move operation for inode 257 (it was delayed by 272);
    
    6) We issue the move operation for inode 260 (it was delayed by 272);
    
    7) We issue the move operation for inode 258 (it was delayed by 269);
    
    8) We issue the move operation for inode 264 (it was delayed by 257);
    
    9) We issue the move operation for inode 271 (it was delayed by 258);
    
    10) We issue the move operation for inode 263 (it was delayed by 264);
    
    11) We issue the move operation for inode 268 (it was delayed by 271);
    
    12) We verify if we can issue the move operation for inode 270 (it was
        delayed by 271). We detect a path loop in the current state, because
        inode 267 needs to be moved first before we can issue the move
        operation for inode 270. So we delay again the move operation for
        inode 270, this time we will attempt to do it after inode 267 is
        moved;
    
    13) We issue the move operation for inode 261 (it was delayed by 263);
    
    14) We verify if we can issue the move operation for inode 266 (it was
        delayed by 263). We detect a path loop in the current state, because
        inode 270 needs to be moved first before we can issue the move
        operation for inode 266. So we delay again the move operation for
        inode 266, this time we will attempt to do it after inode 270 is
        moved (its move operation was delayed in step 12);
    
    15) We issue the move operation for inode 267 (it was delayed by 268);
    
    16) We verify if we can issue the move operation for inode 266 (it was
        delayed by 270). We detect a path loop in the current state, because
        inode 270 needs to be moved first before we can issue the move
        operation for inode 266. So we delay again the move operation for
        inode 266, this time we will attempt to do it after inode 270 is
        moved (its move operation was delayed in step 12). So here we added
        again the same delayed move operation that we added in step 14;
    
    17) We attempt again to see if we can issue the move operation for inode
        266, and as in step 16, we realize we can not due to a path loop in
        the current state due to a dependency on inode 270. Again we delay
        inode's 266 rename to happen after inode's 270 move operation, adding
        the same dependency to the empty stack that we did in steps 14 and 16.
        The next iteration will pick the same move dependency on the stack
        (the only entry) and realize again there is still a path loop and then
        again the same dependency to the stack, over and over, resulting in
        an infinite loop.
    
    So fix this by preventing adding the same move dependency entries to the
    stack by removing each pending move record from the red black tree of
    pending moves. This way the next call to get_pending_dir_moves() will
    not return anything for the current parent inode.
    
    A test case for fstests, with this reproducer, follows soon.
    
    Signed-off-by: Robbie Ko <robbieko@synology.com>
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    [Wrote changelog with example and more clear explanation]
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d2fc85f406b7d50bcc1f18d0db57379d71867a4d
Author: Huacai Chen <chenhc@lemote.com>
Date:   Thu Nov 15 10:44:57 2018 +0800

    hwmon: (w83795) temp4_type has writable permission
    
    [ Upstream commit 09aaf6813cfca4c18034fda7a43e68763f34abb1 ]
    
    Both datasheet and comments of store_temp_mode() tell us that temp1~4_type
    is writable, so fix it.
    
    Signed-off-by: Yao Wang <wangyao@lemote.com>
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Fixes: 39deb6993e7c (" hwmon: (w83795) Simplify temperature sensor type handling")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9453bca3441e67f70f1860a493d3989cd597aca2
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Tue Nov 13 15:38:22 2018 +0000

    s390/cpum_cf: Reject request for sampling in event initialization
    
    [ Upstream commit 613a41b0d16e617f46776a93b975a1eeea96417c ]
    
    On s390 command perf top fails
    [root@s35lp76 perf] # ./perf top -F100000  --stdio
       Error:
       cycles: PMU Hardware doesn't support sampling/overflow-interrupts.
            Try 'perf stat'
    [root@s35lp76 perf] #
    
    Using event -e rb0000 works as designed.  Event rb0000 is the event
    number of the sampling facility for basic sampling.
    
    During system start up the following PMUs are installed in the kernel's
    PMU list (from head to tail):
       cpum_cf --> s390 PMU counter facility device driver
       cpum_sf --> s390 PMU sampling facility device driver
       uprobe
       kprobe
       tracepoint
       task_clock
       cpu_clock
    
    Perf top executes following functions and calls perf_event_open(2) system
    call with different parameters many times:
    
    cmd_top
    --> __cmd_top
        --> perf_evlist__add_default
            --> __perf_evlist__add_default
                --> perf_evlist__new_cycles (creates event type:0 (HW)
                                            config 0 (CPU_CYCLES)
                    --> perf_event_attr__set_max_precise_ip
                        Uses perf_event_open(2) to detect correct
                        precise_ip level. Fails 3 times on s390 which is ok.
    
    Then functions cmd_top
    --> __cmd_top
        --> perf_top__start_counters
            -->perf_evlist__config
               --> perf_can_comm_exec
                   --> perf_probe_api
                       This functions test support for the following events:
                       "cycles:u", "instructions:u", "cpu-clock:u" using
                       --> perf_do_probe_api
                           --> perf_event_open_cloexec
                               Test the close on exec flag support with
                               perf_event_open(2).
                           perf_do_probe_api returns true if the event is
                           supported.
                           The function returns true because event cpu-clock is
                           supported by the PMU cpu_clock.
                           This is achieved by many calls to perf_event_open(2).
    
    Function perf_top__start_counters now calls perf_evsel__open() for every
    event, which is the default event cpu_cycles (config:0) and type HARDWARE
    (type:0) which a predfined frequence of 4000.
    
    Given the above order of the PMU list, the PMU cpum_cf gets called first
    and returns 0, which indicates support for this sampling. The event is
    fully allocated in the function perf_event_open (file kernel/event/core.c
    near line 10521 and the following check fails:
    
            event = perf_event_alloc(&attr, cpu, task, group_leader, NULL,
                                     NULL, NULL, cgroup_fd);
            if (IS_ERR(event)) {
                    err = PTR_ERR(event);
                    goto err_cred;
            }
    
            if (is_sampling_event(event)) {
                    if (event->pmu->capabilities & PERF_PMU_CAP_NO_INTERRUPT) {
                            err = -EOPNOTSUPP;
                            goto err_alloc;
                    }
            }
    
    The check for the interrupt capabilities fails and the system call
    perf_event_open() returns -EOPNOTSUPP (-95).
    
    Add a check to return -ENODEV when sampling is requested in PMU cpum_cf.
    This allows common kernel code in the perf_event_open() system call to
    test the next PMU in above list.
    
    Fixes: 97b1198fece0 (" "s390, perf: Use common PMU interrupt disabled code")
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Reviewed-by: Hendrik Brueckner <brueckner@linux.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b8115cdf32d41de013296e54d58e1b2ca81f35e2
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Sat Nov 10 04:13:24 2018 +0000

    sysv: return 'err' instead of 0 in __sysv_write_inode
    
    [ Upstream commit c4b7d1ba7d263b74bb72e9325262a67139605cde ]
    
    Fixes gcc '-Wunused-but-set-variable' warning:
    
    fs/sysv/inode.c: In function '__sysv_write_inode':
    fs/sysv/inode.c:239:6: warning:
     variable 'err' set but not used [-Wunused-but-set-variable]
    
    __sysv_write_inode should return 'err' instead of 0
    
    Fixes: 05459ca81ac3 ("repair sysv_write_inode(), switch sysv to simple_fsync()")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b8468796b6712275cdeb1e4684c8bb0da7ee239c
Author: Janusz Krzysztofik <jmkrzyszt@gmail.com>
Date:   Wed Nov 7 22:30:31 2018 +0100

    ARM: OMAP1: ams-delta: Fix possible use of uninitialized field
    
    [ Upstream commit cec83ff1241ec98113a19385ea9e9cfa9aa4125b ]
    
    While playing with initialization order of modem device, it has been
    discovered that under some circumstances (early console init, I
    believe) its .pm() callback may be called before the
    uart_port->private_data pointer is initialized from
    plat_serial8250_port->private_data, resulting in NULL pointer
    dereference.  Fix it by checking for uninitialized pointer before using
    it in modem_pm().
    
    Fixes: aabf31737a6a ("ARM: OMAP1: ams-delta: update the modem to use regulator API")
    Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8b0c50ca0218217aa42cf4e52c13da380d014d5d
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Wed Oct 17 17:54:00 2018 -0700

    ARM: OMAP2+: prm44xx: Fix section annotation on omap44xx_prm_enable_io_wakeup
    
    [ Upstream commit eef3dc34a1e0b01d53328b88c25237bcc7323777 ]
    
    When building the kernel with Clang, the following section mismatch
    warning appears:
    
    WARNING: vmlinux.o(.text+0x38b3c): Section mismatch in reference from
    the function omap44xx_prm_late_init() to the function
    .init.text:omap44xx_prm_enable_io_wakeup()
    The function omap44xx_prm_late_init() references
    the function __init omap44xx_prm_enable_io_wakeup().
    This is often because omap44xx_prm_late_init lacks a __init
    annotation or the annotation of omap44xx_prm_enable_io_wakeup is wrong.
    
    Remove the __init annotation from omap44xx_prm_enable_io_wakeup so there
    is no more mismatch.
    
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6699df6605891e6aa5d1d208fc0c0aff022a191b
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Thu Dec 6 19:30:36 2018 +0100

    ipv6: Check available headroom in ip6_xmit() even without options
    
    [ Upstream commit 66033f47ca60294a95fc85ec3a3cc909dab7b765 ]
    
    Even if we send an IPv6 packet without options, MAX_HEADER might not be
    enough to account for the additional headroom required by alignment of
    hardware headers.
    
    On a configuration without HYPERV_NET, WLAN, AX25, and with IPV6_TUNNEL,
    sending short SCTP packets over IPv4 over L2TP over IPv6, we start with
    100 bytes of allocated headroom in sctp_packet_transmit(), end up with 54
    bytes after l2tp_xmit_skb(), and 14 bytes in ip6_finish_output2().
    
    Those would be enough to append our 14 bytes header, but we're going to
    align that to 16 bytes, and write 2 bytes out of the allocated slab in
    neigh_hh_output().
    
    KASan says:
    
    [  264.967848] ==================================================================
    [  264.967861] BUG: KASAN: slab-out-of-bounds in ip6_finish_output2+0x1aec/0x1c70
    [  264.967866] Write of size 16 at addr 000000006af1c7fe by task netperf/6201
    [  264.967870]
    [  264.967876] CPU: 0 PID: 6201 Comm: netperf Not tainted 4.20.0-rc4+ #1
    [  264.967881] Hardware name: IBM 2827 H43 400 (z/VM 6.4.0)
    [  264.967887] Call Trace:
    [  264.967896] ([<00000000001347d6>] show_stack+0x56/0xa0)
    [  264.967903]  [<00000000017e379c>] dump_stack+0x23c/0x290
    [  264.967912]  [<00000000007bc594>] print_address_description+0xf4/0x290
    [  264.967919]  [<00000000007bc8fc>] kasan_report+0x13c/0x240
    [  264.967927]  [<000000000162f5e4>] ip6_finish_output2+0x1aec/0x1c70
    [  264.967935]  [<000000000163f890>] ip6_finish_output+0x430/0x7f0
    [  264.967943]  [<000000000163fe44>] ip6_output+0x1f4/0x580
    [  264.967953]  [<000000000163882a>] ip6_xmit+0xfea/0x1ce8
    [  264.967963]  [<00000000017396e2>] inet6_csk_xmit+0x282/0x3f8
    [  264.968033]  [<000003ff805fb0ba>] l2tp_xmit_skb+0xe02/0x13e0 [l2tp_core]
    [  264.968037]  [<000003ff80631192>] l2tp_eth_dev_xmit+0xda/0x150 [l2tp_eth]
    [  264.968041]  [<0000000001220020>] dev_hard_start_xmit+0x268/0x928
    [  264.968069]  [<0000000001330e8e>] sch_direct_xmit+0x7ae/0x1350
    [  264.968071]  [<000000000122359c>] __dev_queue_xmit+0x2b7c/0x3478
    [  264.968075]  [<00000000013d2862>] ip_finish_output2+0xce2/0x11a0
    [  264.968078]  [<00000000013d9b14>] ip_finish_output+0x56c/0x8c8
    [  264.968081]  [<00000000013ddd1e>] ip_output+0x226/0x4c0
    [  264.968083]  [<00000000013dbd6c>] __ip_queue_xmit+0x894/0x1938
    [  264.968100]  [<000003ff80bc3a5c>] sctp_packet_transmit+0x29d4/0x3648 [sctp]
    [  264.968116]  [<000003ff80b7bf68>] sctp_outq_flush_ctrl.constprop.5+0x8d0/0xe50 [sctp]
    [  264.968131]  [<000003ff80b7c716>] sctp_outq_flush+0x22e/0x7d8 [sctp]
    [  264.968146]  [<000003ff80b35c68>] sctp_cmd_interpreter.isra.16+0x530/0x6800 [sctp]
    [  264.968161]  [<000003ff80b3410a>] sctp_do_sm+0x222/0x648 [sctp]
    [  264.968177]  [<000003ff80bbddac>] sctp_primitive_ASSOCIATE+0xbc/0xf8 [sctp]
    [  264.968192]  [<000003ff80b93328>] __sctp_connect+0x830/0xc20 [sctp]
    [  264.968208]  [<000003ff80bb11ce>] sctp_inet_connect+0x2e6/0x378 [sctp]
    [  264.968212]  [<0000000001197942>] __sys_connect+0x21a/0x450
    [  264.968215]  [<000000000119aff8>] sys_socketcall+0x3d0/0xb08
    [  264.968218]  [<000000000184ea7a>] system_call+0x2a2/0x2c0
    
    [...]
    
    Just like ip_finish_output2() does for IPv4, check that we have enough
    headroom in ip6_xmit(), and reallocate it if we don't.
    
    This issue is older than git history.
    
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba5720a0d3db9061a0cff3874ce3ab572c9eec6e
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Thu Dec 6 19:30:37 2018 +0100

    neighbour: Avoid writing before skb->head in neigh_hh_output()
    
    [ Upstream commit e6ac64d4c4d095085d7dd71cbd05704ac99829b2 ]
    
    While skb_push() makes the kernel panic if the skb headroom is less than
    the unaligned hardware header size, it will proceed normally in case we
    copy more than that because of alignment, and we'll silently corrupt
    adjacent slabs.
    
    In the case fixed by the previous patch,
    "ipv6: Check available headroom in ip6_xmit() even without options", we
    end up in neigh_hh_output() with 14 bytes headroom, 14 bytes hardware
    header and write 16 bytes, starting 2 bytes before the allocated buffer.
    
    Always check we're not writing before skb->head and, if the headroom is
    not enough, warn and drop the packet.
    
    v2:
     - instead of panicking with BUG_ON(), WARN_ON_ONCE() and drop the packet
       (Eric Dumazet)
     - if we avoid the panic, though, we need to explicitly check the headroom
       before the memcpy(), otherwise we'll have corrupted slabs on a running
       kernel, after we warn
     - use __skb_push() instead of skb_push(), as the headroom check is
       already implemented here explicitly (Eric Dumazet)
    
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb75b9b7ec77ed5d11316ef99ee905a16b432430
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Thu Nov 29 14:45:39 2018 +0100

    tun: forbid iface creation with rtnl ops
    
    [ Upstream commit 35b827b6d06199841a83839e8bb69c0cd13a28be ]
    
    It's not supported right now (the goal of the initial patch was to support
    'ip link del' only).
    
    Before the patch:
    $ ip link add foo type tun
    [  239.632660] BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
    [snip]
    [  239.636410] RIP: 0010:register_netdevice+0x8e/0x3a0
    
    This panic occurs because dev->netdev_ops is not set by tun_setup(). But to
    have something usable, it will require more than just setting
    netdev_ops.
    
    Fixes: f019a7a594d9 ("tun: Implement ip link del tunXXX")
    CC: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-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 f1d28c6ceedafb74856d2bded1492342384acdb2
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Dec 4 09:40:35 2018 -0800

    rtnetlink: ndo_dflt_fdb_dump() only work for ARPHRD_ETHER devices
    
    [ Upstream commit 688838934c231bb08f46db687e57f6d8bf82709c ]
    
    kmsan was able to trigger a kernel-infoleak using a gre device [1]
    
    nlmsg_populate_fdb_fill() has a hard coded assumption
    that dev->addr_len is ETH_ALEN, as normally guaranteed
    for ARPHRD_ETHER devices.
    
    A similar issue was fixed recently in commit da71577545a5
    ("rtnetlink: Disallow FDB configuration for non-Ethernet device")
    
    [1]
    BUG: KMSAN: kernel-infoleak in copyout lib/iov_iter.c:143 [inline]
    BUG: KMSAN: kernel-infoleak in _copy_to_iter+0x4c0/0x2700 lib/iov_iter.c:576
    CPU: 0 PID: 6697 Comm: syz-executor310 Not tainted 4.20.0-rc3+ #95
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x32d/0x480 lib/dump_stack.c:113
     kmsan_report+0x12c/0x290 mm/kmsan/kmsan.c:683
     kmsan_internal_check_memory+0x32a/0xa50 mm/kmsan/kmsan.c:743
     kmsan_copy_to_user+0x78/0xd0 mm/kmsan/kmsan_hooks.c:634
     copyout lib/iov_iter.c:143 [inline]
     _copy_to_iter+0x4c0/0x2700 lib/iov_iter.c:576
     copy_to_iter include/linux/uio.h:143 [inline]
     skb_copy_datagram_iter+0x4e2/0x1070 net/core/datagram.c:431
     skb_copy_datagram_msg include/linux/skbuff.h:3316 [inline]
     netlink_recvmsg+0x6f9/0x19d0 net/netlink/af_netlink.c:1975
     sock_recvmsg_nosec net/socket.c:794 [inline]
     sock_recvmsg+0x1d1/0x230 net/socket.c:801
     ___sys_recvmsg+0x444/0xae0 net/socket.c:2278
     __sys_recvmsg net/socket.c:2327 [inline]
     __do_sys_recvmsg net/socket.c:2337 [inline]
     __se_sys_recvmsg+0x2fa/0x450 net/socket.c:2334
     __x64_sys_recvmsg+0x4a/0x70 net/socket.c:2334
     do_syscall_64+0xcf/0x110 arch/x86/entry/common.c:291
     entry_SYSCALL_64_after_hwframe+0x63/0xe7
    RIP: 0033:0x441119
    Code: 18 89 d0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 db 0a fc ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007fffc7f008a8 EFLAGS: 00000207 ORIG_RAX: 000000000000002f
    RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 0000000000441119
    RDX: 0000000000000040 RSI: 00000000200005c0 RDI: 0000000000000003
    RBP: 00000000006cc018 R08: 0000000000000100 R09: 0000000000000100
    R10: 0000000000000100 R11: 0000000000000207 R12: 0000000000402080
    R13: 0000000000402110 R14: 0000000000000000 R15: 0000000000000000
    
    Uninit was stored to memory at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:246 [inline]
     kmsan_save_stack mm/kmsan/kmsan.c:261 [inline]
     kmsan_internal_chain_origin+0x13d/0x240 mm/kmsan/kmsan.c:469
     kmsan_memcpy_memmove_metadata+0x1a9/0xf70 mm/kmsan/kmsan.c:344
     kmsan_memcpy_metadata+0xb/0x10 mm/kmsan/kmsan.c:362
     __msan_memcpy+0x61/0x70 mm/kmsan/kmsan_instr.c:162
     __nla_put lib/nlattr.c:744 [inline]
     nla_put+0x20a/0x2d0 lib/nlattr.c:802
     nlmsg_populate_fdb_fill+0x444/0x810 net/core/rtnetlink.c:3466
     nlmsg_populate_fdb net/core/rtnetlink.c:3775 [inline]
     ndo_dflt_fdb_dump+0x73a/0x960 net/core/rtnetlink.c:3807
     rtnl_fdb_dump+0x1318/0x1cb0 net/core/rtnetlink.c:3979
     netlink_dump+0xc79/0x1c90 net/netlink/af_netlink.c:2244
     __netlink_dump_start+0x10c4/0x11d0 net/netlink/af_netlink.c:2352
     netlink_dump_start include/linux/netlink.h:216 [inline]
     rtnetlink_rcv_msg+0x141b/0x1540 net/core/rtnetlink.c:4910
     netlink_rcv_skb+0x394/0x640 net/netlink/af_netlink.c:2477
     rtnetlink_rcv+0x50/0x60 net/core/rtnetlink.c:4965
     netlink_unicast_kernel net/netlink/af_netlink.c:1310 [inline]
     netlink_unicast+0x1699/0x1740 net/netlink/af_netlink.c:1336
     netlink_sendmsg+0x13c7/0x1440 net/netlink/af_netlink.c:1917
     sock_sendmsg_nosec net/socket.c:621 [inline]
     sock_sendmsg net/socket.c:631 [inline]
     ___sys_sendmsg+0xe3b/0x1240 net/socket.c:2116
     __sys_sendmsg net/socket.c:2154 [inline]
     __do_sys_sendmsg net/socket.c:2163 [inline]
     __se_sys_sendmsg+0x305/0x460 net/socket.c:2161
     __x64_sys_sendmsg+0x4a/0x70 net/socket.c:2161
     do_syscall_64+0xcf/0x110 arch/x86/entry/common.c:291
     entry_SYSCALL_64_after_hwframe+0x63/0xe7
    
    Uninit was created at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:246 [inline]
     kmsan_internal_poison_shadow+0x6d/0x130 mm/kmsan/kmsan.c:170
     kmsan_kmalloc+0xa1/0x100 mm/kmsan/kmsan_hooks.c:186
     __kmalloc+0x14c/0x4d0 mm/slub.c:3825
     kmalloc include/linux/slab.h:551 [inline]
     __hw_addr_create_ex net/core/dev_addr_lists.c:34 [inline]
     __hw_addr_add_ex net/core/dev_addr_lists.c:80 [inline]
     __dev_mc_add+0x357/0x8a0 net/core/dev_addr_lists.c:670
     dev_mc_add+0x6d/0x80 net/core/dev_addr_lists.c:687
     ip_mc_filter_add net/ipv4/igmp.c:1128 [inline]
     igmp_group_added+0x4d4/0xb80 net/ipv4/igmp.c:1311
     __ip_mc_inc_group+0xea9/0xf70 net/ipv4/igmp.c:1444
     ip_mc_inc_group net/ipv4/igmp.c:1453 [inline]
     ip_mc_up+0x1c3/0x400 net/ipv4/igmp.c:1775
     inetdev_event+0x1d03/0x1d80 net/ipv4/devinet.c:1522
     notifier_call_chain kernel/notifier.c:93 [inline]
     __raw_notifier_call_chain kernel/notifier.c:394 [inline]
     raw_notifier_call_chain+0x13d/0x240 kernel/notifier.c:401
     __dev_notify_flags+0x3da/0x860 net/core/dev.c:1733
     dev_change_flags+0x1ac/0x230 net/core/dev.c:7569
     do_setlink+0x165f/0x5ea0 net/core/rtnetlink.c:2492
     rtnl_newlink+0x2ad7/0x35a0 net/core/rtnetlink.c:3111
     rtnetlink_rcv_msg+0x1148/0x1540 net/core/rtnetlink.c:4947
     netlink_rcv_skb+0x394/0x640 net/netlink/af_netlink.c:2477
     rtnetlink_rcv+0x50/0x60 net/core/rtnetlink.c:4965
     netlink_unicast_kernel net/netlink/af_netlink.c:1310 [inline]
     netlink_unicast+0x1699/0x1740 net/netlink/af_netlink.c:1336
     netlink_sendmsg+0x13c7/0x1440 net/netlink/af_netlink.c:1917
     sock_sendmsg_nosec net/socket.c:621 [inline]
     sock_sendmsg net/socket.c:631 [inline]
     ___sys_sendmsg+0xe3b/0x1240 net/socket.c:2116
     __sys_sendmsg net/socket.c:2154 [inline]
     __do_sys_sendmsg net/socket.c:2163 [inline]
     __se_sys_sendmsg+0x305/0x460 net/socket.c:2161
     __x64_sys_sendmsg+0x4a/0x70 net/socket.c:2161
     do_syscall_64+0xcf/0x110 arch/x86/entry/common.c:291
     entry_SYSCALL_64_after_hwframe+0x63/0xe7
    
    Bytes 36-37 of 105 are uninitialized
    Memory access of size 105 starts at ffff88819686c000
    Data copied to user address 0000000020000380
    
    Fixes: d83b06036048 ("net: add fdb generic dump routine")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: John Fastabend <john.fastabend@gmail.com>
    Cc: Ido Schimmel <idosch@mellanox.com>
    Cc: David Ahern <dsahern@gmail.com>
    Reviewed-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b0d097a69a5615e79fc64198ffb32b396798e44
Author: Christoph Paasch <cpaasch@apple.com>
Date:   Thu Nov 29 16:01:04 2018 -0800

    net: Prevent invalid access to skb->prev in __qdisc_drop_all
    
    [ Upstream commit 9410d386d0a829ace9558336263086c2fbbe8aed ]
    
    __qdisc_drop_all() accesses skb->prev to get to the tail of the
    segment-list.
    
    With commit 68d2f84a1368 ("net: gro: properly remove skb from list")
    the skb-list handling has been changed to set skb->next to NULL and set
    the list-poison on skb->prev.
    
    With that change, __qdisc_drop_all() will panic when it tries to
    dereference skb->prev.
    
    Since commit 992cba7e276d ("net: Add and use skb_list_del_init().")
    __list_del_entry is used, leaving skb->prev unchanged (thus,
    pointing to the list-head if it's the first skb of the list).
    This will make __qdisc_drop_all modify the next-pointer of the list-head
    and result in a panic later on:
    
    [   34.501053] general protection fault: 0000 [#1] SMP KASAN PTI
    [   34.501968] CPU: 2 PID: 0 Comm: swapper/2 Not tainted 4.20.0-rc2.mptcp #108
    [   34.502887] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 0.5.1 01/01/2011
    [   34.504074] RIP: 0010:dev_gro_receive+0x343/0x1f90
    [   34.504751] Code: e0 48 c1 e8 03 42 80 3c 30 00 0f 85 4a 1c 00 00 4d 8b 24 24 4c 39 65 d0 0f 84 0a 04 00 00 49 8d 7c 24 38 48 89 f8 48 c1 e8 03 <42> 0f b6 04 30 84 c0 74 08 3c 04
    [   34.507060] RSP: 0018:ffff8883af507930 EFLAGS: 00010202
    [   34.507761] RAX: 0000000000000007 RBX: ffff8883970b2c80 RCX: 1ffff11072e165a6
    [   34.508640] RDX: 1ffff11075867008 RSI: ffff8883ac338040 RDI: 0000000000000038
    [   34.509493] RBP: ffff8883af5079d0 R08: ffff8883970b2d40 R09: 0000000000000062
    [   34.510346] R10: 0000000000000034 R11: 0000000000000000 R12: 0000000000000000
    [   34.511215] R13: 0000000000000000 R14: dffffc0000000000 R15: ffff8883ac338008
    [   34.512082] FS:  0000000000000000(0000) GS:ffff8883af500000(0000) knlGS:0000000000000000
    [   34.513036] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   34.513741] CR2: 000055ccc3e9d020 CR3: 00000003abf32000 CR4: 00000000000006e0
    [   34.514593] Call Trace:
    [   34.514893]  <IRQ>
    [   34.515157]  napi_gro_receive+0x93/0x150
    [   34.515632]  receive_buf+0x893/0x3700
    [   34.516094]  ? __netif_receive_skb+0x1f/0x1a0
    [   34.516629]  ? virtnet_probe+0x1b40/0x1b40
    [   34.517153]  ? __stable_node_chain+0x4d0/0x850
    [   34.517684]  ? kfree+0x9a/0x180
    [   34.518067]  ? __kasan_slab_free+0x171/0x190
    [   34.518582]  ? detach_buf+0x1df/0x650
    [   34.519061]  ? lapic_next_event+0x5a/0x90
    [   34.519539]  ? virtqueue_get_buf_ctx+0x280/0x7f0
    [   34.520093]  virtnet_poll+0x2df/0xd60
    [   34.520533]  ? receive_buf+0x3700/0x3700
    [   34.521027]  ? qdisc_watchdog_schedule_ns+0xd5/0x140
    [   34.521631]  ? htb_dequeue+0x1817/0x25f0
    [   34.522107]  ? sch_direct_xmit+0x142/0xf30
    [   34.522595]  ? virtqueue_napi_schedule+0x26/0x30
    [   34.523155]  net_rx_action+0x2f6/0xc50
    [   34.523601]  ? napi_complete_done+0x2f0/0x2f0
    [   34.524126]  ? kasan_check_read+0x11/0x20
    [   34.524608]  ? _raw_spin_lock+0x7d/0xd0
    [   34.525070]  ? _raw_spin_lock_bh+0xd0/0xd0
    [   34.525563]  ? kvm_guest_apic_eoi_write+0x6b/0x80
    [   34.526130]  ? apic_ack_irq+0x9e/0xe0
    [   34.526567]  __do_softirq+0x188/0x4b5
    [   34.527015]  irq_exit+0x151/0x180
    [   34.527417]  do_IRQ+0xdb/0x150
    [   34.527783]  common_interrupt+0xf/0xf
    [   34.528223]  </IRQ>
    
    This patch makes sure that skb->prev is set to NULL when entering
    netem_enqueue.
    
    Cc: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
    Cc: Tyler Hicks <tyhicks@canonical.com>
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Fixes: 68d2f84a1368 ("net: gro: properly remove skb from list")
    Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: Christoph Paasch <cpaasch@apple.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0c61bf02f50cc9a4e3e3703bb98ce2658794bce
Author: Su Yanjun <suyj.fnst@cn.fujitsu.com>
Date:   Mon Dec 3 15:33:07 2018 +0800

    net: 8139cp: fix a BUG triggered by changing mtu with network traffic
    
    [ Upstream commit a5d4a89245ead1f37ed135213653c5beebea4237 ]
    
    When changing mtu many times with traffic, a bug is triggered:
    
    [ 1035.684037] kernel BUG at lib/dynamic_queue_limits.c:26!
    [ 1035.684042] invalid opcode: 0000 [#1] SMP
    [ 1035.684049] Modules linked in: loop binfmt_misc 8139cp(OE) macsec
    tcp_diag udp_diag inet_diag unix_diag af_packet_diag netlink_diag tcp_lp
    fuse uinput xt_CHECKSUM iptable_mangle ipt_MASQUERADE
    nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4
    nf_defrag_ipv4 xt_conntrack nf_conntrack ipt_REJECT nf_reject_ipv4 tun
    bridge stp llc ebtable_filter ebtables ip6table_filter devlink
    ip6_tables iptable_filter sunrpc snd_hda_codec_generic snd_hda_intel
    snd_hda_codec snd_hda_core snd_hwdep ppdev snd_seq iosf_mbi crc32_pclmul
    parport_pc snd_seq_device ghash_clmulni_intel parport snd_pcm
    aesni_intel joydev lrw snd_timer virtio_balloon sg gf128mul glue_helper
    ablk_helper cryptd snd soundcore i2c_piix4 pcspkr ip_tables xfs
    libcrc32c sr_mod sd_mod cdrom crc_t10dif crct10dif_generic ata_generic
    [ 1035.684102]  pata_acpi virtio_console qxl drm_kms_helper syscopyarea
    sysfillrect sysimgblt floppy fb_sys_fops crct10dif_pclmul
    crct10dif_common ttm crc32c_intel serio_raw ata_piix drm libata 8139too
    virtio_pci drm_panel_orientation_quirks virtio_ring virtio mii dm_mirror
    dm_region_hash dm_log dm_mod [last unloaded: 8139cp]
    [ 1035.684132] CPU: 9 PID: 25140 Comm: if-mtu-change Kdump: loaded
    Tainted: G           OE  ------------ T 3.10.0-957.el7.x86_64 #1
    [ 1035.684134] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
    [ 1035.684136] task: ffff8f59b1f5a080 ti: ffff8f5a2e32c000 task.ti:
    ffff8f5a2e32c000
    [ 1035.684149] RIP: 0010:[<ffffffffba3a40d0>]  [<ffffffffba3a40d0>]
    dql_completed+0x180/0x190
    [ 1035.684162] RSP: 0000:ffff8f5a75483e50  EFLAGS: 00010093
    [ 1035.684162] RAX: 00000000000000c2 RBX: ffff8f5a6f91c000 RCX:
    0000000000000000
    [ 1035.684162] RDX: 0000000000000000 RSI: 0000000000000184 RDI:
    ffff8f599fea3ec0
    [ 1035.684162] RBP: ffff8f5a75483ea8 R08: 00000000000000c2 R09:
    0000000000000000
    [ 1035.684162] R10: 00000000000616ef R11: ffff8f5a75483b56 R12:
    ffff8f599fea3e00
    [ 1035.684162] R13: 0000000000000001 R14: 0000000000000000 R15:
    0000000000000184
    [ 1035.684162] FS:  00007fa8434de740(0000) GS:ffff8f5a75480000(0000)
    knlGS:0000000000000000
    [ 1035.684162] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1035.684162] CR2: 00000000004305d0 CR3: 000000024eb66000 CR4:
    00000000001406e0
    [ 1035.684162] Call Trace:
    [ 1035.684162]  <IRQ>
    [ 1035.684162]  [<ffffffffc08cbaf8>] ? cp_interrupt+0x478/0x580 [8139cp]
    [ 1035.684162]  [<ffffffffba14a294>]
    __handle_irq_event_percpu+0x44/0x1c0
    [ 1035.684162]  [<ffffffffba14a442>] handle_irq_event_percpu+0x32/0x80
    [ 1035.684162]  [<ffffffffba14a4cc>] handle_irq_event+0x3c/0x60
    [ 1035.684162]  [<ffffffffba14db29>] handle_fasteoi_irq+0x59/0x110
    [ 1035.684162]  [<ffffffffba02e554>] handle_irq+0xe4/0x1a0
    [ 1035.684162]  [<ffffffffba7795dd>] do_IRQ+0x4d/0xf0
    [ 1035.684162]  [<ffffffffba76b362>] common_interrupt+0x162/0x162
    [ 1035.684162]  <EOI>
    [ 1035.684162]  [<ffffffffba0c2ae4>] ? __wake_up_bit+0x24/0x70
    [ 1035.684162]  [<ffffffffba1e46f5>] ? do_set_pte+0xd5/0x120
    [ 1035.684162]  [<ffffffffba1b64fb>] unlock_page+0x2b/0x30
    [ 1035.684162]  [<ffffffffba1e4879>] do_read_fault.isra.61+0x139/0x1b0
    [ 1035.684162]  [<ffffffffba1e9134>] handle_pte_fault+0x2f4/0xd10
    [ 1035.684162]  [<ffffffffba1ebc6d>] handle_mm_fault+0x39d/0x9b0
    [ 1035.684162]  [<ffffffffba76f5e3>] __do_page_fault+0x203/0x500
    [ 1035.684162]  [<ffffffffba76f9c6>] trace_do_page_fault+0x56/0x150
    [ 1035.684162]  [<ffffffffba76ef42>] do_async_page_fault+0x22/0xf0
    [ 1035.684162]  [<ffffffffba76b788>] async_page_fault+0x28/0x30
    [ 1035.684162] Code: 54 c7 47 54 ff ff ff ff 44 0f 49 ce 48 8b 35 48 2f
    9c 00 48 89 77 58 e9 fe fe ff ff 0f 1f 80 00 00 00 00 41 89 d1 e9 ef fe
    ff ff <0f> 0b 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 55 8d 42 ff 48
    [ 1035.684162] RIP  [<ffffffffba3a40d0>] dql_completed+0x180/0x190
    [ 1035.684162]  RSP <ffff8f5a75483e50>
    
    It's not the same as in 7fe0ee09 patch described.
    As 8139cp uses shared irq mode, other device irq will trigger
    cp_interrupt to execute.
    
    cp_change_mtu
     -> cp_close
     -> cp_open
    
    In cp_close routine  just before free_irq(), some interrupt may occur.
    In my environment, cp_interrupt exectutes and IntrStatus is 0x4,
    exactly TxOk. That will cause cp_tx to wake device queue.
    
    As device queue is started, cp_start_xmit and cp_open will run at same
    time which will cause kernel BUG.
    
    For example:
    [#] for tx descriptor
    
    At start:
    
    [#][#][#]
    num_queued=3
    
    After cp_init_hw->cp_start_hw->netdev_reset_queue:
    
    [#][#][#]
    num_queued=0
    
    When 8139cp starts to work then cp_tx will check
    num_queued mismatchs the complete_bytes.
    
    The patch will check IntrMask before check IntrStatus in cp_interrupt.
    When 8139cp interrupt is disabled, just return.
    
    Signed-off-by: Su Yanjun <suyj.fnst@cn.fujitsu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>