commit 7a7a4d0abbf2630eabbcb833ee54b716ec33568b
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Tue Mar 14 14:14:18 2017 +0100

    Linux 3.12.72

commit 8722bc8f8d7f1ca60b4d8515d717cd780f5d1685
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Wed Feb 8 18:30:56 2017 -0700

    drivers: hv: Turn off write permission on the hypercall page
    
    commit 372b1e91343e657a7cc5e2e2bcecd5140ac28119 upstream.
    
    The hypercall page only needs to be executable but currently it is setup to
    be writable as well. Fix the issue.
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Acked-by: Kees Cook <keescook@chromium.org>
    Reported-by: Stephen Hemminger <stephen@networkplumber.org>
    Tested-by: Stephen Hemminger <stephen@networkplumber.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b944de66dbd13f80fdb3aa9e8c2d6ea486a10c68
Author: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Date:   Thu Mar 9 16:17:37 2017 -0800

    fat: fix using uninitialized fields of fat_inode/fsinfo_inode
    
    commit c0d0e351285161a515396b7b1ee53ec9ffd97e3c upstream.
    
    Recently fallocate patch was merged and it uses
    MSDOS_I(inode)->mmu_private at fat_evict_inode().  However,
    fat_inode/fsinfo_inode that was introduced in past didn't initialize
    MSDOS_I(inode) properly.
    
    With those combinations, it became the cause of accessing random entry
    in FAT area.
    
    Link: http://lkml.kernel.org/r/87pohrj4i8.fsf@mail.parknet.co.jp
    Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    Reported-by: Moreno Bartalucci <moreno.bartalucci@tecnorama.it>
    Tested-by: Moreno Bartalucci <moreno.bartalucci@tecnorama.it>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 32d88d683858db99a43accea0f4732df72cbfaa2
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Wed Jan 25 17:21:31 2017 +0900

    drm/ttm: Make sure BOs being swapped out are cacheable
    
    commit 239ac65fa5ffab71adf66e642750f940e7241d99 upstream.
    
    The current caching state may not be tt_cached, even though the
    placement contains TTM_PL_FLAG_CACHED, because placement can contain
    multiple caching flags. Trying to swap out such a BO would trip up the
    
            BUG_ON(ttm->caching_state != tt_cached);
    
    in ttm_tt_swapout.
    
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
    Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>.
    Reviewed-by: Sinclair Yeh <syeh@vmware.com>
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 37eb802af8287857f8e41fd57c087f0184125fcd
Author: Y.C. Chen <yc_chen@aspeedtech.com>
Date:   Wed Feb 22 15:10:50 2017 +1100

    drm/ast: Fix test for VGA enabled
    
    commit 905f21a49d388de3e99438235f3301cabf0c0ef4 upstream.
    
    The test to see if VGA was already enabled is doing an unnecessary
    second test from a register that may or may not have been initialized
    to a valid value. Remove it.
    
    Signed-off-by: Y.C. Chen <yc_chen@aspeedtech.com>
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Acked-by: Joel Stanley <joel@jms.id.au>
    Tested-by: Y.C. Chen <yc_chen@aspeedtech.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d4952005c6054d8c4731ca8c3b5077b3e257e64b
Author: Matt Chen <matt.chen@intel.com>
Date:   Sun Jan 22 02:16:58 2017 +0800

    mac80211: flush delayed work when entering suspend
    
    commit a9e9200d8661c1a0be8c39f93deb383dc940de35 upstream.
    
    The issue was found when entering suspend and resume.
    It triggers a warning in:
    mac80211/key.c: ieee80211_enable_keys()
    ...
    WARN_ON_ONCE(sdata->crypto_tx_tailroom_needed_cnt ||
                 sdata->crypto_tx_tailroom_pending_dec);
    ...
    
    It points out sdata->crypto_tx_tailroom_pending_dec isn't cleaned up successfully
    in a delayed_work during suspend. Add a flush_delayed_work to fix it.
    
    Signed-off-by: Matt Chen <matt.chen@intel.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b11fe1353f318774743089389a6cfb396cec1b79
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Tue Jan 3 09:37:34 2017 -0800

    xtensa: move parse_tag_fdt out of #ifdef CONFIG_BLK_DEV_INITRD
    
    commit 4ab18701c66552944188dbcd0ce0012729baab84 upstream.
    
    FDT tag parsing is not related to whether BLK_DEV_INITRD is configured
    or not, move it out of the corresponding #ifdef/#endif block.
    This fixes passing external FDT to the kernel configured w/o
    BLK_DEV_INITRD support.
    
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit db93e51d674ee33fad1f3210cf41997ffccd5fb4
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Sat Feb 11 10:37:38 2017 -0500

    nlm: Ensure callback code also checks that the files match
    
    commit 251af29c320d86071664f02c76f0d063a19fefdf upstream.
    
    It is not sufficient to just check that the lock pids match when
    granting a callback, we also need to ensure that we're granting
    the callback on the right file.
    
    Reported-by: Pankaj Singh <psingh.ait@gmail.com>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit f304013e0dcc431ec722b2bd9e5b7e462a7b68ce
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Tue Feb 7 12:05:25 2017 -0500

    ktest: Fix child exit code processing
    
    commit 32677207dcc5e594254b7fb4fb2352b1755b1d5b upstream.
    
    The child_exit errno needs to be shifted by 8 bits to compare against the
    return values for the bisect variables.
    
    Fixes: c5dacb88f0a64 ("ktest: Allow overriding bisect test results")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 725938ba8ddaf8d89115ddba388e04663e333d7a
Author: Feras Daoud <ferasda@mellanox.com>
Date:   Wed Dec 28 14:47:23 2016 +0200

    IB/ipoib: Fix deadlock between rmmod and set_mode
    
    commit 0a0007f28304cb9fc87809c86abb80ec71317f20 upstream.
    
    When calling set_mode from sys/fs, the call flow locks the sys/fs lock
    first and then tries to lock rtnl_lock (when calling ipoib_set_mod).
    On the other hand, the rmmod call flow takes the rtnl_lock first
    (when calling unregister_netdev) and then tries to take the sys/fs
    lock. Deadlock a->b, b->a.
    
    The problem starts when ipoib_set_mod frees it's rtnl_lck and tries
    to get it after that.
    
        set_mod:
        [<ffffffff8104f2bd>] ? check_preempt_curr+0x6d/0x90
        [<ffffffff814fee8e>] __mutex_lock_slowpath+0x13e/0x180
        [<ffffffff81448655>] ? __rtnl_unlock+0x15/0x20
        [<ffffffff814fed2b>] mutex_lock+0x2b/0x50
        [<ffffffff81448675>] rtnl_lock+0x15/0x20
        [<ffffffffa02ad807>] ipoib_set_mode+0x97/0x160 [ib_ipoib]
        [<ffffffffa02b5f5b>] set_mode+0x3b/0x80 [ib_ipoib]
        [<ffffffff8134b840>] dev_attr_store+0x20/0x30
        [<ffffffff811f0fe5>] sysfs_write_file+0xe5/0x170
        [<ffffffff8117b068>] vfs_write+0xb8/0x1a0
        [<ffffffff8117ba81>] sys_write+0x51/0x90
        [<ffffffff8100b0f2>] system_call_fastpath+0x16/0x1b
    
        rmmod:
        [<ffffffff81279ffc>] ? put_dec+0x10c/0x110
        [<ffffffff8127a2ee>] ? number+0x2ee/0x320
        [<ffffffff814fe6a5>] schedule_timeout+0x215/0x2e0
        [<ffffffff8127cc04>] ? vsnprintf+0x484/0x5f0
        [<ffffffff8127b550>] ? string+0x40/0x100
        [<ffffffff814fe323>] wait_for_common+0x123/0x180
        [<ffffffff81060250>] ? default_wake_function+0x0/0x20
        [<ffffffff8119661e>] ? ifind_fast+0x5e/0xb0
        [<ffffffff814fe43d>] wait_for_completion+0x1d/0x20
        [<ffffffff811f2e68>] sysfs_addrm_finish+0x228/0x270
        [<ffffffff811f2fb3>] sysfs_remove_dir+0xa3/0xf0
        [<ffffffff81273f66>] kobject_del+0x16/0x40
        [<ffffffff8134cd14>] device_del+0x184/0x1e0
        [<ffffffff8144e59b>] netdev_unregister_kobject+0xab/0xc0
        [<ffffffff8143c05e>] rollback_registered+0xae/0x130
        [<ffffffff8143c102>] unregister_netdevice+0x22/0x70
        [<ffffffff8143c16e>] unregister_netdev+0x1e/0x30
        [<ffffffffa02a91b0>] ipoib_remove_one+0xe0/0x120 [ib_ipoib]
        [<ffffffffa01ed95f>] ib_unregister_device+0x4f/0x100 [ib_core]
        [<ffffffffa021f5e1>] mlx4_ib_remove+0x41/0x180 [mlx4_ib]
        [<ffffffffa01ab771>] mlx4_remove_device+0x71/0x90 [mlx4_core]
    
    Fixes: 862096a8bbf8 ("IB/ipoib: Add more rtnl_link_ops callbacks")
    Cc: Or Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: Feras Daoud <ferasda@mellanox.com>
    Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1e41ada4c4523aea6a7cb84041768a4e2c507111
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Fri Feb 24 07:43:51 2017 +0100

    s390: TASK_SIZE for kernel threads
    
    commit fb94a687d96c570d46332a4a890f1dcb7310e643 upstream.
    
    Return a sensible value if TASK_SIZE if called from a kernel thread.
    
    This gets us around an issue with copy_mount_options that does a magic
    size calculation "TASK_SIZE - (unsigned long)data" while in a kernel
    thread and data pointing to kernel space.
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d7689d508b0bcc2c16ba42a9b7e221f694692df7
Author: Julian Wiedmann <jwi@linux.vnet.ibm.com>
Date:   Mon Nov 21 13:37:48 2016 +0100

    s390/qdio: clear DSCI prior to scanning multiple input queues
    
    commit 1e4a382fdc0ba8d1a85b758c0811de3a3631085e upstream.
    
    For devices with multiple input queues, tiqdio_call_inq_handlers()
    iterates over all input queues and clears the device's DSCI
    during each iteration. If the DSCI is re-armed during one
    of the later iterations, we therefore do not scan the previous
    queues again.
    The re-arming also raises a new adapter interrupt. But its
    handler does not trigger a rescan for the device, as the DSCI
    has already been erroneously cleared.
    This can result in queue stalls on devices with multiple
    input queues.
    
    Fix it by clearing the DSCI just once, prior to scanning the queues.
    
    As the code is moved in front of the loop, we also need to access
    the DSCI directly (ie irq->dsci) instead of going via each queue's
    parent pointer to the same irq. This is not a functional change,
    and a follow-up patch will clean up the other users.
    
    In practice, this bug only affects CQ-enabled HiperSockets devices,
    ie. devices with sysfs-attribute "hsuid" set. Setting a hsuid is
    needed for AF_IUCV socket applications that use HiperSockets
    communication.
    
    Fixes: 104ea556ee7f ("qdio: support asynchronous delivery of storage blocks")
    Reviewed-by: Ursula Braun <ubraun@linux.vnet.ibm.com>
    Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 4ce7261d782160ac69df23125de462e77d9c52c8
Author: Dmitry Tunin <hanipouspilot@gmail.com>
Date:   Thu Jan 5 13:19:53 2017 +0300

    Bluetooth: Add another AR3012 04ca:3018 device
    
    commit 441ad62d6c3f131f1dbd7dcdd9cbe3f74dbd8501 upstream.
    
    T:  Bus=01 Lev=01 Prnt=01 Port=07 Cnt=04 Dev#=  5 Spd=12  MxCh= 0
    D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=04ca ProdID=3018 Rev=00.01
    C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    
    Signed-off-by: Dmitry Tunin <hanipouspilot@gmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit da98ad17f04075acc281ba3433c7ff9e816abbce
Author: Chao Peng <chao.p.peng@linux.intel.com>
Date:   Tue Feb 21 03:50:01 2017 -0500

    KVM: VMX: use correct vmcs_read/write for guest segment selector/base
    
    commit 96794e4ed4d758272c486e1529e431efb7045265 upstream.
    
    Guest segment selector is 16 bit field and guest segment base is natural
    width field. Fix two incorrect invocations accordingly.
    
    Without this patch, build fails when aggressive inlining is used with ICC.
    
    [js] no vmx_dump_sel in 3.12
    
    Signed-off-by: Chao Peng <chao.p.peng@linux.intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 7c060cffad3c523ab59d864cd52730c08b070fb7
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Fri Feb 3 20:25:00 2017 +0000

    serial: 8250_pci: Add MKS Tenta SCOM-0800 and SCOM-0801 cards
    
    commit 1c9c858e2ff8ae8024a3d75d2ed080063af43754 upstream.
    
    The MKS Instruments SCOM-0800 and SCOM-0801 cards (originally by Tenta
    Technologies) are 3U CompactPCI serial cards with 4 and 8 serial ports,
    respectively.  The first 4 ports are implemented by an OX16PCI954 chip,
    and the second 4 ports are implemented by an OX16C954 chip on a local
    bus, bridged by the second PCI function of the OX16PCI954.  The ports
    are jumper-selectable as RS-232 and RS-422/485, and the UARTs use a
    non-standard oscillator frequency of 20 MHz (base_baud = 1250000).
    
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 63075fbddd5151d2e98fa7cf0608a2113e23607d
Author: Alexander Popov <alex.popov@linux.com>
Date:   Tue Feb 28 19:54:40 2017 +0300

    tty: n_hdlc: get rid of racy n_hdlc.tbuf
    
    commit 82f2341c94d270421f383641b7cd670e474db56b upstream.
    
    Currently N_HDLC line discipline uses a self-made singly linked list for
    data buffers and has n_hdlc.tbuf pointer for buffer retransmitting after
    an error.
    
    The commit be10eb7589337e5defbe214dae038a53dd21add8
    ("tty: n_hdlc add buffer flushing") introduced racy access to n_hdlc.tbuf.
    After tx error concurrent flush_tx_queue() and n_hdlc_send_frames() can put
    one data buffer to tx_free_buf_list twice. That causes double free in
    n_hdlc_release().
    
    Let's use standard kernel linked list and get rid of n_hdlc.tbuf:
    in case of tx error put current data buffer after the head of tx_buf_list.
    
    Signed-off-by: Alexander Popov <alex.popov@linux.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit a1b2f63f3024a235216883ab0c90b81bcedfc264
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Thu Nov 26 19:28:26 2015 +0100

    TTY: n_hdlc, fix lockdep false positive
    
    commit e9b736d88af1a143530565929390cadf036dc799 upstream.
    
    The class of 4 n_hdls buf locks is the same because a single function
    n_hdlc_buf_list_init is used to init all the locks. But since
    flush_tx_queue takes n_hdlc->tx_buf_list.spinlock and then calls
    n_hdlc_buf_put which takes n_hdlc->tx_free_buf_list.spinlock, lockdep
    emits a warning:
    =============================================
    [ INFO: possible recursive locking detected ]
    4.3.0-25.g91e30a7-default #1 Not tainted
    ---------------------------------------------
    a.out/1248 is trying to acquire lock:
     (&(&list->spinlock)->rlock){......}, at: [<ffffffffa01fd020>] n_hdlc_buf_put+0x20/0x60 [n_hdlc]
    
    but task is already holding lock:
     (&(&list->spinlock)->rlock){......}, at: [<ffffffffa01fdc07>] n_hdlc_tty_ioctl+0x127/0x1d0 [n_hdlc]
    
    other info that might help us debug this:
     Possible unsafe locking scenario:
    
           CPU0
           ----
      lock(&(&list->spinlock)->rlock);
      lock(&(&list->spinlock)->rlock);
    
     *** DEADLOCK ***
    
     May be due to missing lock nesting notation
    
    2 locks held by a.out/1248:
     #0:  (&tty->ldisc_sem){++++++}, at: [<ffffffff814c9eb0>] tty_ldisc_ref_wait+0x20/0x50
     #1:  (&(&list->spinlock)->rlock){......}, at: [<ffffffffa01fdc07>] n_hdlc_tty_ioctl+0x127/0x1d0 [n_hdlc]
    ...
    Call Trace:
    ...
     [<ffffffff81738fd0>] _raw_spin_lock_irqsave+0x50/0x70
     [<ffffffffa01fd020>] n_hdlc_buf_put+0x20/0x60 [n_hdlc]
     [<ffffffffa01fdc24>] n_hdlc_tty_ioctl+0x144/0x1d0 [n_hdlc]
     [<ffffffff814c25c1>] tty_ioctl+0x3f1/0xe40
    ...
    
    Fix it by initializing the spin_locks separately. This removes also
    reduntand memset of a freshly kzallocated space.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 35e9a0a8161c7c92dee9ce53b5e47a2fc5f062c3
Author: James Smart <jsmart2021@gmail.com>
Date:   Sun Feb 12 13:52:25 2017 -0800

    scsi: lpfc: Correct WQ creation for pagesize
    
    commit 8ea73db486cda442f0671f4bc9c03a76be398a28 upstream.
    
    Correct WQ creation for pagesize
    
    The driver was calculating the adapter command pagesize indicator from
    the system pagesize. However, the buffers the driver allocates are only
    one size (SLI4_PAGE_SIZE), so no calculation was necessary.
    
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <james.smart@broadcom.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Cc: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 10760144a99fb15037d62fe3c0c2d3b8157a7dd4
Author: Ralf Baechle <ralf@linux-mips.org>
Date:   Thu Dec 15 12:39:22 2016 +0100

    MIPS: IP22: Fix build error due to binutils 2.25 uselessnes.
    
    commit ae2f5e5ed04a17c1aa1f0a3714c725e12c21d2a9 upstream.
    
    Fix the following build error with binutils 2.25.
    
      CC      arch/mips/mm/sc-ip22.o
    {standard input}: Assembler messages:
    {standard input}:132: Error: number (0x9000000080000000) larger than 32 bits
    {standard input}:159: Error: number (0x9000000080000000) larger than 32 bits
    {standard input}:200: Error: number (0x9000000080000000) larger than 32 bits
    scripts/Makefile.build:293: recipe for target 'arch/mips/mm/sc-ip22.o' failed
    make[1]: *** [arch/mips/mm/sc-ip22.o] Error 1
    
    MIPS has used .set mips3 to temporarily switch the assembler to 64 bit
    mode in 64 bit kernels virtually forever.  Binutils 2.25 broke this
    behavious partially by happily accepting 64 bit instructions in .set mips3
    mode but puking on 64 bit constants when generating 32 bit ELF.  Binutils
    2.26 restored the old behaviour again.
    
    Fix build with binutils 2.25 by open coding the offending
    
            dli $1, 0x9000000080000000
    
    as
    
            li      $1, 0x9000
            dsll    $1, $1, 48
    
    which is ugly be the only thing that will build on all binutils vintages.
    
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 02f10b3acae156fec159e12ba8fae69a9f40df6d
Author: Ralf Baechle <ralf@linux-mips.org>
Date:   Thu Dec 15 12:27:21 2016 +0100

    MIPS: IP22: Reformat inline assembler code to modern standards.
    
    commit f9f1c8db1c37253805eaa32265e1e1af3ae7d0a4 upstream.
    
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b65915018a732eb758228425a1dd1dfcd66e3bf2
Author: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
Date:   Tue Nov 22 14:55:59 2016 +0530

    powerpc/xmon: Fix data-breakpoint
    
    commit c21a493a2b44650707d06741601894329486f2ad upstream.
    
    Currently xmon data-breakpoint feature is broken.
    
    Whenever there is a watchpoint match occurs, hw_breakpoint_handler will
    be called by do_break via notifier chains mechanism. If watchpoint is
    registered by xmon, hw_breakpoint_handler won't find any associated
    perf_event and returns immediately with NOTIFY_STOP. Similarly, do_break
    also returns without notifying to xmon.
    
    Solve this by returning NOTIFY_DONE when hw_breakpoint_handler does not
    find any perf_event associated with matched watchpoint, rather than
    NOTIFY_STOP, which tells the core code to continue calling the other
    breakpoint handlers including the xmon one.
    
    Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 47515a848a8a5466239d17cb516a144f26163533
Author: Rafał Miłecki <rafal@milecki.pl>
Date:   Sat Jan 28 14:31:22 2017 +0100

    bcma: use (get|put)_device when probing/removing device driver
    
    commit a971df0b9d04674e325346c17de9a895425ca5e1 upstream.
    
    This allows tracking device state and e.g. makes devm work as expected.
    
    Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit f4880e923d940840fd646890207c0fa749ea0864
Author: Weston Andros Adamson <dros@primarydata.com>
Date:   Thu Feb 23 14:54:21 2017 -0500

    NFSv4: fix getacl ERANGE for some ACL buffer sizes
    
    commit ed92d8c137b7794c2c2aa14479298b9885967607 upstream.
    
    We're not taking into account that the space needed for the (variable
    length) attr bitmap, with the result that we'd sometimes get a spurious
    ERANGE when the ACL data got close to the end of a page.
    
    Just add in an extra page to make sure.
    
    Signed-off-by: Weston Andros Adamson <dros@primarydata.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 668a400e42817e53a203b7b7efafe9755ec4efa6
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Thu Feb 23 14:53:39 2017 -0500

    NFSv4: fix getacl head length estimation
    
    commit 6682c14bbe505a8b912c57faf544f866777ee48d upstream.
    
    Bitmap and attrlen follow immediately after the op reply header.  This
    was an oversight from commit bf118a342f.
    
    Consequences of this are just minor efficiency (extra calls to
    xdr_shrink_bufhead).
    
    Fixes: bf118a342f10 "NFSv4: include bitmap in nfsv4 get acl data"
    Reviewed-by: Kinglong Mee <kinglongmee@gmail.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 9a9ea5d2f916183932b4f3ce2f6e21ccfd7ea08f
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Wed Feb 8 11:29:46 2017 -0500

    NFSv4: Fix memory and state leak in _nfs4_open_and_get_state
    
    commit a974deee477af89411e0f80456bfb344ac433c98 upstream.
    
    If we exit because the file access check failed, we currently
    leak the struct nfs4_state. We need to attach it to the
    open context before returning.
    
    Fixes: 3efb9722475e ("NFSv4: Refactor _nfs4_open_and_get_state..")
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit aad5b4ca27f0fe050129e61c3c80409fbc4f7344
Author: Steve Wise <swise@opengridcomputing.com>
Date:   Tue Feb 21 11:21:57 2017 -0800

    rdma_cm: fail iwarp accepts w/o connection params
    
    commit f2625f7db4dd0bbd16a9c7d2950e7621f9aa57ad upstream.
    
    cma_accept_iw() needs to return an error if conn_params is NULL.
    Since this is coming from user space, we can crash.
    
    Reported-by: Shaobo He <shaobo@cs.utah.edu>
    Acked-by: Sean Hefty <sean.hefty@intel.com>
    Signed-off-by: Steve Wise <swise@opengridcomputing.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 600bfb438cd9ab51f952bc44364c20e82d184fa4
Author: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Date:   Thu Dec 22 18:07:52 2016 -0700

    RDMA/core: Fix incorrect structure packing for booleans
    
    commit 55efcfcd7776165b294f8b5cd6e05ca00ec89b7c upstream.
    
    The RDMA core uses ib_pack() to convert from unpacked CPU structs
    to on-the-wire bitpacked structs.
    
    This process requires that 1 bit fields are declared as u8 in the
    unpacked struct, otherwise the packing process does not read the
    value properly and the packed result is wired to 0. Several
    places wrongly used int.
    
    Crucially this means the kernel has never, set reversible
    correctly in the path record request. It has always asked for
    irreversible paths even if the ULP requests otherwise.
    
    When the kernel is used with a SM that supports this feature, it
    completely breaks communication management if reversible paths are
    not properly requested.
    
    The only reason this ever worked is because opensm ignores the
    reversible bit.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 3ee3990aefa1860fca0c00bf1a03ebaab993550e
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Wed Dec 7 01:16:25 2016 -0800

    hv: allocate synic pages for all present CPUs
    
    commit 421b8f20d3c381b215f988b42428f56fc3b82405 upstream.
    
    It may happen that not all CPUs are online when we do hv_synic_alloc() and
    in case more CPUs come online later we may try accessing these allocated
    structures.
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 76c23a97cc8bcec75e7042c1df0f67133a8a2efe
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Thu Mar 2 12:03:40 2017 +0100

    can: usb_8dev: Fix memory leak of priv->cmd_msg_buffer
    
    commit 7c42631376306fb3f34d51fda546b50a9b6dd6ec upstream.
    
    The priv->cmd_msg_buffer is allocated in the probe function, but never
    kfree()ed. This patch converts the kzalloc() to resource-managed
    kzalloc.
    
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 39f8a4adde45a818f650a9f7ccc03fa6cbac356d
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Wed Feb 22 20:08:25 2017 +0100

    fuse: add missing FR_FORCE
    
    commit 2e38bea99a80eab408adee27f873a188d57b76cb upstream.
    
    fuse_file_put() was missing the "force" flag for the RELEASE request when
    sending synchronously (fuseblk).
    
    If this flag is not set, then a sync request may be interrupted before it
    is dequeued by the userspace filesystem.  In this case the OPEN won't be
    balanced with a RELEASE.
    
    [js] force is a variable, not a bit
    
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Fixes: 5a18ec176c93 ("fuse: fix hang of single threaded fuseblk filesystem")
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 2c968fc1f110f82beb5f6599ea22bb1e0ede0102
Author: Christian Lamparter <chunkeey@googlemail.com>
Date:   Tue Feb 14 20:10:30 2017 +0100

    ath9k: use correct OTP register offsets for the AR9340 and AR9550
    
    commit c9f1e32600816d695f817477d56490bfc2ba43c6 upstream.
    
    This patch fixes the OTP register definitions for the AR934x and AR9550
    WMAC SoC.
    
    Previously, the ath9k driver was unable to initialize the integrated
    WMAC on an Aerohive AP121:
    
    | ath: phy0: timeout (1000 us) on reg 0x30018: 0xbadc0ffe & 0x00000007 != 0x00000004
    | ath: phy0: timeout (1000 us) on reg 0x30018: 0xbadc0ffe & 0x00000007 != 0x00000004
    | ath: phy0: Unable to initialize hardware; initialization status: -5
    | ath9k ar934x_wmac: failed to initialize device
    | ath9k: probe of ar934x_wmac failed with error -5
    
    It turns out that the AR9300_OTP_STATUS and AR9300_OTP_DATA
    definitions contain a typo.
    
    Cc: Gabor Juhos <juhosg@openwrt.org>
    Fixes: add295a4afbdf5852d0 "ath9k: use correct OTP register offsets for AR9550"
    Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
    Signed-off-by: Chris Blake <chrisrblake93@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 43a471c078ea454abd3763135ce94aa6f417608f
Author: Felix Fietkau <nbd@nbd.name>
Date:   Wed Jan 11 16:32:13 2017 +0200

    ath5k: drop bogus warning on drv_set_key with unsupported cipher
    
    commit a70e1d6fd6b5e1a81fa6171600942bee34f5128f upstream.
    
    Simply return -EOPNOTSUPP instead.
    
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit cfe74e80a5d26c388267f55cbf82fd562630b993
Author: Mathias Svensson <idolf@google.com>
Date:   Fri Jan 6 13:32:39 2017 -0800

    samples/seccomp: fix 64-bit comparison macros
    
    commit 916cafdc95843fb9af5fd5f83ca499d75473d107 upstream.
    
    There were some bugs in the JNE64 and JLT64 comparision macros. This fixes
    them, improves comments, and cleans up the file while we are at it.
    
    Reported-by: Stephen Röttger <sroettger@google.com>
    Signed-off-by: Mathias Svensson <idolf@google.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 05751f20bcfcd4b3372c0204bd0d184b72ed0ad1
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Sun Feb 5 01:26:48 2017 -0500

    ext4: return EROFS if device is r/o and journal replay is needed
    
    commit 4753d8a24d4588657bc0a4cd66d4e282dff15c8c upstream.
    
    If the file system requires journal recovery, and the device is
    read-ony, return EROFS to the mount system call.  This allows xfstests
    generic/050 to pass.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit dfd582a9dff2854abed7d3c297921f974816535f
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Sat Feb 4 23:38:06 2017 -0500

    ext4: preserve the needs_recovery flag when the journal is aborted
    
    commit 97abd7d4b5d9c48ec15c425485f054e1c15e591b upstream.
    
    If the journal is aborted, the needs_recovery feature flag should not
    be removed.  Otherwise, it's the journal might not get replayed and
    this could lead to more data getting lost.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit c1664e9bcf6291c0ceb8599f57c8cf493526abe6
Author: Jan Kara <jack@suse.cz>
Date:   Fri Jan 27 14:34:30 2017 -0500

    ext4: trim allocation requests to group size
    
    commit cd648b8a8fd5071d232242d5ee7ee3c0815776af upstream.
    
    If filesystem groups are artifically small (using parameter -g to
    mkfs.ext4), ext4_mb_normalize_request() can result in a request that is
    larger than a block group. Trim the request size to not confuse
    allocation code.
    
    Reported-by: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit ff42ed87b60e2c849df39ccbe0d04f320e9003a3
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Sat Feb 4 23:14:19 2017 -0500

    jbd2: don't leak modified metadata buffers on an aborted journal
    
    commit e112666b4959b25a8552d63bc564e1059be703e8 upstream.
    
    If the journal has been aborted, we shouldn't mark the underlying
    buffer head as dirty, since that will cause the metadata block to get
    modified.  And if the journal has been aborted, we shouldn't allow
    this since it will almost certainly lead to a corrupted file system.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 281ccab8eaf7d1d6b18d9ebf34288ada0299720e
Author: Hannes Reinecke <hare@suse.de>
Date:   Tue Apr 26 08:06:58 2016 +0200

    sd: get disk reference in sd_check_events()
    
    commit eb72d0bb84eee5d0dc3044fd17b75e7101dabb57 upstream.
    
    sd_check_events() is called asynchronously, and might race
    with device removal. So always take a disk reference when
    processing the event to avoid the device being removed while
    the event is processed.
    
    Signed-off-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Cc: Jinpu Wang <jinpu.wang@profitbricks.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit fc7b773166d00859060d91fdf9d017619f07184c
Author: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
Date:   Thu Feb 16 12:51:21 2017 -0800

    scsi: aacraid: Reorder Adapter status check
    
    commit c421530bf848604e97d0785a03b3fe2c62775083 upstream.
    
    The driver currently checks the SELF_TEST_FAILED first and then
    KERNEL_PANIC next. Under error conditions(boot code failure) both
    SELF_TEST_FAILED and KERNEL_PANIC can be set at the same time.
    
    The driver has the capability to reset the controller on an KERNEL_PANIC,
    but not on SELF_TEST_FAILED.
    
    Fixed by first checking KERNEL_PANIC and then the others.
    
    Fixes: e8b12f0fb835223752 ([SCSI] aacraid: Add new code for PMC-Sierra's SRC base controller family)
    Signed-off-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
    Reviewed-by: David Carroll <David.Carroll@microsemi.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 7c095762ae405b47c70c6ce95775c30ad9927afd
Author: Long Li <longli@microsoft.com>
Date:   Wed Dec 14 18:46:03 2016 -0800

    scsi: storvsc: properly set residual data length on errors
    
    commit 40630f462824ee24bc00d692865c86c3828094e0 upstream.
    
    On I/O errors, the Windows driver doesn't set data_transfer_length
    on error conditions other than SRB_STATUS_DATA_OVERRUN.
    In these cases we need to set data_transfer_length to 0,
    indicating there is no data transferred. On SRB_STATUS_DATA_OVERRUN,
    data_transfer_length is set by the Windows driver to the actual data transferred.
    
    Reported-by: Shiva Krishna <Shiva.Krishna@nimblestorage.com>
    Signed-off-by: Long Li <longli@microsoft.com>
    Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 53b5abb513fa2e876e7ddb552cf4ffc86900d45d
Author: Long Li <longli@microsoft.com>
Date:   Wed Dec 14 18:46:02 2016 -0800

    scsi: storvsc: properly handle SRB_ERROR when sense message is present
    
    commit bba5dc332ec2d3a685cb4dae668c793f6a3713a3 upstream.
    
    When sense message is present on error, we should pass along to the upper
    layer to decide how to deal with the error.
    This patch fixes connectivity issues with Fiber Channel devices.
    
    Signed-off-by: Long Li <longli@microsoft.com>
    Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit ae0182b32e032e182bd0a01e788991b61ba137dc
Author: Long Li <longli@microsoft.com>
Date:   Wed Dec 14 18:46:01 2016 -0800

    scsi: storvsc: use tagged SRB requests if supported by the device
    
    commit 3cd6d3d9b1abab8dcdf0800224ce26daac24eea2 upstream.
    
    Properly set SRB flags when hosting device supports tagged queuing.
    This patch improves the performance on Fiber Channel disks.
    
    Signed-off-by: Long Li <longli@microsoft.com>
    Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit afa870b96a40e523f96130beeef6cdc51de4e8d9
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Mon Feb 27 14:28:24 2017 -0800

    ipc/shm: Fix shmat mmap nil-page protection
    
    commit 95e91b831f87ac8e1f8ed50c14d709089b4e01b8 upstream.
    
    The issue is described here, with a nice testcase:
    
        https://bugzilla.kernel.org/show_bug.cgi?id=192931
    
    The problem is that shmat() calls do_mmap_pgoff() with MAP_FIXED, and
    the address rounded down to 0.  For the regular mmap case, the
    protection mentioned above is that the kernel gets to generate the
    address -- arch_get_unmapped_area() will always check for MAP_FIXED and
    return that address.  So by the time we do security_mmap_addr(0) things
    get funky for shmat().
    
    The testcase itself shows that while a regular user crashes, root will
    not have a problem attaching a nil-page.  There are two possible fixes
    to this.  The first, and which this patch does, is to simply allow root
    to crash as well -- this is also regular mmap behavior, ie when hacking
    up the testcase and adding mmap(...  |MAP_FIXED).  While this approach
    is the safer option, the second alternative is to ignore SHM_RND if the
    rounded address is 0, thus only having MAP_SHARED flags.  This makes the
    behavior of shmat() identical to the mmap() case.  The downside of this
    is obviously user visible, but does make sense in that it maintains
    semantics after the round-down wrt 0 address and mmap.
    
    Passes shm related ltp tests.
    
    Link: http://lkml.kernel.org/r/1486050195-18629-1-git-send-email-dave@stgolabs.net
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Reported-by: Gareth Evans <gareth.evans@contextis.co.uk>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Cc: Michael Kerrisk <mtk.manpages@googlemail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 591152d8215c0ef63ac57aa8e57a6c894a5a4259
Author: Vinayak Menon <vinmenon@codeaurora.org>
Date:   Fri Feb 24 14:59:39 2017 -0800

    mm: vmpressure: fix sending wrong events on underflow
    
    commit e1587a4945408faa58d0485002c110eb2454740c upstream.
    
    At the end of a window period, if the reclaimed pages is greater than
    scanned, an unsigned underflow can result in a huge pressure value and
    thus a critical event.  Reclaimed pages is found to go higher than
    scanned because of the addition of reclaimed slab pages to reclaimed in
    shrink_node without a corresponding increment to scanned pages.
    
    Minchan Kim mentioned that this can also happen in the case of a THP
    page where the scanned is 1 and reclaimed could be 512.
    
    Link: http://lkml.kernel.org/r/1486641577-11685-1-git-send-email-vinmenon@codeaurora.org
    Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
    Acked-by: Minchan Kim <minchan@kernel.org>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
    Cc: Anton Vorontsov <anton.vorontsov@linaro.org>
    Cc: Shiraz Hashim <shashim@codeaurora.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 8a490093ed29ee5db45fb6f24d7fa696ef3f1fc0
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Jan 11 15:53:08 2017 +0100

    staging: rtl: fix possible NULL pointer dereference
    
    commit 6e017006022abfea5d2466cad936065f45763ad1 upstream.
    
    gcc-7 detects that wlanhdr_to_ethhdr() in two drivers calls memcpy() with
    a destination argument that an earlier function call may have set to NULL:
    
    staging/rtl8188eu/core/rtw_recv.c: In function 'wlanhdr_to_ethhdr':
    staging/rtl8188eu/core/rtw_recv.c:1318:2: warning: argument 1 null where non-null expected [-Wnonnull]
    staging/rtl8712/rtl871x_recv.c: In function 'r8712_wlanhdr_to_ethhdr':
    staging/rtl8712/rtl871x_recv.c:649:2: warning: argument 1 null where non-null expected [-Wnonnull]
    
    I'm fixing this by adding a NULL pointer check and returning failure
    from the function, which is hopefully already handled properly.
    
    This seems to date back to when the drivers were originally added,
    so backporting the fix to stable seems appropriate. There are other
    related realtek drivers in the kernel, but none of them contain a
    function with a similar name or produce this warning.
    
    Fixes: 1cc18a22b96b ("staging: r8188eu: Add files for new driver - part 5")
    Fixes: 2865d42c78a9 ("staging: r8712u: Add the new driver to the mainline kernel")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 94deca997c8bc8af8034c131581fc880250e9d81
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Feb 28 22:15:51 2017 +0100

    ALSA: seq: Fix link corruption by event error handling
    
    commit f3ac9f737603da80c2da3e84b89e74429836bb6d upstream.
    
    The sequencer FIFO management has a bug that may lead to a corruption
    (shortage) of the cell linked list.  When a sequencer client faces an
    error at the event delivery, it tries to put back the dequeued cell.
    When the first queue was put back, this forgot the tail pointer
    tracking, and the link will be screwed up.
    
    Although there is no memory corruption, the sequencer client may stall
    forever at exit while flushing the pending FIFO cells in
    snd_seq_pool_done(), as spotted by syzkaller.
    
    This patch addresses the missing tail pointer tracking at
    snd_seq_fifo_cell_putback().  Also the patch makes sure to clear the
    cell->enxt pointer at snd_seq_fifo_event_in() for avoiding a similar
    mess-up of the FIFO linked list.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit a1449d26f610373e7c339fde3d21df64f9472b2c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Feb 28 14:49:07 2017 +0100

    ALSA: timer: Reject user params with too small ticks
    
    commit 71321eb3f2d0df4e6c327e0b936eec4458a12054 upstream.
    
    When a user sets a too small ticks with a fine-grained timer like
    hrtimer, the kernel tries to fire up the timer irq too frequently.
    This may lead to the condensed locks, eventually the kernel spinlock
    lockup with warnings.
    
    For avoiding such a situation, we define a lower limit of the
    resolution, namely 1ms.  When the user passes a too small tick value
    that results in less than that, the kernel returns -EINVAL now.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 4a1fd6c6ec27a59512f11111c1e921add17820dc
Author: Jaroslav Kysela <perex@perex.cz>
Date:   Wed Feb 15 17:09:42 2017 +0100

    ALSA: hda - fix Lewisburg audio issue
    
    commit e7480b34ad1ab84a63540b2c884cb92c0764ab74 upstream.
    
    Like for Sunrise Point, the total stream number of Lewisburg's
    input and output stream exceeds 15 (GCAP is 0x9701), which will
    cause some streams do not work because of the overflow on
    SDxCTL.STRM field if using the legacy stream tag allocation method.
    
    Fixes: 5cf92c8b3dc5 ("ALSA: hda - Add Intel Lewisburg device IDs Audio")
    Signed-off-by: Jaroslav Kysela <perex@perex.cz>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1cd25ec766d91b6efa426725a9997692433b18a9
Author: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Date:   Mon Dec 12 09:16:51 2016 -0200

    uvcvideo: Fix a wrong macro
    
    commit 17c341ec0115837a610b2da15e32546e26068234 upstream.
    
    Don't mix up UVC_BUF_STATE_* and VB2_BUF_STATE_* codes.
    
    Fixes: 6998b6fb4b1c ("[media] uvcvideo: Use videobuf2-vmalloc")
    
    Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@intel.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 4463676fadf39a0ca2900e5916831721ccc59968
Author: Paul Burton <paul.burton@imgtec.com>
Date:   Mon Nov 7 15:07:07 2016 +0000

    MIPS: Handle microMIPS jumps in the same way as MIPS32/MIPS64 jumps
    
    commit 096a0de427ea333f56f0ee00328cff2a2731bcf1 upstream.
    
    is_jump_ins() checks for plain jump ("j") instructions since commit
    e7438c4b893e ("MIPS: Fix sibling call handling in get_frame_info") but
    that commit didn't make the same change to the microMIPS code, leaving
    it inconsistent with the MIPS32/MIPS64 code. Handle the microMIPS
    encoding of the jump instruction too such that it behaves consistently.
    
    Signed-off-by: Paul Burton <paul.burton@imgtec.com>
    Fixes: e7438c4b893e ("MIPS: Fix sibling call handling in get_frame_info")
    Cc: Tony Wu <tung7970@gmail.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/14533/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit f335c12d3a213adc6a4ab7c5cbf507d35084104e
Author: Paul Burton <paul.burton@imgtec.com>
Date:   Mon Nov 7 15:07:06 2016 +0000

    MIPS: Calculate microMIPS ra properly when unwinding the stack
    
    commit bb9bc4689b9c635714fbcd5d335bad9934a7ebfc upstream.
    
    get_frame_info() calculates the offset of the return address within a
    stack frame simply by dividing a the bottom 16 bits of the instruction,
    treated as a signed integer, by the size of a long. Whilst this works
    for MIPS32 & MIPS64 ISAs where the sw or sd instructions are used, it's
    incorrect for microMIPS where encodings differ. The result is that we
    typically completely fail to unwind the stack on microMIPS.
    
    Fix this by adjusting is_ra_save_ins() to calculate the return address
    offset, and take into account the various different encodings there in
    the same place as we consider whether an instruction is storing the
    ra/$31 register.
    
    With this we are now able to unwind the stack for kernels targetting the
    microMIPS ISA, for example we can produce:
    
        Call Trace:
        [<80109e1f>] show_stack+0x63/0x7c
        [<8011ea17>] __warn+0x9b/0xac
        [<8011ea45>] warn_slowpath_fmt+0x1d/0x20
        [<8013fe53>] register_console+0x43/0x314
        [<8067c58d>] of_setup_earlycon+0x1dd/0x1ec
        [<8067f63f>] early_init_dt_scan_chosen_stdout+0xe7/0xf8
        [<8066c115>] do_early_param+0x75/0xac
        [<801302f9>] parse_args+0x1dd/0x308
        [<8066c459>] parse_early_options+0x25/0x28
        [<8066c48b>] parse_early_param+0x2f/0x38
        [<8066e8cf>] setup_arch+0x113/0x488
        [<8066c4f3>] start_kernel+0x57/0x328
        ---[ end trace 0000000000000000 ]---
    
    Whereas previously we only produced:
    
        Call Trace:
        [<80109e1f>] show_stack+0x63/0x7c
        ---[ end trace 0000000000000000 ]---
    
    Signed-off-by: Paul Burton <paul.burton@imgtec.com>
    Fixes: 34c2f668d0f6 ("MIPS: microMIPS: Add unaligned access support.")
    Cc: Leonid Yegoshin <leonid.yegoshin@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/14532/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 553b06b1c7f2a49985d61692bc08972939b8b290
Author: Paul Burton <paul.burton@imgtec.com>
Date:   Mon Nov 7 15:07:05 2016 +0000

    MIPS: Fix is_jump_ins() handling of 16b microMIPS instructions
    
    commit 67c75057709a6d85c681c78b9b2f9b71191f01a2 upstream.
    
    is_jump_ins() checks 16b instruction fields without verifying that the
    instruction is indeed 16b, as is done by is_ra_save_ins() &
    is_sp_move_ins(). Add the appropriate check.
    
    Signed-off-by: Paul Burton <paul.burton@imgtec.com>
    Fixes: 34c2f668d0f6 ("MIPS: microMIPS: Add unaligned access support.")
    Cc: Leonid Yegoshin <leonid.yegoshin@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/14531/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit aae839a7f81cf4311a5276f22fea654fd2e0ad7e
Author: Paul Burton <paul.burton@imgtec.com>
Date:   Mon Nov 7 15:07:04 2016 +0000

    MIPS: Fix get_frame_info() handling of microMIPS function size
    
    commit b6c7a324df37bf05ef7a2c1580683cf10d082d97 upstream.
    
    get_frame_info() is meant to iterate over up to the first 128
    instructions within a function, but for microMIPS kernels it will not
    reach that many instructions unless the function is 512 bytes long since
    we calculate the maximum number of instructions to check by dividing the
    function length by the 4 byte size of a union mips_instruction. In
    microMIPS kernels this won't do since instructions are variable length.
    
    Fix this by instead checking whether the pointer to the current
    instruction has reached the end of the function, and use max_insns as a
    simple constant to check the number of iterations against.
    
    Signed-off-by: Paul Burton <paul.burton@imgtec.com>
    Fixes: 34c2f668d0f6 ("MIPS: microMIPS: Add unaligned access support.")
    Cc: Leonid Yegoshin <leonid.yegoshin@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/14530/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 50ef9df8672655f3bb111223045ab5ce45d5655e
Author: Paul Burton <paul.burton@imgtec.com>
Date:   Mon Nov 7 15:07:03 2016 +0000

    MIPS: Prevent unaligned accesses during stack unwinding
    
    commit a3552dace7d1d0cabf573e88fc3025cb90c4a601 upstream.
    
    During stack unwinding we call a number of functions to determine what
    type of instruction we're looking at. The union mips_instruction pointer
    provided to them may be pointing at a 2 byte, but not 4 byte, aligned
    address & we thus cannot directly access the 4 byte wide members of the
    union mips_instruction. To avoid this is_ra_save_ins() copies the
    required half-words of the microMIPS instruction to a correctly aligned
    union mips_instruction on the stack, which it can then access safely.
    The is_jump_ins() & is_sp_move_ins() functions do not correctly perform
    this temporary copy, and instead attempt to directly dereference 4 byte
    fields which may be misaligned and lead to an address exception.
    
    Fix this by copying the instruction halfwords to a temporary union
    mips_instruction in get_frame_info() such that we can provide a 4 byte
    aligned union mips_instruction to the is_*_ins() functions and they do
    not need to deal with misalignment themselves.
    
    Signed-off-by: Paul Burton <paul.burton@imgtec.com>
    Fixes: 34c2f668d0f6 ("MIPS: microMIPS: Add unaligned access support.")
    Cc: Leonid Yegoshin <leonid.yegoshin@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/14529/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 839f081610437d03b101286d8d386006044ab816
Author: Paul Burton <paul.burton@imgtec.com>
Date:   Mon Nov 7 15:07:02 2016 +0000

    MIPS: Clear ISA bit correctly in get_frame_info()
    
    commit ccaf7caf2c73c6db920772bf08bf1d47b2170634 upstream.
    
    get_frame_info() can be called in microMIPS kernels with the ISA bit
    already clear. For example this happens when unwind_stack_by_address()
    is called because we begin with a PC that has the ISA bit set & subtract
    the (odd) offset from the preceding symbol (which does not have the ISA
    bit set). Since get_frame_info() unconditionally subtracts 1 from the PC
    in microMIPS kernels it incorrectly misaligns the address it then
    attempts to access code at, leading to an address error exception.
    
    Fix this by using msk_isa16_mode() to clear the ISA bit, which allows
    get_frame_info() to function regardless of whether it is provided with a
    PC that has the ISA bit set or not.
    
    Signed-off-by: Paul Burton <paul.burton@imgtec.com>
    Fixes: 34c2f668d0f6 ("MIPS: microMIPS: Add unaligned access support.")
    Cc: Leonid Yegoshin <leonid.yegoshin@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/14528/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 6f25f217710b484b7eea2ea1a3e9f1c00e44f496
Author: James Cowgill <James.Cowgill@imgtec.com>
Date:   Mon Jan 9 16:52:28 2017 +0000

    MIPS: OCTEON: Fix copy_from_user fault handling for large buffers
    
    commit 884b426917e4b3c85f33b382c792a94305dfdd62 upstream.
    
    If copy_from_user is called with a large buffer (>= 128 bytes) and the
    userspace buffer refers partially to unreadable memory, then it is
    possible for Octeon's copy_from_user to report the wrong number of bytes
    have been copied. In the case where the buffer size is an exact multiple
    of 128 and the fault occurs in the last 64 bytes, copy_from_user will
    report that all the bytes were copied successfully but leave some
    garbage in the destination buffer.
    
    The bug is in the main __copy_user_common loop in octeon-memcpy.S where
    in the middle of the loop, src and dst are incremented by 128 bytes. The
    l_exc_copy fault handler is used after this but that assumes that
    "src < THREAD_BUADDR($28)". This is not the case if src has already been
    incremented.
    
    Fix by adding an extra fault handler which rewinds the src and dst
    pointers 128 bytes before falling though to l_exc_copy.
    
    Thanks to the pwritev test from the strace test suite for originally
    highlighting this bug!
    
    Fixes: 5b3b16880f40 ("MIPS: Add Cavium OCTEON processor support ...")
    Signed-off-by: James Cowgill <James.Cowgill@imgtec.com>
    Acked-by: David Daney <david.daney@cavium.com>
    Reviewed-by: James Hogan <james.hogan@imgtec.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/14978/
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 9245eb2ff54228b6ab2fcae449608279062b8eb2
Author: Ralf Baechle <ralf@linux-mips.org>
Date:   Thu Jan 26 02:16:47 2017 +0100

    MIPS: Fix special case in 64 bit IP checksumming.
    
    commit 66fd848cadaa6be974a8c780fbeb328f0af4d3bd upstream.
    
    For certain arguments such as saddr = 0xc0a8fd60, daddr = 0xc0a8fda1,
    len = 80, proto = 17, sum = 0x7eae049d there will be a carry when
    folding the intermediate 64 bit checksum to 32 bit but the code doesn't
    add the carry back to the one's complement sum, thus an incorrect result
    will be generated.
    
    Reported-by: Mark Zhang <bomb.zhang@gmail.com>
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Reviewed-by: James Hogan <james.hogan@imgtec.com>
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 26b65f1b9fbd674a4f350a869595a2293e14f453
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Tue Oct 18 11:28:32 2016 -0300

    perf trace: Use the syscall raw_syscalls:sys_enter timestamp
    
    commit ecf1e2253ea79c6204f4d6a5e756e8fb4aed5a7e upstream.
    
    Instead of the one when another syscall takes place while another is being
    processed (in another CPU, but we show it serialized, so need to "interrupt"
    the other), and also when finally showing the sys_enter + sys_exit + duration,
    where we were showing the sample->time for the sys_exit, duh.
    
    Before:
    
      # perf trace sleep 1
      <SNIP>
         0.373 (   0.001 ms): close(fd: 3                   ) = 0
      1000.626 (1000.211 ms): nanosleep(rqtp: 0x7ffd6ddddfb0) = 0
      1000.653 (   0.003 ms): close(fd: 1                   ) = 0
      1000.657 (   0.002 ms): close(fd: 2                   ) = 0
      1000.667 (   0.000 ms): exit_group(                   )
      #
    
    After:
    
      # perf trace sleep 1
      <SNIP>
         0.336 (   0.001 ms): close(fd: 3                   ) = 0
         0.373 (1000.086 ms): nanosleep(rqtp: 0x7ffe303e9550) = 0
      1000.481 (   0.002 ms): close(fd: 1                   ) = 0
      1000.485 (   0.001 ms): close(fd: 2                   ) = 0
      1000.494 (   0.000 ms): exit_group(                   )
    [root@jouet linux]#
    
    [js] no trace__printf_interrupted_entry in 3.12 yet
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/n/tip-ecbzgmu2ni6glc6zkw8p1zmx@git.kernel.org
    Fixes: 752fde44fd1c ("perf trace: Support interrupted syscalls")
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 5cbbb3f08868e2e430c754c4b71d0640546d6277
Author: Shmulik Ladkani <shmulik.ladkani@gmail.com>
Date:   Fri Oct 21 00:18:08 2016 +0300

    net/sched: em_meta: Fix 'meta vlan' to correctly recognize zero VID frames
    
    commit d65f2fa680d6f91438461df54c83a331b3a631c9 upstream.
    
    META_COLLECTOR int_vlan_tag() assumes that if the accel tag (vlan_tci)
    is zero, then no vlan accel tag is present.
    
    This is incorrect for zero VID vlan accel packets, making the following
    match fail:
      tc filter add ... basic match 'meta(vlan mask 0xfff eq 0)' ...
    
    Apparently 'int_vlan_tag' was implemented prior VLAN_TAG_PRESENT was
    introduced in 05423b2 "vlan: allow null VLAN ID to be used"
    (and at time introduced, the 'vlan_tx_tag_get' call in em_meta was not
     adapted).
    
    Fix, testing skb_vlan_tag_present instead of testing skb_vlan_tag_get's
    value.
    
    Fixes: 05423b2413 ("vlan: allow null VLAN ID to be used")
    Fixes: 1a31f2042e ("netsched: Allow meta match on vlan tag on receive")
    
    Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Cc: Stephen Hemminger <stephen@networkplumber.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 8aee8e6c2f0e8a9531a98a227e112fd4835a1881
Author: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Date:   Thu Feb 23 09:31:18 2017 -0300

    sctp: deny peeloff operation on asocs with threads sleeping on it
    
    commit dfcb9f4f99f1e9a49e43398a7bfbf56927544af1 upstream.
    
    commit 2dcab5984841 ("sctp: avoid BUG_ON on sctp_wait_for_sndbuf")
    attempted to avoid a BUG_ON call when the association being used for a
    sendmsg() is blocked waiting for more sndbuf and another thread did a
    peeloff operation on such asoc, moving it to another socket.
    
    As Ben Hutchings noticed, then in such case it would return without
    locking back the socket and would cause two unlocks in a row.
    
    Further analysis also revealed that it could allow a double free if the
    application managed to peeloff the asoc that is created during the
    sendmsg call, because then sctp_sendmsg() would try to free the asoc
    that was created only for that call.
    
    This patch takes another approach. It will deny the peeloff operation
    if there is a thread sleeping on the asoc, so this situation doesn't
    exist anymore. This avoids the issues described above and also honors
    the syscalls that are already being handled (it can be multiple sendmsg
    calls).
    
    Joint work with Xin Long.
    
    Fixes: 2dcab5984841 ("sctp: avoid BUG_ON on sctp_wait_for_sndbuf")
    Cc: Alexander Popov <alex.popov@linux.com>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d93cf67053e241539a1ef7c30ee8583022bc0e89
Author: colyli@suse.de <colyli@suse.de>
Date:   Sat Jan 28 21:11:49 2017 +0800

    md linear: fix a race between linear_add() and linear_congested()
    
    commit 03a9e24ef2aaa5f1f9837356aed79c860521407a upstream.
    
    Recently I receive a bug report that on Linux v3.0 based kerenl, hot add
    disk to a md linear device causes kernel crash at linear_congested(). From
    the crash image analysis, I find in linear_congested(), mddev->raid_disks
    contains value N, but conf->disks[] only has N-1 pointers available. Then
    a NULL pointer deference crashes the kernel.
    
    There is a race between linear_add() and linear_congested(), RCU stuffs
    used in these two functions cannot avoid the race. Since Linuv v4.0
    RCU code is replaced by introducing mddev_suspend().  After checking the
    upstream code, it seems linear_congested() is not called in
    generic_make_request() code patch, so mddev_suspend() cannot provent it
    from being called. The possible race still exists.
    
    Here I explain how the race still exists in current code.  For a machine
    has many CPUs, on one CPU, linear_add() is called to add a hard disk to a
    md linear device; at the same time on other CPU, linear_congested() is
    called to detect whether this md linear device is congested before issuing
    an I/O request onto it.
    
    Now I use a possible code execution time sequence to demo how the possible
    race happens,
    
    seq    linear_add()                linear_congested()
     0                                 conf=mddev->private
     1   oldconf=mddev->private
     2   mddev->raid_disks++
     3                              for (i=0; i<mddev->raid_disks;i++)
     4                                bdev_get_queue(conf->disks[i].rdev->bdev)
     5   mddev->private=newconf
    
    In linear_add() mddev->raid_disks is increased in time seq 2, and on
    another CPU in linear_congested() the for-loop iterates conf->disks[i] by
    the increased mddev->raid_disks in time seq 3,4. But conf with one more
    element (which is a pointer to struct dev_info type) to conf->disks[] is
    not updated yet, accessing its structure member in time seq 4 will cause a
    NULL pointer deference fault.
    
    To fix this race, there are 2 parts of modification in the patch,
     1) Add 'int raid_disks' in struct linear_conf, as a copy of
        mddev->raid_disks. It is initialized in linear_conf(), always being
        consistent with pointers number of 'struct dev_info disks[]'. When
        iterating conf->disks[] in linear_congested(), use conf->raid_disks to
        replace mddev->raid_disks in the for-loop, then NULL pointer deference
        will not happen again.
     2) RCU stuffs are back again, and use kfree_rcu() in linear_add() to
        free oldconf memory. Because oldconf may be referenced as mddev->private
        in linear_congested(), kfree_rcu() makes sure that its memory will not
        be released until no one uses it any more.
    Also some code comments are added in this patch, to make this modification
    to be easier understandable.
    
    This patch can be applied for kernels since v4.0 after commit:
    3be260cc18f8 ("md/linear: remove rcu protections in favour of
    suspend/resume"). But this bug is reported on Linux v3.0 based kernel, for
    people who maintain kernels before Linux v4.0, they need to do some back
    back port to this patch.
    
    Changelog:
     - V3: add 'int raid_disks' in struct linear_conf, and use kfree_rcu() to
           replace rcu_call() in linear_add().
     - v2: add RCU stuffs by suggestion from Shaohua and Neil.
     - v1: initial effort.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Cc: Shaohua Li <shli@fb.com>
    Cc: Neil Brown <neilb@suse.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>