Push to branch refs/heads/master:
47bfc168f6179b9112aa7099749228d8e870d035 -->
  e7a59c7f266809d17dcde20fd2055e23e7eb6895

 .../devicetree/bindings/clock/imx31-clock.txt      |   2 +-
 Documentation/kernel-parameters.txt                |  11 +
 Makefile                                           |   4 +-
 arch/arc/kernel/unaligned.c                        |   3 +-
 arch/arc/mm/mmap.c                                 |   2 +-
 arch/arm/boot/dts/da850-evm.dts                    |   1 +
 arch/arm/boot/dts/imx31.dtsi                       |  18 +-
 arch/arm/include/asm/cputype.h                     |   3 +
 arch/arm/kernel/hw_breakpoint.c                    |  16 ++
 arch/arm/kernel/ptrace.c                           |   2 +-
 arch/arm/mach-ux500/pm.c                           |   4 +-
 arch/arm/mm/mmap.c                                 |   4 +-
 arch/arm/xen/enlighten.c                           |   3 +-
 arch/arm64/include/uapi/asm/ptrace.h               |   1 +
 arch/arm64/kernel/ptrace.c                         |  11 +-
 arch/c6x/kernel/ptrace.c                           |  41 ---
 arch/cris/boot/rescue/Makefile                     |   8 +
 arch/frv/mm/elf-fdpic.c                            |   2 +-
 arch/m68k/include/asm/delay.h                      |   2 +-
 arch/metag/include/asm/uaccess.h                   |  15 +-
 arch/metag/kernel/ptrace.c                         |  19 +-
 arch/metag/lib/usercopy.c                          | 312 ++++++++-------------
 arch/mips/cavium-octeon/octeon-memcpy.S            |  20 +-
 arch/mips/configs/ip27_defconfig                   |   1 -
 arch/mips/include/asm/branch.h                     |   5 +-
 arch/mips/include/asm/checksum.h                   |   2 +
 arch/mips/kernel/branch.c                          |   8 +-
 arch/mips/kernel/crash.c                           |  16 +-
 arch/mips/kernel/kgdb.c                            |  48 +++-
 arch/mips/kernel/process.c                         | 153 ++++++----
 arch/mips/kernel/syscall.c                         |   2 +-
 arch/mips/math-emu/cp1emu.c                        |  38 +++
 arch/mips/mm/mmap.c                                |   2 +-
 arch/parisc/include/asm/bitops.h                   |   8 +-
 arch/parisc/include/uapi/asm/bitsperlong.h         |   2 -
 arch/parisc/include/uapi/asm/swab.h                |   5 +-
 arch/powerpc/Makefile                              |   8 +
 arch/powerpc/boot/ps3-head.S                       |   5 -
 arch/powerpc/boot/ps3.c                            |   8 +-
 arch/powerpc/include/asm/atomic.h                  |   4 +-
 arch/powerpc/include/asm/reg.h                     |   2 +-
 arch/powerpc/kernel/align.c                        |  28 +-
 arch/powerpc/kernel/hw_breakpoint.c                |   4 +-
 arch/powerpc/kernel/ibmebus.c                      |  16 +-
 arch/powerpc/kernel/idle_power7.S                  |   2 +-
 arch/powerpc/kernel/kprobes.c                      |  11 +
 arch/powerpc/kernel/misc_32.S                      |   2 +-
 arch/powerpc/kernel/setup_64.c                     |   9 +
 arch/powerpc/kvm/emulate.c                         |   1 -
 arch/powerpc/lib/sstep.c                           |  13 +
 arch/powerpc/mm/slice.c                            |   2 +-
 arch/s390/boot/compressed/misc.c                   |  35 +--
 arch/s390/include/asm/processor.h                  |   5 +-
 arch/s390/mm/pgtable.c                             |   2 +-
 arch/s390/pci/pci_dma.c                            |  16 +-
 arch/sh/mm/mmap.c                                  |   4 +-
 arch/sparc/kernel/ptrace_64.c                      |   2 +-
 arch/sparc/kernel/sys_sparc_64.c                   |   4 +-
 arch/sparc/mm/hugetlbpage.c                        |   2 +-
 arch/tile/kernel/ptrace.c                          |   2 +-
 arch/tile/mm/hugetlbpage.c                         |   2 +-
 arch/x86/crypto/ghash-clmulni-intel_glue.c         |  26 ++
 arch/x86/include/asm/elf.h                         |   2 +-
 arch/x86/include/asm/io.h                          |   4 +-
 arch/x86/kernel/apic/apic.c                        |   2 +
 arch/x86/kernel/cpu/common.c                       |   2 +-
 arch/x86/kernel/cpu/mcheck/mce_amd.c               |   2 +-
 arch/x86/kernel/entry_32.S                         |   4 +-
 arch/x86/kernel/entry_64.S                         |   3 +-
 arch/x86/kernel/ftrace.c                           |  12 +
 arch/x86/kernel/kvm.c                              |   2 +-
 arch/x86/kernel/sys_x86_64.c                       |   4 +-
 arch/x86/kvm/emulate.c                             |  66 ++++-
 arch/x86/kvm/vmx.c                                 |  15 +-
 arch/x86/kvm/x86.c                                 |   2 +
 arch/x86/mm/hugetlbpage.c                          |   2 +-
 arch/x86/mm/init.c                                 |  41 ++-
 arch/x86/mm/mmap.c                                 |  44 ++-
 arch/x86/mm/numa_32.c                              |   1 +
 arch/x86/pci/acpi.c                                |  10 +
 arch/x86/pci/xen.c                                 |  23 +-
 arch/x86/platform/goldfish/goldfish.c              |  14 +-
 arch/x86/xen/time.c                                |   6 +-
 arch/xtensa/kernel/setup.c                         |   4 +-
 arch/xtensa/kernel/syscall.c                       |   2 +-
 block/bsg.c                                        |   3 +
 block/genhd.c                                      |   1 -
 block/scsi_ioctl.c                                 |   3 +
 crypto/Makefile                                    |   9 +-
 crypto/algapi.c                                    |   1 +
 crypto/algif_hash.c                                |   2 +-
 crypto/algif_skcipher.c                            |   4 +-
 crypto/asymmetric_keys/rsa.c                       |   5 +-
 crypto/authenc.c                                   |   6 +-
 crypto/authencesn.c                                |   8 +-
 crypto/ccm.c                                       |   4 +-
 crypto/cryptd.c                                    |   1 +
 crypto/gcm.c                                       |   2 +-
 crypto/memneq.c                                    | 138 +++++++++
 drivers/acpi/Makefile                              |   1 -
 drivers/acpi/apei/ghes.c                           |   1 +
 drivers/acpi/osl.c                                 |   6 +-
 drivers/acpi/power.c                               |   1 +
 drivers/acpi/video.c                               |   3 +
 drivers/ata/libata-scsi.c                          |   6 +-
 drivers/ata/sata_mv.c                              |   3 +
 drivers/base/power/domain.c                        |   4 +-
 drivers/bcma/main.c                                |   4 +
 drivers/char/Kconfig                               |   6 +-
 drivers/char/lp.c                                  |   6 +-
 drivers/char/mem.c                                 |  82 ++++--
 drivers/char/virtio_console.c                      |  12 +-
 drivers/clk/clk-wm831x.c                           |   2 +-
 drivers/cpufreq/cpufreq.c                          |   8 +-
 drivers/cpufreq/cpufreq_conservative.c             |   4 +-
 drivers/cpufreq/s3c2416-cpufreq.c                  |   1 -
 drivers/crypto/caam/caamalg.c                      |   4 +-
 drivers/crypto/caam/caamhash.c                     |   3 +-
 drivers/crypto/caam/key_gen.c                      |   2 +-
 drivers/crypto/talitos.c                           |   7 +-
 drivers/gpu/drm/ast/ast_main.c                     |   7 +-
 drivers/gpu/drm/ast/ast_post.c                     |   8 +-
 drivers/gpu/drm/i915/intel_crt.c                   |   9 +-
 drivers/gpu/drm/i915/intel_display.c               |   4 +-
 drivers/gpu/drm/nouveau/dispnv04/hw.c              |   3 +-
 drivers/gpu/drm/nouveau/nv50_display.c             |   2 +-
 drivers/gpu/drm/ttm/ttm_bo.c                       |   4 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c               |   2 +
 drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c              |   4 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_surface.c            |   9 +-
 drivers/hid/hid-cypress.c                          |   3 +
 drivers/hid/hid-lg.c                               |   2 +-
 drivers/hid/i2c-hid/i2c-hid.c                      |   9 +
 drivers/hv/channel.c                               |  17 +-
 drivers/hv/hv.c                                    |   7 +-
 drivers/hv/hv_balloon.c                            |   4 +-
 drivers/hv/hyperv_vmbus.h                          |   2 +-
 drivers/hv/vmbus_drv.c                             |   4 +-
 drivers/hwmon/ds620.c                              |   2 +-
 drivers/i2c/busses/i2c-at91.c                      |  36 ++-
 drivers/i2c/i2c-dev.c                              |   2 +-
 drivers/infiniband/core/cma.c                      |   3 +
 drivers/infiniband/core/mad.c                      |   2 +-
 drivers/infiniband/core/multicast.c                |   7 +-
 drivers/infiniband/hw/mlx4/ah.c                    |   6 +-
 drivers/infiniband/hw/mlx4/main.c                  |   8 +-
 drivers/infiniband/hw/qib/qib_iba7322.c            |   2 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c            |  12 +-
 drivers/infiniband/ulp/ipoib/ipoib_main.c          |   6 +-
 drivers/infiniband/ulp/ipoib/ipoib_vlan.c          |   4 +-
 drivers/input/joydev.c                             |  18 +-
 drivers/input/joystick/iforce/iforce-usb.c         |   3 +
 drivers/input/joystick/xpad.c                      |   6 +
 drivers/input/keyboard/mpr121_touchkey.c           |  24 +-
 drivers/input/keyboard/tca8418_keypad.c            |   6 +-
 drivers/input/misc/cm109.c                         |   4 +
 drivers/input/misc/ims-pcu.c                       |   4 +
 drivers/input/misc/yealink.c                       |   4 +
 drivers/input/serio/i8042-x86ia64io.h              |  20 ++
 drivers/input/tablet/hanwang.c                     |   3 +
 drivers/input/tablet/kbtab.c                       |   3 +
 drivers/iommu/amd_iommu.c                          |   3 +-
 drivers/isdn/gigaset/bas-gigaset.c                 |   3 +
 drivers/isdn/gigaset/ser-gigaset.c                 |   4 +-
 drivers/isdn/hardware/eicon/message.c              |   3 +-
 drivers/md/bitmap.c                                |   5 +
 drivers/md/dm-crypt.c                              |   7 +-
 drivers/md/dm.c                                    |  55 ++++
 drivers/md/linear.c                                |  29 +-
 drivers/md/linear.h                                |   1 +
 drivers/md/md.c                                    |   2 +-
 drivers/md/persistent-data/dm-space-map-metadata.c |  10 +-
 drivers/md/raid1.c                                 |   2 +-
 drivers/md/raid10.c                                |  19 +-
 drivers/md/raid5.c                                 |   9 +
 drivers/media/i2c/Kconfig                          |   1 +
 drivers/media/platform/davinci/vpfe_capture.c      |  22 +-
 drivers/media/rc/imon.c                            |   2 +-
 drivers/media/rc/ite-cir.c                         |   2 +
 drivers/media/tuners/tuner-xc2028.c                |  34 +--
 drivers/media/usb/pvrusb2/pvrusb2-eeprom.c         |  13 +-
 drivers/media/usb/siano/smsusb.c                   |  18 +-
 drivers/media/usb/uvc/uvc_driver.c                 | 118 +++++++-
 drivers/media/usb/uvc/uvc_queue.c                  |   2 +-
 drivers/mfd/omap-usb-tll.c                         |   2 +-
 drivers/mfd/pm8921-core.c                          |   9 +-
 drivers/misc/c2port/c2port-duramar2150.c           |   4 +-
 drivers/mmc/card/mmc_test.c                        |   2 +-
 drivers/mmc/host/mxs-mmc.c                         |   6 +-
 drivers/mmc/host/sdhci.c                           |   4 +-
 drivers/mmc/host/ushc.c                            |   3 +
 drivers/mtd/bcm47xxpart.c                          |  10 +-
 drivers/mtd/maps/pmcmsp-flash.c                    |   4 +-
 drivers/mtd/nand/Kconfig                           |   2 +-
 drivers/mtd/ubi/upd.c                              |   8 +-
 drivers/net/can/c_can/c_can_pci.c                  |   1 +
 drivers/net/can/ti_hecc.c                          |  16 +-
 drivers/net/can/usb/esd_usb2.c                     |   2 +-
 drivers/net/can/usb/peak_usb/pcan_usb_core.c       |   6 +-
 drivers/net/can/usb/usb_8dev.c                     |   9 +-
 .../net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c    |   8 +
 drivers/net/ethernet/brocade/bna/bnad.c            |   4 +-
 drivers/net/ethernet/intel/igb/e1000_phy.c         |   4 +
 drivers/net/ethernet/korina.c                      |   8 +-
 drivers/net/ethernet/mellanox/mlx4/cq.c            |  38 +--
 drivers/net/ethernet/mellanox/mlx4/en_rx.c         |   8 +-
 drivers/net/ethernet/mellanox/mlx4/icm.c           |   7 +-
 drivers/net/ethernet/mellanox/mlx4/main.c          |   2 -
 drivers/net/ethernet/qlogic/qlge/qlge_dbg.c        |   2 +-
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c  |  20 +-
 drivers/net/ethernet/ti/cpmac.c                    |   7 +-
 drivers/net/ethernet/xilinx/xilinx_emaclite.c      |  10 +-
 drivers/net/hyperv/netvsc_drv.c                    |   4 +
 drivers/net/macvtap.c                              |   4 +-
 drivers/net/phy/marvell.c                          |   2 -
 drivers/net/phy/phy.c                              |   2 +-
 drivers/net/team/team.c                            |   8 +-
 drivers/net/tun.c                                  |  20 +-
 drivers/net/usb/catc.c                             |  56 ++--
 drivers/net/usb/pegasus.c                          |  29 +-
 drivers/net/usb/rtl8150.c                          |  34 ++-
 drivers/net/vmxnet3/vmxnet3_drv.c                  |   2 +-
 drivers/net/vxlan.c                                |   2 +-
 drivers/net/wireless/ath/ath5k/mac80211-ops.c      |   3 +-
 drivers/net/wireless/ath/ath9k/ar9003_eeprom.h     |   4 +-
 .../net/wireless/brcm80211/brcmfmac/wl_cfg80211.c  |   5 +
 drivers/net/wireless/hostap/hostap_hw.c            |  15 +-
 drivers/net/wireless/rtlwifi/usb.c                 |  18 ++
 drivers/pci/hotplug/rpadlpar_core.c                |  10 +-
 drivers/pinctrl/sh-pfc/pinctrl.c                   |   3 +-
 drivers/platform/goldfish/pdev_bus.c               |  13 +-
 drivers/platform/x86/acer-wmi.c                    |  25 +-
 drivers/platform/x86/intel_mid_powerbtn.c          |   4 +-
 drivers/rtc/interface.c                            |  16 +-
 drivers/rtc/rtc-s35390a.c                          | 127 +++++++--
 drivers/s390/char/vmlogrdr.c                       |   2 +-
 drivers/s390/cio/qdio_thinint.c                    |   8 +-
 drivers/s390/scsi/zfcp_dbf.c                       |  38 ++-
 drivers/s390/scsi/zfcp_dbf.h                       |  47 +++-
 drivers/s390/scsi/zfcp_erp.c                       |  61 +++-
 drivers/s390/scsi/zfcp_ext.h                       |   4 +-
 drivers/s390/scsi/zfcp_fc.h                        |   6 +-
 drivers/s390/scsi/zfcp_fsf.c                       |  11 +-
 drivers/s390/scsi/zfcp_fsf.h                       |   3 +-
 drivers/s390/scsi/zfcp_reqlist.h                   |  30 +-
 drivers/s390/scsi/zfcp_scsi.c                      |  69 ++++-
 drivers/scsi/aacraid/src.c                         |  21 +-
 drivers/scsi/device_handler/scsi_dh_emc.c          |   2 +-
 drivers/scsi/libsas/sas_ata.c                      |   2 +-
 drivers/scsi/lpfc/lpfc_init.c                      |   1 +
 drivers/scsi/mvsas/mv_94xx.c                       |   2 +-
 drivers/scsi/mvsas/mv_sas.c                        |   4 +-
 drivers/scsi/qla2xxx/qla_attr.c                    |   8 +-
 drivers/scsi/qla2xxx/qla_os.c                      |  24 +-
 drivers/scsi/scsi_lib.c                            |  17 +-
 drivers/scsi/scsi_sysfs.c                          |   4 -
 drivers/scsi/sd.c                                  |  29 +-
 drivers/scsi/sg.c                                  |  11 +-
 drivers/scsi/sr.c                                  |   6 +-
 drivers/scsi/storvsc_drv.c                         |  23 +-
 drivers/ssb/pci.c                                  |   1 +
 drivers/staging/comedi/comedi_fops.c               |   7 +-
 drivers/staging/iio/adc/ad7606_core.c              |   2 +-
 drivers/staging/iio/resolver/ad2s1210.c            |   2 +-
 drivers/staging/vt6656/hostap.c                    |   3 +-
 drivers/target/iscsi/iscsi_target_parameters.c     |  16 --
 drivers/target/iscsi/iscsi_target_tpg.c            |   1 -
 drivers/target/iscsi/iscsi_target_util.c           |  12 +-
 drivers/target/target_core_fabric_configfs.c       |   5 +
 drivers/target/target_core_pscsi.c                 |  47 +---
 drivers/target/target_core_tpg.c                   |   3 +
 drivers/tty/n_hdlc.c                               | 143 +++++-----
 drivers/tty/nozomi.c                               |   2 +-
 drivers/tty/serial/8250/8250_pci.c                 |  23 +-
 drivers/tty/serial/efm32-uart.c                    |  11 +-
 drivers/tty/serial/ifx6x60.c                       |   2 +-
 drivers/tty/serial/msm_serial.c                    |   1 +
 drivers/tty/sysrq.c                                |   4 +-
 drivers/tty/vt/vt.c                                |   6 +-
 drivers/usb/chipidea/debug.c                       |   3 +-
 drivers/usb/class/cdc-acm.c                        |  17 +-
 drivers/usb/class/usbtmc.c                         |   9 +-
 drivers/usb/core/config.c                          |  10 +
 drivers/usb/core/hub.c                             |  11 +-
 drivers/usb/dwc3/gadget.c                          |  21 +-
 drivers/usb/dwc3/gadget.h                          |  14 +-
 drivers/usb/gadget/composite.c                     |  28 +-
 drivers/usb/gadget/dummy_hcd.c                     |   6 +-
 drivers/usb/gadget/f_acm.c                         |   4 +-
 drivers/usb/gadget/inode.c                         |  17 +-
 drivers/usb/gadget/uvc_video.c                     |   2 +-
 drivers/usb/host/ohci-q.c                          |   7 +-
 drivers/usb/host/r8a66597-hcd.c                    |   6 +-
 drivers/usb/host/uhci-pci.c                        |   4 +
 drivers/usb/host/xhci-mem.c                        |  42 ++-
 drivers/usb/host/xhci-pci.c                        |   1 +
 drivers/usb/host/xhci-plat.c                       |   2 +
 drivers/usb/host/xhci.c                            |   6 +-
 drivers/usb/host/xhci.h                            |   1 +
 drivers/usb/misc/idmouse.c                         |   3 +
 drivers/usb/misc/iowarrior.c                       |  21 +-
 drivers/usb/misc/uss720.c                          |   5 +
 drivers/usb/musb/musbhsdma.h                       |   2 +-
 drivers/usb/renesas_usbhs/common.c                 |   4 +-
 drivers/usb/renesas_usbhs/fifo.c                   |  50 +++-
 drivers/usb/renesas_usbhs/pipe.c                   |  13 +
 drivers/usb/renesas_usbhs/pipe.h                   |   4 +
 drivers/usb/serial/ark3116.c                       |  13 +-
 drivers/usb/serial/ch341.c                         |  90 +++---
 drivers/usb/serial/console.c                       |   1 +
 drivers/usb/serial/cyberjack.c                     |  10 +
 drivers/usb/serial/digi_acceleport.c               |  14 +-
 drivers/usb/serial/ftdi_sio.c                      |  31 +-
 drivers/usb/serial/garmin_gps.c                    |   1 +
 drivers/usb/serial/io_edgeport.c                   |   5 +
 drivers/usb/serial/io_ti.c                         |  25 +-
 drivers/usb/serial/iuu_phoenix.c                   |  11 +
 drivers/usb/serial/keyspan_pda.c                   |  14 +
 drivers/usb/serial/kl5kusb105.c                    |  44 ++-
 drivers/usb/serial/kobil_sct.c                     |  12 +
 drivers/usb/serial/mos7720.c                       |  51 ++--
 drivers/usb/serial/mos7840.c                       |  14 +
 drivers/usb/serial/omninet.c                       |  19 +-
 drivers/usb/serial/opticon.c                       |   2 +-
 drivers/usb/serial/oti6858.c                       |  16 ++
 drivers/usb/serial/pl2303.c                        |   8 +
 drivers/usb/serial/quatech2.c                      |   4 -
 drivers/usb/serial/safe_serial.c                   |   5 +
 drivers/usb/serial/spcp8x5.c                       |  22 +-
 drivers/usb/serial/ti_usb_3410_5052.c              |   7 +
 drivers/usb/wusbcore/wa-hc.c                       |   3 +
 drivers/uwb/hwa-rc.c                               |   3 +
 drivers/uwb/i1480/dfu/usb.c                        |   3 +
 drivers/vfio/pci/vfio_pci.c                        |  33 ++-
 drivers/vfio/pci/vfio_pci_intrs.c                  |   2 +-
 drivers/video/console/fbcon.c                      |  67 +++--
 drivers/video/fbcmap.c                             |  26 +-
 drivers/video/xen-fbfront.c                        |   4 +-
 drivers/virtio/virtio_balloon.c                    |   2 +
 drivers/vme/bridges/vme_ca91cx42.c                 |   2 +-
 fs/9p/acl.c                                        |  40 ++-
 fs/block_dev.c                                     |   9 +-
 fs/btrfs/acl.c                                     |   6 +-
 fs/btrfs/delayed-inode.c                           |   8 -
 fs/btrfs/extent_io.c                               |   9 +
 fs/btrfs/ioctl.c                                   |   4 +
 fs/btrfs/tree-log.c                                |   3 +-
 fs/cifs/cifs_fs_sb.h                               |   4 +
 fs/cifs/cifsfs.c                                   |  17 +-
 fs/cifs/cifsglob.h                                 |   4 +-
 fs/cifs/cifsproto.h                                |   5 +-
 fs/cifs/connect.c                                  | 116 +++++++-
 fs/cifs/dir.c                                      |  20 +-
 fs/cifs/inode.c                                    |  22 +-
 fs/cifs/smb1ops.c                                  |  10 +
 fs/cifs/smb2file.c                                 |   2 +-
 fs/cifs/smb2pdu.c                                  |  86 ++++--
 fs/cifs/smb2proto.h                                |   1 +
 fs/dcache.c                                        |   7 +-
 fs/direct-io.c                                     |   4 +-
 fs/exec.c                                          |  38 ++-
 fs/ext2/acl.c                                      |  12 +-
 fs/ext3/acl.c                                      |  10 +-
 fs/ext4/acl.c                                      |  12 +-
 fs/ext4/file.c                                     |  57 ++--
 fs/ext4/inline.c                                   |   9 +-
 fs/ext4/inode.c                                    |  41 +--
 fs/ext4/mballoc.c                                  |  11 +-
 fs/ext4/resize.c                                   |   3 +-
 fs/ext4/super.c                                    |  82 ++++--
 fs/ext4/xattr.c                                    |  19 +-
 fs/f2fs/acl.c                                      |   6 +-
 fs/f2fs/debug.c                                    |   1 +
 fs/fat/inode.c                                     |  13 +-
 fs/fscache/object-list.c                           |   7 +
 fs/fuse/file.c                                     |   8 +-
 fs/generic_acl.c                                   |  12 +-
 fs/gfs2/acl.c                                      |  14 +-
 fs/gfs2/dir.c                                      |   4 +-
 fs/hugetlbfs/inode.c                               |   2 +-
 fs/ioprio.c                                        |   2 +
 fs/jbd2/transaction.c                              |   4 +-
 fs/jffs2/acl.c                                     |   9 +-
 fs/jfs/xattr.c                                     |   5 +-
 fs/nfs/dir.c                                       |   1 +
 fs/nfs/file.c                                      |   2 +-
 fs/nfs/nfs4filelayoutdev.c                         |   3 +-
 fs/nfs/nfs4proc.c                                  |   8 +-
 fs/nfs/nfs4xdr.c                                   |   2 +-
 fs/nfsd/nfssvc.c                                   |  36 +++
 fs/ocfs2/acl.c                                     |  20 +-
 fs/ocfs2/dlmglue.c                                 |  10 +
 fs/ocfs2/file.c                                    |   9 +-
 fs/ocfs2/ioctl.c                                   | 129 +++------
 fs/ocfs2/stackglue.c                               |   6 +
 fs/ocfs2/stackglue.h                               |   3 +
 fs/posix_acl.c                                     |  31 ++
 fs/proc/task_mmu.c                                 |   4 -
 fs/reiserfs/xattr_acl.c                            |   8 +-
 fs/splice.c                                        |   1 +
 fs/ubifs/tnc.c                                     |  25 +-
 fs/udf/inode.c                                     |   4 +-
 fs/xfs/xfs_acl.c                                   |  15 +-
 fs/xfs/xfs_aops.c                                  |  13 +-
 fs/xfs/xfs_buf.c                                   |   1 +
 fs/xfs/xfs_log_recover.c                           |   1 +
 include/crypto/algapi.h                            |  18 +-
 include/linux/can/core.h                           |   7 +-
 include/linux/capability.h                         |   2 -
 include/linux/cpu.h                                |  12 +-
 include/linux/cred.h                               |   5 +-
 include/linux/jump_label.h                         |  16 ++
 include/linux/key.h                                |   2 +
 include/linux/kvm_host.h                           |   7 +-
 include/linux/lockd/lockd.h                        |   3 +-
 include/linux/log2.h                               |  13 +-
 include/linux/mm.h                                 |  53 ++--
 include/linux/netdevice.h                          |   9 +-
 include/linux/nfs4.h                               |   3 +-
 include/linux/posix_acl.h                          |   1 +
 include/linux/workqueue.h                          |   4 +-
 include/net/cipso_ipv4.h                           |   4 +
 include/net/ipv6.h                                 |   1 +
 include/net/iw_handler.h                           |   3 +-
 include/net/sctp/sctp.h                            |   4 +
 include/net/sctp/ulpevent.h                        |   6 +-
 include/net/tcp.h                                  |  10 +
 include/rdma/ib_sa.h                               |   6 +-
 include/target/target_core_base.h                  |   1 +
 include/trace/events/syscalls.h                    |   1 +
 include/uapi/linux/can.h                           |   1 +
 include/uapi/linux/packet_diag.h                   |   2 +-
 ipc/shm.c                                          |  13 +-
 kernel/cpu.c                                       |   3 +-
 kernel/events/core.c                               |   5 +-
 kernel/extable.c                                   |   2 +-
 kernel/futex.c                                     |  24 +-
 kernel/padata.c                                    |   5 +-
 kernel/printk.c                                    |   2 +-
 kernel/ptrace.c                                    |  14 +-
 kernel/rtmutex.c                                   |  68 ++++-
 kernel/sched/core.c                                |   9 +-
 kernel/sysctl.c                                    |   1 +
 kernel/time/tick-broadcast.c                       |   3 +
 kernel/trace/ring_buffer.c                         |  24 +-
 kernel/trace/trace.c                               |  20 +-
 kernel/workqueue.c                                 |  23 +-
 lib/cmdline.c                                      |   6 +-
 lib/digsig.c                                       |   6 +
 mm/filemap.c                                       |   5 +
 mm/huge_memory.c                                   |  19 +-
 mm/hugetlb.c                                       |  37 ++-
 mm/memory.c                                        |  49 ----
 mm/memory_hotplug.c                                |  12 +-
 mm/mempolicy.c                                     |  20 +-
 mm/mmap.c                                          | 187 ++++++------
 mm/page_alloc.c                                    |  21 +-
 mm/vmpressure.c                                    |  10 +-
 net/8021q/vlan.c                                   |   3 +-
 net/9p/client.c                                    |   4 +
 net/bluetooth/bnep/core.c                          |   4 +
 net/bluetooth/cmtp/core.c                          |   3 +
 net/can/af_can.c                                   |  12 +-
 net/can/af_can.h                                   |   3 +-
 net/can/bcm.c                                      |  27 +-
 net/can/gw.c                                       |   2 +-
 net/can/raw.c                                      |   7 +-
 net/ceph/messenger.c                               |  19 ++
 net/ceph/osdmap.c                                  |   1 -
 net/core/dev.c                                     |  79 ++++--
 net/core/drop_monitor.c                            |  39 ++-
 net/core/neighbour.c                               |   3 +-
 net/core/sock.c                                    |  12 +-
 net/dccp/ccids/ccid2.c                             |   1 +
 net/dccp/input.c                                   |   3 +-
 net/dccp/ipv4.c                                    |   3 +-
 net/dccp/ipv6.c                                    |   8 +-
 net/dccp/minisocks.c                               |   1 +
 net/ieee802154/6lowpan.c                           |   2 +-
 net/ipv4/af_inet.c                                 |   2 +-
 net/ipv4/cipso_ipv4.c                              |   4 +
 net/ipv4/fib_frontend.c                            |  12 +-
 net/ipv4/igmp.c                                    |  13 +-
 net/ipv4/inet_connection_sock.c                    |   2 +
 net/ipv4/ip_output.c                               |   7 +-
 net/ipv4/ip_sockglue.c                             |   9 +-
 net/ipv4/ip_vti.c                                  |   1 -
 net/ipv4/netfilter/arp_tables.c                    |   4 +-
 net/ipv4/netfilter/nf_nat_snmp_basic.c             |   1 +
 net/ipv4/ping.c                                    |   7 +-
 net/ipv4/route.c                                   |   1 +
 net/ipv4/tcp.c                                     |  12 +
 net/ipv4/tcp_cong.c                                |   1 +
 net/ipv4/tcp_input.c                               |  38 +--
 net/ipv4/tcp_ipv4.c                                |  11 +-
 net/ipv4/tcp_minisocks.c                           |   1 +
 net/ipv4/tcp_output.c                              |  32 +--
 net/ipv4/tcp_timer.c                               |   6 +-
 net/ipv4/udp.c                                     |   2 +-
 net/ipv6/addrconf.c                                |   7 +-
 net/ipv6/ip6_fib.c                                 |  25 +-
 net/ipv6/ip6_gre.c                                 |  45 +--
 net/ipv6/ip6_offload.c                             |   1 +
 net/ipv6/ip6_output.c                              |  14 +-
 net/ipv6/ip6_tunnel.c                              |  55 ++--
 net/ipv6/ip6mr.c                                   |  13 +-
 net/ipv6/raw.c                                     |  11 +-
 net/ipv6/route.c                                   |   2 +
 net/ipv6/tcp_ipv6.c                                |   8 +-
 net/irda/irqueue.c                                 |  34 ++-
 net/key/af_key.c                                   |  17 +-
 net/l2tp/l2tp_core.c                               |   8 +-
 net/l2tp/l2tp_core.h                               |   4 +-
 net/l2tp/l2tp_debugfs.c                            |  10 +-
 net/l2tp/l2tp_ip.c                                 |  29 +-
 net/l2tp/l2tp_ip6.c                                |   2 +-
 net/l2tp/l2tp_netlink.c                            |   7 +-
 net/l2tp/l2tp_ppp.c                                |  10 +-
 net/mac80211/mesh.c                                |   2 +-
 net/mac80211/pm.c                                  |   1 +
 net/netfilter/ipvs/ip_vs_core.c                    |  19 +-
 net/netfilter/nf_conntrack_ecache.c                |   2 +
 net/netfilter/nf_conntrack_extend.c                |  13 +-
 net/netfilter/nf_conntrack_netlink.c               |   1 +
 net/netfilter/nf_nat_core.c                        |   2 +
 net/netfilter/nfnetlink_cttimeout.c                |   1 +
 net/netfilter/xt_TCPMSS.c                          |   6 +-
 net/packet/af_packet.c                             | 104 ++++---
 net/rds/cong.c                                     |   4 +-
 net/rxrpc/ar-key.c                                 |  64 +++--
 net/sched/act_api.c                                |   5 +-
 net/sched/cls_api.c                                |   4 +-
 net/sched/em_meta.c                                |   9 +-
 net/sctp/associola.c                               | 131 +++++----
 net/sctp/ipv6.c                                    |   2 +
 net/sctp/socket.c                                  |  10 +-
 net/socket.c                                       |   4 +-
 net/sunrpc/auth_gss/gss_rpc_xdr.c                  |   2 +-
 net/sunrpc/auth_gss/svcauth_gss.c                  |   2 +-
 net/unix/af_unix.c                                 |  27 +-
 net/unix/garbage.c                                 |  18 +-
 net/wireless/nl80211.c                             |  10 +-
 net/xfrm/xfrm_policy.c                             |   6 +
 net/xfrm/xfrm_user.c                               |   9 +-
 samples/seccomp/bpf-helper.h                       | 125 +++++----
 security/apparmor/audit.c                          |   3 +-
 security/apparmor/domain.c                         |   2 +-
 security/apparmor/file.c                           |   3 +-
 security/apparmor/include/match.h                  |   1 +
 security/apparmor/include/policy.h                 |   2 +
 security/apparmor/lsm.c                            |  22 +-
 security/apparmor/match.c                          |  16 +-
 security/apparmor/path.c                           |  61 ++--
 security/apparmor/policy.c                         |  18 +-
 security/apparmor/policy_unpack.c                  |   5 +-
 security/integrity/evm/evm_main.c                  |   3 +-
 security/keys/encrypted-keys/encrypted.c           |   9 +-
 security/keys/gc.c                                 |   2 +-
 security/keys/internal.h                           |   2 +-
 security/keys/key.c                                |  12 +
 security/keys/keyctl.c                             |  24 +-
 security/keys/keyring.c                            |  23 +-
 security/keys/process_keys.c                       |  52 ++--
 security/selinux/hooks.c                           |   2 +-
 sound/core/control.c                               |   2 +-
 sound/core/seq/seq_clientmgr.c                     |   7 +-
 sound/core/seq/seq_fifo.c                          |  10 +
 sound/core/seq/seq_lock.c                          |   9 +-
 sound/core/seq/seq_memory.c                        |  26 +-
 sound/core/seq/seq_memory.h                        |   1 +
 sound/core/seq/seq_ports.c                         |   7 +-
 sound/core/seq/seq_queue.c                         |  33 ++-
 sound/core/timer.c                                 |  18 +-
 sound/pci/ctxfi/cthw20k1.c                         |  19 +-
 sound/pci/ctxfi/cthw20k2.c                         |  18 +-
 sound/pci/hda/patch_realtek.c                      |   1 +
 sound/usb/card.c                                   |   1 -
 sound/usb/mixer.c                                  |   3 +-
 tools/perf/builtin-trace.c                         |   4 +-
 tools/perf/ui/browser.c                            |   2 +-
 tools/perf/util/trace-event-scripting.c            |   6 +-
 tools/testing/ktest/ktest.pl                       |   2 +-
 virt/kvm/eventfd.c                                 |   3 +
 virt/kvm/kvm_main.c                                |  41 ++-
 584 files changed, 5431 insertions(+), 2694 deletions(-)

commit e7a59c7f266809d17dcde20fd2055e23e7eb6895
Author: Willy Tarreau <w...@1wt.eu>
Date:   Sat Nov 4 23:34:48 2017 +0100

    Linux 3.10.108

commit 68cbe93962196f08a1a52e81dc6d5bedaca09b06
Author: Willy Tarreau <w...@1wt.eu>
Date:   Thu Nov 2 23:22:31 2017 +0100

    x86/apic: fix build breakage caused by incomplete backport to 3.10
    
    Commit 928a277 ("x86/apic: Do not init irq remapping if ioapic is
    disabled") introduced in 3.10.105 introduced an implicit dependency of
    CONFIG_X86_LOCAL_APIC to CONFIG_X86_IO_APIC which was later solved as
    part of simplifications on the config dependencies in more recent kernels.
    This dependency results in build failure when CONFIG_X86_LOCAL_APIC is
    set without CONFIG_X86_IO_APIC (this setup requires CONFIG_SMP=n). The
    reason is that skip_ioapic_setup is declared in apic.c and that the
    backported code was picked from a context where the #ifdef surrounding
    the function used to cover this condition.
    
    Let's just add the appropriate #ifdef to fix the 3.10 backport.
    
    Thanks to Christoph Biedl for reporting and diagnosing this one.
    
    Reported-by: Christoph Biedl <linux-kernel.b...@manchmal.in-ulm.de>
    Cc: Christoph Biedl <linux-kernel.b...@manchmal.in-ulm.de>
    Cc: Jan Beulich <jbeul...@suse.com>
    Cc: Wanpeng Li <wanpeng...@hotmail.com>
    Cc: Thomas Gleixner <t...@linutronix.de>
    Cc: Ingo Molnar <mi...@redhat.com>
    Cc: "H. Peter Anvin" <h...@zytor.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 541cbdc60ac9ca34b21db8e6e57e4d58eee66bc8
Author: Stefan Mätje <stefan.mae...@esd.eu>
Date:   Wed Oct 18 13:25:17 2017 +0200

    can: esd_usb2: Fix can_dlc value for received RTR, frames
    
    commit 72d92e865d1560723e1957ee3f393688c49ca5bf upstream.
    
    The dlc member of the struct rx_msg contains also the ESD_RTR flag to
    mark received RTR frames. Without the fix the can_dlc value for received
    RTR frames would always be set to 8 by get_can_dlc() instead of the
    received value.
    
    Fixes: 96d8e90382dc ("can: Add driver for esd CAN-USB/2 device")
    Signed-off-by: Stefan Mätje <stefan.mae...@esd.eu>
    Cc: linux-stable <sta...@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <m...@pengutronix.de>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 4de0e6b506b3ec5ce4d0517dafff4aea24c6ce73
Author: Dan Carpenter <dan.carpen...@oracle.com>
Date:   Tue Feb 21 21:46:37 2017 +0300

    scsi: scsi_dh_emc: return success in clariion_std_inquiry()
    
    commit 4d7d39a18b8b81511f0b893b7d2203790bf8a58b upstream.
    
    We accidentally return an uninitialized variable on success.
    
    Fixes: b6ff1b14cdf4 ("[SCSI] scsi_dh: Update EMC handler")
    Signed-off-by: Dan Carpenter <dan.carpen...@oracle.com>
    Reviewed-by: Hannes Reinecke <h...@suse.de>
    Signed-off-by: Martin K. Petersen <martin.peter...@oracle.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 40216270c67f9dcc5d73adbdcc65dd317cd4aa1d
Author: Andrew Gabbasov <andrew_gabba...@mentor.com>
Date:   Sat Sep 30 08:55:55 2017 -0700

    usb: gadget: composite: Fix use-after-free in 
usb_composite_overwrite_options
    
    commit aec17e1e249567e82b26dafbb86de7d07fde8729 upstream.
    
    KASAN enabled configuration reports an error
    
        BUG: KASAN: use-after-free in usb_composite_overwrite_options+...
                    [libcomposite] at addr ...
        Read of size 1 by task ...
    
    when some driver is un-bound and then bound again.
    For example, this happens with FunctionFS driver when "ffs-test"
    test application is run several times in a row.
    
    If the driver has empty manufacturer ID string in initial static data,
    it is then replaced with generated string. After driver unbinding
    the generated string is freed, but the driver data still keep that
    pointer. And if the driver is then bound again, that pointer
    is re-used for string emptiness check.
    
    The fix is to clean up the driver string data upon its unbinding
    to drop the pointer to freed memory.
    
    Fixes: cc2683c318a5 ("usb: gadget: Provide a default implementation of 
default manufacturer string")
    Cc: sta...@vger.kernel.org
    Signed-off-by: Andrew Gabbasov <andrew_gabba...@mentor.com>
    Signed-off-by: Felipe Balbi <felipe.ba...@linux.intel.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 49218ad1217e047e8c1cdfda7c7d40ff864c8682
Author: Haozhong Zhang <haozhong.zh...@intel.com>
Date:   Tue Oct 10 15:01:22 2017 +0800

    KVM: nVMX: fix guest CR4 loading when emulating L2 to L1 exit
    
    commit 8eb3f87d903168bdbd1222776a6b1e281f50513e upstream.
    
    When KVM emulates an exit from L2 to L1, it loads L1 CR4 into the
    guest CR4. Before this CR4 loading, the guest CR4 refers to L2
    CR4. Because these two CR4's are in different levels of guest, we
    should vmx_set_cr4() rather than kvm_set_cr4() here. The latter, which
    is used to handle guest writes to its CR4, checks the guest change to
    CR4 and may fail if the change is invalid.
    
    The failure may cause trouble. Consider we start
      a L1 guest with non-zero L1 PCID in use,
         (i.e. L1 CR4.PCIDE == 1 && L1 CR3.PCID != 0)
    and
      a L2 guest with L2 PCID disabled,
         (i.e. L2 CR4.PCIDE == 0)
    and following events may happen:
    
    1. If kvm_set_cr4() is used in load_vmcs12_host_state() to load L1 CR4
       into guest CR4 (in VMCS01) for L2 to L1 exit, it will fail because
       of PCID check. As a result, the guest CR4 recorded in L0 KVM (i.e.
       vcpu->arch.cr4) is left to the value of L2 CR4.
    
    2. Later, if L1 attempts to change its CR4, e.g., clearing VMXE bit,
       kvm_set_cr4() in L0 KVM will think L1 also wants to enable PCID,
       because the wrong L2 CR4 is used by L0 KVM as L1 CR4. As L1
       CR3.PCID != 0, L0 KVM will inject GP to L1 guest.
    
    Fixes: 4704d0befb072 ("KVM: nVMX: Exiting from L2 to L1")
    Cc: qemu-sta...@nongnu.org
    Signed-off-by: Haozhong Zhang <haozhong.zh...@intel.com>
    Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>
    
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 75840f10809bea0e3eb963d5a2fdb827044577a8
Author: Arnd Bergmann <a...@arndb.de>
Date:   Tue Mar 14 13:18:45 2017 +0100

    IB/qib: fix false-postive maybe-uninitialized warning
    
    commit f6aafac184a3e46e919769dd4faa8bf0dc436534 upstream.
    
    aarch64-linux-gcc-7 complains about code it doesn't fully understand:
    
    drivers/infiniband/hw/qib/qib_iba7322.c: In function 
'qib_7322_txchk_change':
    include/asm-generic/bitops/non-atomic.h:105:35: error: 'shadow' may be used 
uninitialized in this function [-Werror=maybe-uninitialized]
    
    The code is right, and despite trying hard, I could not come up with a 
version
    that I liked better than just adding a fake initialization here to shut up 
the
    warning.
    
    Fixes: f931551bafe1 ("IB/qib: Add new qib driver for QLogic PCIe InfiniBand 
adapters")
    Signed-off-by: Arnd Bergmann <a...@arndb.de>
    Acked-by: Ira Weiny <ira.we...@intel.com>
    Signed-off-by: Doug Ledford <dledf...@redhat.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit f63d10b98de38d8264ed248221fb371e38b3b0b9
Author: Pan Bian <bianpan2...@163.com>
Date:   Mon Apr 24 18:29:16 2017 +0800

    team: fix memory leaks
    
    commit 72ec0bc64b9a5d8e0efcb717abfc757746b101b7 upstream.
    
    In functions team_nl_send_port_list_get() and
    team_nl_send_options_get(), pointer skb keeps the return value of
    nlmsg_new(). When the call to genlmsg_put() fails, the memory is not
    freed(). This will result in memory leak bugs.
    
    Fixes: 9b00cf2d1024 ("team: implement multipart netlink messages for 
options transfers")
    Signed-off-by: Pan Bian <bianpan2...@163.com>
    Acked-by: Jiri Pirko <j...@mellanox.com>
    Signed-off-by: David S. Miller <da...@davemloft.net>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 90326945a4f4939725d32e62b8b31d0375950958
Author: Feras Daoud <fera...@mellanox.com>
Date:   Wed Dec 28 14:47:24 2016 +0200

    IB/ipoib: rtnl_unlock can not come after free_netdev
    
    commit 89a3987ab7a923c047c6dec008e60ad6f41fac22 upstream.
    
    The ipoib_vlan_add function calls rtnl_unlock after free_netdev,
    rtnl_unlock not only releases the lock, but also calls netdev_run_todo.
    The latter function browses the net_todo_list array and completes the
    unregistration of all its net_device instances. If we call free_netdev
    before rtnl_unlock, then netdev_run_todo call over the freed device causes
    panic.
    To fix, move rtnl_unlock call before free_netdev call.
    
    Fixes: 9baa0b036410 ("IB/ipoib: Add rtnl_link_ops support")
    Cc: Or Gerlitz <ogerl...@mellanox.com>
    Signed-off-by: Feras Daoud <fera...@mellanox.com>
    Signed-off-by: Erez Shitrit <ere...@mellanox.com>
    Reviewed-by: Yuval Shaia <yuval.sh...@oracle.com>
    Signed-off-by: Leon Romanovsky <l...@kernel.org>
    Signed-off-by: Doug Ledford <dledf...@redhat.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 827a5cb0a0ad3a74426a4e0d12cbc59917785fa2
Author: satoru takeuchi <satoru.takeu...@gmail.com>
Date:   Tue Sep 12 22:42:52 2017 +0900

    btrfs: prevent to set invalid default subvolid
    
    commit 6d6d282932d1a609e60dc4467677e0e863682f57 upstream.
    
    `btrfs sub set-default` succeeds to set an ID which isn't corresponding to 
any
    fs/file tree. If such the bad ID is set to a filesystem, we can't mount this
    filesystem without specifying `subvol` or `subvolid` mount options.
    
    Fixes: 6ef5ed0d386b ("Btrfs: add ioctl and incompat flag to set the default 
mount subvol")
    Cc: <sta...@vger.kernel.org>
    Signed-off-by: Satoru Takeuchi <satoru.takeu...@gmail.com>
    Reviewed-by: Qu Wenruo <quwenruo.bt...@gmx.com>
    Reviewed-by: David Sterba <dste...@suse.com>
    Signed-off-by: David Sterba <dste...@suse.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 7210062e8fc3e0f9519382c0ad2df3266989a96d
Author: Bo Yan <b...@nvidia.com>
Date:   Mon Sep 18 10:03:35 2017 -0700

    tracing: Erase irqsoff trace with empty write
    
    commit 8dd33bcb7050dd6f8c1432732f930932c9d3a33e upstream.
    
    One convenient way to erase trace is "echo > trace". However, this
    is currently broken if the current tracer is irqsoff tracer. This
    is because irqsoff tracer use max_buffer as the default trace
    buffer.
    
    Set the max_buffer as the one to be cleared when it's the trace
    buffer currently in use.
    
    Link: 
http://lkml.kernel.org/r/1505754215-29411-1-git-send-email-b...@nvidia.com
    
    Cc: <mi...@redhat.com>
    Cc: sta...@vger.kernel.org
    Fixes: 4acd4d00f ("tracing: give easy way to clear trace buffer")
    Signed-off-by: Bo Yan <b...@nvidia.com>
    Signed-off-by: Steven Rostedt (VMware) <rost...@goodmis.org>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit ec8c69ea4541f353451dffefd4fe1ef0f4640f3b
Author: Baohong Liu <baohong....@intel.com>
Date:   Tue Sep 5 16:57:19 2017 -0500

    tracing: Apply trace_clock changes to instance max buffer
    
    commit 170b3b1050e28d1ba0700e262f0899ffa4fccc52 upstream.
    
    Currently trace_clock timestamps are applied to both regular and max
    buffers only for global trace. For instance trace, trace_clock
    timestamps are applied only to regular buffer. But, regular and max
    buffers can be swapped, for example, following a snapshot. So, for
    instance trace, bad timestamps can be seen following a snapshot.
    Let's apply trace_clock timestamps to instance max buffer as well.
    
    Link: 
http://lkml.kernel.org/r/ebdb168d0be042dcdf51f81e696b17fabe3609c1.1504642143.git.tom.zanu...@linux.intel.com
    
    Cc: sta...@vger.kernel.org
    Fixes: 277ba0446 ("tracing: Add interface to allow multiple trace buffers")
    Signed-off-by: Baohong Liu <baohong....@intel.com>
    Signed-off-by: Steven Rostedt (VMware) <rost...@goodmis.org>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit c5378d27adda7f15e3465594694bf9688ebe970c
Author: Dan Carpenter <dan.carpen...@oracle.com>
Date:   Wed Aug 30 16:30:35 2017 +0300

    scsi: qla2xxx: Fix an integer overflow in sysfs code
    
    commit e6f77540c067b48dee10f1e33678415bfcc89017 upstream.
    
    The value of "size" comes from the user.  When we add "start + size" it
    could lead to an integer overflow bug.
    
    It means we vmalloc() a lot more memory than we had intended.  I believe
    that on 64 bit systems vmalloc() can succeed even if we ask it to
    allocate huge 4GB buffers.  So we would get memory corruption and likely
    a crash when we call ha->isp_ops->write_optrom() and ->read_optrom().
    
    Only root can trigger this bug.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=194061
    
    Cc: <sta...@vger.kernel.org>
    Fixes: b7cc176c9eb3 ("[SCSI] qla2xxx: Allow region-based flash-part 
accesses.")
    Reported-by: shqking <shqk...@gmail.com>
    Signed-off-by: Dan Carpenter <dan.carpen...@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.peter...@oracle.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 92e84b6aeccac20f9e665ec515c648a29017be68
Author: Stephan Mueller <smuel...@chronox.de>
Date:   Thu Sep 21 10:16:53 2017 +0200

    crypto: AF_ALG - remove SGL terminator indicator when chaining
    
    commit 1d4ba7f963a93a2207fd103d4a36df1b5aeefea2 upstream.
    
    Fixed differently upstream as commit 2d97591ef43d ("crypto: af_alg - 
consolidation of duplicate code")
    
    The SGL is MAX_SGL_ENTS + 1 in size. The last SG entry is used for the
    chaining and is properly updated with the sg_chain invocation. During
    the filling-in of the initial SG entries, sg_mark_end is called for each
    SG entry. This is appropriate as long as no additional SGL is chained
    with the current SGL. However, when a new SGL is chained and the last
    SG entry is updated with sg_chain, the last but one entry still contains
    the end marker from the sg_mark_end. This end marker must be removed as
    otherwise a walk of the chained SGLs will cause a NULL pointer
    dereference at the last but one SG entry, because sg_next will return
    NULL.
    
    The patch only applies to all kernels up to and including 4.13. The
    patch 2d97591ef43d0587be22ad1b0d758d6df4999a0b added to 4.14-rc1
    introduced a complete new code base which addresses this bug in
    a different way. Yet, that patch is too invasive for stable kernels
    and was therefore not marked for stable.
    
    Fixes: 8ff590903d5fc ("crypto: algif_skcipher - User-space interface for 
skcipher operations")
    Signed-off-by: Stephan Mueller <smuel...@chronox.de>
    Acked-by: Herbert Xu <herb...@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 6f47a87d1540a9f7c294b5e79e7dcf0827840060
Author: Sabrina Dubroca <s...@queasysnail.net>
Date:   Wed Feb 4 15:25:09 2015 +0100

    ip6_gre: fix endianness errors in ip6gre_err
    
    commit d1e158e2d7a0a91110b206653f0e02376e809150 upstream.
    
    info is in network byte order, change it back to host byte order
    before use. In particular, the current code sets the MTU of the tunnel
    to a wrong (too big) value.
    
    Fixes: c12b395a4664 ("gre: Support GRE over IPv6")
    Signed-off-by: Sabrina Dubroca <s...@queasysnail.net>
    Acked-by: Eric Dumazet <eduma...@google.com>
    Signed-off-by: David S. Miller <da...@davemloft.net>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 488ec7b227e442ec3f288ad9245d9a78ec3df57b
Author: Eric Dumazet <eduma...@google.com>
Date:   Fri Sep 8 15:48:47 2017 -0700

    ipv6: fix typo in fib6_net_exit()
    
    commit 32a805baf0fb70b6dbedefcd7249ac7f580f9e3b upstream.
    
    IPv6 FIB should use FIB6_TABLE_HASHSZ, not FIB_TABLE_HASHSZ.
    
    Fixes: ba1cc08d9488 ("ipv6: fix memory leak with multiple tables during 
netns destruction")
    Signed-off-by: Eric Dumazet <eduma...@google.com>
    Signed-off-by: David S. Miller <da...@davemloft.net>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 4e39d5e48bac267582da35d420bf67f985105fd7
Author: Sabrina Dubroca <s...@queasysnail.net>
Date:   Fri Sep 8 10:26:19 2017 +0200

    ipv6: fix memory leak with multiple tables during netns destruction
    
    commit ba1cc08d9488c94cb8d94f545305688b72a2a300 upstream.
    
    fib6_net_exit only frees the main and local tables. If another table was
    created with fib6_alloc_table, we leak it when the netns is destroyed.
    
    Fix this in the same way ip_fib_net_exit cleans up tables, by walking
    through the whole hashtable of fib6_table's. We can get rid of the
    special cases for local and main, since they're also part of the
    hashtable.
    
    Reproducer:
        ip netns add x
        ip -net x -6 rule add from 6003:1::/64 table 100
        ip netns del x
    
    Reported-by: Jianlin Shi <ji...@redhat.com>
    Fixes: 58f09b78b730 ("[NETNS][IPV6] ip6_fib - make it per network 
namespace")
    Signed-off-by: Sabrina Dubroca <s...@queasysnail.net>
    Signed-off-by: David S. Miller <da...@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit dd3e5010b97a24dd08dfefce517e06dc91fb01ad
Author: Arnd Bergmann <a...@arndb.de>
Date:   Wed Aug 23 15:59:49 2017 +0200

    qlge: avoid memcpy buffer overflow
    
    commit e58f95831e7468d25eb6e41f234842ecfe6f014f upstream.
    
    gcc-8.0.0 (snapshot) points out that we copy a variable-length string
    into a fixed length field using memcpy() with the destination length,
    and that ends up copying whatever follows the string:
    
        inlined from 'ql_core_dump' at 
drivers/net/ethernet/qlogic/qlge/qlge_dbg.c:1106:2:
    drivers/net/ethernet/qlogic/qlge/qlge_dbg.c:708:2: error: 'memcpy' reading 
15 bytes from a region of size 14 [-Werror=stringop-overflow=]
      memcpy(seg_hdr->description, desc, (sizeof(seg_hdr->description)) - 1);
    
    Changing it to use strncpy() will instead zero-pad the destination,
    which seems to be the right thing to do here.
    
    The bug is probably harmless, but it seems like a good idea to address
    it in stable kernels as well, if only for the purpose of building with
    gcc-8 without warnings.
    
    Fixes: a61f80261306 ("qlge: Add ethtool register dump function.")
    Signed-off-by: Arnd Bergmann <a...@arndb.de>
    Signed-off-by: David S. Miller <da...@davemloft.net>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 71bec91ec426598cdf2509164e713675a32e1f5b
Author: James Morse <james.mo...@arm.com>
Date:   Thu Mar 16 14:30:39 2017 +0000

    ACPI / APEI: Add missing synchronize_rcu() on NOTIFY_SCI removal
    
    commit 7d64f82cceb21e6d95db312d284f5f195e120154 upstream.
    
    When removing a GHES device notified by SCI, list_del_rcu() is used,
    ghes_remove() should call synchronize_rcu() before it goes on to call
    kfree(ghes), otherwise concurrent RCU readers may still hold this list
    entry after it has been freed.
    
    Signed-off-by: James Morse <james.mo...@arm.com>
    Reviewed-by: "Huang, Ying" <ying.hu...@intel.com>
    Fixes: 81e88fdc432a (ACPI, APEI, Generic Hardware Error Source POLL/IRQ/NMI 
notification type support)
    Signed-off-by: Rafael J. Wysocki <rafael.j.wyso...@intel.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 136211c28496f8c7ca1f3e70e637cdbba7e491da
Author: Takashi Iwai <ti...@suse.de>
Date:   Tue Aug 22 08:15:13 2017 +0200

    ALSA: core: Fix unexpected error at replacing user TLV
    
    commit 88c54cdf61f508ebcf8da2d819f5dfc03e954d1d upstream.
    
    When user tries to replace the user-defined control TLV, the kernel
    checks the change of its content via memcmp().  The problem is that
    the kernel passes the return value from memcmp() as is.  memcmp()
    gives a non-zero negative value depending on the comparison result,
    and this shall be recognized as an error code.
    
    The patch covers that corner-case, return 1 properly for the changed
    TLV.
    
    Fixes: 8aa9b586e420 ("[ALSA] Control API - more robust TLV implementation")
    Cc: <sta...@vger.kernel.org>
    Signed-off-by: Takashi Iwai <ti...@suse.de>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit b4824101fca1c3bb111f3839c0fbc08082e9a26b
Author: Arnd Bergmann <a...@arndb.de>
Date:   Fri Jul 14 11:31:03 2017 +0200

    staging:iio:resolver:ad2s1210 fix negative IIO_ANGL_VEL read
    
    commit 105967ad68d2eb1a041bc041f9cf96af2a653b65 upstream.
    
    gcc-7 points out an older regression:
    
    drivers/staging/iio/resolver/ad2s1210.c: In function 'ad2s1210_read_raw':
    drivers/staging/iio/resolver/ad2s1210.c:515:42: error: '<<' in boolean 
context, did you mean '<' ? [-Werror=int-in-bool-context]
    
    The original code had 'unsigned short' here, but incorrectly got
    converted to 'bool'. This reverts the regression and uses a normal
    type instead.
    
    Fixes: 29148543c521 ("staging:iio:resolver:ad2s1210 minimal chan spec 
conversion.")
    Cc: sta...@vger.kernel.org
    Signed-off-by: Arnd Bergmann <a...@arndb.de>
    Signed-off-by: Jonathan Cameron <jonathan.came...@huawei.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit fe1fd359c1dbde1c1561802f62a16ddc67c9ac07
Author: Willem de Bruijn <will...@google.com>
Date:   Thu Aug 10 12:41:58 2017 -0400

    packet: fix tp_reserve race in packet_set_ring
    
    commit c27927e372f0785f3303e8fad94b85945e2c97b7 upstream.
    
    Updates to tp_reserve can race with reads of the field in
    packet_set_ring. Avoid this by holding the socket lock during
    updates in setsockopt PACKET_RESERVE.
    
    This bug was discovered by syzkaller.
    
    Fixes: 8913336a7e8d ("packet: add PACKET_RESERVE sockopt")
    Reported-by: Andrey Konovalov <andreyk...@google.com>
    Signed-off-by: Willem de Bruijn <will...@google.com>
    Signed-off-by: David S. Miller <da...@davemloft.net>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 162f50e6914ff75f11d15e52507aa88875878fd8
Author: Tejun Heo <t...@kernel.org>
Date:   Sun Jul 23 08:36:15 2017 -0400

    workqueue: implicit ordered attribute should be overridable
    
    commit 0a94efb5acbb6980d7c9ab604372d93cd507e4d8 upstream.
    
    5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be
    ordered") automatically enabled ordered attribute for unbound
    workqueues w/ max_active == 1.  Because ordered workqueues reject
    max_active and some attribute changes, this implicit ordered mode
    broke cases where the user creates an unbound workqueue w/ max_active
    == 1 and later explicitly changes the related attributes.
    
    This patch distinguishes explicit and implicit ordered setting and
    overrides from attribute changes if implict.
    
    Signed-off-by: Tejun Heo <t...@kernel.org>
    Fixes: 5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be 
ordered")
    Cc: Holger Hoffstätte <hol...@applied-asynchrony.com>
    Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>
    
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit ef6fa3f56c073d7d136f7a318088a030c904f4aa
Author: Mahesh Bandewar <mahe...@google.com>
Date:   Wed Jul 19 15:41:33 2017 -0700

    ipv4: initialize fib_trie prior to register_netdev_notifier call.
    
    commit 8799a221f5944a7d74516ecf46d58c28ec1d1f75 upstream.
    
    Net stack initialization currently initializes fib-trie after the
    first call to netdevice_notifier() call. In fact fib_trie initialization
    needs to happen before first rtnl_register(). It does not cause any problem
    since there are no devices UP at this moment, but trying to bring 'lo'
    UP at initialization would make this assumption wrong and exposes the issue.
    
    Fixes following crash
    
     Call Trace:
      ? alternate_node_alloc+0x76/0xa0
      fib_table_insert+0x1b7/0x4b0
      fib_magic.isra.17+0xea/0x120
      fib_add_ifaddr+0x7b/0x190
      fib_netdev_event+0xc0/0x130
      register_netdevice_notifier+0x1c1/0x1d0
      ip_fib_init+0x72/0x85
      ip_rt_init+0x187/0x1e9
      ip_init+0xe/0x1a
      inet_init+0x171/0x26c
      ? ipv4_offload_init+0x66/0x66
      do_one_initcall+0x43/0x160
      kernel_init_freeable+0x191/0x219
      ? rest_init+0x80/0x80
      kernel_init+0xe/0x150
      ret_from_fork+0x22/0x30
     Code: f6 46 23 04 74 86 4c 89 f7 e8 ae 45 01 00 49 89 c7 4d 85 ff 0f 85 7b 
ff ff ff 31 db eb 08 4c 89 ff e8 16 47 01 00 48 8b 44 24 38 <45> 8b 6e 14 4d 63 
76 74 48 89 04 24 0f 1f 44 00 00 48 83 c4 08
     RIP: kmem_cache_alloc+0xcf/0x1c0 RSP: ffff9b1500017c28
     CR2: 0000000000000014
    
    Fixes: 7b1a74fdbb9e ("[NETNS]: Refactor fib initialization so it can handle 
multiple namespaces.")
    Fixes: 7f9b80529b8a ("[IPV4]: fib hash|trie initialization")
    
    Signed-off-by: Mahesh Bandewar <mahe...@google.com>
    Acked-by: "Eric W. Biederman" <ebied...@xmission.com>
    Signed-off-by: David S. Miller <da...@davemloft.net>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 50602d3e499b2419b7ff0eda022525625f90e53c
Author: Leon Romanovsky <leo...@mellanox.com>
Date:   Thu Dec 29 18:37:11 2016 +0200

    net/mlx4: Remove BUG_ON from ICM allocation routine
    
    commit c1d5f8ff80ea84768f5fae1ca9d1abfbb5e6bbaa upstream.
    
    This patch removes BUG_ON() macro from mlx4_alloc_icm_coherent()
    by checking DMA address alignment in advance and performing proper
    folding in case of error.
    
    Fixes: 5b0bf5e25efe ("mlx4_core: Support ICM tables in coherent memory")
    Reported-by: Ozgur Karatas <okara...@member.fsf.org>
    Signed-off-by: Leon Romanovsky <leo...@mellanox.com>
    Signed-off-by: Tariq Toukan <tar...@mellanox.com>
    Signed-off-by: David S. Miller <da...@davemloft.net>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit c1327b455fda6390d2b1b199ce35b20d2bd3dea8
Author: Jin Yao <yao....@linux.intel.com>
Date:   Thu Jun 8 14:01:44 2017 +0800

    perf annotate: Fix broken arrow at row 0 connecting jmp instruction to its 
target
    
    commit 80f62589fa52f530cffc50e78c0b5a2ae572d61e upstream.
    
    When the jump instruction is displayed at the row 0 in annotate view,
    the arrow is broken. An example:
    
     16.86 │   ┌──je     82
      0.01 │      movsd  (%rsp),%xmm0
           │      movsd  0x8(%rsp),%xmm4
           │      movsd  0x8(%rsp),%xmm1
           │      movsd  (%rsp),%xmm3
           │      divsd  %xmm4,%xmm0
           │      divsd  %xmm3,%xmm1
           │      movsd  (%rsp),%xmm2
           │      addsd  %xmm1,%xmm0
           │      addsd  %xmm2,%xmm0
           │      movsd  %xmm0,(%rsp)
           │82:   sub    $0x1,%ebx
     83.03 │    ↑ jne    38
           │      add    $0x10,%rsp
           │      xor    %eax,%eax
           │      pop    %rbx
           │    ← retq
    
    The patch increments the row number before checking with 0.
    
    Signed-off-by: Yao Jin <yao....@linux.intel.com>
    Tested-by: Arnaldo Carvalho de Melo <a...@redhat.com>
    Cc: Alexander Shishkin <alexander.shish...@linux.intel.com>
    Cc: Andi Kleen <a...@linux.intel.com>
    Cc: Jiri Olsa <jo...@kernel.org>
    Cc: Kan Liang <kan.li...@intel.com>
    Cc: Peter Zijlstra <pet...@infradead.org>
    Cc: sta...@vger.kernel.org
    Fixes: 944e1abed9e1 ("perf ui browser: Add method to draw up/down arrow 
line")
    Link: 
http://lkml.kernel.org/r/1496901704-30275-1-git-send-email-yao....@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <a...@redhat.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 3a7578afc3ad93519ac925f823b541b9490433f5
Author: Jan Kara <j...@suse.cz>
Date:   Tue Jun 13 16:20:25 2017 +0200

    udf: Fix deadlock between writeback and udf_setsize()
    
    commit f2e95355891153f66d4156bf3a142c6489cd78c6 upstream.
    
    udf_setsize() called truncate_setsize() with i_data_sem held. Thus
    truncate_pagecache() called from truncate_setsize() could lock a page
    under i_data_sem which can deadlock as page lock ranks below
    i_data_sem - e. g. writeback can hold page lock and try to acquire
    i_data_sem to map a block.
    
    Fix the problem by moving truncate_setsize() calls from under
    i_data_sem. It is safe for us to change i_size without holding
    i_data_sem as all the places that depend on i_size being stable already
    hold inode_lock.
    
    CC: sta...@vger.kernel.org
    Fixes: 7e49b6f2480cb9a9e7322a91592e56a5c85361f5
    Signed-off-by: Jan Kara <j...@suse.cz>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit ad0871670732e6094c796e0d3062c7b7843891fd
Author: Arnd Bergmann <a...@arndb.de>
Date:   Thu May 11 08:46:44 2017 -0300

    ir-core: fix gcc-7 warning on bool arithmetic
    
    commit bd7e31bbade02bc1e92aa00d5cf2cee2da66838a upstream.
    
    gcc-7 suggests that an expression using a bitwise not and a bitmask
    on a 'bool' variable is better written using boolean logic:
    
    drivers/media/rc/imon.c: In function 'imon_incoming_scancode':
    drivers/media/rc/imon.c:1725:22: error: '~' on a boolean expression 
[-Werror=bool-operation]
        ictx->pad_mouse = ~(ictx->pad_mouse) & 0x1;
                          ^
    drivers/media/rc/imon.c:1725:22: note: did you mean to use logical not?
    
    I agree.
    
    Fixes: 21677cfc562a ("V4L/DVB: ir-core: add imon driver")
    
    Signed-off-by: Arnd Bergmann <a...@arndb.de>
    Signed-off-by: Mauro Carvalho Chehab <mche...@s-opensource.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 7fb443fa86195a13277194e5f112445d982e639e
Author: Horia Geantă <horia.gea...@nxp.com>
Date:   Fri Jul 7 16:57:06 2017 +0300

    crypto: caam - fix signals handling
    
    commit 7459e1d25ffefa2b1be799477fcc1f6c62f6cec7 upstream.
    
    Driver does not properly handle the case when signals interrupt
    wait_for_completion_interruptible():
    -it does not check for return value
    -completion structure is allocated on stack; in case a signal interrupts
    the sleep, it will go out of scope, causing the worker thread
    (caam_jr_dequeue) to fail when it accesses it
    
    wait_for_completion_interruptible() is replaced with uninterruptable
    wait_for_completion().
    We choose to block all signals while waiting for I/O (device executing
    the split key generation job descriptor) since the alternative - in
    order to have a deterministic device state - would be to flush the job
    ring (aborting *all* in-progress jobs).
    
    Cc: <sta...@vger.kernel.org>
    Fixes: 045e36780f115 ("crypto: caam - ahash hmac support")
    Fixes: 4c1ec1f930154 ("crypto: caam - refactor key_gen, sg")
    Signed-off-by: Horia Geantă <horia.gea...@nxp.com>
    Signed-off-by: Herbert Xu <herb...@gondor.apana.org.au>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit b569326cedfc6e0f2dc1c3cc237ad717e4a5b0f4
Author: Helge Deller <del...@gmx.de>
Date:   Fri Jul 14 14:49:38 2017 -0700

    mm: fix overflow check in expand_upwards()
    
    commit 37511fb5c91db93d8bd6e3f52f86e5a7ff7cfcdf upstream.
    
    Jörn Engel noticed that the expand_upwards() function might not return
    -ENOMEM in case the requested address is (unsigned long)-PAGE_SIZE and
    if the architecture didn't defined TASK_SIZE as multiple of PAGE_SIZE.
    
    Affected architectures are arm, frv, m68k, blackfin, h8300 and xtensa
    which all define TASK_SIZE as 0xffffffff, but since none of those have
    an upwards-growing stack we currently have no actual issue.
    
    Nevertheless let's fix this just in case any of the architectures with
    an upward-growing stack (currently parisc, metag and partly ia64) define
    TASK_SIZE similar.
    
    Link: http://lkml.kernel.org/r/20170702192452.ga11...@p100.box
    Fixes: bd726c90b6b8 ("Allow stack to grow up to address space limit")
    Signed-off-by: Helge Deller <del...@gmx.de>
    Reported-by: Jörn Engel <jo...@purestorage.com>
    Cc: Hugh Dickins <hu...@google.com>
    Cc: Oleg Nesterov <o...@redhat.com>
    Cc: <sta...@vger.kernel.org>
    Signed-off-by: Andrew Morton <a...@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torva...@linux-foundation.org>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 9efa3d527965d5d6772332841923df8d62810bfe
Author: Srinivas Dasari <dasa...@qti.qualcomm.com>
Date:   Fri Jul 7 01:43:39 2017 +0300

    cfg80211: Check if PMKID attribute is of expected size
    
    commit 9361df14d1cbf966409d5d6f48bb334384fbe138 upstream.
    
    nla policy checks for only maximum length of the attribute data
    when the attribute type is NLA_BINARY. If userspace sends less
    data than specified, the wireless drivers may access illegal
    memory. When type is NLA_UNSPEC, nla policy check ensures that
    userspace sends minimum specified length number of bytes.
    
    Remove type assignment to NLA_BINARY from nla_policy of
    NL80211_ATTR_PMKID to make this NLA_UNSPEC and to make sure minimum
    WLAN_PMKID_LEN bytes are received from userspace with
    NL80211_ATTR_PMKID.
    
    Fixes: 67fbb16be69d ("nl80211: PMKSA caching support")
    Cc: sta...@vger.kernel.org
    Signed-off-by: Srinivas Dasari <dasa...@qti.qualcomm.com>
    Signed-off-by: Jouni Malinen <jo...@qca.qualcomm.com>
    Signed-off-by: Johannes Berg <johannes.b...@intel.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit d47408188914e18508116fe473c7889208a59a7d
Author: Srinivas Dasari <dasa...@qti.qualcomm.com>
Date:   Fri Jul 7 01:43:42 2017 +0300

    cfg80211: Validate frequencies nested in NL80211_ATTR_SCAN_FREQUENCIES
    
    commit d7f13f7450369281a5d0ea463cc69890a15923ae upstream.
    
    validate_scan_freqs() retrieves frequencies from attributes
    nested in the attribute NL80211_ATTR_SCAN_FREQUENCIES with
    nla_get_u32(), which reads 4 bytes from each attribute
    without validating the size of data received. Attributes
    nested in NL80211_ATTR_SCAN_FREQUENCIES don't have an nla policy.
    
    Validate size of each attribute before parsing to avoid potential buffer
    overread.
    
    Fixes: 2a519311926 ("cfg80211/nl80211: scanning (and mac80211 update to use 
it)")
    Cc: sta...@vger.kernel.org
    Signed-off-by: Srinivas Dasari <dasa...@qti.qualcomm.com>
    Signed-off-by: Jouni Malinen <jo...@qca.qualcomm.com>
    Signed-off-by: Johannes Berg <johannes.b...@intel.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit fa69abfe6a07ae3c009b30271966b871799077b6
Author: WANG Cong <xiyou.wangc...@gmail.com>
Date:   Wed Jun 21 14:34:58 2017 -0700

    ipv6: avoid unregistering inet6_dev for loopback
    
    commit 60abc0be96e00ca71bac083215ac91ad2e575096 upstream.
    
    The per netns loopback_dev->ip6_ptr is unregistered and set to
    NULL when its mtu is set to smaller than IPV6_MIN_MTU, this
    leads to that we could set rt->rt6i_idev NULL after a
    rt6_uncached_list_flush_dev() and then crash after another
    call.
    
    In this case we should just bring its inet6_dev down, rather
    than unregistering it, at least prior to commit 176c39af29bc
    ("netns: fix addrconf_ifdown kernel panic") we always
    override the case for loopback.
    
    Thanks a lot to Andrey for finding a reliable reproducer.
    
    Fixes: 176c39af29bc ("netns: fix addrconf_ifdown kernel panic")
    Reported-by: Andrey Konovalov <andreyk...@google.com>
    Cc: Andrey Konovalov <andreyk...@google.com>
    Cc: Daniel Lezcano <dlezc...@fr.ibm.com>
    Cc: David Ahern <dsah...@gmail.com>
    Signed-off-by: Cong Wang <xiyou.wangc...@gmail.com>
    Acked-by: David Ahern <dsah...@gmail.com>
    Tested-by: Andrey Konovalov <andreyk...@google.com>
    Signed-off-by: David S. Miller <da...@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>
    
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 98b9e94ba66c9907ff8f7276c6f9bb71cce1c4ae
Author: Dan Carpenter <dan.carpen...@oracle.com>
Date:   Thu Feb 9 17:17:52 2017 +0000

    KEYS: Fix an error code in request_master_key()
    
    commit 57cb17e764ba0aaa169d07796acce54ccfbc6cae upstream.
    
    This function has two callers and neither are able to handle a NULL
    return.  Really, -EINVAL is the correct thing return here anyway.  This
    fixes some static checker warnings like:
    
        security/keys/encrypted-keys/encrypted.c:709 encrypted_key_decrypt()
        error: uninitialized symbol 'master_key'.
    
    Fixes: 7e70cb497850 ("keys: add new key-type encrypted")
    Signed-off-by: Dan Carpenter <dan.carpen...@oracle.com>
    Acked-by: Mimi Zohar <zo...@linux.vnet.ibm.com>
    Signed-off-by: James Morris <james.l.mor...@oracle.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit fe77accbd15d54708f5f4f23b585f6ca6225f9a4
Author: Radim Krčmář <rkrc...@redhat.com>
Date:   Thu May 18 19:37:30 2017 +0200

    KVM: x86: zero base3 of unusable segments
    
    commit f0367ee1d64d27fa08be2407df5c125442e885e3 upstream.
    
    Static checker noticed that base3 could be used uninitialized if the
    segment was not present (useable).  Random stack values probably would
    not pass VMCS entry checks.
    
    Reported-by:  Dan Carpenter <dan.carpen...@oracle.com>
    Fixes: 1aa366163b8b ("KVM: x86 emulator: consolidate segment accessors")
    Reviewed-by: Paolo Bonzini <pbonz...@redhat.com>
    Reviewed-by: David Hildenbrand <da...@redhat.com>
    Signed-off-by: Radim Krčmář <rkrc...@redhat.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 40cfe451debb10d983378f72868359a17656be8a
Author: Dan Carpenter <dan.carpen...@oracle.com>
Date:   Tue Feb 7 16:19:06 2017 +0300

    cpufreq: s3c2416: double free on driver init error path
    
    commit a69261e4470d680185a15f748d9cdafb37c57a33 upstream.
    
    The "goto err_armclk;" error path already does a clk_put(s3c_freq->hclk);
    so this is a double free.
    
    Fixes: 34ee55075265 ([CPUFREQ] Add S3C2416/S3C2450 cpufreq driver)
    Signed-off-by: Dan Carpenter <dan.carpen...@oracle.com>
    Reviewed-by: Krzysztof Kozlowski <k...@kernel.org>
    Acked-by: Viresh Kumar <viresh.ku...@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wyso...@intel.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 04d006963029d0346be966d1c5e6147995d08b8d
Author: Dan Carpenter <dan.carpen...@oracle.com>
Date:   Wed Jun 14 13:34:05 2017 +0300

    xfrm: Oops on error in pfkey_msg2xfrm_state()
    
    commit 1e3d0c2c70cd3edb5deed186c5f5c75f2b84a633 upstream.
    
    There are some missing error codes here so we accidentally return NULL
    instead of an error pointer.  It results in a NULL pointer dereference.
    
    Fixes: df71837d5024 ("[LSM-IPSec]: Security association restriction.")
    Signed-off-by: Dan Carpenter <dan.carpen...@oracle.com>
    Signed-off-by: Steffen Klassert <steffen.klass...@secunet.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit f478b4264a3c62b6b2d2b63a707e56c2f0cfdc6c
Author: Dan Carpenter <dan.carpen...@oracle.com>
Date:   Wed Jun 14 13:35:37 2017 +0300

    xfrm: NULL dereference on allocation failure
    
    commit e747f64336fc15e1c823344942923195b800aa1e upstream.
    
    The default error code in pfkey_msg2xfrm_state() is -ENOBUFS.  We
    added a new call to security_xfrm_state_alloc() which sets "err" to zero
    so there several places where we can return ERR_PTR(0) if kmalloc()
    fails.  The caller is expecting error pointers so it leads to a NULL
    dereference.
    
    Fixes: df71837d5024 ("[LSM-IPSec]: Security association restriction.")
    Signed-off-by: Dan Carpenter <dan.carpen...@oracle.com>
    Signed-off-by: Steffen Klassert <steffen.klass...@secunet.com>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 6ac502ceabf86463c4a35166851edf497960262f
Author: Florian Fainelli <f.faine...@gmail.com>
Date:   Fri Dec 23 19:56:56 2016 -0800

    net: korina: Fix NAPI versus resources freeing
    
    commit e6afb1ad88feddf2347ea779cfaf4d03d3cd40b6 upstream.
    
    Commit beb0babfb77e ("korina: disable napi on close and restart")
    introduced calls to napi_disable() that were missing before,
    unfortunately this leaves a small window during which NAPI has a chance
    to run, yet we just freed resources since korina_free_ring() has been
    called:
    
    Fix this by disabling NAPI first then freeing resource, and make sure
    that we also cancel the restart task before doing the resource freeing.
    
    Fixes: beb0babfb77e ("korina: disable napi on close and restart")
    Reported-by: Alexandros C. Couloumbis <a...@ozo.com>
    Signed-off-by: Florian Fainelli <f.faine...@gmail.com>
    Signed-off-by: David S. Miller <da...@davemloft.net>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 18144201ec726dffd07cebf3df0cd2b799fc9fc0
Author: Russell King <rmk+ker...@armlinux.org.uk>
Date:   Tue May 30 16:21:51 2017 +0100

    net: phy: fix marvell phy status reading
    
    commit 898805e0cdf7fd860ec21bf661d3a0285a3defbd upstream.
    
    The Marvell driver incorrectly provides phydev->lp_advertising as the
    logical and of the link partner's advert and our advert.  This is
    incorrect - this field is supposed to store the link parter's unmodified
    advertisment.
    
    This allows ethtool to report the correct link partner auto-negotiation
    status.
    
    Fixes: be937f1f89ca ("Marvell PHY m88e1111 driver fix")
    Signed-off-by: Russell King <rmk+ker...@armlinux.org.uk>
    Reviewed-by: Andrew Lunn <and...@lunn.ch>
    Reviewed-by: Florian Fainelli <f.faine...@gmail.com>
    Signed-off-by: David S. Miller <da...@davemloft.net>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 240607692cd84b2ed16b0f346bdaa4f5a787322b
Author: Dan Carpenter <dan.carpen...@oracle.com>
Date:   Mon May 8 15:55:17 2017 -0700

    drivers/misc/c2port/c2port-duramar2150.c: checking for NULL instead of 
IS_ERR()
    
    commit 8128a31eaadbcdfa37774bbd28f3f00bac69996a upstream.
    
    c2port_device_register() never returns NULL, it uses error pointers.
    
    Link: http://lkml.kernel.org/r/20170412083321.GC3250@mwanda
    Fixes: 65131cd52b9e ("c2port: add c2port support for Eurotech Duramar 2150")
    Signed-off-by: Dan Carpenter <dan.carpen...@oracle.com>
    Acked-by: Rodolfo Giometti <giome...@linux.it>
    Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org>
    Signed-off-by: Andrew Morton <a...@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torva...@linux-foundation.org>
    Signed-off-by: Willy Tarreau <w...@1wt.eu>

commit 779ec20b9519444ac3bd4ec6821402948119db4d
Author: Chris Brandt <chris.bra...@renesas.com>
Date:   Thu Apr 27 12:12:49 2017 -0700


diff --git a/Documentation/devicetree/bindings/clock/imx31-clock.txt 
b/Documentation/devicetree/bindings/clock/imx31-clock.txt
index 19df842..8163d56 100644
--- a/Documentation/devicetree/bindings/clock/imx31-clock.txt
+++ b/Documentation/devicetree/bindings/clock/imx31-clock.txt
@@ -77,7 +77,7 @@ Examples:
 clks: ccm@53f80000{
        compatible = "fsl,imx31-ccm";
        reg = <0x53f80000 0x4000>;
-       interrupts = <0 31 0x04 0 53 0x04>;
+       interrupts = <31>, <53>;
        #clock-cells = <1>;
 };
 
diff --git a/Documentation/filesystems/00-INDEX 
b/Documentation/filesystems/00-INDEX
index 47f3788..8042050 100644
--- a/Documentation/filesystems/00-INDEX
+++ b/Documentation/filesystems/00-INDEX
@@ -118,8 +118,6 @@ vfat.txt
        - info on using the VFAT filesystem used in Windows NT and Windows 95
 vfs.txt
        - overview of the Virtual File System
-wrapfs.txt
-       - info and mount options for the stackable wrapper file system
 xfs.txt
        - info and mount options for the XFS filesystem.
 xip.txt
diff --git a/Documentation/filesystems/wrapfs.txt 
b/Documentation/filesystems/wrapfs.txt
deleted file mode 100644
index daa313b..0000000
--- a/Documentation/filesystems/wrapfs.txt
+++ /dev/null
@@ -1,172 +0,0 @@
-Wrapfs: a null-layer (aka wrapper) stackable file system
-
-Maintainer: Erez Zadok <ezk AT cs DOT stonybrook DOT edu>
-Web Site: <http://wrapfs.filesystems.org/>
-
-------------------------------------------------------------------------------
-MOTIVATION:
-
-Wrapfs is a small null-layer stackable file system, similar to BSD's Nullfs.
-Wrapfs is small, under 1,800 lines of code.  Compare that to, say, eCryptfs
-(in mainline since 2.6.19) and Unionfs, each of which are over 10,000 LoC.
-As such, Wrapfs is simple, easy to read and understand, and very easy to
-code-review.  Wrapfs is useful for several reasons:
-
-1. Many people like to experiment with in-kernel file system ideas.  Wrapfs
-   is an ideal small template that one can modify to incrementally create
-   new file system functionalities.
-
-2. As a platform to test and debug generic stacking problems in other Linux
-   stackable file systems (e.g., eCryptfs) more easily.
-
-3. As a way to test VFS enhancements to better support stacking in Linux.
-
-4. Wrapfs is also a very useful instructional tool, often used as a starting
-   point for course assignments, for people who want a small example of how
-   the Linux VFS works, or for those who want to learn how to write new
-   Linux file systems.
-
-5. As an alternative to bind mounts.  Wrapfs acts similarly to BSD's
-   loopback mount file system (lofs).
-
-Various versions of Wrapfs appeared as part of the "fistgen" package since
-1994, and have been used by numerous users world-wide.  This latest version
-was rewritten entirely from scratch in 2010 and had supported every kernel
-as of 2.6.32.  All versions of wrapfs have been thoroughly tested using LTP,
-FSX, racer, and other test-suites.  Wrapfs code uses the latest VFS API
-changes of the corresponding kernel.  For a more detailed history of Wrapfs,
-and list of most of its known users, see the section marked "HISTORY" below.
-
-------------------------------------------------------------------------------
-OPERATION:
-
-This is a brief description of how Wrapfs operates.  For more information,
-see the full paper published in Linux Expo 1999, titled "A Stackable File
-System Interface For Linux":
-
-       <http://www.fsl.cs.sunysb.edu/docs/linux-stacking/linux.pdf>
-
-The basic function of a stackable file system is to pass an operation and
-its arguments to the lower-level file system.  For every VFS object (inode,
-dentry, file, superblock, etc.), Wrapfs keeps a one-to-one mapping of a
-Wrapfs-level object to the lower one.  We call the Wrapfs object the "upper"
-one, and the one below we call the "lower" one.  Wrapfs stores these
-mappings as simple pointers inside the private field of the existing VFS
-objects (e.g., dentry->d_fsdata, sb->s_fs_info, and a container for inodes).
-
-There are two kinds of stackable operations: those that create new VFS
-objects and those that don't.
-
-The following distilled code snippet shows a method which doesn't create a
-new object.  The method just has to pass it to the lower layer and propagate
-any errors back up the VFS:
-
-int wrapfs_unlink(struct inode *dir, struct dentry *dentry)
-{
-       int err;
-       struct inode *lower_dir;
-       struct dentry *lower_dentry;
-       lower_dir = get_lower_inode(dir);
-       lower_dentry = get_lower_dentry(dentry);
-       err = lower_dir->i_op->unlink(lower_dir, lower_dentry);
-       return err;
-}
-
-The following code snippet shows a method which creates a new object.  After
-a lower object gets created, Wrapfs has to also create its own object, and
-make the pointer connections between the upper and lower objects (the latter
-is done via a helper routine called "interpose"):
-
-int wrapfs_create(struct inode *dir, struct dentry *dentry, int mode)
-{
-       int err;
-       struct dentry *lower_dentry;
-       struct inode *lower_dir;
-       lower_dir = wrapfs_lower_inode(dir);
-       lower_dentry = wrapfs_lower_dentry(dentry);
-       err = vfs_create(lower_dir, lower_dentry, mode);
-       if (!err)
-               err = wrapfs_interpose(dentry, dir->i_sb);
-       return err;
-}
-
-The wrapfs_unlink code snippet above can be easily modified to change the
-behavior of unlink(2).  For example, if an ->unlink operation is changed to
-->rename, this could become the basis for an "undo" file system; or if the
-lower_dentry's name gets encrypted before calling the lower ->unlink, this
-could be part of an encryption file system.
-
-------------------------------------------------------------------------------
-USAGE:
-
-First, you have to have some pre-existing directory already mounted from any
-other file system, say /some/lower/path.  Then, to mount wrapfs in
-/mnt/wrapfs, on that lower directory, issue this command:
-
-# mount -t wrapfs /some/lower/path /mnt/wrapfs
-
-To access the files via Wrapfs, use the mount point /mnt/wrapfs.
-
-------------------------------------------------------------------------------
-CAVEATS:
-
-Stacking on NFS.  Wrapfs has been tested with LTP, racer, fsx, parallel
-compile, and more.  It's been tested on top of ext2, ext3, xfs, reiserfs,
-and tmpfs -- and passed all tests.  However, on top of nfs3, wrapfs has to
-treat silly-deleted files as if they don't exist: in ->unlink, if we try to
-vfs_unlink an NFS silly-deleted file, NFS returns EBUSY; so we simply ignore
-it and return 0 (success) to the VFS.  NFS will delete this file later on
-anyway.  As the VFS also has special handling for silly-deleted files, this
-isn't unusual.  A cleaner way to handle this in the future is if the VFS
-were to handle silly-deleted (aka "delayed-delete") files entirely at the
-VFS.
-
-------------------------------------------------------------------------------
-HISTORY:
-
-Wrapfs was developed initially in 1994 for Linux 2.1, as part of Erez
-Zadok's graduate work at Columbia University.  It was designed to be a
-flexible null-layer, pass-through, stackable file system, from which other
-file systems would be developed and even instantiated automatically using a
-high-level language.  One of the first file systems developed from Wrapfs
-was a simple encryption file system called Cryptfs (eCryptfs is based on
-Cryptfs).  Other examples include Gzipfs, a stackable compression file
-system, and Unionfs, a stackable unification file system.  Wrapfs was
-integrated into a larger package called fistgen (see www.filesystems.org),
-and ported to FreeBSD and Solaris.  Wrapfs and fistgen continued to be
-maintained for newer versions of kernels, but remained largely standalone
-until recently: this release of Wrapfs for Linux represents a clean version
-written from scratch.
-
-Over the past 15+ years, versions of Wrapfs had been used by many users and
-companies.  At one point or another, the following groups have used stacking
-code based on Wrapfs.
-
-1. PROJECTS: eCryptfs, Unionfs, mini_fo, Aufs, FindFS, StoreCompress,
-   TestFS, ToPAS, and MFS.
-
-2. COMPANIES AND RESEARCH LABS: Bell Labs's Plan 9 group, EMC,
-   Hewlett-Packard, IBM Research Almaden, IBM Research Austin, Red Hat,
-   SuSE, Sun Microsystems, Veritas, Booyaka, CalSoft (India), Computer Farm,
-   Deutsche Bank (Germany), DreamWorks LLC, Eli Lilly and Company, FAME
-   Information Services, GMX AG (Germany), IBM global services (India), IDA
-   Center for Communications Research, Indra Networks, Inc., Kavi
-   Corporation, Mendepie, Mitsubishi Electric (Japan), Mobile-Mind, Monster
-   Labs, Morning Network (Russia), NeST Technologies, Packet General
-   Networks, Inc., Outstep Technologies, Reflective Systems Group, River
-   Styx Internet, SARAI Net, Saint-Petersburg Official Web Site (Russia),
-   Shadow Island Games, TISCover (Germany), Trymedia Systems, Uber Admin,
-   Videsh Sanchar Nigam Limited (India), Wanadoo (France), and iNsu
-   Innovations.
-
-3. UNIVERSITIES: Georgia Institute of Technology, Stanford University, UC
-   Berkeley, UCLA, University of Maryland, College Park, University of
-   Michigan, Ben Gurion University (Israel), Clarkson University, Clemson
-   University, Deutsches Elektronen Synchrotron (Germany), Electronics and
-   Telecommunications Research Institute (South Korea), Indian Institute of
-   Technology (India), National Taiwan University, Pune University (India),
-   The College of William \& Mary, Trinity College (Ireland), Universitaet
-   Frankfurt am Main (Germany), University Hospital Olomouc (Czech
-   Republic), and University of Salermo (Italy).
-
-------------------------------------------------------------------------------
diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index 98da831..ed0c7e3 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -955,6 +955,10 @@ bytes respectively. Such letter suffixes can also be 
entirely omitted.
                        When zero, profiling data is discarded and associated
                        debugfs files are removed at module unload time.
 
+       goldfish        [X86] Enable the goldfish android emulator platform.
+                       Don't use this when you are not running on the
+                       android emulator
+
        gpt             [EFI] Forces disk with valid GPT signature but
                        invalid Protective MBR to be treated as GPT.
 
@@ -2885,6 +2889,13 @@ bytes respectively. Such letter suffixes can also be 
entirely omitted.
        spia_pedr=
        spia_peddr=
 
+       stack_guard_gap=        [MM]
+                       override the default stack gap protection. The value
+                       is in page units and it defines how many pages prior
+                       to (for stacks growing down) resp. after (for stacks
+                       growing up) the main stack are reserved for no other
+                       mapping. Default value is 256 pages.
+
        stacktrace      [FTRACE]
                        Enabled the stack tracer on boot up.
 
diff --git a/MAINTAINERS b/MAINTAINERS
index 3435a46..29d7d74 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -9055,15 +9055,6 @@ F:       include/linux/workqueue.h
 F:     kernel/workqueue.c
 F:     Documentation/workqueue.txt
 
-WRAPFS
-M:     Erez Zadok <e...@cs.sunysb.edu>
-L:     wra...@filesystems.org
-W:     http://wrapfs.filesystems.org/
-T:     git git.kernel.org/pub/scm/linux/kernel/git/ezk/wrapfs.git
-S:     Maintained
-F:     Documentation/filesystems/wrapfs.txt
-F:     fs/wrapfs/
-
 X.25 NETWORK LAYER
 M:     Andrew Hendry <andrew.hen...@gmail.com>
 L:     linux-...@vger.kernel.org
diff --git a/Makefile b/Makefile
index 80e180e..924f98a 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,8 @@
 VERSION = 3
 PATCHLEVEL = 10
-SUBLEVEL = 105
+SUBLEVEL = 108
 EXTRAVERSION =
-NAME = TOSSUG Baby Fish
+NAME = END-OF-LIFE
 
 # *DOCUMENTATION*
 # To see a list of typical targets execute "make help"
diff --git a/arch/arc/kernel/unaligned.c b/arch/arc/kernel/unaligned.c
index 116d3e0..e6b365d 100644
--- a/arch/arc/kernel/unaligned.c
+++ b/arch/arc/kernel/unaligned.c
@@ -228,8 +228,9 @@ int misaligned_fixup(unsigned long address, struct pt_regs 
*regs,
        if (state.fault)
                goto fault;
 
+       /* clear any remanants of delay slot */
        if (delay_mode(regs)) {
-               regs->ret = regs->bta;
+               regs->ret = regs->bta & ~1U;
                regs->status32 &= ~STATUS_DE_MASK;
        } else {
                regs->ret += state.instr_len;
diff --git a/arch/arc/mm/mmap.c b/arch/arc/mm/mmap.c
index 2e06d56..cf4ae69 100644
--- a/arch/arc/mm/mmap.c
+++ b/arch/arc/mm/mmap.c
@@ -64,7 +64,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
 
                vma = find_vma(mm, addr);
                if (TASK_SIZE - len >= addr &&
-                   (!vma || addr + len <= vma->vm_start))
+                   (!vma || addr + len <= vm_start_gap(vma)))
                        return addr;
        }
 
diff --git a/arch/arm/boot/dts/da850-evm.dts b/arch/arm/boot/dts/da850-evm.dts
index c914357..d3c206e 100644
--- a/arch/arm/boot/dts/da850-evm.dts
+++ b/arch/arm/boot/dts/da850-evm.dts
@@ -59,6 +59,7 @@
                                #size-cells = <1>;
                                compatible = "m25p64";
                                spi-max-frequency = <30000000>;
+                               m25p,fast-read;
                                reg = <0>;
                                partition@0 {
                                        label = "U-Boot-SPL";
diff --git a/arch/arm/boot/dts/imx31.dtsi b/arch/arm/boot/dts/imx31.dtsi
index c544925..b73190d 100644
--- a/arch/arm/boot/dts/imx31.dtsi
+++ b/arch/arm/boot/dts/imx31.dtsi
@@ -20,11 +20,11 @@
                serial4 = &uart5;
        };
 
-       avic: avic-interrupt-controller@60000000 {
+       avic: interrupt-controller@68000000 {
                compatible = "fsl,imx31-avic", "fsl,avic";
                interrupt-controller;
                #interrupt-cells = <1>;
-               reg = <0x60000000 0x100000>;
+               reg = <0x68000000 0x100000>;
        };
 
        soc {
@@ -93,13 +93,6 @@
                                clock-names = "ipg", "per";
                                status = "disabled";
                        };
-
-                       clks: ccm@53f80000{
-                               compatible = "fsl,imx31-ccm";
-                               reg = <0x53f80000 0x4000>;
-                               interrupts = <0 31 0x04 0 53 0x04>;
-                               #clock-cells = <1>;
-                       };
                };
 
                aips@53f00000 { /* AIPS2 */
@@ -109,6 +102,13 @@
                        reg = <0x53f00000 0x100000>;
                        ranges;
 
+                       clks: ccm@53f80000{
+                               compatible = "fsl,imx31-ccm";
+                               reg = <0x53f80000 0x4000>;
+                               interrupts = <31>, <53>;
+                               #clock-cells = <1>;
+                       };
+
                        gpt: timer@53f90000 {
                                compatible = "fsl,imx31-gpt";
                                reg = <0x53f90000 0x4000>;
diff --git a/arch/arm/include/asm/cputype.h b/arch/arm/include/asm/cputype.h
index dba62cb..f389107 100644
--- a/arch/arm/include/asm/cputype.h
+++ b/arch/arm/include/asm/cputype.h
@@ -58,6 +58,9 @@
 #define ARM_CPU_XSCALE_ARCH_V2         0x4000
 #define ARM_CPU_XSCALE_ARCH_V3         0x6000
 
+/* Qualcomm implemented cores */
+#define ARM_CPU_PART_SCORPION          0x510002d0
+
 extern unsigned int processor_id;
 
 #ifdef CONFIG_CPU_CP15
diff --git a/arch/arm/kernel/hw_breakpoint.c b/arch/arm/kernel/hw_breakpoint.c
index 1fd749e..b0b69e9 100644
--- a/arch/arm/kernel/hw_breakpoint.c
+++ b/arch/arm/kernel/hw_breakpoint.c
@@ -1066,6 +1066,22 @@ static int __init arch_hw_breakpoint_init(void)
                return 0;
        }
 
+       /*
+        * Scorpion CPUs (at least those in APQ8060) seem to set DBGPRSR.SPD
+        * whenever a WFI is issued, even if the core is not powered down, in
+        * violation of the architecture.  When DBGPRSR.SPD is set, accesses to
+        * breakpoint and watchpoint registers are treated as undefined, so
+        * this results in boot time and runtime failures when these are
+        * accessed and we unexpectedly take a trap.
+        *
+        * It's not clear if/how this can be worked around, so we blacklist
+        * Scorpion CPUs to avoid these issues.
+       */
+       if ((read_cpuid_id() & 0xff00fff0) == ARM_CPU_PART_SCORPION) {
+               pr_info("Scorpion CPU detected. Hardware breakpoints and 
watchpoints disabled\n");
+               return 0;
+       }
+
        has_ossr = core_has_os_save_restore();
 
        /* Determine how many BRPs/WRPs are available. */
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c
index 4e2110d..dfdd683 100644
--- a/arch/arm/kernel/ptrace.c
+++ b/arch/arm/kernel/ptrace.c
@@ -600,7 +600,7 @@ static int gpr_set(struct task_struct *target,
                   const void *kbuf, const void __user *ubuf)
 {
        int ret;
-       struct pt_regs newregs;
+       struct pt_regs newregs = *task_pt_regs(target);
 
        ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
                                 &newregs,
diff --git a/arch/arm/mach-ux500/pm.c b/arch/arm/mach-ux500/pm.c
index 1a468f0..9d53256 100644
--- a/arch/arm/mach-ux500/pm.c
+++ b/arch/arm/mach-ux500/pm.c
@@ -128,8 +128,8 @@ bool prcmu_pending_irq(void)
  */
 bool prcmu_is_cpu_in_wfi(int cpu)
 {
-       return readl(PRCM_ARM_WFI_STANDBY) & cpu ? PRCM_ARM_WFI_STANDBY_WFI1 :
-                    PRCM_ARM_WFI_STANDBY_WFI0;
+       return readl(PRCM_ARM_WFI_STANDBY) &
+               (cpu ? PRCM_ARM_WFI_STANDBY_WFI1 : PRCM_ARM_WFI_STANDBY_WFI0);
 }
 
 /*
diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c
index 5ef506c..984509e 100644
--- a/arch/arm/mm/mmap.c
+++ b/arch/arm/mm/mmap.c
@@ -89,7 +89,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
 
                vma = find_vma(mm, addr);
                if (TASK_SIZE - len >= addr &&
-                   (!vma || addr + len <= vma->vm_start))
+                   (!vma || addr + len <= vm_start_gap(vma)))
                        return addr;
        }
 
@@ -140,7 +140,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const 
unsigned long addr0,
                        addr = PAGE_ALIGN(addr);
                vma = find_vma(mm, addr);
                if (TASK_SIZE - len >= addr &&
-                               (!vma || addr + len <= vma->vm_start))
+                               (!vma || addr + len <= vm_start_gap(vma)))
                        return addr;
        }
 
diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
index 81edd31..810ae2d 100644
--- a/arch/arm/xen/enlighten.c
+++ b/arch/arm/xen/enlighten.c
@@ -258,8 +258,7 @@ static int __init xen_guest_init(void)
         * for secondary CPUs as they are brought up.
         * For uniformity we use VCPUOP_register_vcpu_info even on cpu0.
         */
-       xen_vcpu_info = __alloc_percpu(sizeof(struct vcpu_info),
-                                              sizeof(struct vcpu_info));
+       xen_vcpu_info = alloc_percpu(struct vcpu_info);
        if (xen_vcpu_info == NULL)
                return -ENOMEM;
 
diff --git a/arch/arm64/include/uapi/asm/ptrace.h 
b/arch/arm64/include/uapi/asm/ptrace.h
index 6913643..c136fd5 100644
--- a/arch/arm64/include/uapi/asm/ptrace.h
+++ b/arch/arm64/include/uapi/asm/ptrace.h
@@ -75,6 +75,7 @@ struct user_fpsimd_state {
        __uint128_t     vregs[32];
        __u32           fpsr;
        __u32           fpcr;
+       __u32           __reserved[2];
 };
 
 struct user_hwdebug_state {
diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c
index dfad98f..015775a 100644
--- a/arch/arm64/kernel/ptrace.c
+++ b/arch/arm64/kernel/ptrace.c
@@ -464,6 +464,8 @@ static int hw_break_set(struct task_struct *target,
        /* (address, ctrl) registers */
        limit = regset->n * regset->size;
        while (count && offset < limit) {
+               if (count < PTRACE_HBP_ADDR_SZ)
+                       return -EINVAL;
                ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &addr,
                                         offset, offset + PTRACE_HBP_ADDR_SZ);
                if (ret)
@@ -473,6 +475,8 @@ static int hw_break_set(struct task_struct *target,
                        return ret;
                offset += PTRACE_HBP_ADDR_SZ;
 
+               if (!count)
+                       break;
                ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &ctrl,
                                         offset, offset + PTRACE_HBP_CTRL_SZ);
                if (ret)
@@ -509,7 +513,7 @@ static int gpr_set(struct task_struct *target, const struct 
user_regset *regset,
                   const void *kbuf, const void __user *ubuf)
 {
        int ret;
-       struct user_pt_regs newregs;
+       struct user_pt_regs newregs = task_pt_regs(target)->user_regs;
 
        ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &newregs, 0, -1);
        if (ret)
@@ -539,7 +543,8 @@ static int fpr_set(struct task_struct *target, const struct 
user_regset *regset,
                   const void *kbuf, const void __user *ubuf)
 {
        int ret;
-       struct user_fpsimd_state newstate;
+       struct user_fpsimd_state newstate =
+               target->thread.fpsimd_state.user_fpsimd;
 
        ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &newstate, 0, -1);
        if (ret)
@@ -562,7 +567,7 @@ static int tls_set(struct task_struct *target, const struct 
user_regset *regset,
                   const void *kbuf, const void __user *ubuf)
 {
        int ret;
-       unsigned long tls;
+       unsigned long tls = target->thread.tp_value;
 
        ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &tls, 0, -1);
        if (ret)
diff --git a/arch/c6x/kernel/ptrace.c b/arch/c6x/kernel/ptrace.c
index 3c494e8..a511ac1 100644
--- a/arch/c6x/kernel/ptrace.c
+++ b/arch/c6x/kernel/ptrace.c
@@ -69,46 +69,6 @@ static int gpr_get(struct task_struct *target,
                                   0, sizeof(*regs));
 }
 
-static int gpr_set(struct task_struct *target,
-                  const struct user_regset *regset,
-                  unsigned int pos, unsigned int count,
-                  const void *kbuf, const void __user *ubuf)
-{
-       int ret;
-       struct pt_regs *regs = task_pt_regs(target);
-
-       /* Don't copyin TSR or CSR */
-       ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
-                                &regs,
-                                0, PT_TSR * sizeof(long));
-       if (ret)
-               return ret;
-
-       ret = user_regset_copyin_ignore(&pos, &count, &kbuf, &ubuf,
-                                       PT_TSR * sizeof(long),
-                                       (PT_TSR + 1) * sizeof(long));
-       if (ret)
-               return ret;
-
-       ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
-                                &regs,
-                                (PT_TSR + 1) * sizeof(long),
-                                PT_CSR * sizeof(long));
-       if (ret)
-               return ret;
-
-       ret = user_regset_copyin_ignore(&pos, &count, &kbuf, &ubuf,
-                                       PT_CSR * sizeof(long),
-                                       (PT_CSR + 1) * sizeof(long));
-       if (ret)
-               return ret;
-
-       ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
-                                &regs,
-                                (PT_CSR + 1) * sizeof(long), -1);
-       return ret;
-}
-
 enum c6x_regset {
        REGSET_GPR,
 };
@@ -120,7 +80,6 @@ static const struct user_regset c6x_regsets[] = {
                .size = sizeof(u32),
                .align = sizeof(u32),
                .get = gpr_get,
-               .set = gpr_set
        },
 };
 
diff --git a/arch/cris/boot/rescue/Makefile b/arch/cris/boot/rescue/Makefile
index 52bd0bd..d98edbb 100644
--- a/arch/cris/boot/rescue/Makefile
+++ b/arch/cris/boot/rescue/Makefile
@@ -10,6 +10,9 @@
 
 asflags-y += $(LINUXINCLUDE)
 ccflags-y += -O2 $(LINUXINCLUDE)
+
+ifdef CONFIG_ETRAX_AXISFLASHMAP
+
 arch-$(CONFIG_ETRAX_ARCH_V10) = v10
 arch-$(CONFIG_ETRAX_ARCH_V32) = v32
 
@@ -28,6 +31,11 @@ $(obj)/rescue.bin: $(obj)/rescue.o FORCE
        $(call if_changed,objcopy)
        cp -p $(obj)/rescue.bin $(objtree)
 
+else
+$(obj)/rescue.bin:
+
+endif
+
 $(obj)/testrescue.bin: $(obj)/testrescue.o
        $(OBJCOPY) $(OBJCOPYFLAGS) $(obj)/testrescue.o tr.bin
 # Pad it to 784 bytes
diff --git a/arch/frv/mm/elf-fdpic.c b/arch/frv/mm/elf-fdpic.c
index 836f1470..efa59f1 100644
--- a/arch/frv/mm/elf-fdpic.c
+++ b/arch/frv/mm/elf-fdpic.c
@@ -74,7 +74,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, 
unsigned long addr, unsi
                addr = PAGE_ALIGN(addr);
                vma = find_vma(current->mm, addr);
                if (TASK_SIZE - len >= addr &&
-                   (!vma || addr + len <= vma->vm_start))
+                   (!vma || addr + len <= vm_start_gap(vma)))
                        goto success;
        }
 
diff --git a/arch/m68k/include/asm/delay.h b/arch/m68k/include/asm/delay.h
index d28fa8f..c598d84 100644
--- a/arch/m68k/include/asm/delay.h
+++ b/arch/m68k/include/asm/delay.h
@@ -114,6 +114,6 @@ static inline void __udelay(unsigned long usecs)
  */
 #define        HZSCALE         (268435456 / (1000000 / HZ))
 
-#define ndelay(n) __delay(DIV_ROUND_UP((n) * ((((HZSCALE) >> 11) * 
(loops_per_jiffy >> 11)) >> 6), 1000));
+#define ndelay(n) __delay(DIV_ROUND_UP((n) * ((((HZSCALE) >> 11) * 
(loops_per_jiffy >> 11)) >> 6), 1000))
 
 #endif /* defined(_M68K_DELAY_H) */
diff --git a/arch/metag/include/asm/uaccess.h b/arch/metag/include/asm/uaccess.h
index 7841f22..9d52337 100644
--- a/arch/metag/include/asm/uaccess.h
+++ b/arch/metag/include/asm/uaccess.h
@@ -192,20 +192,21 @@ extern long __must_check strnlen_user(const char __user 
*src, long count);
 
 #define strlen_user(str) strnlen_user(str, 32767)
 
-extern unsigned long __must_check __copy_user_zeroing(void *to,
-                                                     const void __user *from,
-                                                     unsigned long n);
+extern unsigned long raw_copy_from_user(void *to, const void __user *from,
+                                       unsigned long n);
 
 static inline unsigned long
 copy_from_user(void *to, const void __user *from, unsigned long n)
 {
+       unsigned long res = n;
        if (likely(access_ok(VERIFY_READ, from, n)))
-               return __copy_user_zeroing(to, from, n);
-       memset(to, 0, n);
-       return n;
+               res = raw_copy_from_user(to, from, n);
+       if (unlikely(res))
+               memset(to + (n - res), 0, res);
+       return res;
 }
 
-#define __copy_from_user(to, from, n) __copy_user_zeroing(to, from, n)
+#define __copy_from_user(to, from, n) raw_copy_from_user(to, from, n)
 #define __copy_from_user_inatomic __copy_from_user
 
 extern unsigned long __must_check __copy_user(void __user *to,
diff --git a/arch/metag/kernel/ptrace.c b/arch/metag/kernel/ptrace.c
index 7563628..5e2dc7d 100644
--- a/arch/metag/kernel/ptrace.c
+++ b/arch/metag/kernel/ptrace.c
@@ -24,6 +24,16 @@
  * user_regset definitions.
  */
 
+static unsigned long user_txstatus(const struct pt_regs *regs)
+{
+       unsigned long data = (unsigned long)regs->ctx.Flags;
+
+       if (regs->ctx.SaveMask & TBICTX_CBUF_BIT)
+               data |= USER_GP_REGS_STATUS_CATCH_BIT;
+
+       return data;
+}
+
 int metag_gp_regs_copyout(const struct pt_regs *regs,
                          unsigned int pos, unsigned int count,
                          void *kbuf, void __user *ubuf)
@@ -62,9 +72,7 @@ int metag_gp_regs_copyout(const struct pt_regs *regs,
        if (ret)
                goto out;
        /* TXSTATUS */
-       data = (unsigned long)regs->ctx.Flags;
-       if (regs->ctx.SaveMask & TBICTX_CBUF_BIT)
-               data |= USER_GP_REGS_STATUS_CATCH_BIT;
+       data = user_txstatus(regs);
        ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf,
                                  &data, 4*25, 4*26);
        if (ret)
@@ -119,6 +127,7 @@ int metag_gp_regs_copyin(struct pt_regs *regs,
        if (ret)
                goto out;
        /* TXSTATUS */
+       data = user_txstatus(regs);
        ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
                                 &data, 4*25, 4*26);
        if (ret)
@@ -244,6 +253,8 @@ int metag_rp_state_copyin(struct pt_regs *regs,
        unsigned long long *ptr;
        int ret, i;
 
+       if (count < 4*13)
+               return -EINVAL;
        /* Read the entire pipeline before making any changes */
        ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
                                 &rp, 0, 4*13);
@@ -303,7 +314,7 @@ static int metag_tls_set(struct task_struct *target,
                        const void *kbuf, const void __user *ubuf)
 {
        int ret;
-       void __user *tls;
+       void __user *tls = target->thread.tls_ptr;
 
        ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &tls, 0, -1);
        if (ret)
diff --git a/arch/metag/lib/usercopy.c b/arch/metag/lib/usercopy.c
index b3ebfe9..2792fc6 100644
--- a/arch/metag/lib/usercopy.c
+++ b/arch/metag/lib/usercopy.c
@@ -29,7 +29,6 @@
                COPY                                             \
                "1:\n"                                           \
                "       .section .fixup,\"ax\"\n"                \
-               "       MOV D1Ar1,#0\n"                          \
                FIXUP                                            \
                "       MOVT    D1Ar1,#HI(1b)\n"                 \
                "       JUMP    D1Ar1,#LO(1b)\n"                 \
@@ -260,27 +259,31 @@
                "MGETL  D0FrT, D0.5, D0.6, D0.7, [%1++]\n"              \
                "22:\n"                                                 \
                "MSETL  [%0++], D0FrT, D0.5, D0.6, D0.7\n"              \
-               "SUB    %3, %3, #32\n"                                  \
                "23:\n"                                                 \
-               "MGETL  D0FrT, D0.5, D0.6, D0.7, [%1++]\n"              \
+               "SUB    %3, %3, #32\n"                                  \
                "24:\n"                                                 \
+               "MGETL  D0FrT, D0.5, D0.6, D0.7, [%1++]\n"              \
+               "25:\n"                                                 \
                "MSETL  [%0++], D0FrT, D0.5, D0.6, D0.7\n"              \
+               "26:\n"                                                 \
                "SUB    %3, %3, #32\n"                                  \
                "DCACHE [%1+#-64], D0Ar6\n"                             \
                "BR     $Lloop"id"\n"                                   \
                                                                        \
                "MOV    RAPF, %1\n"                                     \
-               "25:\n"                                                 \
+               "27:\n"                                                 \
                "MGETL  D0FrT, D0.5, D0.6, D0.7, [%1++]\n"              \
-               "26:\n"                                                 \
+               "28:\n"                                                 \
                "MSETL  [%0++], D0FrT, D0.5, D0.6, D0.7\n"              \
+               "29:\n"                                                 \
                "SUB    %3, %3, #32\n"                                  \
-               "27:\n"                                                 \
+               "30:\n"                                                 \
                "MGETL  D0FrT, D0.5, D0.6, D0.7, [%1++]\n"              \
-               "28:\n"                                                 \
+               "31:\n"                                                 \
                "MSETL  [%0++], D0FrT, D0.5, D0.6, D0.7\n"              \
+               "32:\n"                                                 \
                "SUB    %0, %0, #8\n"                                   \
-               "29:\n"                                                 \
+               "33:\n"                                                 \
                "SETL   [%0++], D0.7, D1.7\n"                           \
                "SUB    %3, %3, #32\n"                                  \
                "1:"                                                    \
@@ -312,11 +315,15 @@
                "       .long 26b,3b\n"                                 \
                "       .long 27b,3b\n"                                 \
                "       .long 28b,3b\n"                                 \
-               "       .long 29b,4b\n"                                 \
+               "       .long 29b,3b\n"                                 \
+               "       .long 30b,3b\n"                                 \
+               "       .long 31b,3b\n"                                 \
+               "       .long 32b,3b\n"                                 \
+               "       .long 33b,4b\n"                                 \
                "       .previous\n"                                    \
                : "=r" (to), "=r" (from), "=r" (ret), "=d" (n)          \
                : "0" (to), "1" (from), "2" (ret), "3" (n)              \
-               : "D1Ar1", "D0Ar2", "memory")
+               : "D1Ar1", "D0Ar2", "cc", "memory")
 
 /*     rewind 'to' and 'from'  pointers when a fault occurs
  *
@@ -342,7 +349,7 @@
 #define __asm_copy_to_user_64bit_rapf_loop(to, from, ret, n, id)\
        __asm_copy_user_64bit_rapf_loop(to, from, ret, n, id,           \
                "LSR    D0Ar2, D0Ar2, #8\n"                             \
-               "AND    D0Ar2, D0Ar2, #0x7\n"                           \
+               "ANDS   D0Ar2, D0Ar2, #0x7\n"                           \
                "ADDZ   D0Ar2, D0Ar2, #4\n"                             \
                "SUB    D0Ar2, D0Ar2, #1\n"                             \
                "MOV    D1Ar1, #4\n"                                    \
@@ -403,47 +410,55 @@
                "MGETD  D0FrT, D0.5, D0.6, D0.7, [%1++]\n"              \
                "22:\n"                                                 \
                "MSETD  [%0++], D0FrT, D0.5, D0.6, D0.7\n"              \
-               "SUB    %3, %3, #16\n"                                  \
                "23:\n"                                                 \
-               "MGETD  D0FrT, D0.5, D0.6, D0.7, [%1++]\n"              \
-               "24:\n"                                                 \
-               "MSETD  [%0++], D0FrT, D0.5, D0.6, D0.7\n"              \
                "SUB    %3, %3, #16\n"                                  \
-               "25:\n"                                                 \
+               "24:\n"                                                 \
                "MGETD  D0FrT, D0.5, D0.6, D0.7, [%1++]\n"              \
-               "26:\n"                                                 \
+               "25:\n"                                                 \
                "MSETD  [%0++], D0FrT, D0.5, D0.6, D0.7\n"              \
+               "26:\n"                                                 \
                "SUB    %3, %3, #16\n"                                  \
                "27:\n"                                                 \
                "MGETD  D0FrT, D0.5, D0.6, D0.7, [%1++]\n"              \
                "28:\n"                                                 \
                "MSETD  [%0++], D0FrT, D0.5, D0.6, D0.7\n"              \
+               "29:\n"                                                 \
+               "SUB    %3, %3, #16\n"                                  \
+               "30:\n"                                                 \
+               "MGETD  D0FrT, D0.5, D0.6, D0.7, [%1++]\n"              \
+               "31:\n"                                                 \
+               "MSETD  [%0++], D0FrT, D0.5, D0.6, D0.7\n"              \
+               "32:\n"                                                 \
                "SUB    %3, %3, #16\n"                                  \
                "DCACHE [%1+#-64], D0Ar6\n"                             \
                "BR     $Lloop"id"\n"                                   \
                                                                        \
                "MOV    RAPF, %1\n"                                     \
-               "29:\n"                                                 \
+               "33:\n"                                                 \
                "MGETD  D0FrT, D0.5, D0.6, D0.7, [%1++]\n"              \
-               "30:\n"                                                 \
+               "34:\n"                                                 \
                "MSETD  [%0++], D0FrT, D0.5, D0.6, D0.7\n"              \
+               "35:\n"                                                 \
                "SUB    %3, %3, #16\n"                                  \
-               "31:\n"                                                 \
+               "36:\n"                                                 \
                "MGETD  D0FrT, D0.5, D0.6, D0.7, [%1++]\n"              \
-               "32:\n"                                                 \
+               "37:\n"                                                 \
                "MSETD  [%0++], D0FrT, D0.5, D0.6, D0.7\n"              \
+               "38:\n"                                                 \
                "SUB    %3, %3, #16\n"                                  \
-               "33:\n"                                                 \
+               "39:\n"                                                 \
                "MGETD  D0FrT, D0.5, D0.6, D0.7, [%1++]\n"              \
-               "34:\n"                                                 \
+               "40:\n"                                                 \
                "MSETD  [%0++], D0FrT, D0.5, D0.6, D0.7\n"              \
+               "41:\n"                                                 \
                "SUB    %3, %3, #16\n"                                  \
-               "35:\n"                                                 \
+               "42:\n"                                                 \
                "MGETD  D0FrT, D0.5, D0.6, D0.7, [%1++]\n"              \
-               "36:\n"                                                 \
+               "43:\n"                                                 \
                "MSETD  [%0++], D0FrT, D0.5, D0.6, D0.7\n"              \
+               "44:\n"                                                 \
                "SUB    %0, %0, #4\n"                                   \
-               "37:\n"                                                 \
+               "45:\n"                                                 \
                "SETD   [%0++], D0.7\n"                                 \
                "SUB    %3, %3, #16\n"                                  \
                "1:"                                                    \
@@ -483,11 +498,19 @@
                "       .long 34b,3b\n"                                 \
                "       .long 35b,3b\n"                                 \
                "       .long 36b,3b\n"                                 \
-               "       .long 37b,4b\n"                                 \
+               "       .long 37b,3b\n"                                 \
+               "       .long 38b,3b\n"                                 \
+               "       .long 39b,3b\n"                                 \
+               "       .long 40b,3b\n"                                 \
+               "       .long 41b,3b\n"                                 \
+               "       .long 42b,3b\n"                                 \
+               "       .long 43b,3b\n"                                 \
+               "       .long 44b,3b\n"                                 \
+               "       .long 45b,4b\n"                                 \
                "       .previous\n"                                    \
                : "=r" (to), "=r" (from), "=r" (ret), "=d" (n)          \
                : "0" (to), "1" (from), "2" (ret), "3" (n)              \
-               : "D1Ar1", "D0Ar2", "memory")
+               : "D1Ar1", "D0Ar2", "cc", "memory")
 
 /*     rewind 'to' and 'from'  pointers when a fault occurs
  *
@@ -513,7 +536,7 @@
 #define __asm_copy_to_user_32bit_rapf_loop(to, from, ret, n, id)\
        __asm_copy_user_32bit_rapf_loop(to, from, ret, n, id,           \
                "LSR    D0Ar2, D0Ar2, #8\n"                             \
-               "AND    D0Ar2, D0Ar2, #0x7\n"                           \
+               "ANDS   D0Ar2, D0Ar2, #0x7\n"                           \
                "ADDZ   D0Ar2, D0Ar2, #4\n"                             \
                "SUB    D0Ar2, D0Ar2, #1\n"                             \
                "MOV    D1Ar1, #4\n"                                    \
@@ -538,23 +561,31 @@ unsigned long __copy_user(void __user *pdst, const void 
*psrc,
        if ((unsigned long) src & 1) {
                __asm_copy_to_user_1(dst, src, retn);
                n--;
+               if (retn)
+                       return retn + n;
        }
        if ((unsigned long) dst & 1) {
                /* Worst case - byte copy */
                while (n > 0) {
                        __asm_copy_to_user_1(dst, src, retn);
                        n--;
+                       if (retn)
+                               return retn + n;
                }
        }
        if (((unsigned long) src & 2) && n >= 2) {
                __asm_copy_to_user_2(dst, src, retn);
                n -= 2;
+               if (retn)
+                       return retn + n;
        }
        if ((unsigned long) dst & 2) {
                /* Second worst case - word copy */
                while (n >= 2) {
                        __asm_copy_to_user_2(dst, src, retn);
                        n -= 2;
+                       if (retn)
+                               return retn + n;
                }
        }
 
@@ -569,6 +600,8 @@ unsigned long __copy_user(void __user *pdst, const void 
*psrc,
                while (n >= 8) {
                        __asm_copy_to_user_8x64(dst, src, retn);
                        n -= 8;
+                       if (retn)
+                               return retn + n;
                }
        }
        if (n >= RAPF_MIN_BUF_SIZE) {
@@ -581,6 +614,8 @@ unsigned long __copy_user(void __user *pdst, const void 
*psrc,
                while (n >= 8) {
                        __asm_copy_to_user_8x64(dst, src, retn);
                        n -= 8;
+                       if (retn)
+                               return retn + n;
                }
        }
 #endif
@@ -588,11 +623,15 @@ unsigned long __copy_user(void __user *pdst, const void 
*psrc,
        while (n >= 16) {
                __asm_copy_to_user_16(dst, src, retn);
                n -= 16;
+               if (retn)
+                       return retn + n;
        }
 
        while (n >= 4) {
                __asm_copy_to_user_4(dst, src, retn);
                n -= 4;
+               if (retn)
+                       return retn + n;
        }
 
        switch (n) {
@@ -609,6 +648,10 @@ unsigned long __copy_user(void __user *pdst, const void 
*psrc,
                break;
        }
 
+       /*
+        * If we get here, retn correctly reflects the number of failing
+        * bytes.
+        */
        return retn;
 }
 EXPORT_SYMBOL(__copy_user);
@@ -617,16 +660,14 @@ EXPORT_SYMBOL(__copy_user);
        __asm_copy_user_cont(to, from, ret,     \
                "       GETB D1Ar1,[%1++]\n"    \
                "2:     SETB [%0++],D1Ar1\n",   \
-               "3:     ADD  %2,%2,#1\n"        \
-               "       SETB [%0++],D1Ar1\n",   \
+               "3:     ADD  %2,%2,#1\n",       \
                "       .long 2b,3b\n")
 
 #define __asm_copy_from_user_2x_cont(to, from, ret, COPY, FIXUP, TENTRY) \
        __asm_copy_user_cont(to, from, ret,             \
                "       GETW D1Ar1,[%1++]\n"            \
                "2:     SETW [%0++],D1Ar1\n" COPY,      \
-               "3:     ADD  %2,%2,#2\n"                \
-               "       SETW [%0++],D1Ar1\n" FIXUP,     \
+               "3:     ADD  %2,%2,#2\n" FIXUP,         \
                "       .long 2b,3b\n" TENTRY)
 
 #define __asm_copy_from_user_2(to, from, ret) \
@@ -636,145 +677,26 @@ EXPORT_SYMBOL(__copy_user);
        __asm_copy_from_user_2x_cont(to, from, ret,     \

_______________________________________________
unionfs-cvs mailing list: http://unionfs.filesystems.org/
unionfs-cvs@fsl.cs.sunysb.edu
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs

Reply via email to