commit a656195aeaa584cd4e8c896e3a54c3bad97bdbb0
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Thu Jul 14 10:12:22 2016 +0200

    Linux 3.12.62

commit 2b012f593d8a847f2021ac1b986d157b010ed8ad
Author: Vladimir Davydov <vdavydov@parallels.com>
Date:   Thu Apr 16 12:47:35 2015 -0700

    signal: remove warning about using SI_TKILL in rt_[tg]sigqueueinfo
    
    commit 69828dce7af2cb6d08ef5a03de687d422fb7ec1f upstream.
    
    Sending SI_TKILL from rt_[tg]sigqueueinfo was deprecated, so now we issue
    a warning on the first attempt of doing it.  We use WARN_ON_ONCE, which is
    not informative and, what is worse, taints the kernel, making the trinity
    syscall fuzzer complain false-positively from time to time.
    
    It does not look like we need this warning at all, because the behaviour
    changed quite a long time ago (2.6.39), and if an application relies on
    the old API, it gets EPERM anyway and can issue a warning by itself.
    
    So let us zap the warning in kernel.
    
    Signed-off-by: Vladimir Davydov <vdavydov@parallels.com>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Cc: Richard Weinberger <richard@nod.at>
    Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.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 948546f8c1a743c138d14aafe54b48ab598f62f6
Author: James Hogan <james.hogan@imgtec.com>
Date:   Wed Jul 13 18:14:19 2016 +0100

    MIPS: KVM: Fix modular KVM under QEMU
    
    commit 797179bc4fe06c89e47a9f36f886f68640b423f8 upstream.
    
    Copy __kvm_mips_vcpu_run() into unmapped memory, so that we can never
    get a TLB refill exception in it when KVM is built as a module.
    
    This was observed to happen with the host MIPS kernel running under
    QEMU, due to a not entirely transparent optimisation in the QEMU TLB
    handling where TLB entries replaced with TLBWR are copied to a separate
    part of the TLB array. Code in those pages continue to be executable,
    but those mappings persist only until the next ASID switch, even if they
    are marked global.
    
    An ASID switch happens in __kvm_mips_vcpu_run() at exception level after
    switching to the guest exception base. Subsequent TLB mapped kernel
    instructions just prior to switching to the guest trigger a TLB refill
    exception, which enters the guest exception handlers without updating
    EPC. This appears as a guest triggered TLB refill on a host kernel
    mapped (host KSeg2) address, which is not handled correctly as user
    (guest) mode accesses to kernel (host) segments always generate address
    error exceptions.
    
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: kvm@vger.kernel.org
    Cc: linux-mips@linux-mips.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [james.hogan@imgtec.com: backported for stable 3.14]
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 2cb8ebaafd210dbb6f351638d0247691634e43c4
Author: Bjørn Mork <bjorn@mork.no>
Date:   Sun Jul 3 22:24:50 2016 +0200

    cdc_ncm: workaround for EM7455 "silent" data interface
    
    [ Upstream commit c086e7096170390594c425114d98172bc9aceb8a ]
    
    Several Lenovo users have reported problems with their Sierra
    Wireless EM7455 modem. The driver has loaded successfully and
    the MBIM management channel has appeared to work, including
    establishing a connection to the mobile network. But no frames
    have been received over the data interface.
    
    The problem affects all EM7455 and MC7455, and is assumed to
    affect other modems based on the same Qualcomm chipset and
    baseband firmware.
    
    Testing narrowed the problem down to what seems to be a
    firmware timing bug during initialization. Adding a short sleep
    while probing is sufficient to make the problem disappear.
    Experiments have shown that 1-2 ms is too little to have any
    effect, while 10-20 ms is enough to reliably succeed.
    
    Reported-by: Stefan Armbruster <ml001@armbruster-it.de>
    Reported-by: Ralph Plawetzki <ralph@purejava.org>
    Reported-by: Andreas Fett <andreas.fett@secunet.com>
    Reported-by: Rasmus Lerdorf <rasmus@lerdorf.com>
    Reported-by: Samo Ratnik <samo.ratnik@gmail.com>
    Reported-and-tested-by: Aleksander Morgado <aleksander@aleksander.es>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 5925ce0a3bd02a3c6c3d1d2fc7deb6ac89684beb
Author: Oliver Neukum <oneukum@suse.com>
Date:   Tue May 31 14:48:15 2016 +0200

    HID: elo: kill not flush the work
    
    commit ed596a4a88bd161f868ccba078557ee7ede8a6ef upstream.
    
    Flushing a work that reschedules itself is not a sensible operation. It needs
    to be killed. Failure to do so leads to a kernel panic in the timer code.
    
    Signed-off-by: Oliver Neukum <ONeukum@suse.com>
    Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 9deea4ddcc8f6b9708075aa307042c43b4fde732
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Jul 16 09:37:04 2014 +0300

    ALSA: compress: fix an integer overflow check
    
    commit 6217e5ede23285ddfee10d2e4ba0cc2d4c046205 upstream.
    
    I previously added an integer overflow check here but looking at it now,
    it's still buggy.
    
    The bug happens in snd_compr_allocate_buffer().  We multiply
    ".fragments" and ".fragment_size" and that doesn't overflow but then we
    save it in an unsigned int so it truncates the high bits away and we
    allocate a smaller than expected size.
    
    Fixes: b35cc8225845 ('ALSA: compress_core: integer overflow in snd_compr_allocate_buffer()')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 5b9003297640242a33bb325f57ac60359ed0be43
Author: Scott Bauer <sbauer@plzdonthack.me>
Date:   Thu Jun 23 08:59:47 2016 -0600

    HID: hiddev: validate num_values for HIDIOCGUSAGES, HIDIOCSUSAGES commands
    
    commit 93a2001bdfd5376c3dc2158653034c20392d15c5 upstream.
    
    This patch validates the num_values parameter from userland during the
    HIDIOCGUSAGES and HIDIOCSUSAGES commands. Previously, if the report id was set
    to HID_REPORT_ID_UNKNOWN, we would fail to validate the num_values parameter
    leading to a heap overflow.
    
    Signed-off-by: Scott Bauer <sbauer@plzdonthack.me>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 93257ab38311da3981f781c1dc0f551730a3185f
Author: Lukasz Odzioba <lukasz.odzioba@intel.com>
Date:   Fri Jun 24 14:50:01 2016 -0700

    mm/swap.c: flush lru pvecs on compound page arrival
    
    commit 8f182270dfec432e93fae14f9208a6b9af01009f upstream.
    
    Currently we can have compound pages held on per cpu pagevecs, which
    leads to a lot of memory unavailable for reclaim when needed.  In the
    systems with hundreads of processors it can be GBs of memory.
    
    On of the way of reproducing the problem is to not call munmap
    explicitly on all mapped regions (i.e.  after receiving SIGTERM).  After
    that some pages (with THP enabled also huge pages) may end up on
    lru_add_pvec, example below.
    
      void main() {
      #pragma omp parallel
      {
            size_t size = 55 * 1000 * 1000; // smaller than  MEM/CPUS
            void *p = mmap(NULL, size, PROT_READ | PROT_WRITE,
                    MAP_PRIVATE | MAP_ANONYMOUS , -1, 0);
            if (p != MAP_FAILED)
                    memset(p, 0, size);
            //munmap(p, size); // uncomment to make the problem go away
      }
      }
    
    When we run it with THP enabled it will leave significant amount of
    memory on lru_add_pvec.  This memory will be not reclaimed if we hit
    OOM, so when we run above program in a loop:
    
            for i in `seq 100`; do ./a.out; done
    
    many processes (95% in my case) will be killed by OOM.
    
    The primary point of the LRU add cache is to save the zone lru_lock
    contention with a hope that more pages will belong to the same zone and
    so their addition can be batched.  The huge page is already a form of
    batched addition (it will add 512 worth of memory in one go) so skipping
    the batching seems like a safer option when compared to a potential
    excess in the caching which can be quite large and much harder to fix
    because lru_add_drain_all is way to expensive and it is not really clear
    what would be a good moment to call it.
    
    Similarly we can reproduce the problem on lru_deactivate_pvec by adding:
    madvise(p, size, MADV_FREE); after memset.
    
    This patch flushes lru pvecs on compound page arrival making the problem
    less severe - after applying it kill rate of above example drops to 0%,
    due to reducing maximum amount of memory held on pvec from 28MB (with
    THP) to 56kB per CPU.
    
    Suggested-by: Michal Hocko <mhocko@suse.com>
    Link: http://lkml.kernel.org/r/1466180198-18854-1-git-send-email-lukasz.odzioba@intel.com
    Signed-off-by: Lukasz Odzioba <lukasz.odzioba@intel.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Kirill Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Vladimir Davydov <vdavydov@parallels.com>
    Cc: Ming Li <mingli199x@qq.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: <stable@vger.kernel.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 a992f642bfd59c3595045fe38f3292ce577b7136
Author: Marcelo Tosatti <mtosatti@redhat.com>
Date:   Sat Apr 26 22:30:23 2014 -0300

    KVM: x86: expose invariant tsc cpuid bit (v2)
    
    commit e4c9a5a17567f8ea975bdcfdd1bf9d63965de6c9 upstream.
    
    Invariant TSC is a property of TSC, no additional
    support code necessary.
    
    Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 8617fe9e3573cd7d465c9f4d4e88fa29d1e63271
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Fri Jun 10 10:54:32 2016 +0200

    base: make module_create_drivers_dir race-free
    
    commit 7e1b1fc4dabd6ec8e28baa0708866e13fa93c9b3 upstream.
    
    Modules which register drivers via standard path (driver_register) in
    parallel can cause a warning:
    WARNING: CPU: 2 PID: 3492 at ../fs/sysfs/dir.c:31 sysfs_warn_dup+0x62/0x80
    sysfs: cannot create duplicate filename '/module/saa7146/drivers'
    Modules linked in: hexium_gemini(+) mxb(+) ...
    ...
    Call Trace:
    ...
     [<ffffffff812e63a2>] sysfs_warn_dup+0x62/0x80
     [<ffffffff812e6487>] sysfs_create_dir_ns+0x77/0x90
     [<ffffffff8140f2c4>] kobject_add_internal+0xb4/0x340
     [<ffffffff8140f5b8>] kobject_add+0x68/0xb0
     [<ffffffff8140f631>] kobject_create_and_add+0x31/0x70
     [<ffffffff8157a703>] module_add_driver+0xc3/0xd0
     [<ffffffff8155e5d4>] bus_add_driver+0x154/0x280
     [<ffffffff815604c0>] driver_register+0x60/0xe0
     [<ffffffff8145bed0>] __pci_register_driver+0x60/0x70
     [<ffffffffa0273e14>] saa7146_register_extension+0x64/0x90 [saa7146]
     [<ffffffffa0033011>] hexium_init_module+0x11/0x1000 [hexium_gemini]
    ...
    
    As can be (mostly) seen, driver_register causes this call sequence:
      -> bus_add_driver
        -> module_add_driver
          -> module_create_drivers_dir
    The last one creates "drivers" directory in /sys/module/<...>. When
    this is done in parallel, the directory is attempted to be created
    twice at the same time.
    
    This can be easily reproduced by loading mxb and hexium_gemini in
    parallel:
    while :; do
      modprobe mxb &
      modprobe hexium_gemini
      wait
      rmmod mxb hexium_gemini saa7146_vv saa7146
    done
    
    saa7146 calls pci_register_driver for both mxb and hexium_gemini,
    which means /sys/module/saa7146/drivers is to be created for both of
    them.
    
    Fix this by a new mutex in module_create_drivers_dir which makes the
    test-and-create "drivers" dir atomic.
    
    I inverted the condition and removed 'return' to avoid multiple
    unlocks or a goto.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Fixes: fe480a2675ed (Modules: only add drivers/ direcory if needed)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 8c903c052ddf107cdbf4e0ccb54ad20be75c899f
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Jun 16 15:48:57 2016 +0100

    KEYS: potential uninitialized variable
    
    commit 38327424b40bcebe2de92d07312c89360ac9229a upstream.
    
    If __key_link_begin() failed then "edit" would be uninitialized.  I've
    added a check to fix that.
    
    This allows a random user to crash the kernel, though it's quite
    difficult to achieve.  There are three ways it can be done as the user
    would have to cause an error to occur in __key_link():
    
     (1) Cause the kernel to run out of memory.  In practice, this is difficult
         to achieve without ENOMEM cropping up elsewhere and aborting the
         attempt.
    
     (2) Revoke the destination keyring between the keyring ID being looked up
         and it being tested for revocation.  In practice, this is difficult to
         time correctly because the KEYCTL_REJECT function can only be used
         from the request-key upcall process.  Further, users can only make use
         of what's in /sbin/request-key.conf, though this does including a
         rejection debugging test - which means that the destination keyring
         has to be the caller's session keyring in practice.
    
     (3) Have just enough key quota available to create a key, a new session
         keyring for the upcall and a link in the session keyring, but not then
         sufficient quota to create a link in the nominated destination keyring
         so that it fails with EDQUOT.
    
    The bug can be triggered using option (3) above using something like the
    following:
    
            echo 80 >/proc/sys/kernel/keys/root_maxbytes
            keyctl request2 user debug:fred negate @t
    
    The above sets the quota to something much lower (80) to make the bug
    easier to trigger, but this is dependent on the system.  Note also that
    the name of the keyring created contains a random number that may be
    between 1 and 10 characters in size, so may throw the test off by
    changing the amount of quota used.
    
    Assuming the failure occurs, something like the following will be seen:
    
            kfree_debugcheck: out of range ptr 6b6b6b6b6b6b6b68h
            ------------[ cut here ]------------
            kernel BUG at ../mm/slab.c:2821!
            ...
            RIP: 0010:[<ffffffff811600f9>] kfree_debugcheck+0x20/0x25
            RSP: 0018:ffff8804014a7de8  EFLAGS: 00010092
            RAX: 0000000000000034 RBX: 6b6b6b6b6b6b6b68 RCX: 0000000000000000
            RDX: 0000000000040001 RSI: 00000000000000f6 RDI: 0000000000000300
            RBP: ffff8804014a7df0 R08: 0000000000000001 R09: 0000000000000000
            R10: ffff8804014a7e68 R11: 0000000000000054 R12: 0000000000000202
            R13: ffffffff81318a66 R14: 0000000000000000 R15: 0000000000000001
            ...
            Call Trace:
              kfree+0xde/0x1bc
              assoc_array_cancel_edit+0x1f/0x36
              __key_link_end+0x55/0x63
              key_reject_and_link+0x124/0x155
              keyctl_reject_key+0xb6/0xe0
              keyctl_negate_key+0x10/0x12
              SyS_keyctl+0x9f/0xe7
              do_syscall_64+0x63/0x13a
              entry_SYSCALL64_slow_path+0x25/0x25
    
    Fixes: f70e2e06196a ('KEYS: Do preallocation for __key_link()')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit e0856a10a938c271684ed524e12939fee1a0b247
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Fri Sep 4 14:47:06 2015 -0500

    SCSI: Increase REPORT_LUNS timeout
    
    commit b39c9a661b9bc77e064cade26cf913a1d4255d55 upstream.
    
    This patch fixes an issue seen with an IBM 2145 (SVC) where, following an error
    injection test which results in paths going offline, when they came
    back online, the path would timeout the REPORT_LUNS issued during the
    scan. This timeout situation continued until retries were expired, resulting in
    falling back to a sequential LUN scan. Then, since the target responds
    with PQ=1, PDT=0 for all possible LUNs, due to the way the sequential
    LUN scan code works, we end up adding 512 LUNs for each target, when there
    is really only a small handful of LUNs that are actually present.
    
    This patch increases the timeout used on the REPORT_LUNS to 30 seconds.
    This patch solves the issue of 512 non existent LUNs showing up after
    this event.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 97f3455a94aa418d4efd9626fa873ef579144efb
Author: Tony Luck <tony.luck@intel.com>
Date:   Mon May 18 17:32:37 2015 -0300

    EDAC: Remove arbitrary limit on number of channels
    
    commit c44696fff04ff62f65441afe9ea244b47653dd6d upstream.
    
    Currently set to "6", but the reset of the code will dynamically
    allocate as needed.  We need to go to "8" today, but drop the check
    completely to save doing this again when we need even larger numbers.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Acked-by: Aristeu Rozanski <aris@redhat.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 3360c51768c3c589e7db3f2a4308b729ebcc7bae
Author: Kangjie Lu <kangjielu@gmail.com>
Date:   Thu Jun 2 04:11:20 2016 -0400

    rds: fix an infoleak in rds_inc_info_copy
    
    commit 4116def2337991b39919f3b448326e21c40e0dbb upstream.
    
    The last field "flags" of object "minfo" is not initialized.
    Copying this object out may leak kernel stack data.
    Assign 0 to it to avoid leak.
    
    Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
    Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit f3c9e9b1296d6f958469a2b7c9b87514b047dc08
Author: Gavin Shan <gwshan@linux.vnet.ibm.com>
Date:   Mon May 23 11:58:28 2016 +1000

    net/qlge: Avoids recursive EEH error
    
    commit 3275c0c6c522ab04afa14f80efdac6213c3883d6 upstream.
    
    One timer, whose handler keeps reading on MMIO register for EEH
    core to detect error in time, is started when the PCI device driver
    is loaded. MMIO register can't be accessed during PE reset in EEH
    recovery. Otherwise, the unexpected recursive error is triggered.
    The timer isn't closed that time if the interface isn't brought
    up. So the unexpected recursive error is seen during EEH recovery
    when the interface is down.
    
    This avoids the unexpected recursive EEH error by closing the timer
    in qlge_io_error_detected() before EEH PE reset unconditionally. The
    timer is started unconditionally after EEH PE reset in qlge_io_resume().
    Also, the timer should be closed unconditionally when the device is
    removed from the system permanently in qlge_io_error_detected().
    
    Reported-by: Shriya R. Kulkarni <shriyakul@in.ibm.com>
    Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit bdb8bc5f8fb05ce76a8d4e454fd2981501859020
Author: Kangjie Lu <kangjielu@gmail.com>
Date:   Tue May 3 16:44:32 2016 -0400

    ALSA: timer: Fix leak in events via snd_timer_user_tinterrupt
    
    commit e4ec8cc8039a7063e24204299b462bd1383184a5 upstream.
    
    The stack object “r1” has a total size of 32 bytes. Its field
    “event” and “val” both contain 4 bytes padding. These 8 bytes
    padding bytes are sent to user without being initialized.
    
    Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 640b1f79615c2b7dfba517aba7a8164c489da10c
Author: Kangjie Lu <kangjielu@gmail.com>
Date:   Tue May 3 16:44:20 2016 -0400

    ALSA: timer: Fix leak in events via snd_timer_user_ccallback
    
    commit 9a47e9cff994f37f7f0dbd9ae23740d0f64f9fe6 upstream.
    
    The stack object “r1” has a total size of 32 bytes. Its field
    “event” and “val” both contain 4 bytes padding. These 8 bytes
    padding bytes are sent to user without being initialized.
    
    Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 16e5f4c6ea671ffce2ee49e308c1e812144547d2
Author: Kangjie Lu <kangjielu@gmail.com>
Date:   Tue May 3 16:44:07 2016 -0400

    ALSA: timer: Fix leak in SNDRV_TIMER_IOCTL_PARAMS
    
    commit cec8f96e49d9be372fdb0c3836dcf31ec71e457e upstream.
    
    The stack object “tread” has a total size of 32 bytes. Its field
    “event” and “val” both contain 4 bytes padding. These 8 bytes
    padding bytes are sent to user without being initialized.
    
    Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 6210a912820ae3d99dddc41a0fe5a105a5647921
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Apr 24 22:52:18 2016 +0200

    ALSA: hrtimer: Handle start/stop more properly
    
    commit d2c5cf88d5282de258f4eb6ab40040b80a075cd8 upstream.
    
    This patch tries to address the still remaining issues in ALSA hrtimer
    driver:
    - Spurious use-after-free was detected in hrtimer callback
    - Incorrect rescheduling due to delayed start
    - WARN_ON() is triggered in hrtimer_forward() invoked in hrtimer
      callback
    
    The first issue happens only when the new timer is scheduled even
    while hrtimer is being closed.  It's related with the second and third
    items; since ALSA timer core invokes hw.start callback during hrtimer
    interrupt, this may result in the explicit call of hrtimer_start().
    
    Also, the similar problem is seen for the stop; ALSA timer core
    invokes hw.stop callback even in the hrtimer handler, too.  Since we
    must not call the synced hrtimer_cancel() in such a context, it's just
    a hrtimer_try_to_cancel() call that doesn't properly work.
    
    Another culprit of the second and third items is the call of
    hrtimer_forward_now() before snd_timer_interrupt().  The timer->stick
    value may change during snd_timer_interrupt() call, but this
    possibility is ignored completely.
    
    For covering these subtle and messy issues, the following changes have
    been done in this patch:
    - A new flag, in_callback, is introduced in the private data to
      indicate that the hrtimer handler is being processed.
    - Both start and stop callbacks skip when called from (during)
      in_callback flag.
    - The hrtimer handler returns properly HRTIMER_RESTART and NORESTART
      depending on the running state now.
    - The hrtimer handler reprograms the expiry properly after
      snd_timer_interrupt() call, instead of before.
    - The close callback clears running flag and sets in_callback flag
      to block any further start/stop calls.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit a882416d65dd12e4e4bb2000a2294df885a8bd4b
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Wed Jul 13 09:01:13 2016 +0200

    ktime: export ktime_divns
    
    ktime_divns was exported in upstream as a side-effect of commit
    166afb64511eef08e13331b970c44fe91cea45ef (ktime: Sanitize
    ktime_to_us/ms conversion). But we do not want the commit given ktime
    is not nanoseconds in 3.12 yet.
    
    So we only export the function here as it is needed by upstream commit
    d2c5cf88d5282de258f4eb6ab40040b80a075cd8 (ALSA: hrtimer: Handle
    start/stop more properly):
    ERROR: "ktime_divns" [sound/core/snd-hrtimer.ko] undefined!
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: Takashi Iwai <tiwai@suse.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: John Stultz <john.stultz@linaro.org>

commit fd0d40b9370853c02102c22b91ff7c3cd1077e8b
Author: Kangjie Lu <kangjielu@gmail.com>
Date:   Tue May 3 16:32:16 2016 -0400

    USB: usbfs: fix potential infoleak in devio
    
    commit 681fef8380eb818c0b845fca5d2ab1dcbab114ee upstream.
    
    The stack object “ci” has a total size of 8 bytes. Its last 3 bytes
    are padding bytes which are not initialized and leaked to userland
    via “copy_to_user”.
    
    Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 0da1bf826cfc3f82ccec6d3c4cb0dcd332704446
Author: daniel <daniel@dd-wrt.com>
Date:   Fri Jun 24 12:35:18 2016 +0200

    Bridge: Fix ipv6 mc snooping if bridge has no ipv6 address
    
    [ Upstream commit 0888d5f3c0f183ea6177355752ada433d370ac89 ]
    
    The bridge is falsly dropping ipv6 mulitcast packets if there is:
     1. No ipv6 address assigned on the brigde.
     2. No external mld querier present.
     3. The internal querier enabled.
    
    When the bridge fails to build mld queries, because it has no
    ipv6 address, it slilently returns, but keeps the local querier enabled.
    This specific case causes confusing packet loss.
    
    Ipv6 multicast snooping can only work if:
     a) An external querier is present
     OR
     b) The bridge has an ipv6 address an is capable of sending own queries
    
    Otherwise it has to forward/flood the ipv6 multicast traffic,
    because snooping cannot work.
    
    This patch fixes the issue by adding a flag to the bridge struct that
    indicates that there is currently no ipv6 address assinged to the bridge
    and returns a false state for the local querier in
    __br_multicast_querier_exists().
    
    Special thanks to Linus Lüssing.
    
    Fixes: d1d81d4c3dd8 ("bridge: check return value of ipv6_dev_get_saddr()")
    Signed-off-by: Daniel Danzberger <daniel@dd-wrt.com>
    Acked-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1558418f074657030d64917b1a90d233e50342d9
Author: James Bottomley <James.Bottomley@HansenPartnership.com>
Date:   Fri May 13 12:04:06 2016 -0700

    scsi_lib: correctly retry failed zero length REQ_TYPE_FS commands
    
    commit a621bac3044ed6f7ec5fa0326491b2d4838bfa93 upstream.
    
    When SCSI was written, all commands coming from the filesystem
    (REQ_TYPE_FS commands) had data.  This meant that our signal for needing
    to complete the command was the number of bytes completed being equal to
    the number of bytes in the request.  Unfortunately, with the advent of
    flush barriers, we can now get zero length REQ_TYPE_FS commands, which
    confuse this logic because they satisfy the condition every time.  This
    means they never get retried even for retryable conditions, like UNIT
    ATTENTION because we complete them early assuming they're done.  Fix
    this by special casing the early completion condition to recognise zero
    length commands with errors and let them drop through to the retry code.
    
    Cc: stable@vger.kernel.org
    Reported-by: Sebastian Parschauer <s.parschauer@gmx.de>
    Signed-off-by: James E.J. Bottomley <jejb@linux.vnet.ibm.com>
    Tested-by: Jack Wang <jinpu.wang@profitbricks.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [ jwang: backport from upstream 4.7 to fix scsi resize issue ]
    Signed-off-by: Jack Wang <jinpu.wang@profitbricks.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 68503738c05ead983d6f40cd39f431fe08000369
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu May 1 16:51:03 2014 +0200

    scsi: remove scsi_end_request
    
    commit bc85dc500f9df9b2eec15077e5046672c46adeaa upstream.
    
    By folding scsi_end_request into its only caller we can significantly clean
    up the completion logic.  We can use simple goto labels now to only have
    a single place to finish or requeue command there instead of the previous
    convoluted logic.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    [jwang: backport to 3.12]
    Signed-off-by: Jack Wang <jinpu.wang@profitbricks.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit c666694425cc3394d85209fc47b3a557702baa44
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Thu Jun 16 23:26:15 2016 +0200

    UBIFS: Implement ->migratepage()
    
    commit 4ac1c17b2044a1b4b2fbed74451947e905fc2992 upstream.
    
    During page migrations UBIFS might get confused
    and the following assert triggers:
    [  213.480000] UBIFS assert failed in ubifs_set_page_dirty at 1451 (pid 436)
    [  213.490000] CPU: 0 PID: 436 Comm: drm-stress-test Not tainted 4.4.4-00176-geaa802524636-dirty #1008
    [  213.490000] Hardware name: Allwinner sun4i/sun5i Families
    [  213.490000] [<c0015e70>] (unwind_backtrace) from [<c0012cdc>] (show_stack+0x10/0x14)
    [  213.490000] [<c0012cdc>] (show_stack) from [<c02ad834>] (dump_stack+0x8c/0xa0)
    [  213.490000] [<c02ad834>] (dump_stack) from [<c0236ee8>] (ubifs_set_page_dirty+0x44/0x50)
    [  213.490000] [<c0236ee8>] (ubifs_set_page_dirty) from [<c00fa0bc>] (try_to_unmap_one+0x10c/0x3a8)
    [  213.490000] [<c00fa0bc>] (try_to_unmap_one) from [<c00fadb4>] (rmap_walk+0xb4/0x290)
    [  213.490000] [<c00fadb4>] (rmap_walk) from [<c00fb1bc>] (try_to_unmap+0x64/0x80)
    [  213.490000] [<c00fb1bc>] (try_to_unmap) from [<c010dc28>] (migrate_pages+0x328/0x7a0)
    [  213.490000] [<c010dc28>] (migrate_pages) from [<c00d0cb0>] (alloc_contig_range+0x168/0x2f4)
    [  213.490000] [<c00d0cb0>] (alloc_contig_range) from [<c010ec00>] (cma_alloc+0x170/0x2c0)
    [  213.490000] [<c010ec00>] (cma_alloc) from [<c001a958>] (__alloc_from_contiguous+0x38/0xd8)
    [  213.490000] [<c001a958>] (__alloc_from_contiguous) from [<c001ad44>] (__dma_alloc+0x23c/0x274)
    [  213.490000] [<c001ad44>] (__dma_alloc) from [<c001ae08>] (arm_dma_alloc+0x54/0x5c)
    [  213.490000] [<c001ae08>] (arm_dma_alloc) from [<c035cecc>] (drm_gem_cma_create+0xb8/0xf0)
    [  213.490000] [<c035cecc>] (drm_gem_cma_create) from [<c035cf20>] (drm_gem_cma_create_with_handle+0x1c/0xe8)
    [  213.490000] [<c035cf20>] (drm_gem_cma_create_with_handle) from [<c035d088>] (drm_gem_cma_dumb_create+0x3c/0x48)
    [  213.490000] [<c035d088>] (drm_gem_cma_dumb_create) from [<c0341ed8>] (drm_ioctl+0x12c/0x444)
    [  213.490000] [<c0341ed8>] (drm_ioctl) from [<c0121adc>] (do_vfs_ioctl+0x3f4/0x614)
    [  213.490000] [<c0121adc>] (do_vfs_ioctl) from [<c0121d30>] (SyS_ioctl+0x34/0x5c)
    [  213.490000] [<c0121d30>] (SyS_ioctl) from [<c000f2c0>] (ret_fast_syscall+0x0/0x34)
    
    UBIFS is using PagePrivate() which can have different meanings across
    filesystems. Therefore the generic page migration code cannot handle this
    case correctly.
    We have to implement our own migration function which basically does a
    plain copy but also duplicates the page private flag.
    UBIFS is not a block device filesystem and cannot use buffer_migrate_page().
    
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    [rw: Massaged changelog, build fixes, etc...]
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Acked-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 0162107f52dccca4e663cd630b86fff6395e903c
Author: Richard Weinberger <richard@nod.at>
Date:   Thu Jun 16 23:26:14 2016 +0200

    mm: Export migrate_page_move_mapping and migrate_page_copy
    
    commit 1118dce773d84f39ebd51a9fe7261f9169cb056e upstream.
    
    Export these symbols such that UBIFS can implement
    ->migratepage.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Acked-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 87119310890eee0731bd5a5ad7c056c3ccd83c01
Author: Will Deacon <will.deacon@arm.com>
Date:   Tue Jun 7 17:57:54 2016 +0100

    ARM: 8578/1: mm: ensure pmd_present only checks the valid bit
    
    commit 624531886987f0f1b5d01fb598034d039198e090 upstream.
    
    In a subsequent patch, pmd_mknotpresent will clear the valid bit of the
    pmd entry, resulting in a not-present entry from the hardware's
    perspective. Unfortunately, pmd_present simply checks for a non-zero pmd
    value and will therefore continue to return true even after a
    pmd_mknotpresent operation. Since pmd_mknotpresent is only used for
    managing huge entries, this is only an issue for the 3-level case.
    
    This patch fixes the 3-level pmd_present implementation to take into
    account the valid bit. For bisectability, the change is made before the
    fix to pmd_mknotpresent.
    
    [catalin.marinas@arm.com: comment update regarding pmd_mknotpresent patch]
    
    Fixes: 8d9625070073 ("ARM: mm: Transparent huge page support for LPAE systems.")
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: Steve Capper <Steve.Capper@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 75815edd37f0623d732065f710bcf475364dc07b
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Sat Jun 25 19:19:28 2016 -0400

    NFS: Fix another OPEN_DOWNGRADE bug
    
    commit e547f2628327fec6afd2e03b46f113f614cca05b upstream.
    
    Olga Kornievskaia reports that the following test fails to trigger
    an OPEN_DOWNGRADE on the wire, and only triggers the final CLOSE.
    
            fd0 = open(foo, RDRW)   -- should be open on the wire for "both"
            fd1 = open(foo, RDONLY)  -- should be open on the wire for "read"
            close(fd0) -- should trigger an open_downgrade
            read(fd1)
            close(fd1)
    
    The issue is that we're missing a check for whether or not the current
    state transitioned from an O_RDWR state as opposed to having transitioned
    from a combination of O_RDONLY and O_WRONLY.
    
    Reported-by: Olga Kornievskaia <aglo@umich.edu>
    Fixes: cd9288ffaea4 ("NFSv4: Fix another bug in the close/open_downgrade code")
    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 11d275361f3dfc42b338ca3a9d95fa39384ccd1f
Author: Al Viro <viro@ZenIV.linux.org.uk>
Date:   Mon Jun 20 13:14:36 2016 -0400

    make nfs_atomic_open() call d_drop() on all ->open_context() errors.
    
    commit d20cb71dbf3487f24549ede1a8e2d67579b4632e upstream.
    
    In "NFSv4: Move dentry instantiation into the NFSv4-specific atomic open code"
    unconditional d_drop() after the ->open_context() had been removed.  It had
    been correct for success cases (there ->open_context() itself had been doing
    dcache manipulations), but not for error ones.  Only one of those (ENOENT)
    got a compensatory d_drop() added in that commit, but in fact it should've
    been done for all errors.  As it is, the case of O_CREAT non-exclusive open
    on a hashed negative dentry racing with e.g. symlink creation from another
    client ended up with ->open_context() getting an error and proceeding to
    call nfs_lookup().  On a hashed dentry, which would've instantly triggered
    BUG_ON() in d_materialise_unique() (or, these days, its equivalent in
    d_splice_alias()).
    
    Tested-by: Oleg Drokin <green@linuxhacker.ru>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    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 da252e41f1931dc9b949ba45c08c9a7cae26ec23
Author: Borislav Petkov <bp@suse.de>
Date:   Thu Jun 16 19:13:49 2016 +0200

    x86/amd_nb: Fix boot crash on non-AMD systems
    
    commit 1ead852dd88779eda12cb09cc894a03d9abfe1ec upstream.
    
    Fix boot crash that triggers if this driver is built into a kernel and
    run on non-AMD systems.
    
    AMD northbridges users call amd_cache_northbridges() and it returns
    a negative value to signal that we weren't able to cache/detect any
    northbridges on the system.
    
    At least, it should do so as all its callers expect it to do so. But it
    does return a negative value only when kmalloc() fails.
    
    Fix it to return -ENODEV if there are no NBs cached as otherwise, amd_nb
    users like amd64_edac, for example, which relies on it to know whether
    it should load or not, gets loaded on systems like Intel Xeons where it
    shouldn't.
    
    Reported-and-tested-by: Tony Battersby <tonyb@cybernetics.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1466097230-5333-2-git-send-email-bp@alien8.de
    Link: https://lkml.kernel.org/r/5761BEB0.9000807@cybernetics.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit f7fd98038d208f590d09d67d72315de0681c67a2
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sat Jun 11 23:06:53 2016 +0900

    kprobes/x86: Clear TF bit in fault on single-stepping
    
    commit dcfc47248d3f7d28df6f531e6426b933de94370d upstream.
    
    Fix kprobe_fault_handler() to clear the TF (trap flag) bit of
    the flags register in the case of a fault fixup on single-stepping.
    
    If we put a kprobe on the instruction which caused a
    page fault (e.g. actual mov instructions in copy_user_*),
    that fault happens on the single-stepping buffer. In this
    case, kprobes resets running instance so that the CPU can
    retry execution on the original ip address.
    
    However, current code forgets to reset the TF bit. Since this
    fault happens with TF bit set for enabling single-stepping,
    when it retries, it causes a debug exception and kprobes
    can not handle it because it already reset itself.
    
    On the most of x86-64 platform, it can be easily reproduced
    by using kprobe tracer. E.g.
    
      # cd /sys/kernel/debug/tracing
      # echo p copy_user_enhanced_fast_string+5 > kprobe_events
      # echo 1 > events/kprobes/enable
    
    And you'll see a kernel panic on do_debug(), since the debug
    trap is not handled by kprobes.
    
    To fix this problem, we just need to clear the TF bit when
    resetting running kprobe.
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Reviewed-by: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
    Acked-by: Steven Rostedt <rostedt@goodmis.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: systemtap@sourceware.org
    Link: http://lkml.kernel.org/r/20160611140648.25885.37482.stgit@devbox
    [ Updated the comments. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 95b453fb639738f06fbfa766f739a9c5280385eb
Author: H. Peter Anvin <hpa@zytor.com>
Date:   Tue Apr 5 17:01:33 2016 -0700

    x86, build: copy ldlinux.c32 to image.iso
    
    commit 9c77679cadb118c0aa99e6f88533d91765a131ba upstream.
    
    For newer versions of Syslinux, we need ldlinux.c32 in addition to
    isolinux.bin to reside on the boot disk, so if the latter is found,
    copy it, too, to the isoimage tree.
    
    Signed-off-by: H. Peter Anvin <hpa@zytor.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 6fcbf62da1b054958dffbf039fe42c0743072ceb
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Jun 23 14:54:37 2016 -0400

    USB: EHCI: declare hostpc register as zero-length array
    
    commit 7e8b3dfef16375dbfeb1f36a83eb9f27117c51fd upstream.
    
    The HOSTPC extension registers found in some EHCI implementations form
    a variable-length array, with one element for each port.  Therefore
    the hostpc field in struct ehci_regs should be declared as a
    zero-length array, not a single-element array.
    
    This fixes a problem reported by UBSAN.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Wilfried Klaebe <linux-kernel@lebenslange-mailadresse.de>
    Tested-by: Wilfried Klaebe <linux-kernel@lebenslange-mailadresse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 35dad94d8cf0d7b5f375813918316900e03f00c5
Author: Gavin Shan <gwshan@linux.vnet.ibm.com>
Date:   Thu May 26 09:56:07 2016 +1000

    powerpc/pseries: Fix PCI config address for DDW
    
    commit 8a934efe94347eee843aeea65bdec8077a79e259 upstream.
    
    In commit 8445a87f7092 "powerpc/iommu: Remove the dependency on EEH
    struct in DDW mechanism", the PE address was replaced with the PCI
    config address in order to remove dependency on EEH. According to PAPR
    spec, firmware (pHyp or QEMU) should accept "xxBBSSxx" format PCI config
    address, not "xxxxBBSS" provided by the patch. Note that "BB" is PCI bus
    number and "SS" is the combination of slot and function number.
    
    This fixes the PCI address passed to DDW RTAS calls.
    
    Fixes: 8445a87f7092 ("powerpc/iommu: Remove the dependency on EEH struct in DDW mechanism")
    Reported-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
    Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Tested-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 304890eb50af5cce946e11dac0c296075afc9962
Author: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
Date:   Mon Apr 11 16:17:23 2016 -0300

    powerpc/iommu: Remove the dependency on EEH struct in DDW mechanism
    
    commit 8445a87f7092bc8336ea1305be9306f26b846d93 upstream.
    
    Commit 39baadbf36ce ("powerpc/eeh: Remove eeh information from pci_dn")
    changed the pci_dn struct by removing its EEH-related members.
    As part of this clean-up, DDW mechanism was modified to read the device
    configuration address from eeh_dev struct.
    
    As a consequence, now if we disable EEH mechanism on kernel command-line
    for example, the DDW mechanism will fail, generating a kernel oops by
    dereferencing a NULL pointer (which turns to be the eeh_dev pointer).
    
    This patch just changes the configuration address calculation on DDW
    functions to a manual calculation based on pci_dn members instead of
    using eeh_dev-based address.
    
    No functional changes were made. This was tested on pSeries, both
    in PHyp and qemu guest.
    
    Fixes: 39baadbf36ce ("powerpc/eeh: Remove eeh information from pci_dn")
    Reviewed-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Signed-off-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 3679c69e67346f724f1eae19c20d58a143e92e8c
Author: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Date:   Wed Jun 8 17:28:29 2016 -0600

    IB/mlx4: Properly initialize GRH TClass and FlowLabel in AHs
    
    commit 8c5122e45a10a9262f872b53f151a592e870f905 upstream.
    
    When this code was reworked for IBoE support the order of assignments
    for the sl_tclass_flowlabel got flipped around resulting in
    TClass & FlowLabel being permanently set to 0 in the packet headers.
    
    This breaks IB routers that rely on these headers, but only affects
    kernel users - libmlx4 does this properly for user space.
    
    Fixes: fa417f7b520e ("IB/mlx4: Add support for IBoE")
    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 5113a51848cbc20512b6b849823d353c8b1a12b1
Author: Martin Willi <martin@strongswan.org>
Date:   Fri May 13 12:41:48 2016 +0200

    mac80211_hwsim: Add missing check for HWSIM_ATTR_SIGNAL
    
    commit 62397da50bb20a6b812c949ef465d7e69fe54bb6 upstream.
    
    A wmediumd that does not send this attribute causes a NULL pointer
    dereference, as the attribute is accessed even if it does not exist.
    
    The attribute was required but never checked ever since userspace frame
    forwarding has been introduced. The issue gets more problematic once we
    allow wmediumd registration from user namespaces.
    
    Fixes: 7882513bacb1 ("mac80211_hwsim driver support userspace frame tx/rx")
    Signed-off-by: Martin Willi <martin@strongswan.org>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 8e7626a6930345630a0511ec7aaec01aec378d8a
Author: Bob Copeland <me@bobcopeland.com>
Date:   Sun May 15 13:19:16 2016 -0400

    mac80211: mesh: flush mesh paths unconditionally
    
    commit fe7a7c57629e8dcbc0e297363a9b2366d67a6dc5 upstream.
    
    Currently, the mesh paths associated with a nexthop station are cleaned
    up in the following code path:
    
        __sta_info_destroy_part1
        synchronize_net()
        __sta_info_destroy_part2
         -> cleanup_single_sta
           -> mesh_sta_cleanup
             -> mesh_plink_deactivate
               -> mesh_path_flush_by_nexthop
    
    However, there are a couple of problems here:
    
    1) the paths aren't flushed at all if the MPM is running in userspace
       (e.g. when using wpa_supplicant or authsae)
    
    2) there is no synchronize_rcu between removing the path and readers
       accessing the nexthop, which means the following race is possible:
    
    CPU0                            CPU1
    ~~~~                            ~~~~
                                    sta_info_destroy_part1()
                                    synchronize_net()
    rcu_read_lock()
    mesh_nexthop_resolve()
      mpath = mesh_path_lookup()
                                    [...] -> mesh_path_flush_by_nexthop()
      sta = rcu_dereference(
        mpath->next_hop)
                                    kfree(sta)
      access sta <-- CRASH
    
    Fix both of these by unconditionally flushing paths before destroying
    the sta, and by adding a synchronize_net() after path flush to ensure
    no active readers can still dereference the sta.
    
    Fixes this crash:
    
    [  348.529295] BUG: unable to handle kernel paging request at 00020040
    [  348.530014] IP: [<f929245d>] ieee80211_mps_set_frame_flags+0x40/0xaa [mac80211]
    [  348.530014] *pde = 00000000
    [  348.530014] Oops: 0000 [#1] PREEMPT
    [  348.530014] Modules linked in: drbg ansi_cprng ctr ccm ppp_generic slhc ipt_MASQUERADE nf_nat_masquerade_ipv4 8021q ]
    [  348.530014] CPU: 0 PID: 20597 Comm: wget Tainted: G           O 4.6.0-rc5-wt=V1 #1
    [  348.530014] Hardware name: To Be Filled By O.E.M./To be filled by O.E.M., BIOS 080016  11/07/2014
    [  348.530014] task: f64fa280 ti: f4f9c000 task.ti: f4f9c000
    [  348.530014] EIP: 0060:[<f929245d>] EFLAGS: 00010246 CPU: 0
    [  348.530014] EIP is at ieee80211_mps_set_frame_flags+0x40/0xaa [mac80211]
    [  348.530014] EAX: f4ce63e0 EBX: 00000088 ECX: f3788416 EDX: 00020008
    [  348.530014] ESI: 00000000 EDI: 00000088 EBP: f6409a4c ESP: f6409a40
    [  348.530014]  DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
    [  348.530014] CR0: 80050033 CR2: 00020040 CR3: 33190000 CR4: 00000690
    [  348.530014] Stack:
    [  348.530014]  00000000 f4ce63e0 f5f9bd80 f6409a64 f9291d80 0000ce67 f5d51e00 f4ce63e0
    [  348.530014]  f3788416 f6409a80 f9291dc1 f4ce8320 f4ce63e0 f5d51e00 f4ce63e0 f4ce8320
    [  348.530014]  f6409a98 f9277f6f 00000000 00000000 0000007c 00000000 f6409b2c f9278dd1
    [  348.530014] Call Trace:
    [  348.530014]  [<f9291d80>] mesh_nexthop_lookup+0xbb/0xc8 [mac80211]
    [  348.530014]  [<f9291dc1>] mesh_nexthop_resolve+0x34/0xd8 [mac80211]
    [  348.530014]  [<f9277f6f>] ieee80211_xmit+0x92/0xc1 [mac80211]
    [  348.530014]  [<f9278dd1>] __ieee80211_subif_start_xmit+0x807/0x83c [mac80211]
    [  348.530014]  [<c04df012>] ? sch_direct_xmit+0xd7/0x1b3
    [  348.530014]  [<c022a8c6>] ? __local_bh_enable_ip+0x5d/0x7b
    [  348.530014]  [<f956870c>] ? nf_nat_ipv4_out+0x4c/0xd0 [nf_nat_ipv4]
    [  348.530014]  [<f957e036>] ? iptable_nat_ipv4_fn+0xf/0xf [iptable_nat]
    [  348.530014]  [<c04c6f45>] ? netif_skb_features+0x14d/0x30a
    [  348.530014]  [<f9278e10>] ieee80211_subif_start_xmit+0xa/0xe [mac80211]
    [  348.530014]  [<c04c769c>] dev_hard_start_xmit+0x1f8/0x267
    [  348.530014]  [<c04c7261>] ?  validate_xmit_skb.isra.120.part.121+0x10/0x253
    [  348.530014]  [<c04defc6>] sch_direct_xmit+0x8b/0x1b3
    [  348.530014]  [<c04c7a9c>] __dev_queue_xmit+0x2c8/0x513
    [  348.530014]  [<c04c7cfb>] dev_queue_xmit+0xa/0xc
    [  348.530014]  [<f91bfc7a>] batadv_send_skb_packet+0xd6/0xec [batman_adv]
    [  348.530014]  [<f91bfdc4>] batadv_send_unicast_skb+0x15/0x4a [batman_adv]
    [  348.530014]  [<f91b5938>] batadv_dat_send_data+0x27e/0x310 [batman_adv]
    [  348.530014]  [<f91c30b5>] ? batadv_tt_global_hash_find.isra.11+0x8/0xa [batman_adv]
    [  348.530014]  [<f91b63f3>] batadv_dat_snoop_outgoing_arp_request+0x208/0x23d [batman_adv]
    [  348.530014]  [<f91c0cd9>] batadv_interface_tx+0x206/0x385 [batman_adv]
    [  348.530014]  [<c04c769c>] dev_hard_start_xmit+0x1f8/0x267
    [  348.530014]  [<c04c7261>] ?  validate_xmit_skb.isra.120.part.121+0x10/0x253
    [  348.530014]  [<c04defc6>] sch_direct_xmit+0x8b/0x1b3
    [  348.530014]  [<c04c7a9c>] __dev_queue_xmit+0x2c8/0x513
    [  348.530014]  [<f80cbd2a>] ? igb_xmit_frame+0x57/0x72 [igb]
    [  348.530014]  [<c04c7cfb>] dev_queue_xmit+0xa/0xc
    [  348.530014]  [<f843a326>] br_dev_queue_push_xmit+0xeb/0xfb [bridge]
    [  348.530014]  [<f843a35f>] br_forward_finish+0x29/0x74 [bridge]
    [  348.530014]  [<f843a23b>] ? deliver_clone+0x3b/0x3b [bridge]
    [  348.530014]  [<f843a714>] __br_forward+0x89/0xe7 [bridge]
    [  348.530014]  [<f843a336>] ? br_dev_queue_push_xmit+0xfb/0xfb [bridge]
    [  348.530014]  [<f843a234>] deliver_clone+0x34/0x3b [bridge]
    [  348.530014]  [<f843a68b>] ? br_flood+0x95/0x95 [bridge]
    [  348.530014]  [<f843a66d>] br_flood+0x77/0x95 [bridge]
    [  348.530014]  [<f843a809>] br_flood_forward+0x13/0x1a [bridge]
    [  348.530014]  [<f843a68b>] ? br_flood+0x95/0x95 [bridge]
    [  348.530014]  [<f843b877>] br_handle_frame_finish+0x392/0x3db [bridge]
    [  348.530014]  [<c04e9b2b>] ? nf_iterate+0x2b/0x6b
    [  348.530014]  [<f843baa6>] br_handle_frame+0x1e6/0x240 [bridge]
    [  348.530014]  [<f843b4e5>] ? br_handle_local_finish+0x6a/0x6a [bridge]
    [  348.530014]  [<c04c4ba0>] __netif_receive_skb_core+0x43a/0x66b
    [  348.530014]  [<f843b8c0>] ? br_handle_frame_finish+0x3db/0x3db [bridge]
    [  348.530014]  [<c023cea4>] ? resched_curr+0x19/0x37
    [  348.530014]  [<c0240707>] ? check_preempt_wakeup+0xbf/0xfe
    [  348.530014]  [<c0255dec>] ? ktime_get_with_offset+0x5c/0xfc
    [  348.530014]  [<c04c4fc1>] __netif_receive_skb+0x47/0x55
    [  348.530014]  [<c04c57ba>] netif_receive_skb_internal+0x40/0x5a
    [  348.530014]  [<c04c61ef>] napi_gro_receive+0x3a/0x94
    [  348.530014]  [<f80ce8d5>] igb_poll+0x6fd/0x9ad [igb]
    [  348.530014]  [<c0242bd8>] ? swake_up_locked+0x14/0x26
    [  348.530014]  [<c04c5d29>] net_rx_action+0xde/0x250
    [  348.530014]  [<c022a743>] __do_softirq+0x8a/0x163
    [  348.530014]  [<c022a6b9>] ? __hrtimer_tasklet_trampoline+0x19/0x19
    [  348.530014]  [<c021100f>] do_softirq_own_stack+0x26/0x2c
    [  348.530014]  <IRQ>
    [  348.530014]  [<c022a957>] irq_exit+0x31/0x6f
    [  348.530014]  [<c0210eb2>] do_IRQ+0x8d/0xa0
    [  348.530014]  [<c058152c>] common_interrupt+0x2c/0x40
    [  348.530014] Code: e7 8c 00 66 81 ff 88 00 75 12 85 d2 75 0e b2 c3 b8 83 e9 29 f9 e8 a7 5f f9 c6 eb 74 66 81 e3 8c 005
    [  348.530014] EIP: [<f929245d>] ieee80211_mps_set_frame_flags+0x40/0xaa [mac80211] SS:ESP 0068:f6409a40
    [  348.530014] CR2: 0000000000020040
    [  348.530014] ---[ end trace 48556ac26779732e ]---
    [  348.530014] Kernel panic - not syncing: Fatal exception in interrupt
    [  348.530014] Kernel Offset: disabled
    
    Reported-by: Fred Veldini <fred.veldini@gmail.com>
    Tested-by: Fred Veldini <fred.veldini@gmail.com>
    Signed-off-by: Bob Copeland <me@bobcopeland.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit f06f2c8c335296074904085b760f77b8dc52cb6d
Author: Andrew Goodbody <andrew.goodbody@cambrionix.com>
Date:   Tue May 31 10:05:26 2016 -0500

    usb: musb: Ensure rx reinit occurs for shared_fifo endpoints
    
    commit f3eec0cf784e0d6c47822ca6b66df3d5812af7e6 upstream.
    
    shared_fifo endpoints would only get a previous tx state cleared
    out, the rx state was only cleared for non shared_fifo endpoints
    Change this so that the rx state is cleared for all endpoints.
    This addresses an issue that resulted in rx packets being dropped
    silently.
    
    Signed-off-by: Andrew Goodbody <andrew.goodbody@cambrionix.com>
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit dcd0f27d8aca566ba4ac2cb23e7d03beb8ac207a
Author: Andrew Goodbody <andrew.goodbody@cambrionix.com>
Date:   Tue May 31 10:05:27 2016 -0500

    usb: musb: Stop bulk endpoint while queue is rotated
    
    commit 7b2c17f829545df27a910e8d82e133c21c9a8c9c upstream.
    
    Ensure that the endpoint is stopped by clearing REQPKT before
    clearing DATAERR_NAKTIMEOUT before rotating the queue on the
    dedicated bulk endpoint.
    This addresses an issue where a race could result in the endpoint
    receiving data before it was reprogrammed resulting in a warning
    about such data from musb_rx_reinit before it was thrown away.
    The data thrown away was a valid packet that had been correctly
    ACKed which meant the host and device got out of sync.
    
    Signed-off-by: Andrew Goodbody <andrew.goodbody@cambrionix.com>
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 28c37784307106156f97decb33060d20a576d1a3
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu May 19 17:12:20 2016 +0200

    usb: quirks: Add no-lpm quirk for Acer C120 LED Projector
    
    commit 32cb0b37098f4beeff5ad9e325f11b42a6ede56c upstream.
    
    The Acer C120 LED Projector is a USB-3 connected pico projector which
    takes both its power and video data from USB-3.
    
    In combination with some hubs this device does not play well with
    lpm, so disable lpm for it.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 73b06777dfad6858dca876d379acfc214220af5e
Author: Feng Tang <feng.tang@intel.com>
Date:   Fri Jun 24 15:26:05 2016 +0800

    net: alx: Work around the DMA RX overflow issue
    
    [ Upstream commit 881d0327db37ad917a367c77aff1afa1ee41e0a9 ]
    
    Note: This is a verified backported patch for stable 4.4 kernel, and it
    could also be applied to 4.3/4.2/4.1/3.18/3.16
    
    There is a problem with alx devices, that the network link will be
    lost in 1-5 minutes after the device is up.
    
    >From debugging without datasheet, we found the error always
    happen when the DMA RX address is set to 0x....fc0, which is very
    likely to be a HW/silicon problem.
    
    This patch will apply rx skb with 64 bytes longer space, and if the
    allocated skb has a 0x...fc0 address, it will use skb_resever(skb, 64)
    to advance the address, so that the RX overflow can be avoided.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=70761
    Signed-off-by: Feng Tang <feng.tang@intel.com>
    Suggested-by: Eric Dumazet <edumazet@google.com>
    Tested-by: Ole Lukoie <olelukoie@mail.ru>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 454fc4c96bf19f84eaaf17c007819403d32845f1
Author: Tom Goff <thomas.goff@ll.mit.edu>
Date:   Thu Jun 23 16:11:57 2016 -0400

    ipmr/ip6mr: Initialize the last assert time of mfc entries.
    
    [ Upstream commit 70a0dec45174c976c64b4c8c1d0898581f759948 ]
    
    This fixes wrong-interface signaling on 32-bit platforms for entries
    created when jiffies > 2^31 + MFC_ASSERT_THRESH.
    
    Signed-off-by: Tom Goff <thomas.goff@ll.mit.edu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 7190e5dbcb2a8e1b2a4c478241f015cf22c13d55
Author: Simon Horman <simon.horman@netronome.com>
Date:   Thu Jun 16 17:06:19 2016 +0900

    sit: correct IP protocol used in ipip6_err
    
    [ Upstream commit d5d8760b78d0cfafe292f965f599988138b06a70 ]
    
    Since 32b8a8e59c9c ("sit: add IPv4 over IPv4 support")
    ipip6_err() may be called for packets whose IP protocol is
    IPPROTO_IPIP as well as those whose IP protocol is IPPROTO_IPV6.
    
    In the case of IPPROTO_IPIP packets the correct protocol value is not
    passed to ipv4_update_pmtu() or ipv4_redirect().
    
    This patch resolves this problem by using the IP protocol of the packet
    rather than a hard-coded value. This appears to be consistent
    with the usage of the protocol of a packet by icmp_socket_deliver()
    the caller of ipip6_err().
    
    I was able to exercise the redirect case by using a setup where an ICMP
    redirect was received for the destination of the encapsulated packet.
    However, it appears that although incorrect the protocol field is not used
    in this case and thus no problem manifests.  On inspection it does not
    appear that a problem will manifest in the fragmentation needed/update pmtu
    case either.
    
    In short I believe this is a cosmetic fix. None the less, the use of
    IPPROTO_IPV6 seems wrong and confusing.
    
    Reviewed-by: Dinan Gunawardena <dinan.gunawardena@netronome.com>
    Signed-off-by: Simon Horman <simon.horman@netronome.com>
    Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b4cc072a542dd8419e1d98cb8343e39d0fa4f2a2
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Wed Jun 8 14:56:39 2016 +0200

    crypto: ux500 - memmove the right size
    
    commit 19ced623db2fe91604d69f7d86b03144c5107739 upstream.
    
    The hash buffer is really HASH_BLOCK_SIZE bytes, someone
    must have thought that memmove takes n*u32 words by mistake.
    Tests work as good/bad as before after this patch.
    
    Cc: Joakim Bech <joakim.bech@linaro.org>
    Reported-by: David Binderman <linuxdev.baldrick@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 6a8d4c2659ad0b5b672cafcf81ae0e5fbe18ada8
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 15:37:59 2016 +0200

    netfilter: x_tables: introduce and use xt_copy_counters_from_user
    
    commit d7591f0c41ce3e67600a982bab6989ef0f07b3ce upstream
    
    The three variants use same copy&pasted code, condense this into a
    helper and use that.
    
    Make sure info.name is 0-terminated.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 737f0730a5e12e9f5dbe49e1817880c2539def06
Author: Bernhard Thaler <bernhard.thaler@wvnet.at>
Date:   Thu May 28 10:26:18 2015 +0200

    Revert "netfilter: ensure number of counters is >0 in do_replace()"
    
    commit d26e2c9ffa385dd1b646f43c1397ba12af9ed431 upstream.
    
    This partially reverts commit 1086bbe97a07 ("netfilter: ensure number of
    counters is >0 in do_replace()") in net/bridge/netfilter/ebtables.c.
    
    Setting rules with ebtables does not work any more with 1086bbe97a07 place.
    
    There is an error message and no rules set in the end.
    
    e.g.
    
    ~# ebtables -t nat -A POSTROUTING --src 12:34:56:78:9a:bc -j DROP
    Unable to update the kernel. Two possible causes:
    1. Multiple ebtables programs were executing simultaneously. The ebtables
       userspace tool doesn't by default support multiple ebtables programs
    running
    
    Reverting the ebtables part of 1086bbe97a07 makes this work again.
    
    Signed-off-by: Bernhard Thaler <bernhard.thaler@wvnet.at>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit aa1da1b7b3222678bc24993a24cd4a01fc73daa1
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:34 2016 +0200

    netfilter: x_tables: do compat validation via translate_table
    
    commit 09d9686047dbbe1cf4faa558d3ecc4aae2046054 upstream.
    
    This looks like refactoring, but its also a bug fix.
    
    Problem is that the compat path (32bit iptables, 64bit kernel) lacks a few
    sanity tests that are done in the normal path.
    
    For example, we do not check for underflows and the base chain policies.
    
    While its possible to also add such checks to the compat path, its more
    copy&pastry, for instance we cannot reuse check_underflow() helper as
    e->target_offset differs in the compat case.
    
    Other problem is that it makes auditing for validation errors harder; two
    places need to be checked and kept in sync.
    
    At a high level 32 bit compat works like this:
    1- initial pass over blob:
       validate match/entry offsets, bounds checking
       lookup all matches and targets
       do bookkeeping wrt. size delta of 32/64bit structures
       assign match/target.u.kernel pointer (points at kernel
       implementation, needed to access ->compatsize etc.)
    
    2- allocate memory according to the total bookkeeping size to
       contain the translated ruleset
    
    3- second pass over original blob:
       for each entry, copy the 32bit representation to the newly allocated
       memory.  This also does any special match translations (e.g.
       adjust 32bit to 64bit longs, etc).
    
    4- check if ruleset is free of loops (chase all jumps)
    
    5-first pass over translated blob:
       call the checkentry function of all matches and targets.
    
    The alternative implemented by this patch is to drop steps 3&4 from the
    compat process, the translation is changed into an intermediate step
    rather than a full 1:1 translate_table replacement.
    
    In the 2nd pass (step #3), change the 64bit ruleset back to a kernel
    representation, i.e. put() the kernel pointer and restore ->u.user.name .
    
    This gets us a 64bit ruleset that is in the format generated by a 64bit
    iptables userspace -- we can then use translate_table() to get the
    'native' sanity checks.
    
    This has two drawbacks:
    
    1. we re-validate all the match and target entry structure sizes even
    though compat translation is supposed to never generate bogus offsets.
    2. we put and then re-lookup each match and target.
    
    THe upside is that we get all sanity tests and ruleset validations
    provided by the normal path and can remove some duplicated compat code.
    
    iptables-restore time of autogenerated ruleset with 300k chains of form
    -A CHAIN0001 -m limit --limit 1/s -j CHAIN0002
    -A CHAIN0002 -m limit --limit 1/s -j CHAIN0003
    
    shows no noticeable differences in restore times:
    old:   0m30.796s
    new:   0m31.521s
    64bit: 0m25.674s
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 02fb0b2c12f38d43aecdd796eb696fae4e515c6d
Author: Dave Jones <davej@codemonkey.org.uk>
Date:   Tue May 19 20:55:17 2015 -0400

    netfilter: ensure number of counters is >0 in do_replace()
    
    commit 1086bbe97a074844188c6c988fa0b1a98c3ccbb9 upstream.
    
    After improving setsockopt() coverage in trinity, I started triggering
    vmalloc failures pretty reliably from this code path:
    
    warn_alloc_failed+0xe9/0x140
    __vmalloc_node_range+0x1be/0x270
    vzalloc+0x4b/0x50
    __do_replace+0x52/0x260 [ip_tables]
    do_ipt_set_ctl+0x15d/0x1d0 [ip_tables]
    nf_setsockopt+0x65/0x90
    ip_setsockopt+0x61/0xa0
    raw_setsockopt+0x16/0x60
    sock_common_setsockopt+0x14/0x20
    SyS_setsockopt+0x71/0xd0
    
    It turns out we don't validate that the num_counters field in the
    struct we pass in from userspace is initialized.
    
    The same problem also exists in ebtables, arptables, ipv6, and the
    compat variants.
    
    Signed-off-by: Dave Jones <davej@codemonkey.org.uk>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 39d710d9a43073d4937468b7b959f8f86640cca5
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:33 2016 +0200

    netfilter: x_tables: xt_compat_match_from_user doesn't need a retval
    
    commit 0188346f21e6546498c2a0f84888797ad4063fc5 upstream.
    
    Always returned 0.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 88bbd183691b41f388ff60cb5ae0d1c54ebb67f9
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:31 2016 +0200

    netfilter: ip6_tables: simplify translate_compat_table args
    
    commit 329a0807124f12fe1c8032f95d8a8eb47047fb0e upstream.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 40f7cef20cc300a9b44732c7acaf1c27ecf67055
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:30 2016 +0200

    netfilter: ip_tables: simplify translate_compat_table args
    
    commit 7d3f843eed29222254c9feab481f55175a1afcc9 upstream.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 9d9efa73f0900148870e81b8bacc6783d4eb71c7
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:32 2016 +0200

    netfilter: arp_tables: simplify translate_compat_table args
    
    commit 8dddd32756f6fe8e4e82a63361119b7e2384e02f upstream.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit cadf191552ee6f1e2530a2cadf8b801492e1d432
Author: Florian Westphal <fw@strlen.de>
Date:   Wed Jun 1 02:04:44 2016 +0200

    netfilter: x_tables: don't reject valid target size on some architectures
    
    commit 7b7eba0f3515fca3296b8881d583f7c1042f5226 upstream.
    
    Quoting John Stultz:
      In updating a 32bit arm device from 4.6 to Linus' current HEAD, I
      noticed I was having some trouble with networking, and realized that
      /proc/net/ip_tables_names was suddenly empty.
      Digging through the registration process, it seems we're catching on the:
    
       if (strcmp(t->u.user.name, XT_STANDARD_TARGET) == 0 &&
           target_offset + sizeof(struct xt_standard_target) != next_offset)
             return -EINVAL;
    
      Where next_offset seems to be 4 bytes larger then the
      offset + standard_target struct size.
    
    next_offset needs to be aligned via XT_ALIGN (so we can access all members
    of ip(6)t_entry struct).
    
    This problem didn't show up on i686 as it only needs 4-byte alignment for
    u64, but iptables userspace on other 32bit arches does insert extra padding.
    
    Reported-by: John Stultz <john.stultz@linaro.org>
    Tested-by: John Stultz <john.stultz@linaro.org>
    Fixes: 7ed2abddd20cf ("netfilter: x_tables: check standard target size too")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit e86abb821430e92339a50aaf1f5dd8685f19b184
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:29 2016 +0200

    netfilter: x_tables: validate all offsets and sizes in a rule
    
    commit 13631bfc604161a9d69cd68991dff8603edd66f9 upstream.
    
    Validate that all matches (if any) add up to the beginning of
    the target and that each match covers at least the base structure size.
    
    The compat path should be able to safely re-use the function
    as the structures only differ in alignment; added a
    BUILD_BUG_ON just in case we have an arch that adds padding as well.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1812c704ac70a37c06f239d7c06fd4331a25c779
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:28 2016 +0200

    netfilter: x_tables: check for bogus target offset
    
    commit ce683e5f9d045e5d67d1312a42b359cb2ab2a13c upstream.
    
    We're currently asserting that targetoff + targetsize <= nextoff.
    
    Extend it to also check that targetoff is >= sizeof(xt_entry).
    Since this is generic code, add an argument pointing to the start of the
    match/target, we can then derive the base structure size from the delta.
    
    We also need the e->elems pointer in a followup change to validate matches.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit caa0e0bfbda8c8e38dec7a907b6365014e0e5659
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:27 2016 +0200

    netfilter: x_tables: check standard target size too
    
    commit 7ed2abddd20cf8f6bd27f65bd218f26fa5bf7f44 upstream.
    
    We have targets and standard targets -- the latter carries a verdict.
    
    The ip/ip6tables validation functions will access t->verdict for the
    standard targets to fetch the jump offset or verdict for chainloop
    detection, but this happens before the targets get checked/validated.
    
    Thus we also need to check for verdict presence here, else t->verdict
    can point right after a blob.
    
    Spotted with UBSAN while testing malformed blobs.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 45c465bb1b42bb6869ffaf023432b23a889fd6f5
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:26 2016 +0200

    netfilter: x_tables: add compat version of xt_check_entry_offsets
    
    commit fc1221b3a163d1386d1052184202d5dc50d302d1 upstream.
    
    32bit rulesets have different layout and alignment requirements, so once
    more integrity checks get added to xt_check_entry_offsets it will reject
    well-formed 32bit rulesets.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d5056b9bfd3427c962b3493301fa92a0a901acc7
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:25 2016 +0200

    netfilter: x_tables: assert minimum target size
    
    commit a08e4e190b866579896c09af59b3bdca821da2cd upstream.
    
    The target size includes the size of the xt_entry_target struct.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d0012af7d1c6a5c01d9b5f3e99ccf733a215ca64
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:24 2016 +0200

    netfilter: x_tables: kill check_entry helper
    
    commit aa412ba225dd3bc36d404c28cdc3d674850d80d0 upstream.
    
    Once we add more sanity testing to xt_check_entry_offsets it
    becomes relvant if we're expecting a 32bit 'config_compat' blob
    or a normal one.
    
    Since we already have a lot of similar-named functions (check_entry,
    compat_check_entry, find_and_check_entry, etc.) and the current
    incarnation is short just fold its contents into the callers.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d1b53f828e25976196e2a3f0397c98ebe7fc330c
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:23 2016 +0200

    netfilter: x_tables: add and use xt_check_entry_offsets
    
    commit 7d35812c3214afa5b37a675113555259cfd67b98 upstream.
    
    Currently arp/ip and ip6tables each implement a short helper to check that
    the target offset is large enough to hold one xt_entry_target struct and
    that t->u.target_size fits within the current rule.
    
    Unfortunately these checks are not sufficient.
    
    To avoid adding new tests to all of ip/ip6/arptables move the current
    checks into a helper, then extend this helper in followup patches.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 467828496aeb7452d32c045cb4e5a83a2f4fdfdc
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:21 2016 +0200

    netfilter: x_tables: don't move to non-existent next rule
    
    commit f24e230d257af1ad7476c6e81a8dc3127a74204e upstream.
    
    Ben Hawkes says:
    
     In the mark_source_chains function (net/ipv4/netfilter/ip_tables.c) it
     is possible for a user-supplied ipt_entry structure to have a large
     next_offset field. This field is not bounds checked prior to writing a
     counter value at the supplied offset.
    
    Base chains enforce absolute verdict.
    
    User defined chains are supposed to end with an unconditional return,
    xtables userspace adds them automatically.
    
    But if such return is missing we will move to non-existent next rule.
    
    Reported-by: Ben Hawkes <hawkes@google.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 760bd1ade1ebe9b3882009f4c4cda7745908822d
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Tue Jun 7 21:26:55 2016 -0400

    fix d_walk()/non-delayed __d_free() race
    
    commit 3d56c25e3bb0726a5c5e16fc2d9e38f8ed763085 upstream.
    
    Ascend-to-parent logics in d_walk() depends on all encountered child
    dentries not getting freed without an RCU delay.  Unfortunately, in
    quite a few cases it is not true, with hard-to-hit oopsable race as
    the result.
    
    Fortunately, the fix is simiple; right now the rule is "if it ever
    been hashed, freeing must be delayed" and changing it to "if it
    ever had a parent, freeing must be delayed" closes that hole and
    covers all cases the old rule used to cover.  Moreover, pipes and
    sockets remain _not_ covered, so we do not introduce RCU delay in
    the cases which are the reason for having that delay conditional
    in the first place.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 686a230ab8f11908cc0e18da64b8ae1b7ee84910
Author: Prasun Maiti <prasunmaiti87@gmail.com>
Date:   Mon Jun 6 20:04:19 2016 +0530

    wext: Fix 32 bit iwpriv compatibility issue with 64 bit Kernel
    
    commit 3d5fdff46c4b2b9534fa2f9fc78e90a48e0ff724 upstream.
    
    iwpriv app uses iw_point structure to send data to Kernel. The iw_point
    structure holds a pointer. For compatibility Kernel converts the pointer
    as required for WEXT IOCTLs (SIOCIWFIRST to SIOCIWLAST). Some drivers
    may use iw_handler_def.private_args to populate iwpriv commands instead
    of iw_handler_def.private. For those case, the IOCTLs from
    SIOCIWFIRSTPRIV to SIOCIWLASTPRIV will follow the path ndo_do_ioctl().
    Accordingly when the filled up iw_point structure comes from 32 bit
    iwpriv to 64 bit Kernel, Kernel will not convert the pointer and sends
    it to driver. So, the driver may get the invalid data.
    
    The pointer conversion for the IOCTLs (SIOCIWFIRSTPRIV to
    SIOCIWLASTPRIV), which follow the path ndo_do_ioctl(), is mandatory.
    This patch adds pointer conversion from 32 bit to 64 bit and vice versa,
    if the ioctl comes from 32 bit iwpriv to 64 bit Kernel.
    
    Signed-off-by: Prasun Maiti <prasunmaiti87@gmail.com>
    Signed-off-by: Ujjal Roy <royujjal@gmail.com>
    Tested-by: Dibyajyoti Ghosh <dibyajyotig@gmail.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 114ffc5d2bbf3de6515d294edb9756a6fb35bd73
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Tue Jul 5 17:32:30 2016 -0400

    ecryptfs: don't allow mmap when the lower fs doesn't support it
    
    commit f0fe970df3838c202ef6c07a4c2b36838ef0a88b upstream.
    
    There are legitimate reasons to disallow mmap on certain files, notably
    in sysfs or procfs.  We shouldn't emulate mmap support on file systems
    that don't offer support natively.
    
    CVE-2016-1583
    
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    [tyhicks: clean up f_op check by using ecryptfs_file_to_lower()]
    Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
    Cc: Henry Jensen <hjensen@gmx.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 22079c65db043d6440d2d00347556291dab779fc
Author: Helge Deller <deller@gmx.de>
Date:   Sat Jun 4 17:21:33 2016 +0200

    parisc: Fix pagefault crash in unaligned __get_user() call
    
    commit 8b78f260887df532da529f225c49195d18fef36b upstream.
    
    One of the debian buildd servers had this crash in the syslog without
    any other information:
    
     Unaligned handler failed, ret = -2
     clock_adjtime (pid 22578): Unaligned data reference (code 28)
     CPU: 1 PID: 22578 Comm: clock_adjtime Tainted: G  E  4.5.0-2-parisc64-smp #1 Debian 4.5.4-1
     task: 000000007d9960f8 ti: 00000001bde7c000 task.ti: 00000001bde7c000
    
          YZrvWESTHLNXBCVMcbcbcbcbOGFRQPDI
     PSW: 00001000000001001111100000001111 Tainted: G            E
     r00-03  000000ff0804f80f 00000001bde7c2b0 00000000402d2be8 00000001bde7c2b0
     r04-07  00000000409e1fd0 00000000fa6f7fff 00000001bde7c148 00000000fa6f7fff
     r08-11  0000000000000000 00000000ffffffff 00000000fac9bb7b 000000000002b4d4
     r12-15  000000000015241c 000000000015242c 000000000000002d 00000000fac9bb7b
     r16-19  0000000000028800 0000000000000001 0000000000000070 00000001bde7c218
     r20-23  0000000000000000 00000001bde7c210 0000000000000002 0000000000000000
     r24-27  0000000000000000 0000000000000000 00000001bde7c148 00000000409e1fd0
     r28-31  0000000000000001 00000001bde7c320 00000001bde7c350 00000001bde7c218
     sr00-03  0000000001200000 0000000001200000 0000000000000000 0000000001200000
     sr04-07  0000000000000000 0000000000000000 0000000000000000 0000000000000000
    
     IASQ: 0000000000000000 0000000000000000 IAOQ: 00000000402d2e84 00000000402d2e88
      IIR: 0ca0d089    ISR: 0000000001200000  IOR: 00000000fa6f7fff
      CPU:        1   CR30: 00000001bde7c000 CR31: ffffffffffffffff
      ORIG_R28: 00000002369fe628
      IAOQ[0]: compat_get_timex+0x2dc/0x3c0
      IAOQ[1]: compat_get_timex+0x2e0/0x3c0
      RP(r2): compat_get_timex+0x40/0x3c0
     Backtrace:
      [<00000000402d4608>] compat_SyS_clock_adjtime+0x40/0xc0
      [<0000000040205024>] syscall_exit+0x0/0x14
    
    This means the userspace program clock_adjtime called the clock_adjtime()
    syscall and then crashed inside the compat_get_timex() function.
    Syscalls should never crash programs, but instead return EFAULT.
    
    The IIR register contains the executed instruction, which disassebles
    into "ldw 0(sr3,r5),r9".
    This load-word instruction is part of __get_user() which tried to read the word
    at %r5/IOR (0xfa6f7fff). This means the unaligned handler jumped in.  The
    unaligned handler is able to emulate all ldw instructions, but it fails if it
    fails to read the source e.g. because of page fault.
    
    The following program reproduces the problem:
    
    #define _GNU_SOURCE
    #include <unistd.h>
    #include <sys/syscall.h>
    #include <sys/mman.h>
    
    int main(void) {
            /* allocate 8k */
            char *ptr = mmap(NULL, 2*4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
            /* free second half (upper 4k) and make it invalid. */
            munmap(ptr+4096, 4096);
            /* syscall where first int is unaligned and clobbers into invalid memory region */
            /* syscall should return EFAULT */
            return syscall(__NR_clock_adjtime, 0, ptr+4095);
    }
    
    To fix this issue we simply need to check if the faulting instruction address
    is in the exception fixup table when the unaligned handler failed. If it
    is, call the fixup routine instead of crashing.
    
    While looking at the unaligned handler I found another issue as well: The
    target register should not be modified if the handler was unsuccessful.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 66c43f108534195647214753ffcfaf944a6fc2b1
Author: Thomas Huth <thuth@redhat.com>
Date:   Thu May 12 13:29:11 2016 +0200

    powerpc: Use privileged SPR number for MMCR2
    
    commit 8dd75ccb571f3c92c48014b3dabd3d51a115ab41 upstream.
    
    We are already using the privileged versions of MMCR0, MMCR1
    and MMCRA in the kernel, so for MMCR2, we should better use
    the privileged versions, too, to be consistent.
    
    Fixes: 240686c13687 ("powerpc: Initialise PMU related regs on Power8")
    Suggested-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Thomas Huth <thuth@redhat.com>
    Acked-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 18fca9e193003164ef51aaccb13f3e7e31dcfda8
Author: Thomas Huth <thuth@redhat.com>
Date:   Thu May 12 13:26:44 2016 +0200

    powerpc: Fix definition of SIAR and SDAR registers
    
    commit d23fac2b27d94aeb7b65536a50d32bfdc21fe01e upstream.
    
    The SIAR and SDAR registers are available twice, one time as SPRs
    780 / 781 (unprivileged, but read-only), and one time as the SPRs
    796 / 797 (privileged, but read and write). The Linux kernel code
    currently uses the unprivileged  SPRs - while this is OK for reading,
    writing to that register of course does not work.
    Since the KVM code tries to write to this register, too (see the mtspr
    in book3s_hv_rmhandlers.S), the contents of this register sometimes get
    lost for the guests, e.g. during migration of a VM.
    To fix this issue, simply switch to the privileged SPR numbers instead.
    
    Signed-off-by: Thomas Huth <thuth@redhat.com>
    Acked-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 9b22674cfa8eba02150abe8e4633da313462a6f9
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Mon May 30 23:14:56 2016 +0100

    ARM: fix PTRACE_SETVFPREGS on SMP systems
    
    commit e2dfb4b880146bfd4b6aa8e138c0205407cebbaf upstream.
    
    PTRACE_SETVFPREGS fails to properly mark the VFP register set to be
    reloaded, because it undoes one of the effects of vfp_flush_hwstate().
    
    Specifically vfp_flush_hwstate() sets thread->vfpstate.hard.cpu to
    an invalid CPU number, but vfp_set() overwrites this with the original
    CPU number, thereby rendering the hardware state as apparently "valid",
    even though the software state is more recent.
    
    Fix this by reverting the previous change.
    
    Fixes: 8130b9d7b9d8 ("ARM: 7308/1: vfp: flush thread hwstate before copying ptrace registers")
    Acked-by: Will Deacon <will.deacon@arm.com>
    Tested-by: Simon Marchi <simon.marchi@ericsson.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 0ad9e29d7d20cacf86b236cb6bda173056e28298
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Wed Jun 1 14:09:23 2016 +0200

    KVM: x86: fix OOPS after invalid KVM_SET_DEBUGREGS
    
    commit d14bdb553f9196169f003058ae1cdabe514470e6 upstream.
    
    MOV to DR6 or DR7 causes a #GP if an attempt is made to write a 1 to
    any of bits 63:32.  However, this is not detected at KVM_SET_DEBUGREGS
    time, and the next KVM_RUN oopses:
    
       general protection fault: 0000 [#1] SMP
       CPU: 2 PID: 14987 Comm: a.out Not tainted 4.4.9-300.fc23.x86_64 #1
       Hardware name: LENOVO 2325F51/2325F51, BIOS G2ET32WW (1.12 ) 05/30/2012
       [...]
       Call Trace:
        [<ffffffffa072c93d>] kvm_arch_vcpu_ioctl_run+0x141d/0x14e0 [kvm]
        [<ffffffffa071405d>] kvm_vcpu_ioctl+0x33d/0x620 [kvm]
        [<ffffffff81241648>] do_vfs_ioctl+0x298/0x480
        [<ffffffff812418a9>] SyS_ioctl+0x79/0x90
        [<ffffffff817a0f2e>] entry_SYSCALL_64_fastpath+0x12/0x71
       Code: 55 83 ff 07 48 89 e5 77 27 89 ff ff 24 fd 90 87 80 81 0f 23 fe 5d c3 0f 23 c6 5d c3 0f 23 ce 5d c3 0f 23 d6 5d c3 0f 23 de 5d c3 <0f> 23 f6 5d c3 0f 0b 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00
       RIP  [<ffffffff810639eb>] native_set_debugreg+0x2b/0x40
        RSP <ffff88005836bd50>
    
    Testcase (beautified/reduced from syzkaller output):
    
        #include <unistd.h>
        #include <sys/syscall.h>
        #include <string.h>
        #include <stdint.h>
        #include <linux/kvm.h>
        #include <fcntl.h>
        #include <sys/ioctl.h>
    
        long r[8];
    
        int main()
        {
            struct kvm_debugregs dr = { 0 };
    
            r[2] = open("/dev/kvm", O_RDONLY);
            r[3] = ioctl(r[2], KVM_CREATE_VM, 0);
            r[4] = ioctl(r[3], KVM_CREATE_VCPU, 7);
    
            memcpy(&dr,
                   "\x5d\x6a\x6b\xe8\x57\x3b\x4b\x7e\xcf\x0d\xa1\x72"
                   "\xa3\x4a\x29\x0c\xfc\x6d\x44\x00\xa7\x52\xc7\xd8"
                   "\x00\xdb\x89\x9d\x78\xb5\x54\x6b\x6b\x13\x1c\xe9"
                   "\x5e\xd3\x0e\x40\x6f\xb4\x66\xf7\x5b\xe3\x36\xcb",
                   48);
            r[7] = ioctl(r[4], KVM_SET_DEBUGREGS, &dr);
            r[6] = ioctl(r[4], KVM_RUN, 0);
        }
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit e58b6fc54a8671c673f9c3c5753a4242255a0599
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sun Apr 10 22:53:47 2016 +0300

    drivers: macintosh: rack-meter: limit idle ticks to total ticks
    
    commit c796d1d97c3035cf54d4d5a9e75abd094db80e76 upstream.
    
    Limit idle ticks to total ticks. This prevents the annoying rackmeter
    leds fully ON / OFF blinking state that happens on fully idling
    G5 Xserve systems.
    
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Oliver Neukum <oliver@neukum.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit a498de21381a5c4eed1b2d6e0f9e4a32ba8ef8a7
Author: Javier Martinez Canillas <javier@osg.samsung.com>
Date:   Thu Jul 30 18:18:30 2015 +0200

    macintosh/therm_windtunnel: Export I2C module alias information
    
    commit cb0eefcc3271ea1d370476dd29685918b99c5a9f upstream.
    
    The I2C core always reports the MODALIAS uevent as "i2c:<client name"
    regardless if the driver was matched using the I2C id_table or the
    of_match_table. So the driver needs to export the I2C table and this
    be built into the module or udev won't have the necessary information
    to auto load the correct module when the device is added.
    
    Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Oliver Neukum <oliver@neukum.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 35291f0c0a6dceab71b49701d9a304a089a48351
Author: Jakub Sitnicki <jkbs@redhat.com>
Date:   Wed Jun 8 15:13:34 2016 +0200

    ipv6: Skip XFRM lookup if dst_entry in socket cache is valid
    
    [ Upstream commit 00bc0ef5880dc7b82f9c320dead4afaad48e47be ]
    
    At present we perform an xfrm_lookup() for each UDPv6 message we
    send. The lookup involves querying the flow cache (flow_cache_lookup)
    and, in case of a cache miss, creating an XFRM bundle.
    
    If we miss the flow cache, we can end up creating a new bundle and
    deriving the path MTU (xfrm_init_pmtu) from on an already transformed
    dst_entry, which we pass from the socket cache (sk->sk_dst_cache) down
    to xfrm_lookup(). This can happen only if we're caching the dst_entry
    in the socket, that is when we're using a connected UDP socket.
    
    To put it another way, the path MTU shrinks each time we miss the flow
    cache, which later on leads to incorrectly fragmented payload. It can
    be observed with ESPv6 in transport mode:
    
      1) Set up a transformation and lower the MTU to trigger fragmentation
        # ip xfrm policy add dir out src ::1 dst ::1 \
          tmpl src ::1 dst ::1 proto esp spi 1
        # ip xfrm state add src ::1 dst ::1 \
          proto esp spi 1 enc 'aes' 0x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
        # ip link set dev lo mtu 1500
    
      2) Monitor the packet flow and set up an UDP sink
        # tcpdump -ni lo -ttt &
        # socat udp6-listen:12345,fork /dev/null &
    
      3) Send a datagram that needs fragmentation with a connected socket
        # perl -e 'print "@" x 1470 | socat - udp6:[::1]:12345
        2016/06/07 18:52:52 socat[724] E read(3, 0x555bb3d5ba00, 8192): Protocol error
        00:00:00.000000 IP6 ::1 > ::1: frag (0|1448) ESP(spi=0x00000001,seq=0x2), length 1448
        00:00:00.000014 IP6 ::1 > ::1: frag (1448|32)
        00:00:00.000050 IP6 ::1 > ::1: ESP(spi=0x00000001,seq=0x3), length 1272
        (^ ICMPv6 Parameter Problem)
        00:00:00.000022 IP6 ::1 > ::1: ESP(spi=0x00000001,seq=0x5), length 136
    
      4) Compare it to a non-connected socket
        # perl -e 'print "@" x 1500' | socat - udp6-sendto:[::1]:12345
        00:00:40.535488 IP6 ::1 > ::1: frag (0|1448) ESP(spi=0x00000001,seq=0x6), length 1448
        00:00:00.000010 IP6 ::1 > ::1: frag (1448|64)
    
    What happens in step (3) is:
    
      1) when connecting the socket in __ip6_datagram_connect(), we
         perform an XFRM lookup, miss the flow cache, create an XFRM
         bundle, and cache the destination,
    
      2) afterwards, when sending the datagram, we perform an XFRM lookup,
         again, miss the flow cache (due to mismatch of flowi6_iif and
         flowi6_oif, which is an issue of its own), and recreate an XFRM
         bundle based on the cached (and already transformed) destination.
    
    To prevent the recreation of an XFRM bundle, avoid an XFRM lookup
    altogether whenever we already have a destination entry cached in the
    socket. This prevents the path MTU shrinkage and brings us on par with
    UDPv4.
    
    The fix also benefits connected PINGv6 sockets, another user of
    ip6_sk_dst_lookup_flow(), who also suffer messages being transformed
    twice.
    
    Joint work with Hannes Frederic Sowa.
    
    Reported-by: Jan Tluka <jtluka@redhat.com>
    Signed-off-by: Jakub Sitnicki <jkbs@redhat.com>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit dd3dbed567ff4088f4274118fe7f384583164c55
Author: Yuchung Cheng <ycheng@google.com>
Date:   Mon Jun 6 15:07:18 2016 -0700

    tcp: record TLP and ER timer stats in v6 stats
    
    [ Upstream commit ce3cf4ec0305919fc69a972f6c2b2efd35d36abc ]
    
    The v6 tcp stats scan do not provide TLP and ER timer information
    correctly like the v4 version . This patch fixes that.
    
    Fixes: 6ba8a3b19e76 ("tcp: Tail loss probe (TLP)")
    Fixes: eed530b6c676 ("tcp: early retransmit")
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit c66991f0e48376740b647d22b946e54f0cfed176
Author: Hannes Frederic Sowa <hannes@stressinduktion.org>
Date:   Thu May 19 15:58:33 2016 +0200

    udp: prevent skbs lingering in tunnel socket queues
    
    [ Upstream commit e5aed006be918af163eb397e45aa5ea6cefd5e01 ]
    
    In case we find a socket with encapsulation enabled we should call
    the encap_recv function even if just a udp header without payload is
    available. The callbacks are responsible for correctly verifying and
    dropping the packets.
    
    Also, in case the header validation fails for geneve and vxlan we
    shouldn't put the skb back into the socket queue, no one will pick
    them up there.  Instead we can simply discard them in the respective
    encap_recv functions.
    
    [js] 3.12 does not have geneve yet.
    
    Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 461dbb3855305ad7e841799ef573d6fc2abf6ed3
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Mon May 16 17:28:16 2016 +0800

    netlink: Fix dump skb leak/double free
    
    [ Upstream commit 92964c79b357efd980812c4de5c1fd2ec8bb5520 ]
    
    When we free cb->skb after a dump, we do it after releasing the
    lock.  This means that a new dump could have started in the time
    being and we'll end up freeing their skb instead of ours.
    
    This patch saves the skb and module before we unlock so we free
    the right memory.
    
    Fixes: 16b304f3404f ("netlink: Eliminate kmalloc in netlink dump operation.")
    Reported-by: Baozeng Ding <sploving1@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b67568e47ba9844d18da561b7081e2e5354abb8d
Author: Andrey Ryabinin <aryabinin@virtuozzo.com>
Date:   Wed May 11 16:51:51 2016 +0300

    perf/x86: Fix undefined shift on 32-bit kernels
    
    commit 6d6f2833bfbf296101f9f085e10488aef2601ba5 upstream.
    
    Jim reported:
    
            UBSAN: Undefined behaviour in arch/x86/events/intel/core.c:3708:12
            shift exponent 35 is too large for 32-bit type 'long unsigned int'
    
    The use of 'unsigned long' type obviously is not correct here, make it
    'unsigned long long' instead.
    
    Reported-by: Jim Cromie <jim.cromie@gmail.com>
    Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Imre Palik <imrep@amazon.de>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Fixes: 2c33645d366d ("perf/x86: Honor the architectural performance monitoring version")
    Link: http://lkml.kernel.org/r/1462974711-10037-1-git-send-email-aryabinin@virtuozzo.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Kevin Christopher <kevinc@vmware.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit ab4801b98294154991f8ee1aa7ba0c117dbfe510
Author: Palik, Imre <imrep@amazon.de>
Date:   Mon Jun 8 14:46:49 2015 +0200

    perf/x86: Honor the architectural performance monitoring version
    
    commit 2c33645d366d13b969d936b68b9f4875b1fdddea upstream.
    
    Architectural performance monitoring, version 1, doesn't support fixed counters.
    
    Currently, even if a hypervisor advertises support for architectural
    performance monitoring version 1, perf may still try to use the fixed
    counters, as the constraints are set up based on the CPU model.
    
    This patch ensures that perf honors the architectural performance monitoring
    version returned by CPUID, and it only uses the fixed counters for version 2
    and above.
    
    (Some of the ideas in this patch came from Peter Zijlstra.)
    
    Signed-off-by: Imre Palik <imrep@amazon.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Anthony Liguori <aliguori@amazon.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1433767609-1039-1-git-send-email-imrep.amz@gmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Kevin Christopher <kevinc@vmware.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 9219a052748c857d8f4223c42cdbfac4b1fedb24
Author: David S. Miller <davem@davemloft.net>
Date:   Sat May 28 20:41:12 2016 -0700

    sparc64: Fix return from trap window fill crashes.
    
    [ Upstream commit 7cafc0b8bf130f038b0ec2dcdd6a9de6dc59b65a ]
    
    We must handle data access exception as well as memory address unaligned
    exceptions from return from trap window fill faults, not just normal
    TLB misses.
    
    Otherwise we can get an OOPS that looks like this:
    
    ld-linux.so.2(36808): Kernel bad sw trap 5 [#1]
    CPU: 1 PID: 36808 Comm: ld-linux.so.2 Not tainted 4.6.0 #34
    task: fff8000303be5c60 ti: fff8000301344000 task.ti: fff8000301344000
    TSTATE: 0000004410001601 TPC: 0000000000a1a784 TNPC: 0000000000a1a788 Y: 00000002    Not tainted
    TPC: <do_sparc64_fault+0x5c4/0x700>
    g0: fff8000024fc8248 g1: 0000000000db04dc g2: 0000000000000000 g3: 0000000000000001
    g4: fff8000303be5c60 g5: fff800030e672000 g6: fff8000301344000 g7: 0000000000000001
    o0: 0000000000b95ee8 o1: 000000000000012b o2: 0000000000000000 o3: 0000000200b9b358
    o4: 0000000000000000 o5: fff8000301344040 sp: fff80003013475c1 ret_pc: 0000000000a1a77c
    RPC: <do_sparc64_fault+0x5bc/0x700>
    l0: 00000000000007ff l1: 0000000000000000 l2: 000000000000005f l3: 0000000000000000
    l4: fff8000301347e98 l5: fff8000024ff3060 l6: 0000000000000000 l7: 0000000000000000
    i0: fff8000301347f60 i1: 0000000000102400 i2: 0000000000000000 i3: 0000000000000000
    i4: 0000000000000000 i5: 0000000000000000 i6: fff80003013476a1 i7: 0000000000404d4c
    I7: <user_rtt_fill_fixup+0x6c/0x7c>
    Call Trace:
     [0000000000404d4c] user_rtt_fill_fixup+0x6c/0x7c
    
    The window trap handlers are slightly clever, the trap table entries for them are
    composed of two pieces of code.  First comes the code that actually performs
    the window fill or spill trap handling, and then there are three instructions at
    the end which are for exception processing.
    
    The userland register window fill handler is:
    
            add     %sp, STACK_BIAS + 0x00, %g1;            \
            ldxa    [%g1 + %g0] ASI, %l0;                   \
            mov     0x08, %g2;                              \
            mov     0x10, %g3;                              \
            ldxa    [%g1 + %g2] ASI, %l1;                   \
            mov     0x18, %g5;                              \
            ldxa    [%g1 + %g3] ASI, %l2;                   \
            ldxa    [%g1 + %g5] ASI, %l3;                   \
            add     %g1, 0x20, %g1;                         \
            ldxa    [%g1 + %g0] ASI, %l4;                   \
            ldxa    [%g1 + %g2] ASI, %l5;                   \
            ldxa    [%g1 + %g3] ASI, %l6;                   \
            ldxa    [%g1 + %g5] ASI, %l7;                   \
            add     %g1, 0x20, %g1;                         \
            ldxa    [%g1 + %g0] ASI, %i0;                   \
            ldxa    [%g1 + %g2] ASI, %i1;                   \
            ldxa    [%g1 + %g3] ASI, %i2;                   \
            ldxa    [%g1 + %g5] ASI, %i3;                   \
            add     %g1, 0x20, %g1;                         \
            ldxa    [%g1 + %g0] ASI, %i4;                   \
            ldxa    [%g1 + %g2] ASI, %i5;                   \
            ldxa    [%g1 + %g3] ASI, %i6;                   \
            ldxa    [%g1 + %g5] ASI, %i7;                   \
            restored;                                       \
            retry; nop; nop; nop; nop;                      \
            b,a,pt  %xcc, fill_fixup_dax;                   \
            b,a,pt  %xcc, fill_fixup_mna;                   \
            b,a,pt  %xcc, fill_fixup;
    
    And the way this works is that if any of those memory accesses
    generate an exception, the exception handler can revector to one of
    those final three branch instructions depending upon which kind of
    exception the memory access took.  In this way, the fault handler
    doesn't have to know if it was a spill or a fill that it's handling
    the fault for.  It just always branches to the last instruction in
    the parent trap's handler.
    
    For example, for a regular fault, the code goes:
    
    winfix_trampoline:
            rdpr    %tpc, %g3
            or      %g3, 0x7c, %g3
            wrpr    %g3, %tnpc
            done
    
    All window trap handlers are 0x80 aligned, so if we "or" 0x7c into the
    trap time program counter, we'll get that final instruction in the
    trap handler.
    
    On return from trap, we have to pull the register window in but we do
    this by hand instead of just executing a "restore" instruction for
    several reasons.  The largest being that from Niagara and onward we
    simply don't have enough levels in the trap stack to fully resolve all
    possible exception cases of a window fault when we are already at
    trap level 1 (which we enter to get ready to return from the original
    trap).
    
    This is executed inline via the FILL_*_RTRAP handlers.  rtrap_64.S's
    code branches directly to these to do the window fill by hand if
    necessary.  Now if you look at them, we'll see at the end:
    
                ba,a,pt    %xcc, user_rtt_fill_fixup;
                ba,a,pt    %xcc, user_rtt_fill_fixup;
                ba,a,pt    %xcc, user_rtt_fill_fixup;
    
    And oops, all three cases are handled like a fault.
    
    This doesn't work because each of these trap types (data access
    exception, memory address unaligned, and faults) store their auxiliary
    info in different registers to pass on to the C handler which does the
    real work.
    
    So in the case where the stack was unaligned, the unaligned trap
    handler sets up the arg registers one way, and then we branched to
    the fault handler which expects them setup another way.
    
    So the FAULT_TYPE_* value ends up basically being garbage, and
    randomly would generate the backtrace seen above.
    
    Reported-by: Nick Alcock <nix@esperi.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b3dbf811664ea16fe28fb8a2d75ecc4eb1f897d6
Author: David S. Miller <davem@davemloft.net>
Date:   Sat May 28 21:21:31 2016 -0700

    sparc: Harden signal return frame checks.
    
    [ Upstream commit d11c2a0de2824395656cf8ed15811580c9dd38aa ]
    
    All signal frames must be at least 16-byte aligned, because that is
    the alignment we explicitly create when we build signal return stack
    frames.
    
    All stack pointers must be at least 8-byte aligned.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit acec837d88f246052271395b7a6bb7da7dbf70e8
Author: David S. Miller <davem@davemloft.net>
Date:   Wed May 25 12:51:20 2016 -0700

    sparc64: Take ctx_alloc_lock properly in hugetlb_setup().
    
    [ Upstream commit 9ea46abe22550e3366ff7cee2f8391b35b12f730 ]
    
    On cheetahplus chips we take the ctx_alloc_lock in order to
    modify the TLB lookup parameters for the indexed TLBs, which
    are stored in the context register.
    
    This is called with interrupts disabled, however ctx_alloc_lock
    is an IRQ safe lock, therefore we must take acquire/release it
    properly with spin_{lock,unlock}_irq().
    
    Reported-by: Meelis Roos <mroos@linux.ee>
    Tested-by: Meelis Roos <mroos@linux.ee>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 11885c1bc52909bf13ad5d86b2038e7ac7df8fdc
Author: Babu Moger <babu.moger@oracle.com>
Date:   Thu Mar 24 13:02:22 2016 -0700

    sparc/PCI: Fix for panic while enabling SR-IOV
    
    [ Upstream commit d0c31e02005764dae0aab130a57e9794d06b824d ]
    
    We noticed this panic while enabling SR-IOV in sparc.
    
    mlx4_core: Mellanox ConnectX core driver v2.2-1 (Jan  1 2015)
    mlx4_core: Initializing 0007:01:00.0
    mlx4_core 0007:01:00.0: Enabling SR-IOV with 5 VFs
    mlx4_core: Initializing 0007:01:00.1
    Unable to handle kernel NULL pointer dereference
    insmod(10010): Oops [#1]
    CPU: 391 PID: 10010 Comm: insmod Not tainted
                    4.1.12-32.el6uek.kdump2.sparc64 #1
    TPC: <dma_supported+0x20/0x80>
    I7: <__mlx4_init_one+0x324/0x500 [mlx4_core]>
    Call Trace:
     [00000000104c5ea4] __mlx4_init_one+0x324/0x500 [mlx4_core]
     [00000000104c613c] mlx4_init_one+0xbc/0x120 [mlx4_core]
     [0000000000725f14] local_pci_probe+0x34/0xa0
     [0000000000726028] pci_call_probe+0xa8/0xe0
     [0000000000726310] pci_device_probe+0x50/0x80
     [000000000079f700] really_probe+0x140/0x420
     [000000000079fa24] driver_probe_device+0x44/0xa0
     [000000000079fb5c] __device_attach+0x3c/0x60
     [000000000079d85c] bus_for_each_drv+0x5c/0xa0
     [000000000079f588] device_attach+0x88/0xc0
     [000000000071acd0] pci_bus_add_device+0x30/0x80
     [0000000000736090] virtfn_add.clone.1+0x210/0x360
     [00000000007364a4] sriov_enable+0x2c4/0x520
     [000000000073672c] pci_enable_sriov+0x2c/0x40
     [00000000104c2d58] mlx4_enable_sriov+0xf8/0x180 [mlx4_core]
     [00000000104c49ac] mlx4_load_one+0x42c/0xd40 [mlx4_core]
    Disabling lock debugging due to kernel taint
    Caller[00000000104c5ea4]: __mlx4_init_one+0x324/0x500 [mlx4_core]
    Caller[00000000104c613c]: mlx4_init_one+0xbc/0x120 [mlx4_core]
    Caller[0000000000725f14]: local_pci_probe+0x34/0xa0
    Caller[0000000000726028]: pci_call_probe+0xa8/0xe0
    Caller[0000000000726310]: pci_device_probe+0x50/0x80
    Caller[000000000079f700]: really_probe+0x140/0x420
    Caller[000000000079fa24]: driver_probe_device+0x44/0xa0
    Caller[000000000079fb5c]: __device_attach+0x3c/0x60
    Caller[000000000079d85c]: bus_for_each_drv+0x5c/0xa0
    Caller[000000000079f588]: device_attach+0x88/0xc0
    Caller[000000000071acd0]: pci_bus_add_device+0x30/0x80
    Caller[0000000000736090]: virtfn_add.clone.1+0x210/0x360
    Caller[00000000007364a4]: sriov_enable+0x2c4/0x520
    Caller[000000000073672c]: pci_enable_sriov+0x2c/0x40
    Caller[00000000104c2d58]: mlx4_enable_sriov+0xf8/0x180 [mlx4_core]
    Caller[00000000104c49ac]: mlx4_load_one+0x42c/0xd40 [mlx4_core]
    Caller[00000000104c5f90]: __mlx4_init_one+0x410/0x500 [mlx4_core]
    Caller[00000000104c613c]: mlx4_init_one+0xbc/0x120 [mlx4_core]
    Caller[0000000000725f14]: local_pci_probe+0x34/0xa0
    Caller[0000000000726028]: pci_call_probe+0xa8/0xe0
    Caller[0000000000726310]: pci_device_probe+0x50/0x80
    Caller[000000000079f700]: really_probe+0x140/0x420
    Caller[000000000079fa24]: driver_probe_device+0x44/0xa0
    Caller[000000000079fb08]: __driver_attach+0x88/0xa0
    Caller[000000000079d90c]: bus_for_each_dev+0x6c/0xa0
    Caller[000000000079f29c]: driver_attach+0x1c/0x40
    Caller[000000000079e35c]: bus_add_driver+0x17c/0x220
    Caller[00000000007a02d4]: driver_register+0x74/0x120
    Caller[00000000007263fc]: __pci_register_driver+0x3c/0x60
    Caller[00000000104f62bc]: mlx4_init+0x60/0xcc [mlx4_core]
    Kernel panic - not syncing: Fatal exception
    Press Stop-A (L1-A) to return to the boot prom
    ---[ end Kernel panic - not syncing: Fatal exception
    
    Details:
    Here is the call sequence
    virtfn_add->__mlx4_init_one->dma_set_mask->dma_supported
    
    The panic happened at line 760(file arch/sparc/kernel/iommu.c)
    
    758 int dma_supported(struct device *dev, u64 device_mask)
    759 {
    760         struct iommu *iommu = dev->archdata.iommu;
    761         u64 dma_addr_mask = iommu->dma_addr_mask;
    762
    763         if (device_mask >= (1UL << 32UL))
    764                 return 0;
    765
    766         if ((device_mask & dma_addr_mask) == dma_addr_mask)
    767                 return 1;
    768
    769 #ifdef CONFIG_PCI
    770         if (dev_is_pci(dev))
    771             return pci64_dma_supported(to_pci_dev(dev), device_mask);
    772 #endif
    773
    774         return 0;
    775 }
    776 EXPORT_SYMBOL(dma_supported);
    
    Same panic happened with Intel ixgbe driver also.
    
    SR-IOV code looks for arch specific data while enabling
    VFs. When VF device is added, driver probe function makes set
    of calls to initialize the pci device. Because the VF device is
    added different way than the normal PF device(which happens via
    of_create_pci_dev for sparc), some of the arch specific initialization
    does not happen for VF device.  That causes panic when archdata is
    accessed.
    
    To fix this, I have used already defined weak function
    pcibios_setup_device to copy archdata from PF to VF.
    Also verified the fix.
    
    Signed-off-by: Babu Moger <babu.moger@oracle.com>
    Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
    Reviewed-by: Ethan Zhao <ethan.zhao@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b98a9a51b2a24c9910213b6d9403b524f435147a
Author: David S. Miller <davem@davemloft.net>
Date:   Tue Mar 1 00:25:32 2016 -0500

    sparc64: Fix sparc64_set_context stack handling.
    
    [ Upstream commit 397d1533b6cce0ccb5379542e2e6d079f6936c46 ]
    
    Like a signal return, we should use synchronize_user_stack() rather
    than flush_user_windows().
    
    Reported-by: Ilya Malakhov <ilmalakhovthefirst@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 40fd3377ba62819f25adce3c56c32a3f6035bcbf
Author: David S. Miller <davem@davemloft.net>
Date:   Wed Apr 27 17:27:37 2016 -0400

    sparc64: Fix bootup regressions on some Kconfig combinations.
    
    [ Upstream commit 49fa5230462f9f2c4e97c81356473a6bdf06c422 ]
    
    The system call tracing bug fix mentioned in the Fixes tag
    below increased the amount of assembler code in the sequence
    of assembler files included by head_64.S
    
    This caused to total set of code to exceed 0x4000 bytes in
    size, which overflows the expression in head_64.S that works
    to place swapper_tsb at address 0x408000.
    
    When this is violated, the TSB is not properly aligned, and
    also the trap table is not aligned properly either.  All of
    this together results in failed boots.
    
    So, do two things:
    
    1) Simplify some code by using ba,a instead of ba/nop to get
       those bytes back.
    
    2) Add a linker script assertion to make sure that if this
       happens again the build will fail.
    
    Fixes: 1a40b95374f6 ("sparc: Fix system call tracing register handling.")
    Reported-by: Meelis Roos <mroos@linux.ee>
    Reported-by: Joerg Abraham <joerg.abraham@nokia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 3428d1d1377b1677f89b928d5aca525fa07dde8c
Author: Mike Frysinger <vapier@gentoo.org>
Date:   Mon Jan 18 06:32:30 2016 -0500

    sparc: Fix system call tracing register handling.
    
    [ Upstream commit 1a40b95374f680625318ab61d81958e949e0afe3 ]
    
    A system call trace trigger on entry allows the tracing
    process to inspect and potentially change the traced
    process's registers.
    
    Account for that by reloading the %g1 (syscall number)
    and %i0-%i5 (syscall argument) values.  We need to be
    careful to revalidate the range of %g1, and reload the
    system call table entry it corresponds to into %l7.
    
    Reported-by: Mike Frysinger <vapier@gentoo.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Tested-by: Mike Frysinger <vapier@gentoo.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit f856f1da9d5dbb78a87d4ac9f733f78394ce8a4c
Author: Russell Currey <ruscur@russell.cc>
Date:   Wed Jun 22 14:45:22 2016 +1000

    powerpc/pseries/eeh: Handle RTAS delay requests in configure_bridge
    
    commit 871e178e0f2c4fa788f694721a10b4758d494ce1 upstream.
    
    In the "ibm,configure-pe" and "ibm,configure-bridge" RTAS calls, the
    spec states that values of 9900-9905 can be returned, indicating that
    software should delay for 10^x (where x is the last digit, i.e. 990x)
    milliseconds and attempt the call again. Currently, the kernel doesn't
    know about this, and respecting it fixes some PCI failures when the
    hypervisor is busy.
    
    The delay is capped at 0.2 seconds.
    
    Signed-off-by: Russell Currey <ruscur@russell.cc>
    Acked-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 0554668957dc4eef64326357a2903f76e12716aa
Author: Ralf Baechle <ralf@linux-mips.org>
Date:   Thu Feb 4 01:24:40 2016 +0100

    MIPS: Fix 64k page support for 32 bit kernels.
    
    commit d7de413475f443957a0c1d256e405d19b3a2cb22 upstream.
    
    TASK_SIZE was defined as 0x7fff8000UL which for 64k pages is not a
    multiple of the page size.  Somewhere further down the math fails
    such that executing an ELF binary fails.
    
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Tested-by: Joshua Henderson <joshua.henderson@microchip.com>
    Cc: James Hogan <james.hogan@imgtec.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 3d4036cb9b963cdd270c02856a888183da0623db
Author: Taku Izumi <izumi.taku@jp.fujitsu.com>
Date:   Thu Sep 17 10:09:37 2015 -0500

    PCI/AER: Clear error status registers during enumeration and restore
    
    commit b07461a8e45b7a62ef7fb46e4f6ada66f63406a8 upstream.
    
    AER errors might be recorded when powering-on devices.  These errors can be
    ignored, so firmware usually clears them before the OS enumerates devices.
    However, firmware is not involved when devices are added via hotplug, so
    the OS may discover power-up errors that should be ignored.  The same may
    happen when powering up devices when resuming after suspend.
    
    Clear the AER error status registers during enumeration and resume.
    
    [bhelgaas: changelog, remove repetitive comments]
    Signed-off-by: Taku Izumi <izumi.taku@jp.fujitsu.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>