linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 4.19 000/422] 4.19.85-stable review
@ 2019-11-19  5:13 Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 001/422] KVM: x86: introduce is_pae_paging Greg Kroah-Hartman
                   ` (425 more replies)
  0 siblings, 426 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, torvalds, akpm, linux, shuah, patches,
	ben.hutchings, lkft-triage, stable

This is the start of the stable review cycle for the 4.19.85 release.
There are 422 patches in this series, all will be posted as a response
to this one.  If anyone has any issues with these being applied, please
let me know.

Responses should be made by Thu, 21 Nov 2019 05:02:35 +0000.
Anything received after that time might be too late.

The whole patch series can be found in one patch at:
	https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.85-rc1.gz
or in the git tree and branch at:
	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
and the diffstat can be found below.

thanks,

greg k-h

-------------
Pseudo-Shortlog of commits:

Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Linux 4.19.85-rc1

zhong jiang <zhongjiang@huawei.com>
    memfd: Use radix_tree_deref_slot_protected to avoid the warning.

Arnd Bergmann <arnd@arndb.de>
    net: phy: mdio-bcm-unimac: mark PM functions as __maybe_unused

Vasily Gorbik <gor@linux.ibm.com>
    s390/vdso: correct vdso mapping for compat tasks

Rui Miguel Silva <rui.silva@linaro.org>
    media: ov2680: fix null dereference at power on

Israel Rukshin <israelr@mellanox.com>
    IB/iser: Fix possible NULL deref at iser_inv_desc()

Kirill Tkhai <ktkhai@virtuozzo.com>
    fuse: use READ_ONCE on congestion_threshold and max_background

Guido Kiener <guido.kiener@rohde-schwarz.com>
    usb: usbtmc: uninitialized symbol 'actual' in usbtmc_ioctl_clear

Chunfeng Yun <chunfeng.yun@mediatek.com>
    usb: xhci-mtk: fix ISOC error when interval is zero

Tan Hu <tan.hu@zte.com.cn>
    netfilter: masquerade: don't flush all conntracks if only one address deleted on device

Alexandre Belloni <alexandre.belloni@bootlin.com>
    rtc: armada38x: fix possible race condition

Alexandre Belloni <alexandre.belloni@bootlin.com>
    rtc: tx4939: fixup nvmem name and register size

Alexandre Belloni <alexandre.belloni@bootlin.com>
    rtc: isl1208: avoid possible sysfs race

Rob Herring <robh@kernel.org>
    ARM: dts: lpc32xx: Fix SPI controller node names

Rob Herring <robh@kernel.org>
    arm64: dts: lg: Fix SPI controller node names

Rob Herring <robh@kernel.org>
    arm64: dts: amd: Fix SPI bus warnings

Finn Thain <fthain@telegraphics.com.au>
    scsi: NCR5380: Check for bus reset

Finn Thain <fthain@telegraphics.com.au>
    scsi: NCR5380: Handle BUS FREE during reselection

Finn Thain <fthain@telegraphics.com.au>
    scsi: NCR5380: Don't call dsprintk() following reselection interrupt

Finn Thain <fthain@telegraphics.com.au>
    scsi: NCR5380: Don't clear busy flag when abort fails

Finn Thain <fthain@telegraphics.com.au>
    scsi: NCR5380: Check for invalid reselection target

Finn Thain <fthain@telegraphics.com.au>
    scsi: NCR5380: Use DRIVER_SENSE to indicate valid sense data

Finn Thain <fthain@telegraphics.com.au>
    scsi: NCR5380: Withhold disconnect privilege for REQUEST SENSE

Finn Thain <fthain@telegraphics.com.au>
    scsi: NCR5380: Have NCR5380_select() return a bool

Hannes Reinecke <hare@suse.com>
    scsi: NCR5380: Clear all unissued commands on host reset

Ilan Peer <ilan.peer@intel.com>
    iwlwifi: mvm: Allow TKIP for AP mode

Sara Sharon <sara.sharon@intel.com>
    iwlwifi: mvm: use correct FIFO length

Golan Ben Ami <golan.ben.ami@intel.com>
    iwlwifi: pcie: fit reclaim msg to MAX_MSG_LEN

Johannes Berg <johannes.berg@intel.com>
    iwlwifi: pcie: gen2: build A-MSDU only for GSO

Johannes Berg <johannes.berg@intel.com>
    iwlwifi: api: annotate compressed BA notif array sizes

Sara Sharon <sara.sharon@intel.com>
    iwlwifi: pcie: read correct prph address for newer devices

Erel Geron <erelx.geron@intel.com>
    iwlwifi: fix non_shared_ant for 22000 devices

Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    iwlwifi: dbg: don't crash if the firmware crashes in the middle of a debug dump

Dan Aloni <dan@kernelim.com>
    crypto: fix a memory leak in rsa-kcs1pad's encryption mode

Christoph Manszewski <c.manszewski@samsung.com>
    crypto: s5p-sss: Fix Fix argument list alignment

Christoph Manszewski <c.manszewski@samsung.com>
    crypto: s5p-sss: Fix race in error handling

Dexuan Cui <decui@microsoft.com>
    x86/hyperv: Suppress "PCI: Fatal: No config space access function found"

Sanjay Kumar Konduri <sanjay.konduri@redpinesignals.com>
    Bluetooth: btrsi: fix bt tx timeout issue

Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Bluetooth: L2CAP: Detect if remote is not able to use the whole MPS

Balakrishna Godavarthi <bgodavar@codeaurora.org>
    Bluetooth: hci_serdev: clear HCI_UART_PROTO_READY to avoid closing proto races

Stuart Hayes <stuart.w.hayes@gmail.com>
    firmware: dell_rbu: Make payload memory uncachable

Rob Herring <robh@kernel.org>
    ARM: dts: realview: Fix SPI controller node names

Justin Ernst <justin.ernst@hpe.com>
    EDAC: Raise the maximum number of memory controllers

Arnd Bergmann <arnd@arndb.de>
    RDMA: Fix dependencies for rdma_user_mmap_io

Chao Yu <yuchao0@huawei.com>
    f2fs: mark inode dirty explicitly in recover_inode()

Chao Yu <yuchao0@huawei.com>
    f2fs: fix to recover inode's project id during POR

Jaegeuk Kim <jaegeuk@kernel.org>
    f2fs: update i_size after DIO completion

Keith Busch <keith.busch@intel.com>
    PCI/ERR: Run error recovery callbacks for all affected devices

YueHaibing <yuehaibing@huawei.com>
    net: faraday: fix return type of ndo_start_xmit function

YueHaibing <yuehaibing@huawei.com>
    net: smsc: fix return type of ndo_start_xmit function

Marc Dietrich <marvin24@gmx.de>
    ARM: dts: paz00: fix wakeup gpio keycode

Marcel Ziswiler <marcel.ziswiler@toradex.com>
    ARM: tegra: colibri_t30: fix mcp2515 can controller interrupt polarity

Marcel Ziswiler <marcel.ziswiler@toradex.com>
    ARM: tegra: apalis_t30: fix mcp2515 can controller interrupt polarity

Marcel Ziswiler <marcel.ziswiler@toradex.com>
    ARM: tegra: apalis_t30: fix mmc1 cmd pull-up

Marcel Ziswiler <marcel.ziswiler@toradex.com>
    ARM: dts: tegra20: restore address order

Marcel Ziswiler <marcel.ziswiler@toradex.com>
    ARM: dts: tegra30: fix xcvr-setup-use-fuses

Thierry Reding <treding@nvidia.com>
    arm64: tegra: I2C on Tegra194 is not compatible with Tegra114

Fabio Estevam <festevam@gmail.com>
    ARM: dts: imx51-zii-rdu1: Fix the rtc compatible string

Rob Herring <robh@kernel.org>
    arm64: dts: fsl: Fix I2C and SPI bus warnings

Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    ARM: dts: meson8b: odroidc1: enable the SAR ADC

Hauke Mehrtens <hauke@hauke-m.de>
    phy: lantiq: Fix compile warning

Chengguang Xu <cgxu519@gmx.com>
    f2fs: fix remount problem of option io_bits

Jason Yan <yanaijie@huawei.com>
    scsi: libsas: always unregister the old device if going to discover new

Nathan Chancellor <natechancellor@gmail.com>
    iw_cxgb4: Use proper enumerated type in c4iw_bar2_addrs

Alex Williamson <alex.williamson@redhat.com>
    vfio/pci: Mask buggy SR-IOV VF INTx support

Li Qiang <liq3ea@gmail.com>
    vfio/pci: Fix potential memory leak in vfio_msi_cap_len

Stephen Hemminger <stephen@networkplumber.org>
    vmbus: keep pointer to ring buffer page

zhong jiang <zhongjiang@huawei.com>
    misc: genwqe: should return proper error value.

Laura Abbott <labbott@redhat.com>
    misc: kgdbts: Fix restrict error

Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    silmbus: ngd: register controller after power up.

Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    slimbus: ngd: return proper error code instead of zero

Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    slimbus: ngd: register ngd driver only once.

Suzuki K Poulose <suzuki.poulose@arm.com>
    coresight: dynamic-replicator: Handle multiple connections

Leo Yan <leo.yan@linaro.org>
    coresight: tmc: Fix byte-address alignment for RRP

Tomasz Nowicki <tnowicki@caviumnetworks.com>
    coresight: etm4x: Configure EL2 exception level when kernel is running in HYP

Suzuki K Poulose <suzuki.poulose@arm.com>
    coresight: tmc-etr: Handle driver mode specific ETR buffers

Suzuki K Poulose <suzuki.poulose@arm.com>
    coresight: perf: Disable trace path upon source error

Suzuki K Poulose <suzuki.poulose@arm.com>
    coresight: perf: Fix per cpu path management

Suzuki K Poulose <suzuki.poulose@arm.com>
    coresight: Fix handling of sinks

zhong jiang <zhongjiang@huawei.com>
    coresight: Use ERR_CAST instead of ERR_PTR

Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    usb: gadget: uvc: Only halt video streaming endpoint in bulk mode

Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    usb: gadget: uvc: Factor out video USB request queueing

Anson Huang <Anson.Huang@nxp.com>
    ARM: dts: imx6ull: update vdd_soc voltage for 900MHz operating point

Andreas Kemnade <andreas@kemnade.info>
    phy: phy-twl4030-usb: fix denied runtime access

Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    phy: renesas: rcar-gen3-usb2: fix vbus_ctrl for role sysfs

Florian Fainelli <f.fainelli@gmail.com>
    phy: brcm-sata: allow PHY_BRCM_SATA driver to be built for DSL SoCs

zhong jiang <zhongjiang@huawei.com>
    ARM: at91: pm: call put_device instead of of_node_put in at91_pm_config_ws

Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
    gpiolib: Fix gpio_direction_* for single direction GPIOs

Brendan Higgins <brendanhiggins@google.com>
    i2c: aspeed: fix invalid clock parameters for very large divisors

Marek Szyprowski <m.szyprowski@samsung.com>
    ARM: dts: exynos: Correct audio subsystem parent clock on Peach Chromebooks

Paul Elder <paul.elder@ideasonboard.com>
    usb: gadget: uvc: configfs: Sort frame intervals upon writing

Joel Pepper <joel.pepper@rwth-aachen.de>
    usb: gadget: uvc: configfs: Prevent format changes after linking header

Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    usb: gadget: uvc: configfs: Drop leaked references to config items

Heiko Stuebner <heiko@sntech.de>
    ARM: dts: rockchip: explicitly set vcc_sd0 pin to gpio on rk3188-radxarock

Nathan Chancellor <natechancellor@gmail.com>
    media: davinci: Fix implicit enum conversion warning

Brad Love <brad@nextdimension.cc>
    media: au0828: Fix incorrect error messages

Jia-Ju Bai <baijiaju1990@gmail.com>
    media: pci: ivtv: Fix a sleep-in-atomic-context bug in ivtv_yuv_init()

Arnd Bergmann <arnd@arndb.de>
    media: imx: work around false-positive warning, again

Petr Machata <petrm@mellanox.com>
    mlxsw: Make MLXSW_SP1_FWREV_MINOR a hard requirement

Vicente Bergas <vicencb@gmail.com>
    arm64: dts: rockchip: Fix microSD in rk3399 sapphire board

Dengcheng Zhu <dzhu@wavecomp.com>
    MIPS: kexec: Relax memory restriction

Qiuxu Zhuo <qiuxu.zhuo@intel.com>
    EDAC: Correct DIMM capacity unit symbol

Matthew Whitehead <tedheadster@gmail.com>
    x86/CPU: Change query logic so CPUID is enabled before testing

Matthew Whitehead <tedheadster@gmail.com>
    x86/CPU: Use correct macros for Cyrix calls

YueHaibing <yuehaibing@huawei.com>
    net: freescale: fix return type of ndo_start_xmit function

YueHaibing <yuehaibing@huawei.com>
    net: micrel: fix return type of ndo_start_xmit function

Florian Fainelli <f.fainelli@gmail.com>
    net: phy: mdio-bcm-unimac: Allow configuring MDIO clock divider

Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
    samples/bpf: fix compilation failure

Keith Busch <keith.busch@intel.com>
    PCI/ERR: Use slot reset if available

Keith Busch <keith.busch@intel.com>
    PCI/AER: Don't read upstream ports below fatal errors

Keith Busch <keith.busch@intel.com>
    PCI/AER: Take reference on error devices

Shahed Shaikh <Shahed.Shaikh@cavium.com>
    bnx2x: Ignore bandwidth attention in single function mode

Rob Herring <robh@kernel.org>
    ARM: dts: stm32: Fix SPI controller node names

Baruch Siach <baruch@tkos.co.il>
    ARM: dts: clearfog: fix sdhci supply property name

Yannick Fertré <yannick.fertre@st.com>
    ARM: dts: stm32: enable display on stm32mp157c-ev1 board

Borislav Petkov <bp@suse.de>
    x86/mce-inject: Reset injection struct after injection

Rob Herring <robh@kernel.org>
    ARM: dts: marvell: Fix SPI and I2C bus warnings

Stefan Agner <stefan@agner.ch>
    crypto: arm/crc32 - avoid warning when compiling with Clang

Stefan Agner <stefan@agner.ch>
    cpufeature: avoid warning when compiling with clang

Eric Biggers <ebiggers@google.com>
    crypto: chacha20 - Fix chacha20_block() keystream alignment (again)

Nathan Chancellor <natechancellor@gmail.com>
    spi: pic32: Use proper enum in dmaengine_prep_slave_rg

Rob Herring <robh@kernel.org>
    ARM: dts: ste: Fix SPI controller node names

Linus Walleij <linus.walleij@linaro.org>
    ARM: dts: ux500: Fix LCDA clock line muxing

Geert Uytterhoeven <geert+renesas@glider.be>
    ARM: dts: ux500: Correct SCU unit address

Chao Yu <yuchao0@huawei.com>
    f2fs: fix to recover inode's uid/gid during POR

Jaegeuk Kim <jaegeuk@kernel.org>
    f2fs: avoid infinite loop in f2fs_alloc_nid

Rob Herring <robh@kernel.org>
    ARM: dts: ti: Fix SPI and I2C bus warnings

Grygorii Strashko <grygorii.strashko@ti.com>
    ARM: dts: am335x-evm: fix number of cpsw

Keith Busch <keith.busch@intel.com>
    PCI: portdrv: Initialize service drivers directly

Petr Machata <petrm@mellanox.com>
    mlxsw: spectrum: Init shaper for TCs 8..15

Takashi Iwai <tiwai@suse.de>
    brcmsmac: Use kvmalloc() for ucode allocations

Arend van Spriel <arend.vanspriel@broadcom.com>
    brcmfmac: increase buffer for obtaining firmware capabilities

Vasily Gorbik <gor@linux.ibm.com>
    s390/vdso: correct CFI annotations of vDSO functions

Vasily Gorbik <gor@linux.ibm.com>
    s390/vdso: avoid 64-bit vdso mapping for compat tasks

Halil Pasic <pasic@linux.ibm.com>
    s390/zcrypt: enable AP bus scan without a valid default domain

Guido Kiener <guido@kiener-muenchen.de>
    usb: usbtmc: Fix ioctl USBTMC_IOCTL_ABORT_BULK_OUT

Loic Poulain <loic.poulain@linaro.org>
    usb: chipidea: Fix otg event handler

Nicolas Adell <nicolas.adell@actia.fr>
    usb: chipidea: imx: enable OTG overcurrent in case USB subsystem is already started

Jakub Kicinski <jakub.kicinski@netronome.com>
    nfp: provide a better warning when ring allocation fails

Jian Shen <shenjian15@huawei.com>
    net: hns3: Fix parameter type for q_id in hclge_tm_q_to_qs_map_cfg()

Jian Shen <shenjian15@huawei.com>
    net: hns3: Fix client initialize state issue when roce client initialize failed

Jian Shen <shenjian15@huawei.com>
    net: hns3: Clear client pointer when initialize client failed or unintialize finished

Jian Shen <shenjian15@huawei.com>
    net: hns3: Fix cmdq registers initialization issue for vf

Fuyun Liang <liangfuyun1@huawei.com>
    net: hns3: Fix for setting speed for phy failed problem

YueHaibing <yuehaibing@huawei.com>
    net: sun: fix return type of ndo_start_xmit function

YueHaibing <yuehaibing@huawei.com>
    net: amd: fix return type of ndo_start_xmit function

YueHaibing <yuehaibing@huawei.com>
    net: broadcom: fix return type of ndo_start_xmit function

YueHaibing <yuehaibing@huawei.com>
    net: xilinx: fix return type of ndo_start_xmit function

YueHaibing <yuehaibing@huawei.com>
    net: toshiba: fix return type of ndo_start_xmit function

YueHaibing <yuehaibing@huawei.com>
    net: marvell: fix return type of ndo_start_xmit function

Antoine Tenart <antoine.tenart@bootlin.com>
    net: mvpp2: fix the number of queues per cpu for PPv2.2

Andreas Kemnade <andreas@kemnade.info>
    power: supply: twl4030_charger: disable eoc interrupt on linear charge

Andreas Kemnade <andreas@kemnade.info>
    power: supply: twl4030_charger: fix charging current out-of-bounds

Rob Herring <robh@kernel.org>
    libfdt: Ensure INT_MAX is defined in libfdt_env.h

Rob Herring <robh@kernel.org>
    of/unittest: Fix I2C bus unit-address error

Viresh Kumar <viresh.kumar@linaro.org>
    OPP: Protect dev_list with opp_table lock

Rob Herring <robh@kernel.org>
    ARM: dts: atmel: Fix I2C and SPI bus warnings

Håkon Bugge <Haakon.Bugge@oracle.com>
    RDMA/i40iw: Fix incorrect iterator type

Anton Blanchard <anton@samba.org>
    powerpc: Fix duplicate const clang warning in user access code

Nathan Fontenot <nfont@linux.vnet.ibm.com>
    powerpc/pseries: Disable CPU hotplug across migrations

Nathan Fontenot <nfont@linux.vnet.ibm.com>
    powerpc/pseries/memory-hotplug: Only update DT once per memory DLPAR request

Nicholas Piggin <npiggin@gmail.com>
    powerpc/64s/hash: Fix stab_rr off by one initialization

Breno Leitao <leitao@debian.org>
    selftests/powerpc: Do not fail with reschedule

Breno Leitao <leitao@debian.org>
    powerpc/iommu: Avoid derefence before pointer check

YueHaibing <yuehaibing@huawei.com>
    net: ibm: fix return type of ndo_start_xmit function

YueHaibing <yuehaibing@huawei.com>
    net: cavium: fix return type of ndo_start_xmit function

YueHaibing <yuehaibing@huawei.com>
    net: hns3: fix return type of ndo_start_xmit function

YueHaibing <yuehaibing@huawei.com>
    ipmi: fix return value of ipmi_set_my_LUN

Corey Minyard <cminyard@mvista.com>
    ipmi:dmi: Ignore IPMI SMBIOS entries with a zero base address

Colin Ian King <colin.king@canonical.com>
    ipmi_si: fix potential integer overflow on large shift

Meelis Roos <mroos@linux.ee>
    ipmi_si_pci: fix NULL device in ipmi_si error message

Shuming Fan <shumingf@realtek.com>
    ASoC: rt5682: Fix the boost volume at the begining of playback

Peter Shih <pihsun@chromium.org>
    spi: mediatek: Don't modify spi_transfer when transfer.

Jonas Gorski <jonas.gorski@gmail.com>
    spi/bcm63xx-hsspi: keep pll clk enabled

Yonghong Song <yhs@fb.com>
    samples/bpf: fix a compilation failure

Kishon Vijay Abraham I <kishon@ti.com>
    arm64: dts: ti: k3-am65: Change #address-cells and #size-cells of interconnect to 2

Douglas Anderson <dianders@chromium.org>
    tty: serial: qcom_geni_serial: Fix serial when not used as console

Anton Vasilyev <vasilyev@ispras.ru>
    serial: mxs-auart: Fix potential infinite loop

Marek Szyprowski <m.szyprowski@samsung.com>
    serial: samsung: Enable baud clock for UART reset procedure in resume

Nava kishore Manne <nava.manne@xilinx.com>
    serial: uartps: Fix suspend functionality

Rob Herring <robh@kernel.org>
    ARM: dts: xilinx: Fix I2C and SPI bus warnings

Gustavo A. R. Silva <gustavo@embeddedor.com>
    PCI: mediatek: Fix unchecked return value

Jia-Ju Bai <baijiaju1990@gmail.com>
    net: socionext: Fix two sleep-in-atomic-context bugs in ave_rxfifo_reset()

Sinan Kaya <okaya@kernel.org>
    PCI/ACPI: Correct error message for ASPM disabling

Javier Martinez Canillas <javierm@redhat.com>
    media: ov2680: don't register the v4l2 subdevice before checking chip ID

Koji Matsuoka <koji.matsuoka.xm@renesas.com>
    media: vsp1: Fix YCbCr planar formats pitch calculation

Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    media: vsp1: Fix vsp1_regs.h license header

Julian Wiedmann <jwi@linux.ibm.com>
    s390/qeth: invoke softirqs after napi_schedule()

Julian Wiedmann <jwi@linux.ibm.com>
    s390/qeth: uninstall IRQ handler on device removal

Dan Carpenter <dan.carpenter@oracle.com>
    ath9k: Fix a locking bug in ath9k_add_interface()

Florian Westphal <fw@strlen.de>
    netfilter: nf_tables: avoid BUG_ON usage

Hans de Goede <hdegoede@redhat.com>
    ACPI / LPSS: Exclude I2C busses shared with PUNIT from pmc_atom_d3_mask

Rob Herring <robh@kernel.org>
    arm64: dts: rockchip: Fix I2C bus unit-address error on rk3399-puma-haikou

Rob Herring <robh@kernel.org>
    ARM: dts: rockchip: Fix erroneous SPI bus dtc warnings on rk3036

Vivek Gautam <vivek.gautam@codeaurora.org>
    scsi: ufshcd: Fix NULL pointer dereference for in ufshcd_init

Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
    ip_gre: fix parsing gre header in ipgre_err

Bernd Edlinger <bernd.edlinger@hotmail.de>
    kernfs: Fix range checks in kernfs_get_target_path

Banajit Goswami <bgoswami@codeaurora.org>
    component: fix loop condition to call unbind() if bind() fails

Tomasz Figa <tomasz.figa@gmail.com>
    power: supply: max8998-charger: Fix platform data retrieval

Claudiu Beznea <claudiu.beznea@microchip.com>
    power: reset: at91-poweroff: do not procede if at91_shdwc is allocated

Dan Carpenter <dan.carpenter@oracle.com>
    power: supply: ab8500_fg: silence uninitialized variable warnings

Rob Herring <robh@kernel.org>
    arm64: dts: meson: Fix erroneous SPI bus warnings

Paolo Valente <paolo.valente@linaro.org>
    blok, bfq: do not plug I/O if all queues are weight-raised

Paolo Valente <paolo.valente@linaro.org>
    block, bfq: inject other-queue I/O into seeky idle queues on NCQ flash

Hari Vyas <hari.vyas@broadcom.com>
    arm64: fix for bad_mode() handler to always result in panic

Ganesh Goudar <ganeshgr@chelsio.com>
    cxgb4: Fix endianness issue in t4_fwcache()

Sherry Yang <sherryy@android.com>
    android: binder: no outgoing transaction when thread todo has transaction

Rob Herring <robh@kernel.org>
    ARM: dts: sun9i: Fix I2C bus warnings

Ludovic Desroches <ludovic.desroches@microchip.com>
    pinctrl: at91: don't use the same irqchip with multiple gpiochips

Rob Herring <robh@kernel.org>
    ARM: dts: sunxi: Fix I2C bus warnings

Dinh Nguyen <dinguyen@kernel.org>
    ARM: dts: socfpga: Fix I2C bus unit-address error

Alan Modra <amodra@gmail.com>
    powerpc/vdso: Correct call frame information

Rob Herring <robh@kernel.org>
    ARM: dts: aspeed: Fix I2C bus warnings

Rob Herring <robh@kernel.org>
    ARM: dts: bcm: Fix SPI bus warnings

Rob Herring <robh@kernel.org>
    arm64: dts: broadcom: Fix I2C and SPI bus warnings

Lina Iyer <ilina@codeaurora.org>
    drivers: qcom: rpmh-rsc: clear wait_for_compl after use

Niklas Cassel <niklas.cassel@linaro.org>
    soc: qcom: apr: Avoid string overflow

Niklas Cassel <niklas.cassel@linaro.org>
    soc: qcom: wcnss_ctrl: Avoid string overflow

Douglas Anderson <dianders@chromium.org>
    soc: qcom: geni: geni_se_clk_freq_match() should always accept multiples

Douglas Anderson <dianders@chromium.org>
    soc: qcom: geni: Don't ignore clk_round_rate() errors in geni_se_clk_tbl_get()

Christian Lamparter <chunkeey@gmail.com>
    ARM: dts: qcom: ipq4019: fix cpu0's qcom,saw2 reg value

Cong Wang <xiyou.wangcong@gmail.com>
    llc: avoid blocking in llc_sap_close()

Dan Carpenter <dan.carpenter@oracle.com>
    pinctrl: at91-pio4: fix has_config check in atmel_pctl_dt_subnode_to_map()

Geert Uytterhoeven <geert+renesas@glider.be>
    arm64: dts: renesas: r8a77965: Fix clock/reset for usb2_phy1

Geert Uytterhoeven <geert+renesas@glider.be>
    arm64: dts: renesas: r8a77965: Fix HS-USB compatible

Magnus Damm <damm+renesas@opensource.se>
    arm64: dts: renesas: r8a77965: Attach the SYS-DMAC to the IPMMU

Kieran Bingham <kieran.bingham@ideasonboard.com>
    arm64: dts: renesas: salvator-common: adv748x: Override secondary addresses

Takashi Iwai <tiwai@suse.de>
    ALSA: intel8x0m: Register irq handler after register initializations

Neil Armstrong <narmstrong@baylibre.com>
    arm64: dts: meson-axg: use the proper compatible for ethmac

Jerome Brunet <jbrunet@baylibre.com>
    arm64: dts: meson: libretech: update board model

Andrew Lunn <andrew@lunn.ch>
    net: bcmgenet: Fix speed selection for reverse MII

Arnd Bergmann <arnd@arndb.de>
    media: dvb: fix compat ioctl translation

Lao Wei <zrlw@qq.com>
    media: fix: media: pci: meye: validate offset to avoid arbitrary access

Mark Brown <broonie@kernel.org>
    ALSA: hda: Fix implicit definition of pci_iomap() on SH

Geert Uytterhoeven <geert+renesas@glider.be>
    media: dt-bindings: adv748x: Fix decimal unit addresses

Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    nvmem: core: return error code instead of NULL from nvmem_device_get

Michael Kelley <mikelley@microsoft.com>
    Drivers: hv: vmbus: Fix synic per-cpu context initialization

Yana Esina <yana.esina@aquantia.com>
    net: aquantia: fix hw_atl_utils_fw_upload_dwords

Masami Hiramatsu <mhiramat@kernel.org>
    kprobes: Don't call BUG_ON() if there is a kprobe in use on free list

Deepak Ukey <deepak.ukey@microchip.com>
    scsi: pm80xx: Fixed system hang issue during kexec boot

Deepak Ukey <deepak.ukey@microchip.com>
    scsi: pm80xx: Corrected dma_unmap_sg() parameter

Oleksij Rempel <o.rempel@pengutronix.de>
    ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" is set

George Kennedy <george.kennedy@oracle.com>
    scsi: sym53c8xx: fix NULL pointer dereference panic in sym_int_sir()

James Smart <jsmart2021@gmail.com>
    scsi: lpfc: Fix errors in log messages.

James Smart <jsmart2021@gmail.com>
    scsi: lpfc: Correct invalid EQ doorbell write on if_type=6

James Smart <jsmart2021@gmail.com>
    scsi: lpfc: Fix GFT_ID and PRLI logic for RSCN

Quinn Tran <quinn.tran@cavium.com>
    scsi: qla2xxx: Fix duplicate switch's Nport ID entries

Quinn Tran <quinn.tran@cavium.com>
    scsi: qla2xxx: Fix dropped srb resource.

Quinn Tran <quinn.tran@cavium.com>
    scsi: qla2xxx: Fix port speed display on chip reset

Sawan Chandak <sawan.chandak@cavium.com>
    scsi: qla2xxx: Check for Register disconnect

Quinn Tran <quinn.tran@cavium.com>
    scsi: qla2xxx: Increase abort timeout value

Quinn Tran <quinn.tran@cavium.com>
    scsi: qla2xxx: Fix deadlock between ATIO and HW lock

Quinn Tran <quinn.tran@cavium.com>
    scsi: qla2xxx: Terminate Plogi/PRLI if WWN is 0

Quinn Tran <quinn.tran@cavium.com>
    scsi: qla2xxx: Defer chip reset until target mode is enabled

Quinn Tran <quinn.tran@cavium.com>
    scsi: qla2xxx: Fix iIDMA error

Quinn Tran <quinn.tran@cavium.com>
    scsi: qla2xxx: Use correct qpair for ABTS/CMD

Wang Shilong <wangshilong1991@gmail.com>
    f2fs: fix setattr project check upon fssetxattr ioctl

Chao Yu <yuchao0@huawei.com>
    f2fs: fix memory leak of percpu counter in fill_super()

Chao Yu <yuchao0@huawei.com>
    f2fs: fix memory leak of write_io in fill_super()

Eric W. Biederman <ebiederm@xmission.com>
    signal: Properly deliver SIGSEGV from x86 uprobes

Eric W. Biederman <ebiederm@xmission.com>
    signal: Properly deliver SIGILL from uprobes

Eric W. Biederman <ebiederm@xmission.com>
    signal: Always ignore SIGKILL and SIGSTOP sent to the global init

Michael J. Ruhl <michael.j.ruhl@intel.com>
    IB/hfi1: Missing return value in error path for user sdma

Dan Carpenter <dan.carpenter@oracle.com>
    RDMA/hns: Fix an error code in hns_roce_v2_init_eq_table()

Dan Carpenter <dan.carpenter@oracle.com>
    dmaengine: at_xdmac: remove a stray bottom half unlock

Felix Fietkau <nbd@nbd.name>
    ath9k: add back support for using active monitor interfaces for tx99

Alexandre Belloni <alexandre.belloni@bootlin.com>
    rtc: pl030: fix possible race condition

Alexandre Belloni <alexandre.belloni@bootlin.com>
    rtc: mt6397: fix possible race condition

Qiuxu Zhuo <qiuxu.zhuo@intel.com>
    EDAC, sb_edac: Return early on ADDRV bit and address type test

Daniel Silsby <dansilsby@gmail.com>
    dmaengine: dma-jz4780: Further residue status fix

Paul Cercueil <paul@crapouillou.net>
    dmaengine: dma-jz4780: Don't depend on MACH_JZ4780

Chunfeng Yun <chunfeng.yun@mediatek.com>
    usb: mtu3: disable vbus rise/fall interrupts of ltssm

Marek Szyprowski <m.szyprowski@samsung.com>
    ARM: dts: exynos: Disable pull control for PMIC IRQ line on Artik5 board

Radu Pirea <radu.pirea@microchip.com>
    tty/serial: atmel: Change the driver to work under at91-usart MFD

Vicente Bergas <vicencb@gmail.com>
    arm64: dts: rockchip: Fix VCC5V0_HOST_EN on rk3399-sapphire

Sudeep Holla <sudeep.holla@arm.com>
    firmware: arm_scmi: use strlcpy to ensure NULL-terminated strings

Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    sched/debug: Use symbolic names for task state constants

Peter Zijlstra <peterz@infradead.org>
    sched/debug: Explicitly cast sched_feat() to bool

YueHaibing <yuehaibing@huawei.com>
    failover: Fix error return code in net_failover_create

Jaegeuk Kim <jaegeuk@kernel.org>
    f2fs: submit bio after shutdown

H. Nikolaus Schaller <hns@goldelico.com>
    ARM: dts: omap3-gta04: keep vpll2 always on

H. Nikolaus Schaller <hns@goldelico.com>
    ARM: dts: omap3-gta04: make NAND partitions compatible with recent U-Boot

H. Nikolaus Schaller <hns@goldelico.com>
    ARM: dts: omap3-gta04: fix touchscreen tsc2007

H. Nikolaus Schaller <hns@goldelico.com>
    ARM: dts: omap3-gta04: tvout: enable as display1 alias

H. Nikolaus Schaller <hns@goldelico.com>
    ARM: dts: omap3-gta04: fixes for tvout / venc

H. Nikolaus Schaller <hns@goldelico.com>
    ARM: dts: omap3-gta04: give spi_lcd node a label so that we can overwrite in other DTS files

Rob Herring <robh@kernel.org>
    of: make PowerMac cache node search conditional on CONFIG_PPC_PMAC

Suman Tripathi <stripathi@amperecomputing.com>
    ata: Disable AHCI ALPM feature for Ampere Computing eMAG SATA

Yong Zhi <yong.zhi@intel.com>
    ASoC: Intel: hdac_hdmi: Limit sampling rates at dai creation

Charles Keepax <ckeepax@opensource.cirrus.com>
    ASoC: dapm: Avoid uninitialised variable warning

Jan Kara <jack@suse.cz>
    udf: Fix crash during mount

Ding Xiang <dingxiang@cmss.chinamobile.com>
    mips: txx9: fix iounmap related issue

Parav Pandit <parav@mellanox.com>
    RDMA/core: Follow correct unregister order between sysfs and cgroup

Parav Pandit <parav@mellanox.com>
    RDMA/core: Rate limit MAD error messages

Muhammad Sammar <muhammads@mellanox.com>
    IB/ipoib: Ensure that MTU isn't less than minimum permitted

Parav Pandit <parav@mellanox.com>
    IB/mlx5: Don't hold spin lock while checking device state

Jun Gao <jun.gao@mediatek.com>
    i2c: mediatek: Use DMA safe buffers for i2c transactions

Erik Stromdahl <erik.stromdahl@gmail.com>
    ath10k: wmi: disable softirq's while calling ieee80211_rx

Marek Szyprowski <m.szyprowski@samsung.com>
    ARM: dts: exynos: Disable pull control for S5M8767 PMIC

K.T.VIJAYAKUMAAR <vijay.bvb@samsung.com>
    ath10k: avoid possible memory access violation

Colin Ian King <colin.king@canonical.com>
    ASoC: sgtl5000: avoid division by zero if lo_vag is zero

Christian Brauner <christian@brauner.io>
    rtnetlink: move type calculation out of loop

Stefan Wahren <stefan.wahren@i2se.com>
    net: lan78xx: Bail out if lan78xx_get_endpoints fails

Jaegeuk Kim <jaegeuk@kernel.org>
    f2fs: avoid wrong decrypted data from disk

Stanislaw Gruszka <sgruszka@redhat.com>
    cfg80211: validate wmm rule when setting

Naftali Goldstein <naftali.goldstein@intel.com>
    mac80211: fix saving a few HE values

Peter Wu <peter@lekensteyn.nl>
    qxl: fix null-pointer crash during suspend

Majd Dibbiny <majd@mellanox.com>
    IB/mlx5: Change TX affinity assignment in RoCE LAG mode

Christoph Hellwig <hch@lst.de>
    mtd: rawnand: qcom: don't include dma-direct.h

Kurt Kanzenbach <kurt@linutronix.de>
    mtd: rawnand: fsl_ifc: fixup SRAM init for newer ctrl versions

Kurt Kanzenbach <kurt@linutronix.de>
    mtd: rawnand: fsl_ifc: check result of SRAM initialization

Thomas Petazzoni <thomas.petazzoni@bootlin.com>
    mtd: rawnand: marvell: use regmap_update_bits() for syscon access

Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    ARM: dts: meson8b: fix the clock controller register size

Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    ARM: dts: meson8: fix the clock controller register size

Quentin Schulz <quentin.schulz@bootlin.com>
    net: phy: mscc: read 'vsc8531, edge-slowdown' as an u32

Quentin Schulz <quentin.schulz@bootlin.com>
    net: phy: mscc: read 'vsc8531,vddmac' as an u32

Moni Shoua <monis@mellanox.com>
    net/mlx5: Fix atomic_mode enum values

Yunsheng Lin <linyunsheng@huawei.com>
    net: hns3: Change the dst mac addr of loopback packet

Yunsheng Lin <linyunsheng@huawei.com>
    net: hns3: Fix for loopback selftest failed problem

Jian Shen <shenjian15@huawei.com>
    net: hns3: Fix error of checking used vlan id

Huazhong Tan <tanhuazhong@huawei.com>
    net: hns3: Fix for multicast failure

Jiada Wang <jiada_wang@mentor.com>
    ASoC: rsnd: ssi: Fix issue in dma data address assignment

Sven Schmitt <Sven.Schmitt@mixed-mode.de>
    soc: imx: gpc: fix PDN delay

Geert Uytterhoeven <geert@linux-m68k.org>
    mt76: Fix comparisons with invalid hardware key index

Rasmus Villemoes <linux@rasmusvillemoes.dk>
    brcmfmac: fix wrong strnchr usage

Ganapathi Bhat <gbhat@marvell.com>
    mwifex: free rx_cmd skb in suspended state

Ganapathi Bhat <gbhat@marvell.com>
    mwifiex: do no submit URB in suspended state

Larry Finger <Larry.Finger@lwfinger.net>
    rtl8187: Fix warning generated when strncpy() destination length matches the sixe argument

Marcel Ziswiler <marcel@ziswiler.com>
    ARM: dts: pxa: fix power i2c base address

Robert Jarzmik <robert.jarzmik@free.fr>
    ARM: dts: pxa: fix the rtc controller

Alexey Khoroshilov <khoroshilov@ispras.ru>
    media: ov772x: Disable clk on error path

Sakari Ailus <sakari.ailus@linux.intel.com>
    media: i2c: Fix pm_runtime_get_if_in_use() usage in sensor drivers

Hans Verkuil <hverkuil@xs4all.nl>
    media: vicodec: fix out-of-range values when decoding

Sara Sharon <sara.sharon@intel.com>
    iwlwifi: mvm: avoid sending too many BARs

Johannes Berg <johannes.berg@intel.com>
    iwlwifi: don't WARN on trying to dump dead firmware

Sara Sharon <sara.sharon@intel.com>
    iwlwifi: drop packets with bad status in CD

Vijay Immanuel <vijayi@attalasystems.com>
    IB/rxe: fixes for rdma read retry

Vijay Immanuel <vijayi@attalasystems.com>
    IB/rxe: avoid back-to-back retries

Patryk Małek <patryk.malek@intel.com>
    i40e: Prevent deleting MAC address from VF when set by PF

Lihong Yang <lihong.yang@intel.com>
    i40evf: cancel workqueue sync for adminq when a VF is removed

Patryk Małek <patryk.malek@intel.com>
    i40e: hold the rtnl lock on clearing interrupt scheme

Patryk Małek <patryk.malek@intel.com>
    i40evf: Don't enable vlan stripping when rx offload is turned on

Jan Sokolowski <jan.sokolowski@intel.com>
    i40e: Check and correct speed values for link on open

Lihong Yang <lihong.yang@intel.com>
    i40evf: set IFF_UNICAST_FLT flag for the VF

Mitch Williams <mitch.a.williams@intel.com>
    i40e: use correct length for strncpy

Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
    i40evf: Validate the number of queues a PF sends

Marek Szyprowski <m.szyprowski@samsung.com>
    ARM: dts: exynos: Fix regulators configuration on Peach Pi/Pit Chromebooks

Alan Tull <atull@kernel.org>
    arm64: dts: stratix10: i2c clock running out of spec

Rick Farrington <ricardo.farrington@cavium.com>
    liquidio: fix race condition in instruction completion processing

Marek Szyprowski <m.szyprowski@samsung.com>
    ARM: dts: exynos: Fix sound in Snow-rev5 Chromebook

Andrzej Hajda <a.hajda@samsung.com>
    ARM: dts: exynos: Fix HDMI-HPD line handling on Arndale

Andrzej Hajda <a.hajda@samsung.com>
    ARM: dts: exynos: Use i2c-gpio for HDMI-DDC on Arndale

Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
    MIPS: BCM47XX: Enable USB power on Netgear WNDR3400v3

Paul Cercueil <paul@crapouillou.net>
    pinctrl: ingenic: Probe driver at subsys_initcall

Akshu Agrawal <akshu.agrawal@amd.com>
    ASoC: AMD: Change MCLK to 48Mhz

Jerome Brunet <jbrunet@baylibre.com>
    ASoC: meson: axg-fifo: report interrupt request failure

Charles Keepax <ckeepax@opensource.cirrus.com>
    ASoC: dpcm: Properly initialise hw->rate_max

Charles Keepax <ckeepax@opensource.cirrus.com>
    ASoC: dapm: Don't fail creating new DAPM control on NULL pinctrl

Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
    ice: Fix and update driver version string

Bob Peterson <rpeterso@redhat.com>
    gfs2: Don't set GFS2_RDF_UPTODATE when the lvb is updated

Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
    ice: Prevent control queue operations during reset

Dan Nowlin <dan.nowlin@intel.com>
    ice: Update request resource command to latest specification

Sven Eckelmann <sven.eckelmann@openmesh.com>
    ath10k: limit available channels via DT ieee80211-freq-limit

Dedy Lansky <dlansky@codeaurora.org>
    wil6210: fix invalid memory access for rx_buff_mgmt debugfs

Maya Erez <merez@codeaurora.org>
    wil6210: prevent usage of tx ring 0 for eDMA

Maya Erez <merez@codeaurora.org>
    wil6210: set edma variables only for Talyn-MB devices

Dedy Lansky <dlansky@codeaurora.org>
    wil6210: drop Rx multicast packets that are looped-back to STA

Felix Fietkau <nbd@nbd.name>
    ath9k: fix tx99 with monitor mode interface

Rakesh Pillai <pillair@codeaurora.org>
    ath10k: skip resetting rx filter for WCN3990

Takashi Iwai <tiwai@suse.de>
    ALSA: seq: Do error checks at creating system ports

Rajeev Kumar Sirasanagandla <rsirasan@codeaurora.org>
    cfg80211: Avoid regulatory restore when COUNTRY_IE_IGNORE is set

Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    extcon: cht-wc: Return from default case to avoid warnings

Bjorn Andersson <bjorn.andersson@linaro.org>
    remoteproc/davinci: Use %zx for formating size_t

Alexandre Belloni <alexandre.belloni@bootlin.com>
    rtc: rv8803: fix the rv8803 id in the OF table

Dan Carpenter <dan.carpenter@oracle.com>
    rtc: sysfs: fix NULL check in rtc_add_groups()

Jay Foster <jayfoster@ieee.org>
    ARM: dts: at91/trivial: Fix USART1 definition for at91sam9g45

Geert Uytterhoeven <geert+renesas@glider.be>
    ARM: dts: rcar: Correct SATA device sizes to 2 MiB

Arnd Bergmann <arnd@arndb.de>
    y2038: make do_gettimeofday() and get_seconds() inline

Aapo Vienamo <avienamo@nvidia.com>
    arm64: dts: tegra210-p2180: Correct sdmmc4 vqmmc-supply

Aapo Vienamo <avienamo@nvidia.com>
    soc/tegra: pmc: Fix pad voltage configuration for Tegra186

Dan Carpenter <dan.carpenter@oracle.com>
    ALSA: pcm: signedness bug in snd_pcm_plug_alloc()

Andre Przywara <andre.przywara@arm.com>
    arm64: dts: allwinner: a64: NanoPi-A64: Fix DCDC1 voltage

Andre Przywara <andre.przywara@arm.com>
    arm64: dts: allwinner: a64: Olinuxino: fix DRAM voltage

Samuel Holland <samuel@sholland.org>
    arm64: dts: allwinner: a64: Orange Pi Win: Fix SD card node

Vinod Koul <vkoul@kernel.org>
    soundwire: intel: Fix uninitialized adev deref

Shreyas NC <shreyas.nc@intel.com>
    soundwire: Initialize completion for defer messages

Rongyi Chen <chenyi@tt-cool.com>
    clk: sunxi-ng: h6: fix PWM gate/reset offset

Marcus Folkesson <marcus.folkesson@gmail.com>
    iio: dac: mcp4922: fix error handling in mcp4922_write_raw

Tamizh chelvam <tamizhr@codeaurora.org>
    ath10k: fix kernel panic by moving pci flush after napi_disable

Ard Biesheuvel <ard.biesheuvel@linaro.org>
    tee: optee: take DT status property into account

Stefan Agner <stefan@agner.ch>
    iio: adc: max9611: explicitly cast gain_selectors

Eugen Hristev <eugen.hristev@microchip.com>
    mmc: sdhci-of-at91: fix quirk2 overwrite

Roman Gushchin <guro@fb.com>
    mm: hugetlb: switch to css_tryget() in hugetlb_cgroup_charge_cgroup()

Roman Gushchin <guro@fb.com>
    mm: memcg: switch to css_tryget() in get_mem_cgroup_from_mm()

Yang Shi <yang.shi@linux.alibaba.com>
    mm: mempolicy: fix the wrong return value and potential pages leak of mbind

Eric Auger <eric.auger@redhat.com>
    iommu/vt-d: Fix QI_DEV_IOTLB_PFSID and QI_DEV_EIOTLB_PFSID macros

Corentin Labbe <clabbe@baylibre.com>
    net: ethernet: dwmac-sun8i: Use the correct function in exit path

Al Viro <viro@zeniv.linux.org.uk>
    ecryptfs_lookup_interpose(): lower_dentry->d_parent is not stable either

Al Viro <viro@zeniv.linux.org.uk>
    ecryptfs_lookup_interpose(): lower_dentry->d_inode is not stable

Kai-Heng Feng <kai.heng.feng@canonical.com>
    x86/quirks: Disable HPET on Intel Coffe Lake platforms

Hans de Goede <hdegoede@redhat.com>
    i2c: acpi: Force bus speed to 400KHz if a Silead touchscreen is present

Mike Marciniszyn <mike.marciniszyn@intel.com>
    IB/hfi1: Use a common pad buffer for 9B and 16B packets

James Erwin <james.erwin@intel.com>
    IB/hfi1: Ensure full Gen3 speed in a Gen4 system

Chuhong Yuan <hslester96@gmail.com>
    Input: synaptics-rmi4 - destroy F54 poller workqueue when removing

Lucas Stach <l.stach@pengutronix.de>
    Input: synaptics-rmi4 - clear IRQ enables for F54

Andrew Duggan <aduggan@synaptics.com>
    Input: synaptics-rmi4 - do not consume more data than we have (F11, F12)

Andrew Duggan <aduggan@synaptics.com>
    Input: synaptics-rmi4 - disable the relative position IRQ in the F12 driver

Lucas Stach <l.stach@pengutronix.de>
    Input: synaptics-rmi4 - fix video buffer size

Oliver Neukum <oneukum@suse.com>
    Input: ff-memless - kill timer in destroy()

Filipe Manana <fdmanana@suse.com>
    Btrfs: fix log context list corruption after rename exchange operation

Takashi Iwai <tiwai@suse.de>
    ALSA: usb-audio: Fix incorrect size check for processing/extension units

Takashi Iwai <tiwai@suse.de>
    ALSA: usb-audio: Fix incorrect NULL check in create_yamaha_midi_quirk()

Henry Lin <henryl@nvidia.com>
    ALSA: usb-audio: not submit urb for stopped endpoint

Takashi Iwai <tiwai@suse.de>
    ALSA: usb-audio: Fix missing error check at mixer resolution test

Jiri Pirko <jiri@mellanox.com>
    devlink: disallow reload operation during device cleanup

Jouni Hogander <jouni.hogander@unikie.com>
    slip: Fix memory leak in slip_open error path

Aleksander Morgado <aleksander@aleksander.es>
    net: usb: qmi_wwan: add support for Foxconn T77W968 LTE modules

Chuhong Yuan <hslester96@gmail.com>
    net: gemini: add missed free_netdev

Guillaume Nault <gnault@redhat.com>
    ipmr: Fix skb headroom in ipmr_get_route().

Oliver Neukum <oneukum@suse.com>
    ax88172a: fix information leak on short answers

Michael Schmitz <schmitzmic@gmail.com>
    scsi: core: Handle drivers which set sg_tablesize to zero

Jonas Gorski <jonas.gorski@gmail.com>
    MIPS: BCM63XX: fix switch core reset on BCM6368

Paolo Bonzini <pbonzini@redhat.com>
    KVM: x86: introduce is_pae_paging


-------------

Diffstat:

 .../devicetree/bindings/media/i2c/adv748x.txt      |   4 +-
 .../devicetree/bindings/net/brcm,unimac-mdio.txt   |   3 +
 Makefile                                           |   4 +-
 arch/arm/boot/compressed/libfdt_env.h              |   2 +
 arch/arm/boot/dts/am335x-boneblack-common.dtsi     |   2 +-
 arch/arm/boot/dts/am335x-evm.dts                   |  12 +-
 arch/arm/boot/dts/am335x-osd3358-sm-red.dts        |   2 +-
 arch/arm/boot/dts/am335x-pdu001.dts                |   2 +-
 arch/arm/boot/dts/am4372.dtsi                      |   2 +-
 arch/arm/boot/dts/am57xx-cl-som-am57x.dts          |   2 +-
 arch/arm/boot/dts/arm-realview-eb.dtsi             |   2 +-
 arch/arm/boot/dts/arm-realview-pb1176.dts          |   2 +-
 arch/arm/boot/dts/arm-realview-pb11mp.dts          |   2 +-
 arch/arm/boot/dts/arm-realview-pbx.dtsi            |   2 +-
 arch/arm/boot/dts/armada-388-clearfog.dtsi         |   2 +-
 arch/arm/boot/dts/aspeed-g4.dtsi                   |   2 +-
 arch/arm/boot/dts/aspeed-g5.dtsi                   |   2 +-
 arch/arm/boot/dts/at91-dvk_su60_somc.dtsi          |   4 +-
 arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi      |   4 +-
 arch/arm/boot/dts/at91-vinco.dts                   |   2 +-
 arch/arm/boot/dts/at91sam9260ek.dts                |   2 +-
 arch/arm/boot/dts/at91sam9261ek.dts                |   2 +-
 arch/arm/boot/dts/at91sam9g20ek_common.dtsi        |   2 +-
 arch/arm/boot/dts/at91sam9g45.dtsi                 |   2 +-
 arch/arm/boot/dts/bcm-hr2.dtsi                     |   2 +-
 arch/arm/boot/dts/bcm-nsp.dtsi                     |   2 +-
 arch/arm/boot/dts/dove-cubox.dts                   |   2 +-
 arch/arm/boot/dts/dove.dtsi                        |   6 +-
 arch/arm/boot/dts/dra7.dtsi                        |   2 +-
 arch/arm/boot/dts/exynos3250-artik5.dtsi           |   7 +
 arch/arm/boot/dts/exynos5250-arndale.dts           |  41 ++++--
 arch/arm/boot/dts/exynos5250-pinctrl.dtsi          |  11 ++
 arch/arm/boot/dts/exynos5250-snow-rev5.dts         |  11 ++
 arch/arm/boot/dts/exynos5420-peach-pit.dts         |   5 +-
 arch/arm/boot/dts/exynos5800-peach-pi.dts          |   5 +-
 arch/arm/boot/dts/imx51-zii-rdu1.dts               |   2 +-
 arch/arm/boot/dts/imx6ull.dtsi                     |   2 +-
 arch/arm/boot/dts/keystone-k2g.dtsi                |   2 +-
 arch/arm/boot/dts/lpc32xx.dtsi                     |   4 +-
 arch/arm/boot/dts/meson8.dtsi                      |   2 +-
 arch/arm/boot/dts/meson8b-odroidc1.dts             |   5 +
 arch/arm/boot/dts/meson8b.dtsi                     |   2 +-
 arch/arm/boot/dts/omap2.dtsi                       |   4 +-
 arch/arm/boot/dts/omap2430.dtsi                    |   2 +-
 arch/arm/boot/dts/omap3-gta04.dtsi                 |  49 +++++--
 arch/arm/boot/dts/omap3-n9.dts                     |   2 +-
 arch/arm/boot/dts/orion5x-linkstation.dtsi         |   2 +-
 arch/arm/boot/dts/pxa25x.dtsi                      |   4 +
 arch/arm/boot/dts/pxa27x.dtsi                      |   6 +-
 arch/arm/boot/dts/qcom-ipq4019.dtsi                |   2 +-
 arch/arm/boot/dts/r8a7779.dtsi                     |   2 +-
 arch/arm/boot/dts/r8a7790.dtsi                     |   4 +-
 arch/arm/boot/dts/r8a7791.dtsi                     |   4 +-
 arch/arm/boot/dts/rk3036.dtsi                      |   2 +-
 arch/arm/boot/dts/rk3188-radxarock.dts             |   8 ++
 arch/arm/boot/dts/socfpga_cyclone5_de0_sockit.dts  |   2 +-
 arch/arm/boot/dts/ste-dbx5x0.dtsi                  |   6 +-
 arch/arm/boot/dts/ste-href-family-pinctrl.dtsi     |   8 +-
 arch/arm/boot/dts/ste-hrefprev60.dtsi              |   2 +-
 arch/arm/boot/dts/ste-snowball.dts                 |   2 +-
 arch/arm/boot/dts/ste-u300.dts                     |   2 +-
 arch/arm/boot/dts/stm32mp157c-ev1.dts              |  73 +++++++++-
 arch/arm/boot/dts/stm32mp157c.dtsi                 |   2 +-
 .../boot/dts/sun5i-reference-design-tablet.dtsi    |   3 +-
 .../boot/dts/sun8i-reference-design-tablet.dtsi    |   3 +-
 arch/arm/boot/dts/sun8i-v40-bananapi-m2-berry.dts  |   2 +-
 arch/arm/boot/dts/sun9i-a80.dtsi                   |   2 +-
 arch/arm/boot/dts/tegra20-paz00.dts                |   6 +-
 arch/arm/boot/dts/tegra20.dtsi                     |  26 ++--
 arch/arm/boot/dts/tegra30-apalis.dtsi              |  10 +-
 arch/arm/boot/dts/tegra30-colibri-eval-v3.dts      |   3 +-
 arch/arm/boot/dts/tegra30.dtsi                     |   6 +-
 arch/arm/boot/dts/versatile-ab.dts                 |   2 +-
 arch/arm/boot/dts/zynq-zc702.dts                   |  12 +-
 arch/arm/boot/dts/zynq-zc770-xm010.dts             |   2 +-
 arch/arm/boot/dts/zynq-zc770-xm013.dts             |   2 +-
 arch/arm/crypto/crc32-ce-glue.c                    |   2 +-
 arch/arm/mach-at91/pm.c                            |   6 +-
 arch/arm/mach-imx/pm-imx6.c                        |  25 ++++
 .../boot/dts/allwinner/sun50i-a64-nanopi-a64.dts   |   6 +-
 .../boot/dts/allwinner/sun50i-a64-olinuxino.dts    |   8 +-
 .../boot/dts/allwinner/sun50i-a64-orangepi-win.dts |   4 +-
 .../boot/dts/altera/socfpga_stratix10_socdk.dts    |   2 +
 arch/arm64/boot/dts/amd/amd-seattle-soc.dtsi       |   4 +-
 arch/arm64/boot/dts/amlogic/meson-axg.dtsi         |   2 +-
 arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi        |   2 +-
 .../dts/amlogic/meson-gxl-s905x-libretech-cc.dts   |   2 +-
 arch/arm64/boot/dts/amlogic/meson-gxl.dtsi         |   2 +-
 arch/arm64/boot/dts/broadcom/northstar2/ns2.dtsi   |   4 +-
 .../boot/dts/broadcom/stingray/bcm958742-base.dtsi |   2 +-
 .../arm64/boot/dts/broadcom/stingray/stingray.dtsi |   4 +-
 arch/arm64/boot/dts/freescale/fsl-ls1012a.dtsi     |   2 +-
 arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi     |   6 +-
 arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dts  |   4 +-
 arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi     |   4 +-
 arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi     |   4 +-
 arch/arm64/boot/dts/lg/lg1312.dtsi                 |   4 +-
 arch/arm64/boot/dts/lg/lg1313.dtsi                 |   4 +-
 arch/arm64/boot/dts/nvidia/tegra194.dtsi           |  16 +--
 arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi     |   1 +
 arch/arm64/boot/dts/renesas/r8a77965.dtsi          |  30 +++-
 arch/arm64/boot/dts/renesas/salvator-common.dtsi   |   5 +-
 .../arm64/boot/dts/rockchip/rk3399-puma-haikou.dts |   2 +-
 arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi  |  26 +++-
 arch/arm64/boot/dts/ti/k3-am65-main.dtsi           |  10 +-
 arch/arm64/boot/dts/ti/k3-am65.dtsi                |  44 +++---
 arch/arm64/kernel/traps.c                          |   1 -
 arch/mips/bcm47xx/workarounds.c                    |   8 +-
 arch/mips/bcm63xx/reset.c                          |   2 +-
 arch/mips/include/asm/kexec.h                      |   6 +-
 arch/mips/txx9/generic/setup.c                     |   5 +-
 arch/powerpc/boot/libfdt_env.h                     |   2 +
 arch/powerpc/include/asm/drmem.h                   |   5 +
 arch/powerpc/include/asm/uaccess.h                 |   6 +-
 arch/powerpc/kernel/iommu.c                        |   2 +-
 arch/powerpc/kernel/rtas.c                         |   2 +
 arch/powerpc/kernel/vdso32/datapage.S              |   1 +
 arch/powerpc/kernel/vdso32/gettimeofday.S          |   1 +
 arch/powerpc/kernel/vdso64/datapage.S              |   1 +
 arch/powerpc/kernel/vdso64/gettimeofday.S          |   1 +
 arch/powerpc/mm/slb.c                              |   2 +-
 arch/powerpc/platforms/pseries/hotplug-memory.c    |  55 +++-----
 arch/s390/include/asm/mmu.h                        |   2 +
 arch/s390/include/asm/mmu_context.h                |   1 +
 arch/s390/kernel/vdso.c                            |   7 +-
 arch/s390/kernel/vdso32/clock_gettime.S            |  19 +--
 arch/s390/kernel/vdso32/gettimeofday.S             |   3 +-
 arch/s390/kernel/vdso64/clock_gettime.S            |  25 ++--
 arch/s390/kernel/vdso64/gettimeofday.S             |   3 +-
 arch/x86/hyperv/hv_init.c                          |  19 +++
 arch/x86/kernel/cpu/common.c                       |   4 +-
 arch/x86/kernel/cpu/cyrix.c                        |   2 +-
 arch/x86/kernel/cpu/mcheck/mce-inject.c            |   6 +
 arch/x86/kernel/early-quirks.c                     |   2 +
 arch/x86/kernel/uprobes.c                          |   2 +-
 arch/x86/kvm/vmx.c                                 |   7 +-
 arch/x86/kvm/x86.c                                 |   8 +-
 arch/x86/kvm/x86.h                                 |   5 +
 block/bfq-iosched.c                                |  78 +++++++++--
 block/bfq-iosched.h                                |  26 ++++
 crypto/chacha20_generic.c                          |   7 +-
 crypto/rsa-pkcs1pad.c                              |   9 --
 drivers/acpi/acpi_lpss.c                           |  22 ++-
 drivers/acpi/pci_root.c                            |   5 +-
 drivers/android/binder.c                           |  44 ++++--
 drivers/ata/ahci_platform.c                        |  15 +-
 drivers/base/component.c                           |   6 +-
 drivers/bluetooth/btrsi.c                          |  13 +-
 drivers/bluetooth/hci_serdev.c                     |   1 +
 drivers/char/ipmi/ipmi_dmi.c                       |   4 +
 drivers/char/ipmi/ipmi_msghandler.c                |   2 +-
 drivers/char/ipmi/ipmi_si_mem_io.c                 |   2 +-
 drivers/char/ipmi/ipmi_si_pci.c                    |   4 +-
 drivers/char/random.c                              |  24 ++--
 drivers/clk/sunxi-ng/ccu-sun50i-h6.c               |   2 +-
 drivers/crypto/s5p-sss.c                           |  16 ++-
 drivers/dma/Kconfig                                |   2 +-
 drivers/dma/at_xdmac.c                             |   2 +-
 drivers/dma/dma-jz4780.c                           |   2 +-
 drivers/edac/i3200_edac.c                          |   2 +-
 drivers/edac/i7core_edac.c                         |   2 +-
 drivers/edac/sb_edac.c                             |  70 ++++-----
 drivers/edac/skx_edac.c                            |   4 +-
 drivers/extcon/extcon-intel-cht-wc.c               |   2 +-
 drivers/firmware/arm_scmi/base.c                   |   2 +-
 drivers/firmware/arm_scmi/clock.c                  |   2 +-
 drivers/firmware/arm_scmi/perf.c                   |   2 +-
 drivers/firmware/arm_scmi/power.c                  |   2 +-
 drivers/firmware/arm_scmi/sensors.c                |   2 +-
 drivers/firmware/dell_rbu.c                        |   8 ++
 drivers/gpio/gpiolib.c                             |  36 +++--
 drivers/gpu/drm/qxl/qxl_drv.c                      |  26 +---
 drivers/hv/channel.c                               |  20 ++-
 drivers/hv/hv.c                                    |  15 +-
 .../coresight/coresight-dynamic-replicator.c       |  64 ++++++---
 drivers/hwtracing/coresight/coresight-etm-perf.c   |  59 +++++---
 drivers/hwtracing/coresight/coresight-etm4x.c      |  40 +++---
 drivers/hwtracing/coresight/coresight-tmc-etf.c    |   4 +-
 drivers/hwtracing/coresight/coresight-tmc-etr.c    |  60 +++++---
 drivers/hwtracing/coresight/coresight-tmc.h        |   2 +
 drivers/hwtracing/coresight/coresight.c            |  22 ++-
 drivers/i2c/busses/i2c-aspeed.c                    |  65 ++++++---
 drivers/i2c/busses/i2c-mt65xx.c                    |  62 +++++++-
 drivers/i2c/i2c-core-acpi.c                        |  28 +++-
 drivers/iio/adc/max9611.c                          |   2 +-
 drivers/iio/dac/mcp4922.c                          |  11 +-
 drivers/infiniband/core/device.c                   |   2 +-
 drivers/infiniband/core/mad.c                      |  72 +++++-----
 drivers/infiniband/hw/cxgb4/cq.c                   |   2 +-
 drivers/infiniband/hw/cxgb4/qp.c                   |   7 +-
 drivers/infiniband/hw/hfi1/pcie.c                  |   4 +-
 drivers/infiniband/hw/hfi1/sdma.c                  |   5 +-
 drivers/infiniband/hw/hfi1/user_sdma.c             |   4 +-
 drivers/infiniband/hw/hfi1/verbs.c                 |  10 +-
 drivers/infiniband/hw/hns/Kconfig                  |   1 +
 drivers/infiniband/hw/hns/hns_roce_hw_v2.c         |   1 +
 drivers/infiniband/hw/i40iw/i40iw_cm.c             |   2 +-
 drivers/infiniband/hw/mlx4/Kconfig                 |   1 +
 drivers/infiniband/hw/mlx5/main.c                  |   8 ++
 drivers/infiniband/hw/mlx5/mlx5_ib.h               |   4 +-
 drivers/infiniband/hw/mlx5/qp.c                    |  63 ++++++---
 drivers/infiniband/sw/rxe/rxe_comp.c               |  39 +++++-
 drivers/infiniband/sw/rxe/rxe_req.c                |  15 +-
 drivers/infiniband/sw/rxe/rxe_verbs.h              |   1 +
 drivers/infiniband/ulp/ipoib/ipoib_main.c          |   3 +-
 drivers/infiniband/ulp/iser/iser_initiator.c       |  18 ++-
 drivers/input/ff-memless.c                         |   9 ++
 drivers/input/rmi4/rmi_f11.c                       |   4 +-
 drivers/input/rmi4/rmi_f12.c                       |  32 ++++-
 drivers/input/rmi4/rmi_f54.c                       |   5 +-
 drivers/media/i2c/ov13858.c                        |   2 +-
 drivers/media/i2c/ov2680.c                         |  26 +---
 drivers/media/i2c/ov2685.c                         |   2 +-
 drivers/media/i2c/ov5670.c                         |   2 +-
 drivers/media/i2c/ov5695.c                         |   2 +-
 drivers/media/i2c/ov772x.c                         |   1 +
 drivers/media/i2c/ov7740.c                         |   2 +-
 drivers/media/pci/ivtv/ivtv-yuv.c                  |   2 +-
 drivers/media/pci/meye/meye.c                      |   2 +-
 drivers/media/platform/davinci/vpbe_display.c      |   2 +-
 drivers/media/platform/vicodec/vicodec-codec.c     |  10 +-
 drivers/media/platform/vsp1/vsp1_drm.c             |  11 +-
 drivers/media/platform/vsp1/vsp1_regs.h            |   2 +-
 drivers/media/usb/au0828/au0828-core.c             |   4 +-
 drivers/misc/genwqe/card_utils.c                   |  13 +-
 drivers/misc/kgdbts.c                              |  16 +--
 drivers/mmc/host/sdhci-of-at91.c                   |   2 +-
 drivers/mtd/nand/raw/fsl_ifc_nand.c                |  36 ++++-
 drivers/mtd/nand/raw/marvell_nand.c                |  23 ++-
 drivers/mtd/nand/raw/qcom_nandc.c                  |   1 -
 drivers/net/ethernet/amd/am79c961a.c               |   2 +-
 drivers/net/ethernet/amd/atarilance.c              |   6 +-
 drivers/net/ethernet/amd/declance.c                |   2 +-
 drivers/net/ethernet/amd/sun3lance.c               |   6 +-
 drivers/net/ethernet/amd/sunlance.c                |   2 +-
 drivers/net/ethernet/amd/xgbe/xgbe-drv.c           |   4 +-
 .../ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.c |   8 ++
 .../ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.h |   3 +
 .../aquantia/atlantic/hw_atl/hw_atl_llh_internal.h |  13 ++
 .../aquantia/atlantic/hw_atl/hw_atl_utils.c        |  36 +++--
 .../aquantia/atlantic/hw_atl/hw_atl_utils.h        |   5 +
 .../aquantia/atlantic/hw_atl/hw_atl_utils_fw2x.c   |   5 +
 drivers/net/ethernet/broadcom/bcm63xx_enet.c       |   5 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c   |  10 ++
 drivers/net/ethernet/broadcom/genet/bcmmii.c       |   7 +-
 drivers/net/ethernet/broadcom/sb1250-mac.c         |   4 +-
 drivers/net/ethernet/cavium/liquidio/lio_main.c    |   2 +-
 drivers/net/ethernet/cavium/liquidio/lio_vf_main.c |   2 +-
 drivers/net/ethernet/cavium/liquidio/lio_vf_rep.c  |   5 +-
 .../net/ethernet/cavium/liquidio/octeon_device.c   |   5 +-
 drivers/net/ethernet/cavium/liquidio/octeon_iq.h   |   2 +
 .../net/ethernet/cavium/liquidio/request_manager.c |   2 +
 drivers/net/ethernet/cavium/octeon/octeon_mgmt.c   |   5 +-
 drivers/net/ethernet/chelsio/cxgb4/t4_hw.c         |   2 +-
 drivers/net/ethernet/cortina/gemini.c              |   1 +
 drivers/net/ethernet/faraday/ftgmac100.c           |   4 +-
 drivers/net/ethernet/faraday/ftmac100.c            |   7 +-
 drivers/net/ethernet/freescale/dpaa/dpaa_eth.c     |   3 +-
 drivers/net/ethernet/freescale/fec_mpc52xx.c       |   3 +-
 .../net/ethernet/freescale/fs_enet/fs_enet-main.c  |   3 +-
 drivers/net/ethernet/freescale/gianfar.c           |   4 +-
 drivers/net/ethernet/freescale/ucc_geth.c          |   3 +-
 drivers/net/ethernet/hisilicon/hip04_eth.c         |   3 +-
 drivers/net/ethernet/hisilicon/hix5hd2_gmac.c      |   2 +-
 drivers/net/ethernet/hisilicon/hns3/hnae3.c        |  12 +-
 drivers/net/ethernet/hisilicon/hns3/hnae3.h        |   3 +
 drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c |  18 +--
 .../ethernet/hisilicon/hns3/hns3pf/hclge_main.c    |  93 +++++++-----
 .../net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c  |   2 +-
 .../ethernet/hisilicon/hns3/hns3vf/hclgevf_cmd.c   |   4 +-
 .../ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c  |  42 ++++--
 drivers/net/ethernet/ibm/ehea/ehea_main.c          |   2 +-
 drivers/net/ethernet/ibm/emac/core.c               |   7 +-
 drivers/net/ethernet/ibm/ibmvnic.c                 |   4 +-
 drivers/net/ethernet/intel/i40e/i40e_main.c        |  35 ++++-
 drivers/net/ethernet/intel/i40e/i40e_ptp.c         |   3 +-
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c |  10 ++
 drivers/net/ethernet/intel/i40evf/i40evf_main.c    |  15 +-
 .../net/ethernet/intel/i40evf/i40evf_virtchnl.c    |  32 +++++
 drivers/net/ethernet/intel/ice/ice_common.c        |  75 +++++++---
 drivers/net/ethernet/intel/ice/ice_common.h        |   2 +-
 drivers/net/ethernet/intel/ice/ice_controlq.c      |   3 +
 drivers/net/ethernet/intel/ice/ice_main.c          |  36 ++++-
 drivers/net/ethernet/intel/ice/ice_nvm.c           |   2 +-
 drivers/net/ethernet/intel/ice/ice_status.h        |   1 +
 drivers/net/ethernet/intel/ice/ice_type.h          |  10 +-
 drivers/net/ethernet/marvell/mvneta.c              |   2 +-
 drivers/net/ethernet/marvell/mvpp2/mvpp2.h         |   3 +-
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c    |   9 +-
 drivers/net/ethernet/marvell/pxa168_eth.c          |   3 +-
 drivers/net/ethernet/mellanox/mlx4/main.c          |   3 +
 drivers/net/ethernet/mellanox/mlxsw/core.c         |   4 +
 drivers/net/ethernet/mellanox/mlxsw/spectrum.c     |  12 +-
 drivers/net/ethernet/micrel/ks8695net.c            |   2 +-
 drivers/net/ethernet/micrel/ks8851_mll.c           |   4 +-
 .../net/ethernet/netronome/nfp/nfp_net_common.c    |  16 ++-
 drivers/net/ethernet/smsc/smc911x.c                |   3 +-
 drivers/net/ethernet/smsc/smc91x.c                 |   3 +-
 drivers/net/ethernet/smsc/smsc911x.c               |   3 +-
 drivers/net/ethernet/socionext/sni_ave.c           |   4 +-
 drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c  |   2 +-
 drivers/net/ethernet/sun/ldmvsw.c                  |   2 +-
 drivers/net/ethernet/sun/sunbmac.c                 |   3 +-
 drivers/net/ethernet/sun/sunqe.c                   |   2 +-
 drivers/net/ethernet/sun/sunvnet.c                 |   2 +-
 drivers/net/ethernet/sun/sunvnet_common.c          |  14 +-
 drivers/net/ethernet/sun/sunvnet_common.h          |   7 +-
 drivers/net/ethernet/toshiba/ps3_gelic_net.c       |   4 +-
 drivers/net/ethernet/toshiba/ps3_gelic_net.h       |   2 +-
 drivers/net/ethernet/toshiba/spider_net.c          |   4 +-
 drivers/net/ethernet/toshiba/tc35815.c             |   6 +-
 drivers/net/ethernet/xilinx/ll_temac_main.c        |   3 +-
 drivers/net/ethernet/xilinx/xilinx_axienet_main.c  |   3 +-
 drivers/net/ethernet/xilinx/xilinx_emaclite.c      |   9 +-
 drivers/net/net_failover.c                         |   4 +-
 drivers/net/netdevsim/netdev.c                     |   5 +
 drivers/net/phy/mdio-bcm-unimac.c                  |  83 ++++++++++-
 drivers/net/phy/mscc.c                             |  11 +-
 drivers/net/slip/slip.c                            |   1 +
 drivers/net/usb/ax88172a.c                         |   2 +-
 drivers/net/usb/lan78xx.c                          |   5 +
 drivers/net/usb/qmi_wwan.c                         |   2 +
 drivers/net/wireless/ath/ath10k/ahb.c              |   4 +-
 drivers/net/wireless/ath/ath10k/core.c             |  17 ++-
 drivers/net/wireless/ath/ath10k/hw.h               |   5 +
 drivers/net/wireless/ath/ath10k/mac.c              |   2 +
 drivers/net/wireless/ath/ath10k/pci.c              |   2 +-
 drivers/net/wireless/ath/ath10k/wmi.c              |  10 +-
 drivers/net/wireless/ath/ath9k/main.c              |   1 -
 drivers/net/wireless/ath/ath9k/tx99.c              |  10 +-
 drivers/net/wireless/ath/wil6210/debugfs.c         |   3 +
 drivers/net/wireless/ath/wil6210/main.c            |   9 +-
 drivers/net/wireless/ath/wil6210/pcie_bus.c        |   1 +
 drivers/net/wireless/ath/wil6210/txrx.c            |  15 +-
 .../wireless/broadcom/brcm80211/brcmfmac/common.c  |   4 +-
 .../wireless/broadcom/brcm80211/brcmfmac/feature.c |   2 +-
 .../broadcom/brcm80211/brcmsmac/mac80211_if.c      |   6 +-
 drivers/net/wireless/intel/iwlwifi/cfg/22000.c     |   2 +-
 drivers/net/wireless/intel/iwlwifi/fw/api/rx.h     |  63 +++++++++
 drivers/net/wireless/intel/iwlwifi/fw/api/tx.h     |   6 +-
 drivers/net/wireless/intel/iwlwifi/fw/dbg.c        |   9 +-
 drivers/net/wireless/intel/iwlwifi/iwl-trans.h     |   1 +
 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c  |   4 +
 drivers/net/wireless/intel/iwlwifi/mvm/sta.c       |   4 -
 drivers/net/wireless/intel/iwlwifi/mvm/tx.c        |  55 ++++++--
 drivers/net/wireless/intel/iwlwifi/pcie/internal.h |  60 --------
 drivers/net/wireless/intel/iwlwifi/pcie/rx.c       |   8 +-
 drivers/net/wireless/intel/iwlwifi/pcie/trans.c    |  16 ++-
 drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c  |   7 +-
 drivers/net/wireless/intel/iwlwifi/pcie/tx.c       |   2 +-
 drivers/net/wireless/marvell/mwifiex/usb.c         |  13 ++
 drivers/net/wireless/mediatek/mt76/mt76x0/tx.c     |   2 +-
 .../net/wireless/mediatek/mt76/mt76x2_tx_common.c  |   2 +-
 .../net/wireless/realtek/rtl818x/rtl8187/leds.c    |   2 +-
 drivers/nvmem/core.c                               |   2 +-
 drivers/of/base.c                                  |   2 +-
 drivers/of/unittest-data/overlay_15.dts            |   4 +-
 drivers/of/unittest-data/tests-overlay.dtsi        |   4 +-
 drivers/opp/core.c                                 |  21 ++-
 drivers/opp/cpu.c                                  |   2 +
 drivers/opp/opp.h                                  |   2 +-
 drivers/pci/controller/pcie-mediatek.c             |   4 +-
 drivers/pci/hotplug/pciehp_core.c                  |   3 +-
 drivers/pci/pci.c                                  |  37 +++++
 drivers/pci/pci.h                                  |   2 +
 drivers/pci/pcie/aer.c                             |  13 +-
 drivers/pci/pcie/dpc.c                             |   3 +-
 drivers/pci/pcie/err.c                             |  87 +++---------
 drivers/pci/pcie/pme.c                             |   3 +-
 drivers/pci/pcie/portdrv.h                         |  24 ++++
 drivers/pci/pcie/portdrv_pci.c                     |   9 ++
 drivers/pci/slot.c                                 |   1 -
 drivers/phy/broadcom/Kconfig                       |   3 +-
 drivers/phy/lantiq/phy-lantiq-rcu-usb2.c           |   1 -
 drivers/phy/renesas/phy-rcar-gen3-usb2.c           |   2 +-
 drivers/phy/ti/phy-twl4030-usb.c                   |  29 ++++
 drivers/pinctrl/pinctrl-at91-pio4.c                |   8 +-
 drivers/pinctrl/pinctrl-at91.c                     |  28 ++--
 drivers/pinctrl/pinctrl-ingenic.c                  |   2 +-
 drivers/power/reset/at91-sama5d2_shdwc.c           |   3 +
 drivers/power/supply/ab8500_fg.c                   |  31 ++--
 drivers/power/supply/max8998_charger.c             |   2 +-
 drivers/power/supply/twl4030_charger.c             |  30 +++-
 drivers/remoteproc/da8xx_remoteproc.c              |   2 +-
 drivers/rtc/rtc-armada38x.c                        |  22 +--
 drivers/rtc/rtc-isl1208.c                          |  27 ++--
 drivers/rtc/rtc-mt6397.c                           |  13 +-
 drivers/rtc/rtc-pl030.c                            |  15 +-
 drivers/rtc/rtc-rv8803.c                           |   2 +-
 drivers/rtc/rtc-sysfs.c                            |   4 +-
 drivers/rtc/rtc-tx4939.c                           |   4 +-
 drivers/s390/crypto/ap_bus.c                       |  18 +--
 drivers/s390/net/qeth_core_main.c                  | 102 +++++++-------
 drivers/s390/net/qeth_l2_main.c                    |   3 +
 drivers/s390/net/qeth_l3_main.c                    |   3 +
 drivers/scsi/NCR5380.c                             | 156 ++++++++++++---------
 drivers/scsi/NCR5380.h                             |   2 +-
 drivers/scsi/libsas/sas_expander.c                 |  13 +-
 drivers/scsi/lpfc/lpfc_ct.c                        |   5 -
 drivers/scsi/lpfc/lpfc_hbadisc.c                   |   2 +-
 drivers/scsi/lpfc/lpfc_nportdisc.c                 |   3 +
 drivers/scsi/lpfc/lpfc_nvme.c                      |   2 +-
 drivers/scsi/lpfc/lpfc_nvmet.c                     |   7 +-
 drivers/scsi/lpfc/lpfc_sli.c                       |   6 +-
 drivers/scsi/pm8001/pm8001_hwi.c                   |   6 +
 drivers/scsi/pm8001/pm8001_sas.c                   |   9 +-
 drivers/scsi/pm8001/pm8001_sas.h                   |   1 +
 drivers/scsi/pm8001/pm80xx_hwi.c                   |  80 ++++++++++-
 drivers/scsi/pm8001/pm80xx_hwi.h                   |   3 +
 drivers/scsi/qla2xxx/qla_gs.c                      |  28 +++-
 drivers/scsi/qla2xxx/qla_init.c                    |  36 ++---
 drivers/scsi/qla2xxx/qla_iocb.c                    |  12 +-
 drivers/scsi/qla2xxx/qla_isr.c                     |  50 +++----
 drivers/scsi/qla2xxx/qla_os.c                      |  29 +++-
 drivers/scsi/qla2xxx/qla_target.c                  |   6 +
 drivers/scsi/scsi_lib.c                            |   3 +-
 drivers/scsi/sym53c8xx_2/sym_hipd.c                |  15 +-
 drivers/scsi/ufs/ufshcd.c                          |  53 ++++---
 drivers/slimbus/qcom-ngd-ctrl.c                    |  24 ++--
 drivers/soc/imx/gpc.c                              |   2 +-
 drivers/soc/qcom/apr.c                             |   4 +-
 drivers/soc/qcom/qcom-geni-se.c                    |  41 +++---
 drivers/soc/qcom/rpmh-rsc.c                        |   2 +
 drivers/soc/qcom/wcnss_ctrl.c                      |   2 +-
 drivers/soc/tegra/pmc.c                            |  55 +++++---
 drivers/soundwire/bus.c                            |   1 +
 drivers/soundwire/intel_init.c                     |   2 +-
 drivers/spi/spi-bcm63xx-hsspi.c                    |  20 ++-
 drivers/spi/spi-mt65xx.c                           |  37 ++---
 drivers/spi/spi-pic32.c                            |   4 +-
 drivers/staging/media/imx/imx-media-csi.c          |   5 +-
 drivers/tee/optee/core.c                           |   2 +-
 drivers/tty/serial/Kconfig                         |   1 +
 drivers/tty/serial/atmel_serial.c                  |  42 ++++--
 drivers/tty/serial/mxs-auart.c                     |   3 +-
 drivers/tty/serial/qcom_geni_serial.c              |  55 ++++----
 drivers/tty/serial/samsung.c                       |   8 ++
 drivers/tty/serial/xilinx_uartps.c                 |  41 ++----
 drivers/uio/uio_hv_generic.c                       |   5 +-
 drivers/usb/chipidea/otg.c                         |   9 +-
 drivers/usb/chipidea/usbmisc_imx.c                 |   2 +
 drivers/usb/class/usbtmc.c                         |  17 ++-
 drivers/usb/gadget/function/uvc_configfs.c         |  20 +++
 drivers/usb/gadget/function/uvc_video.c            |  32 +++--
 drivers/usb/host/xhci-mtk-sch.c                    |   4 +-
 drivers/usb/mtu3/mtu3_core.c                       |   4 +-
 drivers/usb/mtu3/mtu3_gadget.c                     |  22 +--
 drivers/vfio/pci/vfio_pci.c                        |   8 +-
 drivers/vfio/pci/vfio_pci_config.c                 |  31 +++-
 fs/btrfs/inode.c                                   |  15 ++
 fs/compat_ioctl.c                                  |  10 +-
 fs/ecryptfs/inode.c                                |  19 ++-
 fs/f2fs/data.c                                     |  35 ++---
 fs/f2fs/f2fs.h                                     |   3 +-
 fs/f2fs/file.c                                     |  63 +++++----
 fs/f2fs/node.c                                     |   5 +-
 fs/f2fs/recovery.c                                 |  17 +++
 fs/f2fs/segment.c                                  |   6 +-
 fs/f2fs/super.c                                    |  11 +-
 fs/fuse/control.c                                  |   4 +-
 fs/gfs2/rgrp.c                                     |   2 +-
 fs/kernfs/symlink.c                                |   5 +-
 fs/udf/super.c                                     |  65 ++++++++-
 include/crypto/chacha20.h                          |   3 +-
 include/linux/cpufeature.h                         |   2 +-
 include/linux/edac.h                               |   3 +-
 include/linux/fsl_ifc.h                            |   2 +
 include/linux/hyperv.h                             |   2 +-
 include/linux/intel-iommu.h                        |   6 +-
 include/linux/libfdt_env.h                         |   1 +
 include/linux/mlx5/driver.h                        |   5 +-
 include/linux/timekeeping32.h                      |  15 +-
 include/media/vsp1.h                               |   2 +-
 include/net/devlink.h                              |   3 +
 include/net/llc.h                                  |   1 +
 include/soc/tegra/pmc.h                            |   1 +
 include/trace/events/sched.h                       |  11 +-
 kernel/events/uprobes.c                            |   4 +-
 kernel/kprobes.c                                   |   8 +-
 kernel/sched/sched.h                               |   2 +-
 kernel/signal.c                                    |   4 +
 kernel/time/time.c                                 |  15 +-
 kernel/time/timekeeping.c                          |  24 ----
 lib/chacha20.c                                     |   6 +-
 mm/hugetlb_cgroup.c                                |   2 +-
 mm/memcontrol.c                                    |   2 +-
 mm/memfd.c                                         |   2 +-
 mm/mempolicy.c                                     |  14 +-
 net/bluetooth/l2cap_core.c                         |  10 ++
 net/core/devlink.c                                 |  39 +++++-
 net/core/rtnetlink.c                               |   2 +-
 net/ipv4/gre_demux.c                               |   7 +-
 net/ipv4/ip_gre.c                                  |   9 +-
 net/ipv4/ipmr.c                                    |   3 +-
 net/ipv4/netfilter/nf_nat_masquerade_ipv4.c        |  22 ++-
 net/ipv6/netfilter/nf_nat_masquerade_ipv6.c        |  19 ++-
 net/llc/llc_core.c                                 |   4 +-
 net/mac80211/mlme.c                                |  17 +--
 net/netfilter/nf_tables_api.c                      |   9 +-
 net/netfilter/nft_cmp.c                            |   6 +-
 net/netfilter/nft_reject.c                         |   6 +-
 net/wireless/reg.c                                 | 110 +++++++++++----
 samples/bpf/sockex2_kern.c                         |  11 +-
 samples/bpf/sockex3_kern.c                         |   8 +-
 samples/bpf/sockex3_user.c                         |   4 +-
 sound/core/oss/pcm_plugin.c                        |   4 +-
 sound/core/seq/seq_system.c                        |  18 ++-
 sound/pci/hda/patch_ca0132.c                       |   1 +
 sound/pci/intel8x0m.c                              |  20 +--
 sound/soc/amd/acp-da7219-max98357a.c               |   2 +-
 sound/soc/codecs/hdac_hdmi.c                       |   6 +
 sound/soc/codecs/rt5682.c                          |   5 +
 sound/soc/codecs/sgtl5000.c                        |   2 +-
 sound/soc/meson/axg-fifo.c                         |   2 +
 sound/soc/sh/rcar/rsnd.h                           |   1 +
 sound/soc/sh/rcar/ssi.c                            |   4 +-
 sound/soc/soc-dapm.c                               |   4 +-
 sound/soc/soc-pcm.c                                |   2 +-
 sound/usb/endpoint.c                               |   3 +
 sound/usb/mixer.c                                  |   4 +-
 sound/usb/quirks.c                                 |   4 +-
 sound/usb/validate.c                               |   6 +-
 .../testing/selftests/powerpc/tm/tm-unavailable.c  |   9 +-
 tools/testing/selftests/powerpc/tm/tm.h            |   9 ++
 524 files changed, 3933 insertions(+), 1921 deletions(-)



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 001/422] KVM: x86: introduce is_pae_paging
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 002/422] MIPS: BCM63XX: fix switch core reset on BCM6368 Greg Kroah-Hartman
                   ` (424 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sean Christopherson, Paolo Bonzini,
	Thomas Lamprecht, Sasha Levin

From: Paolo Bonzini <pbonzini@redhat.com>

[ Upstream commit bf03d4f9334728bf7c8ffc7de787df48abd6340e ]

Checking for 32-bit PAE is quite common around code that fiddles with
the PDPTRs.  Add a function to compress all checks into a single
invocation.

Moving to the common helper also fixes a subtle bug in kvm_set_cr3()
where it fails to check is_long_mode() and results in KVM incorrectly
attempting to load PDPTRs for a 64-bit guest.

Reviewed-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
[sean: backport to 4.x; handle vmx.c split in 5.x, call out the bugfix]
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Tested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/x86/kvm/vmx.c | 7 +++----
 arch/x86/kvm/x86.c | 8 ++++----
 arch/x86/kvm/x86.h | 5 +++++
 3 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 4eda2a9c234a6..1ab4bb3d6a040 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -5173,7 +5173,7 @@ static void ept_load_pdptrs(struct kvm_vcpu *vcpu)
 		      (unsigned long *)&vcpu->arch.regs_dirty))
 		return;
 
-	if (is_paging(vcpu) && is_pae(vcpu) && !is_long_mode(vcpu)) {
+	if (is_pae_paging(vcpu)) {
 		vmcs_write64(GUEST_PDPTR0, mmu->pdptrs[0]);
 		vmcs_write64(GUEST_PDPTR1, mmu->pdptrs[1]);
 		vmcs_write64(GUEST_PDPTR2, mmu->pdptrs[2]);
@@ -5185,7 +5185,7 @@ static void ept_save_pdptrs(struct kvm_vcpu *vcpu)
 {
 	struct kvm_mmu *mmu = vcpu->arch.walk_mmu;
 
-	if (is_paging(vcpu) && is_pae(vcpu) && !is_long_mode(vcpu)) {
+	if (is_pae_paging(vcpu)) {
 		mmu->pdptrs[0] = vmcs_read64(GUEST_PDPTR0);
 		mmu->pdptrs[1] = vmcs_read64(GUEST_PDPTR1);
 		mmu->pdptrs[2] = vmcs_read64(GUEST_PDPTR2);
@@ -12013,8 +12013,7 @@ static int nested_vmx_load_cr3(struct kvm_vcpu *vcpu, unsigned long cr3, bool ne
 		 * If PAE paging and EPT are both on, CR3 is not used by the CPU and
 		 * must not be dereferenced.
 		 */
-		if (!is_long_mode(vcpu) && is_pae(vcpu) && is_paging(vcpu) &&
-		    !nested_ept) {
+		if (is_pae_paging(vcpu) && !nested_ept) {
 			if (!load_pdptrs(vcpu, vcpu->arch.walk_mmu, cr3)) {
 				*entry_failure_code = ENTRY_FAIL_PDPTE;
 				return 1;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index e536503ac7881..6cf8af022b21d 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -634,7 +634,7 @@ bool pdptrs_changed(struct kvm_vcpu *vcpu)
 	gfn_t gfn;
 	int r;
 
-	if (is_long_mode(vcpu) || !is_pae(vcpu) || !is_paging(vcpu))
+	if (!is_pae_paging(vcpu))
 		return false;
 
 	if (!test_bit(VCPU_EXREG_PDPTR,
@@ -885,8 +885,8 @@ int kvm_set_cr3(struct kvm_vcpu *vcpu, unsigned long cr3)
 	if (is_long_mode(vcpu) &&
 	    (cr3 & rsvd_bits(cpuid_maxphyaddr(vcpu), 63)))
 		return 1;
-	else if (is_pae(vcpu) && is_paging(vcpu) &&
-		   !load_pdptrs(vcpu, vcpu->arch.walk_mmu, cr3))
+	else if (is_pae_paging(vcpu) &&
+		 !load_pdptrs(vcpu, vcpu->arch.walk_mmu, cr3))
 		return 1;
 
 	kvm_mmu_new_cr3(vcpu, cr3, skip_tlb_flush);
@@ -8348,7 +8348,7 @@ static int __set_sregs(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs)
 		kvm_update_cpuid(vcpu);
 
 	idx = srcu_read_lock(&vcpu->kvm->srcu);
-	if (!is_long_mode(vcpu) && is_pae(vcpu) && is_paging(vcpu)) {
+	if (is_pae_paging(vcpu)) {
 		load_pdptrs(vcpu, vcpu->arch.walk_mmu, kvm_read_cr3(vcpu));
 		mmu_reset_needed = 1;
 	}
diff --git a/arch/x86/kvm/x86.h b/arch/x86/kvm/x86.h
index 3a91ea760f073..608e5f8c5d0a5 100644
--- a/arch/x86/kvm/x86.h
+++ b/arch/x86/kvm/x86.h
@@ -139,6 +139,11 @@ static inline int is_paging(struct kvm_vcpu *vcpu)
 	return likely(kvm_read_cr0_bits(vcpu, X86_CR0_PG));
 }
 
+static inline bool is_pae_paging(struct kvm_vcpu *vcpu)
+{
+	return !is_long_mode(vcpu) && is_pae(vcpu) && is_paging(vcpu);
+}
+
 static inline u32 bit(int bitno)
 {
 	return 1 << (bitno & 31);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 002/422] MIPS: BCM63XX: fix switch core reset on BCM6368
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 001/422] KVM: x86: introduce is_pae_paging Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 003/422] scsi: core: Handle drivers which set sg_tablesize to zero Greg Kroah-Hartman
                   ` (423 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jonas Gorski, Paul Burton,
	linux-mips, Ralf Baechle, James Hogan, Florian Fainelli,
	Amit Pundir

From: Jonas Gorski <jonas.gorski@gmail.com>

commit 8a38dacf87180738d42b058334c951eba15d2d47 upstream.

The Ethernet Switch core mask was set to 0, causing the switch core to
be not reset on BCM6368 on boot. Provide the proper mask so the switch
core gets reset to a known good state.

Fixes: 799faa626c71 ("MIPS: BCM63XX: add core reset helper")
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
Signed-off-by: Paul Burton <paul.burton@mips.com>
Cc: linux-mips@vger.kernel.org
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: James Hogan <jhogan@kernel.org>
Cc: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/mips/bcm63xx/reset.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/mips/bcm63xx/reset.c
+++ b/arch/mips/bcm63xx/reset.c
@@ -120,7 +120,7 @@
 #define BCM6368_RESET_DSL	0
 #define BCM6368_RESET_SAR	SOFTRESET_6368_SAR_MASK
 #define BCM6368_RESET_EPHY	SOFTRESET_6368_EPHY_MASK
-#define BCM6368_RESET_ENETSW	0
+#define BCM6368_RESET_ENETSW	SOFTRESET_6368_ENETSW_MASK
 #define BCM6368_RESET_PCM	SOFTRESET_6368_PCM_MASK
 #define BCM6368_RESET_MPI	SOFTRESET_6368_MPI_MASK
 #define BCM6368_RESET_PCIE	0



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 003/422] scsi: core: Handle drivers which set sg_tablesize to zero
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 001/422] KVM: x86: introduce is_pae_paging Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 002/422] MIPS: BCM63XX: fix switch core reset on BCM6368 Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 004/422] ax88172a: fix information leak on short answers Greg Kroah-Hartman
                   ` (422 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Finn Thain, Michael Schmitz,
	Martin K. Petersen

From: Michael Schmitz <schmitzmic@gmail.com>

commit 9393c8de628cf0968d81a17cc11841e42191e041 upstream.

In scsi_mq_setup_tags(), cmd_size is calculated based on zero size for the
scatter-gather list in case the low level driver uses SG_NONE in its host
template.

cmd_size is passed on to the block layer for calculation of the request
size, and we've seen NULL pointer dereference errors from the block layer
in drivers where SG_NONE is used and a mq IO scheduler is active,
apparently as a consequence of this (see commit 68ab2d76e4be ("scsi:
cxlflash: Set sg_tablesize to 1 instead of SG_NONE"), and a recent patch by
Finn Thain converting the three m68k NFR5380 drivers to avoid setting
SG_NONE).

Try to avoid these errors by accounting for at least one sg list entry when
calculating cmd_size, regardless of whether the low level driver set a zero
sg_tablesize.

Tested on 030 m68k with the atari_scsi driver - setting sg_tablesize to
SG_NONE no longer results in a crash when loading this driver.

CC: Finn Thain <fthain@telegraphics.com.au>
Link: https://lore.kernel.org/r/1572922150-4358-1-git-send-email-schmitzmic@gmail.com
Signed-off-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>


---
 drivers/scsi/scsi_lib.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -2371,7 +2371,8 @@ int scsi_mq_setup_tags(struct Scsi_Host
 {
 	unsigned int cmd_size, sgl_size;
 
-	sgl_size = scsi_mq_sgl_size(shost);
+	sgl_size = max_t(unsigned int, sizeof(struct scatterlist),
+			scsi_mq_sgl_size(shost));
 	cmd_size = sizeof(struct scsi_cmnd) + shost->hostt->cmd_size + sgl_size;
 	if (scsi_host_get_prot(shost))
 		cmd_size += sizeof(struct scsi_data_buffer) + sgl_size;



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 004/422] ax88172a: fix information leak on short answers
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (2 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 003/422] scsi: core: Handle drivers which set sg_tablesize to zero Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 005/422] ipmr: Fix skb headroom in ipmr_get_route() Greg Kroah-Hartman
                   ` (421 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, syzbot+a8d4acdad35e6bbca308,
	Oliver Neukum, David S. Miller

From: Oliver Neukum <oneukum@suse.com>

[ Upstream commit a9a51bd727d141a67b589f375fe69d0e54c4fe22 ]

If a malicious device gives a short MAC it can elicit up to
5 bytes of leaked memory out of the driver. We need to check for
ETH_ALEN instead.

Reported-by: syzbot+a8d4acdad35e6bbca308@syzkaller.appspotmail.com
Signed-off-by: Oliver Neukum <oneukum@suse.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/usb/ax88172a.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/net/usb/ax88172a.c
+++ b/drivers/net/usb/ax88172a.c
@@ -208,7 +208,7 @@ static int ax88172a_bind(struct usbnet *
 
 	/* Get the MAC address */
 	ret = asix_read_cmd(dev, AX_CMD_READ_NODE_ID, 0, 0, ETH_ALEN, buf, 0);
-	if (ret < 0) {
+	if (ret < ETH_ALEN) {
 		netdev_err(dev->net, "Failed to read MAC address: %d\n", ret);
 		goto free;
 	}



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 005/422] ipmr: Fix skb headroom in ipmr_get_route().
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (3 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 004/422] ax88172a: fix information leak on short answers Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 006/422] net: gemini: add missed free_netdev Greg Kroah-Hartman
                   ` (420 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Guillaume Nault, David S. Miller

From: Guillaume Nault <gnault@redhat.com>

[ Upstream commit 7901cd97963d6cbde88fa25a4a446db3554c16c6 ]

In route.c, inet_rtm_getroute_build_skb() creates an skb with no
headroom. This skb is then used by inet_rtm_getroute() which may pass
it to rt_fill_info() and, from there, to ipmr_get_route(). The later
might try to reuse this skb by cloning it and prepending an IPv4
header. But since the original skb has no headroom, skb_push() triggers
skb_under_panic():

skbuff: skb_under_panic: text:00000000ca46ad8a len:80 put:20 head:00000000cd28494e data:000000009366fd6b tail:0x3c end:0xec0 dev:veth0
------------[ cut here ]------------
kernel BUG at net/core/skbuff.c:108!
invalid opcode: 0000 [#1] SMP KASAN PTI
CPU: 6 PID: 587 Comm: ip Not tainted 5.4.0-rc6+ #1
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-2.fc30 04/01/2014
RIP: 0010:skb_panic+0xbf/0xd0
Code: 41 a2 ff 8b 4b 70 4c 8b 4d d0 48 c7 c7 20 76 f5 8b 44 8b 45 bc 48 8b 55 c0 48 8b 75 c8 41 54 41 57 41 56 41 55 e8 75 dc 7a ff <0f> 0b 0f 1f 44 00 00 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00
RSP: 0018:ffff888059ddf0b0 EFLAGS: 00010286
RAX: 0000000000000086 RBX: ffff888060a315c0 RCX: ffffffff8abe4822
RDX: 0000000000000000 RSI: 0000000000000008 RDI: ffff88806c9a79cc
RBP: ffff888059ddf118 R08: ffffed100d9361b1 R09: ffffed100d9361b0
R10: ffff88805c68aee3 R11: ffffed100d9361b1 R12: ffff88805d218000
R13: ffff88805c689fec R14: 000000000000003c R15: 0000000000000ec0
FS:  00007f6af184b700(0000) GS:ffff88806c980000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007ffc8204a000 CR3: 0000000057b40006 CR4: 0000000000360ee0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 skb_push+0x7e/0x80
 ipmr_get_route+0x459/0x6fa
 rt_fill_info+0x692/0x9f0
 inet_rtm_getroute+0xd26/0xf20
 rtnetlink_rcv_msg+0x45d/0x630
 netlink_rcv_skb+0x1a5/0x220
 rtnetlink_rcv+0x15/0x20
 netlink_unicast+0x305/0x3a0
 netlink_sendmsg+0x575/0x730
 sock_sendmsg+0xb5/0xc0
 ___sys_sendmsg+0x497/0x4f0
 __sys_sendmsg+0xcb/0x150
 __x64_sys_sendmsg+0x48/0x50
 do_syscall_64+0xd2/0xac0
 entry_SYSCALL_64_after_hwframe+0x49/0xbe

Actually the original skb used to have enough headroom, but the
reserve_skb() call was lost with the introduction of
inet_rtm_getroute_build_skb() by commit 404eb77ea766 ("ipv4: support
sport, dport and ip_proto in RTM_GETROUTE").

We could reserve some headroom again in inet_rtm_getroute_build_skb(),
but this function shouldn't be responsible for handling the special
case of ipmr_get_route(). Let's handle that directly in
ipmr_get_route() by calling skb_realloc_headroom() instead of
skb_clone().

Fixes: 404eb77ea766 ("ipv4: support sport, dport and ip_proto in RTM_GETROUTE")
Signed-off-by: Guillaume Nault <gnault@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/ipv4/ipmr.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/net/ipv4/ipmr.c
+++ b/net/ipv4/ipmr.c
@@ -2278,7 +2278,8 @@ int ipmr_get_route(struct net *net, stru
 			rcu_read_unlock();
 			return -ENODEV;
 		}
-		skb2 = skb_clone(skb, GFP_ATOMIC);
+
+		skb2 = skb_realloc_headroom(skb, sizeof(struct iphdr));
 		if (!skb2) {
 			read_unlock(&mrt_lock);
 			rcu_read_unlock();



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 006/422] net: gemini: add missed free_netdev
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (4 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 005/422] ipmr: Fix skb headroom in ipmr_get_route() Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 007/422] net: usb: qmi_wwan: add support for Foxconn T77W968 LTE modules Greg Kroah-Hartman
                   ` (419 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Chuhong Yuan, Linus Walleij, David S. Miller

From: Chuhong Yuan <hslester96@gmail.com>

[ Upstream commit 18d647ae74116bfee38953978501cea2960a0c25 ]

This driver forgets to free allocated netdev in remove like
what is done in probe failure.
Add the free to fix it.

Signed-off-by: Chuhong Yuan <hslester96@gmail.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/ethernet/cortina/gemini.c |    1 +
 1 file changed, 1 insertion(+)

--- a/drivers/net/ethernet/cortina/gemini.c
+++ b/drivers/net/ethernet/cortina/gemini.c
@@ -2530,6 +2530,7 @@ static int gemini_ethernet_port_remove(s
 	struct gemini_ethernet_port *port = platform_get_drvdata(pdev);
 
 	gemini_port_remove(port);
+	free_netdev(port->netdev);
 	return 0;
 }
 



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 007/422] net: usb: qmi_wwan: add support for Foxconn T77W968 LTE modules
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (5 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 006/422] net: gemini: add missed free_netdev Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 008/422] slip: Fix memory leak in slip_open error path Greg Kroah-Hartman
                   ` (418 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Aleksander Morgado, Bjørn Mork,
	David S. Miller

From: Aleksander Morgado <aleksander@aleksander.es>

[ Upstream commit 802753cb0b141cf5170ab97fe7e79f5ca10d06b0 ]

These are the Foxconn-branded variants of the Dell DW5821e modules,
same USB layout as those.

The QMI interface is exposed in USB configuration #1:

P:  Vendor=0489 ProdID=e0b4 Rev=03.18
S:  Manufacturer=FII
S:  Product=T77W968 LTE
S:  SerialNumber=0123456789ABCDEF
C:  #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
I:  If#=0x0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
I:  If#=0x1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
I:  If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:  If#=0x3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:  If#=0x4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:  If#=0x5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option

Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
Acked-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/usb/qmi_wwan.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -1306,6 +1306,8 @@ static const struct usb_device_id produc
 	{QMI_QUIRK_SET_DTR(0x2c7c, 0x0191, 4)},	/* Quectel EG91 */
 	{QMI_FIXED_INTF(0x2c7c, 0x0296, 4)},	/* Quectel BG96 */
 	{QMI_QUIRK_SET_DTR(0x2cb7, 0x0104, 4)},	/* Fibocom NL678 series */
+	{QMI_FIXED_INTF(0x0489, 0xe0b4, 0)},	/* Foxconn T77W968 LTE */
+	{QMI_FIXED_INTF(0x0489, 0xe0b5, 0)},	/* Foxconn T77W968 LTE with eSIM support*/
 
 	/* 4. Gobi 1000 devices */
 	{QMI_GOBI1K_DEVICE(0x05c6, 0x9212)},	/* Acer Gobi Modem Device */



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 008/422] slip: Fix memory leak in slip_open error path
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (6 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 007/422] net: usb: qmi_wwan: add support for Foxconn T77W968 LTE modules Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 009/422] devlink: disallow reload operation during device cleanup Greg Kroah-Hartman
                   ` (417 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, David S. Miller, Oliver Hartkopp,
	Lukas Bulwahn, Jouni Hogander

From: Jouni Hogander <jouni.hogander@unikie.com>

[ Upstream commit 3b5a39979dafea9d0cd69c7ae06088f7a84cdafa ]

Driver/net/can/slcan.c is derived from slip.c. Memory leak was detected
by Syzkaller in slcan. Same issue exists in slip.c and this patch is
addressing the leak in slip.c.

Here is the slcan memory leak trace reported by Syzkaller:

BUG: memory leak unreferenced object 0xffff888067f65500 (size 4096):
  comm "syz-executor043", pid 454, jiffies 4294759719 (age 11.930s)
  hex dump (first 32 bytes):
    73 6c 63 61 6e 30 00 00 00 00 00 00 00 00 00 00 slcan0..........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
  backtrace:
    [<00000000a06eec0d>] __kmalloc+0x18b/0x2c0
    [<0000000083306e66>] kvmalloc_node+0x3a/0xc0
    [<000000006ac27f87>] alloc_netdev_mqs+0x17a/0x1080
    [<0000000061a996c9>] slcan_open+0x3ae/0x9a0
    [<000000001226f0f9>] tty_ldisc_open.isra.1+0x76/0xc0
    [<0000000019289631>] tty_set_ldisc+0x28c/0x5f0
    [<000000004de5a617>] tty_ioctl+0x48d/0x1590
    [<00000000daef496f>] do_vfs_ioctl+0x1c7/0x1510
    [<0000000059068dbc>] ksys_ioctl+0x99/0xb0
    [<000000009a6eb334>] __x64_sys_ioctl+0x78/0xb0
    [<0000000053d0332e>] do_syscall_64+0x16f/0x580
    [<0000000021b83b99>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [<000000008ea75434>] 0xfffffffffffffff

Cc: "David S. Miller" <davem@davemloft.net>
Cc: Oliver Hartkopp <socketcan@hartkopp.net>
Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com>
Signed-off-by: Jouni Hogander <jouni.hogander@unikie.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/slip/slip.c |    1 +
 1 file changed, 1 insertion(+)

--- a/drivers/net/slip/slip.c
+++ b/drivers/net/slip/slip.c
@@ -855,6 +855,7 @@ err_free_chan:
 	sl->tty = NULL;
 	tty->disc_data = NULL;
 	clear_bit(SLF_INUSE, &sl->flags);
+	free_netdev(sl->dev);
 
 err_exit:
 	rtnl_unlock();



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 009/422] devlink: disallow reload operation during device cleanup
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (7 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 008/422] slip: Fix memory leak in slip_open error path Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 010/422] ALSA: usb-audio: Fix missing error check at mixer resolution test Greg Kroah-Hartman
                   ` (416 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ido Schimmel, Jiri Pirko, David S. Miller

From: Jiri Pirko <jiri@mellanox.com>

[ Upstream commit 5a508a254bed9a2e36a5fb96c9065532a6bf1e9c ]

There is a race between driver code that does setup/cleanup of device
and devlink reload operation that in some drivers works with the same
code. Use after free could we easily obtained by running:

while true; do
        echo "0000:00:10.0" >/sys/bus/pci/drivers/mlxsw_spectrum2/bind
        devlink dev reload pci/0000:00:10.0 &
        echo "0000:00:10.0" >/sys/bus/pci/drivers/mlxsw_spectrum2/unbind
done

Fix this by enabling reload only after setup of device is complete and
disabling it at the beginning of the cleanup process.

Reported-by: Ido Schimmel <idosch@mellanox.com>
Fixes: 2d8dc5bbf4e7 ("devlink: Add support for reload")
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/ethernet/mellanox/mlx4/main.c  |    3 ++
 drivers/net/ethernet/mellanox/mlxsw/core.c |    4 ++
 drivers/net/netdevsim/netdev.c             |    5 +++
 include/net/devlink.h                      |    3 ++
 net/core/devlink.c                         |   39 ++++++++++++++++++++++++++++-
 5 files changed, 53 insertions(+), 1 deletion(-)

--- a/drivers/net/ethernet/mellanox/mlx4/main.c
+++ b/drivers/net/ethernet/mellanox/mlx4/main.c
@@ -3982,6 +3982,7 @@ static int mlx4_init_one(struct pci_dev
 	if (ret)
 		goto err_params_unregister;
 
+	devlink_reload_enable(devlink);
 	pci_save_state(pdev);
 	return 0;
 
@@ -4093,6 +4094,8 @@ static void mlx4_remove_one(struct pci_d
 	struct devlink *devlink = priv_to_devlink(priv);
 	int active_vfs = 0;
 
+	devlink_reload_disable(devlink);
+
 	if (mlx4_is_slave(dev))
 		persist->interface_state |= MLX4_INTERFACE_STATE_NOWAIT;
 
--- a/drivers/net/ethernet/mellanox/mlxsw/core.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/core.c
@@ -1054,6 +1054,8 @@ int mlxsw_core_bus_device_register(const
 		if (err)
 			goto err_driver_init;
 	}
+	if (!reload)
+		devlink_reload_enable(devlink);
 
 	return 0;
 
@@ -1088,6 +1090,8 @@ void mlxsw_core_bus_device_unregister(st
 {
 	struct devlink *devlink = priv_to_devlink(mlxsw_core);
 
+	if (!reload)
+		devlink_reload_disable(devlink);
 	if (mlxsw_core->reload_fail) {
 		if (!reload)
 			/* Only the parts that were not de-initialized in the
--- a/drivers/net/netdevsim/netdev.c
+++ b/drivers/net/netdevsim/netdev.c
@@ -23,6 +23,7 @@
 #include <net/pkt_cls.h>
 #include <net/rtnetlink.h>
 #include <net/switchdev.h>
+#include <net/devlink.h>
 
 #include "netdevsim.h"
 
@@ -221,6 +222,8 @@ static int nsim_init(struct net_device *
 		goto err_unreg_dev;
 
 	nsim_ipsec_init(ns);
+	if (ns->devlink)
+		devlink_reload_enable(ns->devlink);
 
 	return 0;
 
@@ -243,6 +246,8 @@ static void nsim_uninit(struct net_devic
 {
 	struct netdevsim *ns = netdev_priv(dev);
 
+	if (ns->devlink)
+		devlink_reload_disable(ns->devlink);
 	nsim_ipsec_teardown(ns);
 	nsim_devlink_teardown(ns);
 	debugfs_remove_recursive(ns->ddir);
--- a/include/net/devlink.h
+++ b/include/net/devlink.h
@@ -35,6 +35,7 @@ struct devlink {
 	struct device *dev;
 	possible_net_t _net;
 	struct mutex lock;
+	u8 reload_enabled:1;
 	char priv[0] __aligned(NETDEV_ALIGN);
 };
 
@@ -477,6 +478,8 @@ struct ib_device;
 struct devlink *devlink_alloc(const struct devlink_ops *ops, size_t priv_size);
 int devlink_register(struct devlink *devlink, struct device *dev);
 void devlink_unregister(struct devlink *devlink);
+void devlink_reload_enable(struct devlink *devlink);
+void devlink_reload_disable(struct devlink *devlink);
 void devlink_free(struct devlink *devlink);
 int devlink_port_register(struct devlink *devlink,
 			  struct devlink_port *devlink_port,
--- a/net/core/devlink.c
+++ b/net/core/devlink.c
@@ -2643,7 +2643,7 @@ static int devlink_nl_cmd_reload(struct
 	struct devlink *devlink = info->user_ptr[0];
 	int err;
 
-	if (!devlink->ops->reload)
+	if (!devlink->ops->reload || !devlink->reload_enabled)
 		return -EOPNOTSUPP;
 
 	err = devlink_resources_validate(devlink, NULL, info);
@@ -3889,6 +3889,8 @@ EXPORT_SYMBOL_GPL(devlink_register);
 void devlink_unregister(struct devlink *devlink)
 {
 	mutex_lock(&devlink_mutex);
+	WARN_ON(devlink->ops->reload &&
+		devlink->reload_enabled);
 	devlink_notify(devlink, DEVLINK_CMD_DEL);
 	list_del(&devlink->list);
 	mutex_unlock(&devlink_mutex);
@@ -3896,6 +3898,41 @@ void devlink_unregister(struct devlink *
 EXPORT_SYMBOL_GPL(devlink_unregister);
 
 /**
+ *	devlink_reload_enable - Enable reload of devlink instance
+ *
+ *	@devlink: devlink
+ *
+ *	Should be called at end of device initialization
+ *	process when reload operation is supported.
+ */
+void devlink_reload_enable(struct devlink *devlink)
+{
+	mutex_lock(&devlink_mutex);
+	devlink->reload_enabled = true;
+	mutex_unlock(&devlink_mutex);
+}
+EXPORT_SYMBOL_GPL(devlink_reload_enable);
+
+/**
+ *	devlink_reload_disable - Disable reload of devlink instance
+ *
+ *	@devlink: devlink
+ *
+ *	Should be called at the beginning of device cleanup
+ *	process when reload operation is supported.
+ */
+void devlink_reload_disable(struct devlink *devlink)
+{
+	mutex_lock(&devlink_mutex);
+	/* Mutex is taken which ensures that no reload operation is in
+	 * progress while setting up forbidded flag.
+	 */
+	devlink->reload_enabled = false;
+	mutex_unlock(&devlink_mutex);
+}
+EXPORT_SYMBOL_GPL(devlink_reload_disable);
+
+/**
  *	devlink_free - Free devlink instance resources
  *
  *	@devlink: devlink



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 010/422] ALSA: usb-audio: Fix missing error check at mixer resolution test
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (8 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 009/422] devlink: disallow reload operation during device cleanup Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 011/422] ALSA: usb-audio: not submit urb for stopped endpoint Greg Kroah-Hartman
                   ` (415 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Takashi Iwai, syzbot+abe1ab7afc62c6bb6377

From: Takashi Iwai <tiwai@suse.de>

commit 167beb1756791e0806365a3f86a0da10d7a327ee upstream.

A check of the return value from get_cur_mix_raw() is missing at the
resolution test code in get_min_max_with_quirks(), which may leave the
variable untouched, leading to a random uninitialized value, as
detected by syzkaller fuzzer.

Add the missing return error check for fixing that.

Reported-and-tested-by: syzbot+abe1ab7afc62c6bb6377@syzkaller.appspotmail.com
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20191109181658.30368-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/usb/mixer.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- a/sound/usb/mixer.c
+++ b/sound/usb/mixer.c
@@ -1244,7 +1244,8 @@ static int get_min_max_with_quirks(struc
 		if (cval->min + cval->res < cval->max) {
 			int last_valid_res = cval->res;
 			int saved, test, check;
-			get_cur_mix_raw(cval, minchn, &saved);
+			if (get_cur_mix_raw(cval, minchn, &saved) < 0)
+				goto no_res_check;
 			for (;;) {
 				test = saved;
 				if (test < cval->max)
@@ -1264,6 +1265,7 @@ static int get_min_max_with_quirks(struc
 			snd_usb_set_cur_mix_value(cval, minchn, 0, saved);
 		}
 
+no_res_check:
 		cval->initialized = 1;
 	}
 



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 011/422] ALSA: usb-audio: not submit urb for stopped endpoint
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (9 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 010/422] ALSA: usb-audio: Fix missing error check at mixer resolution test Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 012/422] ALSA: usb-audio: Fix incorrect NULL check in create_yamaha_midi_quirk() Greg Kroah-Hartman
                   ` (414 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Henry Lin, Takashi Iwai

From: Henry Lin <henryl@nvidia.com>

commit 528699317dd6dc722dccc11b68800cf945109390 upstream.

While output urb's snd_complete_urb() is executing, calling
prepare_outbound_urb() may cause endpoint stopped before
prepare_outbound_urb() returns and result in next urb submitted
to stopped endpoint. usb-audio driver cannot re-use it afterwards as
the urb is still hold by usb stack.

This change checks EP_FLAG_RUNNING flag after prepare_outbound_urb() again
to let snd_complete_urb() know the endpoint already stopped and does not
submit next urb. Below kind of error will be fixed:

[  213.153103] usb 1-2: timeout: still 1 active urbs on EP #1
[  213.164121] usb 1-2: cannot submit urb 0, error -16: unknown error

Signed-off-by: Henry Lin <henryl@nvidia.com>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20191113021420.13377-1-henryl@nvidia.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/usb/endpoint.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/sound/usb/endpoint.c
+++ b/sound/usb/endpoint.c
@@ -401,6 +401,9 @@ static void snd_complete_urb(struct urb
 		}
 
 		prepare_outbound_urb(ep, ctx);
+		/* can be stopped during prepare callback */
+		if (unlikely(!test_bit(EP_FLAG_RUNNING, &ep->flags)))
+			goto exit_clear;
 	} else {
 		retire_inbound_urb(ep, ctx);
 		/* can be stopped during retire callback */



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 012/422] ALSA: usb-audio: Fix incorrect NULL check in create_yamaha_midi_quirk()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (10 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 011/422] ALSA: usb-audio: not submit urb for stopped endpoint Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 013/422] ALSA: usb-audio: Fix incorrect size check for processing/extension units Greg Kroah-Hartman
                   ` (413 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Pavel Machek, Takashi Iwai

From: Takashi Iwai <tiwai@suse.de>

commit cc9dbfa9707868fb0ca864c05e0c42d3f4d15cf2 upstream.

The commit 60849562a5db ("ALSA: usb-audio: Fix possible NULL
dereference at create_yamaha_midi_quirk()") added NULL checks in
create_yamaha_midi_quirk(), but there was an overlook.  The code
allows one of either injd or outjd is NULL, but the second if check
made returning -ENODEV if any of them is NULL.  Fix it in a proper
form.

Fixes: 60849562a5db ("ALSA: usb-audio: Fix possible NULL dereference at create_yamaha_midi_quirk()")
Reported-by: Pavel Machek <pavel@denx.de>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20191113111259.24123-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/usb/quirks.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -259,8 +259,8 @@ static int create_yamaha_midi_quirk(stru
 					NULL, USB_MS_MIDI_OUT_JACK);
 	if (!injd && !outjd)
 		return -ENODEV;
-	if (!(injd && snd_usb_validate_midi_desc(injd)) ||
-	    !(outjd && snd_usb_validate_midi_desc(outjd)))
+	if ((injd && !snd_usb_validate_midi_desc(injd)) ||
+	    (outjd && !snd_usb_validate_midi_desc(outjd)))
 		return -ENODEV;
 	if (injd && (injd->bLength < 5 ||
 		     (injd->bJackType != USB_MS_EMBEDDED &&



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 013/422] ALSA: usb-audio: Fix incorrect size check for processing/extension units
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (11 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 012/422] ALSA: usb-audio: Fix incorrect NULL check in create_yamaha_midi_quirk() Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 014/422] Btrfs: fix log context list corruption after rename exchange operation Greg Kroah-Hartman
                   ` (412 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Takashi Iwai

From: Takashi Iwai <tiwai@suse.de>

commit 976a68f06b2ea49e2ab67a5f84919a8b105db8be upstream.

The recently introduced unit descriptor validation had some bug for
processing and extension units, it counts a bControlSize byte twice so
it expected a bigger size than it should have been.  This seems
resulting in a probe error on a few devices.

Fix the calculation for proper checks of PU and EU.

Fixes: 57f8770620e9 ("ALSA: usb-audio: More validations of descriptor units")
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20191114165613.7422-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/usb/validate.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--- a/sound/usb/validate.c
+++ b/sound/usb/validate.c
@@ -81,9 +81,9 @@ static bool validate_processing_unit(con
 	switch (v->protocol) {
 	case UAC_VERSION_1:
 	default:
-		/* bNrChannels, wChannelConfig, iChannelNames, bControlSize */
-		len += 1 + 2 + 1 + 1;
-		if (d->bLength < len) /* bControlSize */
+		/* bNrChannels, wChannelConfig, iChannelNames */
+		len += 1 + 2 + 1;
+		if (d->bLength < len + 1) /* bControlSize */
 			return false;
 		m = hdr[len];
 		len += 1 + m + 1; /* bControlSize, bmControls, iProcessing */



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 014/422] Btrfs: fix log context list corruption after rename exchange operation
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (12 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 013/422] ALSA: usb-audio: Fix incorrect size check for processing/extension units Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 015/422] Input: ff-memless - kill timer in destroy() Greg Kroah-Hartman
                   ` (411 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Su Yue, Filipe Manana, David Sterba

From: Filipe Manana <fdmanana@suse.com>

commit e6c617102c7e4ac1398cb0b98ff1f0727755b520 upstream.

During rename exchange we might have successfully log the new name in the
source root's log tree, in which case we leave our log context (allocated
on stack) in the root's list of log contextes. However we might fail to
log the new name in the destination root, in which case we fallback to
a transaction commit later and never sync the log of the source root,
which causes the source root log context to remain in the list of log
contextes. This later causes invalid memory accesses because the context
was allocated on stack and after rename exchange finishes the stack gets
reused and overwritten for other purposes.

The kernel's linked list corruption detector (CONFIG_DEBUG_LIST=y) can
detect this and report something like the following:

  [  691.489929] ------------[ cut here ]------------
  [  691.489947] list_add corruption. prev->next should be next (ffff88819c944530), but was ffff8881c23f7be4. (prev=ffff8881c23f7a38).
  [  691.489967] WARNING: CPU: 2 PID: 28933 at lib/list_debug.c:28 __list_add_valid+0x95/0xe0
  (...)
  [  691.489998] CPU: 2 PID: 28933 Comm: fsstress Not tainted 5.4.0-rc6-btrfs-next-62 #1
  [  691.490001] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-0-ga698c8995f-prebuilt.qemu.org 04/01/2014
  [  691.490003] RIP: 0010:__list_add_valid+0x95/0xe0
  (...)
  [  691.490007] RSP: 0018:ffff8881f0b3faf8 EFLAGS: 00010282
  [  691.490010] RAX: 0000000000000000 RBX: ffff88819c944530 RCX: 0000000000000000
  [  691.490011] RDX: 0000000000000001 RSI: 0000000000000008 RDI: ffffffffa2c497e0
  [  691.490013] RBP: ffff8881f0b3fe68 R08: ffffed103eaa4115 R09: ffffed103eaa4114
  [  691.490015] R10: ffff88819c944000 R11: ffffed103eaa4115 R12: 7fffffffffffffff
  [  691.490016] R13: ffff8881b4035610 R14: ffff8881e7b84728 R15: 1ffff1103e167f7b
  [  691.490019] FS:  00007f4b25ea2e80(0000) GS:ffff8881f5500000(0000) knlGS:0000000000000000
  [  691.490021] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
  [  691.490022] CR2: 00007fffbb2d4eec CR3: 00000001f2a4a004 CR4: 00000000003606e0
  [  691.490025] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
  [  691.490027] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
  [  691.490029] Call Trace:
  [  691.490058]  btrfs_log_inode_parent+0x667/0x2730 [btrfs]
  [  691.490083]  ? join_transaction+0x24a/0xce0 [btrfs]
  [  691.490107]  ? btrfs_end_log_trans+0x80/0x80 [btrfs]
  [  691.490111]  ? dget_parent+0xb8/0x460
  [  691.490116]  ? lock_downgrade+0x6b0/0x6b0
  [  691.490121]  ? rwlock_bug.part.0+0x90/0x90
  [  691.490127]  ? do_raw_spin_unlock+0x142/0x220
  [  691.490151]  btrfs_log_dentry_safe+0x65/0x90 [btrfs]
  [  691.490172]  btrfs_sync_file+0x9f1/0xc00 [btrfs]
  [  691.490195]  ? btrfs_file_write_iter+0x1800/0x1800 [btrfs]
  [  691.490198]  ? rcu_read_lock_any_held.part.11+0x20/0x20
  [  691.490204]  ? __do_sys_newstat+0x88/0xd0
  [  691.490207]  ? cp_new_stat+0x5d0/0x5d0
  [  691.490218]  ? do_fsync+0x38/0x60
  [  691.490220]  do_fsync+0x38/0x60
  [  691.490224]  __x64_sys_fdatasync+0x32/0x40
  [  691.490228]  do_syscall_64+0x9f/0x540
  [  691.490233]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
  [  691.490235] RIP: 0033:0x7f4b253ad5f0
  (...)
  [  691.490239] RSP: 002b:00007fffbb2d6078 EFLAGS: 00000246 ORIG_RAX: 000000000000004b
  [  691.490242] RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007f4b253ad5f0
  [  691.490244] RDX: 00007fffbb2d5fe0 RSI: 00007fffbb2d5fe0 RDI: 0000000000000003
  [  691.490245] RBP: 000000000000000d R08: 0000000000000001 R09: 00007fffbb2d608c
  [  691.490247] R10: 00000000000002e8 R11: 0000000000000246 R12: 00000000000001f4
  [  691.490248] R13: 0000000051eb851f R14: 00007fffbb2d6120 R15: 00005635a498bda0

This started happening recently when running some test cases from fstests
like btrfs/004 for example, because support for rename exchange was added
last week to fsstress from fstests.

So fix this by deleting the log context for the source root from the list
if we have logged the new name in the source root.

Reported-by: Su Yue <Damenly_Su@gmx.com>
Fixes: d4682ba03ef618 ("Btrfs: sync log after logging new name")
CC: stable@vger.kernel.org # 4.19+
Tested-by: Su Yue <Damenly_Su@gmx.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/inode.c |   15 +++++++++++++++
 1 file changed, 15 insertions(+)

--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -9700,6 +9700,18 @@ out_fail:
 			commit_transaction = true;
 	}
 	if (commit_transaction) {
+		/*
+		 * We may have set commit_transaction when logging the new name
+		 * in the destination root, in which case we left the source
+		 * root context in the list of log contextes. So make sure we
+		 * remove it to avoid invalid memory accesses, since the context
+		 * was allocated in our stack frame.
+		 */
+		if (sync_log_root) {
+			mutex_lock(&root->log_mutex);
+			list_del_init(&ctx_root.list);
+			mutex_unlock(&root->log_mutex);
+		}
 		ret = btrfs_commit_transaction(trans);
 	} else {
 		int ret2;
@@ -9713,6 +9725,9 @@ out_notrans:
 	if (old_ino == BTRFS_FIRST_FREE_OBJECTID)
 		up_read(&fs_info->subvol_sem);
 
+	ASSERT(list_empty(&ctx_root.list));
+	ASSERT(list_empty(&ctx_dest.list));
+
 	return ret;
 }
 



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 015/422] Input: ff-memless - kill timer in destroy()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (13 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 014/422] Btrfs: fix log context list corruption after rename exchange operation Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 016/422] Input: synaptics-rmi4 - fix video buffer size Greg Kroah-Hartman
                   ` (410 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Oliver Neukum, Dmitry Torokhov,
	syzbot+b6c55daa701fc389e286

From: Oliver Neukum <oneukum@suse.com>

commit fa3a5a1880c91bb92594ad42dfe9eedad7996b86 upstream.

No timer must be left running when the device goes away.

Signed-off-by: Oliver Neukum <oneukum@suse.com>
Reported-and-tested-by: syzbot+b6c55daa701fc389e286@syzkaller.appspotmail.com
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/1573726121.17351.3.camel@suse.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/input/ff-memless.c |    9 +++++++++
 1 file changed, 9 insertions(+)

--- a/drivers/input/ff-memless.c
+++ b/drivers/input/ff-memless.c
@@ -501,6 +501,15 @@ static void ml_ff_destroy(struct ff_devi
 {
 	struct ml_device *ml = ff->private;
 
+	/*
+	 * Even though we stop all playing effects when tearing down
+	 * an input device (via input_device_flush() that calls into
+	 * input_ff_flush() that stops and erases all effects), we
+	 * do not actually stop the timer, and therefore we should
+	 * do it here.
+	 */
+	del_timer_sync(&ml->timer);
+
 	kfree(ml->private);
 }
 



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 016/422] Input: synaptics-rmi4 - fix video buffer size
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (14 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 015/422] Input: ff-memless - kill timer in destroy() Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 017/422] Input: synaptics-rmi4 - disable the relative position IRQ in the F12 driver Greg Kroah-Hartman
                   ` (409 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Lucas Stach, Dmitry Torokhov

From: Lucas Stach <l.stach@pengutronix.de>

commit 003f01c780020daa9a06dea1db495b553a868c29 upstream.

The video buffer used by the queue is a vb2_v4l2_buffer, not a plain
vb2_buffer. Using the wrong type causes the allocation of the buffer
storage to be too small, causing a out of bounds write when
__init_vb2_v4l2_buffer initializes the buffer.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Fixes: 3a762dbd5347 ("[media] Input: synaptics-rmi4 - add support for F54 diagnostics")
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20191104114454.10500-1-l.stach@pengutronix.de
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/input/rmi4/rmi_f54.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/input/rmi4/rmi_f54.c
+++ b/drivers/input/rmi4/rmi_f54.c
@@ -362,7 +362,7 @@ static const struct vb2_ops rmi_f54_queu
 static const struct vb2_queue rmi_f54_queue = {
 	.type = V4L2_BUF_TYPE_VIDEO_CAPTURE,
 	.io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_READ,
-	.buf_struct_size = sizeof(struct vb2_buffer),
+	.buf_struct_size = sizeof(struct vb2_v4l2_buffer),
 	.ops = &rmi_f54_queue_ops,
 	.mem_ops = &vb2_vmalloc_memops,
 	.timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC,



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 017/422] Input: synaptics-rmi4 - disable the relative position IRQ in the F12 driver
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (15 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 016/422] Input: synaptics-rmi4 - fix video buffer size Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 018/422] Input: synaptics-rmi4 - do not consume more data than we have (F11, F12) Greg Kroah-Hartman
                   ` (408 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andrew Duggan, Simon Wood, Dmitry Torokhov

From: Andrew Duggan <aduggan@synaptics.com>

commit f6aabe1ff1d9d7bad0879253011216438bdb2530 upstream.

This patch fixes an issue seen on HID touchpads which report finger
positions using RMI4 Function 12. The issue manifests itself as
spurious button presses as described in:
https://www.spinics.net/lists/linux-input/msg58618.html

Commit 24d28e4f1271 ("Input: synaptics-rmi4 - convert irq distribution
to irq_domain") switched the RMI4 driver to using an irq_domain to handle
RMI4 function interrupts. Functions with more then one interrupt now have
each interrupt mapped to their own IRQ and IRQ handler. The result of
this change is that the F12 IRQ handler was now getting called twice. Once
for the absolute data interrupt and once for the relative data interrupt.
For HID devices, calling rmi_f12_attention() a second time causes the
attn_data data pointer and size to be set incorrectly. When the touchpad
button is pressed, F30 will generate an interrupt and attempt to read the
F30 data from the invalid attn_data data pointer and report incorrect
button events.

This patch disables the F12 relative interrupt which prevents
rmi_f12_attention() from being called twice.

Signed-off-by: Andrew Duggan <aduggan@synaptics.com>
Reported-by: Simon Wood <simon@mungewell.org>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20191025002527.3189-2-aduggan@synaptics.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/input/rmi4/rmi_f12.c |   28 ++++++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

--- a/drivers/input/rmi4/rmi_f12.c
+++ b/drivers/input/rmi4/rmi_f12.c
@@ -58,6 +58,9 @@ struct f12_data {
 
 	const struct rmi_register_desc_item *data15;
 	u16 data15_offset;
+
+	unsigned long *abs_mask;
+	unsigned long *rel_mask;
 };
 
 static int rmi_f12_read_sensor_tuning(struct f12_data *f12)
@@ -296,9 +299,18 @@ static int rmi_f12_write_control_regs(st
 static int rmi_f12_config(struct rmi_function *fn)
 {
 	struct rmi_driver *drv = fn->rmi_dev->driver;
+	struct f12_data *f12 = dev_get_drvdata(&fn->dev);
+	struct rmi_2d_sensor *sensor;
 	int ret;
 
-	drv->set_irq_bits(fn->rmi_dev, fn->irq_mask);
+	sensor = &f12->sensor;
+
+	if (!sensor->report_abs)
+		drv->clear_irq_bits(fn->rmi_dev, f12->abs_mask);
+	else
+		drv->set_irq_bits(fn->rmi_dev, f12->abs_mask);
+
+	drv->clear_irq_bits(fn->rmi_dev, f12->rel_mask);
 
 	ret = rmi_f12_write_control_regs(fn);
 	if (ret)
@@ -320,9 +332,12 @@ static int rmi_f12_probe(struct rmi_func
 	struct rmi_device_platform_data *pdata = rmi_get_platform_data(rmi_dev);
 	struct rmi_driver_data *drvdata = dev_get_drvdata(&rmi_dev->dev);
 	u16 data_offset = 0;
+	int mask_size;
 
 	rmi_dbg(RMI_DEBUG_FN, &fn->dev, "%s\n", __func__);
 
+	mask_size = BITS_TO_LONGS(drvdata->irq_count) * sizeof(unsigned long);
+
 	ret = rmi_read(fn->rmi_dev, query_addr, &buf);
 	if (ret < 0) {
 		dev_err(&fn->dev, "Failed to read general info register: %d\n",
@@ -337,10 +352,19 @@ static int rmi_f12_probe(struct rmi_func
 		return -ENODEV;
 	}
 
-	f12 = devm_kzalloc(&fn->dev, sizeof(struct f12_data), GFP_KERNEL);
+	f12 = devm_kzalloc(&fn->dev, sizeof(struct f12_data) + mask_size * 2,
+			GFP_KERNEL);
 	if (!f12)
 		return -ENOMEM;
 
+	f12->abs_mask = (unsigned long *)((char *)f12
+			+ sizeof(struct f12_data));
+	f12->rel_mask = (unsigned long *)((char *)f12
+			+ sizeof(struct f12_data) + mask_size);
+
+	set_bit(fn->irq_pos, f12->abs_mask);
+	set_bit(fn->irq_pos + 1, f12->rel_mask);
+
 	f12->has_dribble = !!(buf & BIT(3));
 
 	if (fn->dev.of_node) {



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 018/422] Input: synaptics-rmi4 - do not consume more data than we have (F11, F12)
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (16 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 017/422] Input: synaptics-rmi4 - disable the relative position IRQ in the F12 driver Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 019/422] Input: synaptics-rmi4 - clear IRQ enables for F54 Greg Kroah-Hartman
                   ` (407 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Andrew Duggan, Dmitry Torokhov

From: Andrew Duggan <aduggan@synaptics.com>

commit 5d40d95e7e64756cc30606c2ba169271704d47cb upstream.

Currently, rmi_f11_attention() and rmi_f12_attention() functions update
the attn_data data pointer and size based on the size of the expected
size of the attention data. However, if the actual valid data in the
attn buffer is less then the expected value then the updated data
pointer will point to memory beyond the end of the attn buffer. Using
the calculated valid_bytes instead will prevent this from happening.

Signed-off-by: Andrew Duggan <aduggan@synaptics.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20191025002527.3189-3-aduggan@synaptics.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/input/rmi4/rmi_f11.c |    4 ++--
 drivers/input/rmi4/rmi_f12.c |    4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

--- a/drivers/input/rmi4/rmi_f11.c
+++ b/drivers/input/rmi4/rmi_f11.c
@@ -1287,8 +1287,8 @@ static irqreturn_t rmi_f11_attention(int
 			valid_bytes = f11->sensor.attn_size;
 		memcpy(f11->sensor.data_pkt, drvdata->attn_data.data,
 			valid_bytes);
-		drvdata->attn_data.data += f11->sensor.attn_size;
-		drvdata->attn_data.size -= f11->sensor.attn_size;
+		drvdata->attn_data.data += valid_bytes;
+		drvdata->attn_data.size -= valid_bytes;
 	} else {
 		error = rmi_read_block(rmi_dev,
 				data_base_addr, f11->sensor.data_pkt,
--- a/drivers/input/rmi4/rmi_f12.c
+++ b/drivers/input/rmi4/rmi_f12.c
@@ -217,8 +217,8 @@ static irqreturn_t rmi_f12_attention(int
 			valid_bytes = sensor->attn_size;
 		memcpy(sensor->data_pkt, drvdata->attn_data.data,
 			valid_bytes);
-		drvdata->attn_data.data += sensor->attn_size;
-		drvdata->attn_data.size -= sensor->attn_size;
+		drvdata->attn_data.data += valid_bytes;
+		drvdata->attn_data.size -= valid_bytes;
 	} else {
 		retval = rmi_read_block(rmi_dev, f12->data_addr,
 					sensor->data_pkt, sensor->pkt_size);



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 019/422] Input: synaptics-rmi4 - clear IRQ enables for F54
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (17 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 018/422] Input: synaptics-rmi4 - do not consume more data than we have (F11, F12) Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 020/422] Input: synaptics-rmi4 - destroy F54 poller workqueue when removing Greg Kroah-Hartman
                   ` (406 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Lucas Stach, Dmitry Torokhov

From: Lucas Stach <l.stach@pengutronix.de>

commit 549766ac2ac1f6c8bb85906bbcea759541bb19a2 upstream.

The driver for F54 just polls the status and doesn't even have a IRQ
handler registered. Make sure to disable all F54 IRQs, so we don't crash
the kernel on a nonexistent handler.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Link: https://lore.kernel.org/r/20191105114402.6009-1-l.stach@pengutronix.de
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/input/rmi4/rmi_f54.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/input/rmi4/rmi_f54.c
+++ b/drivers/input/rmi4/rmi_f54.c
@@ -614,7 +614,7 @@ static int rmi_f54_config(struct rmi_fun
 {
 	struct rmi_driver *drv = fn->rmi_dev->driver;
 
-	drv->set_irq_bits(fn->rmi_dev, fn->irq_mask);
+	drv->clear_irq_bits(fn->rmi_dev, fn->irq_mask);
 
 	return 0;
 }



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 020/422] Input: synaptics-rmi4 - destroy F54 poller workqueue when removing
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (18 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 019/422] Input: synaptics-rmi4 - clear IRQ enables for F54 Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 021/422] IB/hfi1: Ensure full Gen3 speed in a Gen4 system Greg Kroah-Hartman
                   ` (405 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Chuhong Yuan, Dmitry Torokhov

From: Chuhong Yuan <hslester96@gmail.com>

commit ba60cf9f78f0d7c8e73c7390608f7f818ee68aa0 upstream.

The driver forgets to destroy workqueue in remove() similarly to what is
done when probe() fails. Add a call to destroy_workqueue() to fix it.

Since unregistration will wait for the work to finish, we do not need to
cancel/flush the work instance in remove().

Signed-off-by: Chuhong Yuan <hslester96@gmail.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20191114023405.31477-1-hslester96@gmail.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/input/rmi4/rmi_f54.c |    1 +
 1 file changed, 1 insertion(+)

--- a/drivers/input/rmi4/rmi_f54.c
+++ b/drivers/input/rmi4/rmi_f54.c
@@ -742,6 +742,7 @@ static void rmi_f54_remove(struct rmi_fu
 
 	video_unregister_device(&f54->vdev);
 	v4l2_device_unregister(&f54->v4l2);
+	destroy_workqueue(f54->workqueue);
 }
 
 struct rmi_function_handler rmi_f54_handler = {



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 021/422] IB/hfi1: Ensure full Gen3 speed in a Gen4 system
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (19 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 020/422] Input: synaptics-rmi4 - destroy F54 poller workqueue when removing Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 022/422] IB/hfi1: Use a common pad buffer for 9B and 16B packets Greg Kroah-Hartman
                   ` (404 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dennis Dalessandro, Kaike Wan,
	James Erwin, Mike Marciniszyn, Jason Gunthorpe

From: James Erwin <james.erwin@intel.com>

commit a9c3c4c597704b3a1a2b9bef990e7d8a881f6533 upstream.

If an hfi1 card is inserted in a Gen4 systems, the driver will avoid the
gen3 speed bump and the card will operate at half speed.

This is because the driver avoids the gen3 speed bump when the parent bus
speed isn't identical to gen3, 8.0GT/s.  This is not compatible with gen4
and newer speeds.

Fix by relaxing the test to explicitly look for the lower capability
speeds which inherently allows for gen4 and all future speeds.

Fixes: 7724105686e7 ("IB/hfi1: add driver files")
Link: https://lore.kernel.org/r/20191101192059.106248.1699.stgit@awfm-01.aw.intel.com
Cc: <stable@vger.kernel.org>
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Reviewed-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: James Erwin <james.erwin@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/infiniband/hw/hfi1/pcie.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- a/drivers/infiniband/hw/hfi1/pcie.c
+++ b/drivers/infiniband/hw/hfi1/pcie.c
@@ -331,7 +331,9 @@ int pcie_speeds(struct hfi1_devdata *dd)
 	/*
 	 * bus->max_bus_speed is set from the bridge's linkcap Max Link Speed
 	 */
-	if (parent && dd->pcidev->bus->max_bus_speed != PCIE_SPEED_8_0GT) {
+	if (parent &&
+	    (dd->pcidev->bus->max_bus_speed == PCIE_SPEED_2_5GT ||
+	     dd->pcidev->bus->max_bus_speed == PCIE_SPEED_5_0GT)) {
 		dd_dev_info(dd, "Parent PCIe bridge does not support Gen3\n");
 		dd->link_gen3_capable = 0;
 	}



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 022/422] IB/hfi1: Use a common pad buffer for 9B and 16B packets
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (20 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 021/422] IB/hfi1: Ensure full Gen3 speed in a Gen4 system Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 023/422] i2c: acpi: Force bus speed to 400KHz if a Silead touchscreen is present Greg Kroah-Hartman
                   ` (403 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dan Carpenter, Kaike Wan,
	Dennis Dalessandro, Mike Marciniszyn, Doug Ledford

From: Mike Marciniszyn <mike.marciniszyn@intel.com>

commit 22bb13653410424d9fce8d447506a41f8292f22f upstream.

There is no reason for a different pad buffer for the two
packet types.

Expand the current buffer allocation to allow for both
packet types.

Fixes: f8195f3b14a0 ("IB/hfi1: Eliminate allocation while atomic")
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Kaike Wan <kaike.wan@intel.com>
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Link: https://lore.kernel.org/r/20191004204934.26838.13099.stgit@awfm-01.aw.intel.com
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/infiniband/hw/hfi1/sdma.c  |    5 +++--
 drivers/infiniband/hw/hfi1/verbs.c |   10 ++++------
 2 files changed, 7 insertions(+), 8 deletions(-)

--- a/drivers/infiniband/hw/hfi1/sdma.c
+++ b/drivers/infiniband/hw/hfi1/sdma.c
@@ -65,6 +65,7 @@
 #define SDMA_DESCQ_CNT 2048
 #define SDMA_DESC_INTR 64
 #define INVALID_TAIL 0xffff
+#define SDMA_PAD max_t(size_t, MAX_16B_PADDING, sizeof(u32))
 
 static uint sdma_descq_cnt = SDMA_DESCQ_CNT;
 module_param(sdma_descq_cnt, uint, S_IRUGO);
@@ -1280,7 +1281,7 @@ void sdma_clean(struct hfi1_devdata *dd,
 	struct sdma_engine *sde;
 
 	if (dd->sdma_pad_dma) {
-		dma_free_coherent(&dd->pcidev->dev, 4,
+		dma_free_coherent(&dd->pcidev->dev, SDMA_PAD,
 				  (void *)dd->sdma_pad_dma,
 				  dd->sdma_pad_phys);
 		dd->sdma_pad_dma = NULL;
@@ -1481,7 +1482,7 @@ int sdma_init(struct hfi1_devdata *dd, u
 	/* Allocate memory for pad */
 	dd->sdma_pad_dma = dma_zalloc_coherent(
 		&dd->pcidev->dev,
-		sizeof(u32),
+		SDMA_PAD,
 		&dd->sdma_pad_phys,
 		GFP_KERNEL
 	);
--- a/drivers/infiniband/hw/hfi1/verbs.c
+++ b/drivers/infiniband/hw/hfi1/verbs.c
@@ -149,9 +149,6 @@ static int pio_wait(struct rvt_qp *qp,
 /* Length of buffer to create verbs txreq cache name */
 #define TXREQ_NAME_LEN 24
 
-/* 16B trailing buffer */
-static const u8 trail_buf[MAX_16B_PADDING];
-
 static uint wss_threshold;
 module_param(wss_threshold, uint, S_IRUGO);
 MODULE_PARM_DESC(wss_threshold, "Percentage (1-100) of LLC to use as a threshold for a cacheless copy");
@@ -893,8 +890,8 @@ static int build_verbs_tx_desc(
 
 	/* add icrc, lt byte, and padding to flit */
 	if (extra_bytes)
-		ret = sdma_txadd_kvaddr(sde->dd, &tx->txreq,
-					(void *)trail_buf, extra_bytes);
+		ret = sdma_txadd_daddr(sde->dd, &tx->txreq,
+				       sde->dd->sdma_pad_phys, extra_bytes);
 
 bail_txadd:
 	return ret;
@@ -1151,7 +1148,8 @@ int hfi1_verbs_send_pio(struct rvt_qp *q
 		}
 		/* add icrc, lt byte, and padding to flit */
 		if (extra_bytes)
-			seg_pio_copy_mid(pbuf, trail_buf, extra_bytes);
+			seg_pio_copy_mid(pbuf, ppd->dd->sdma_pad_dma,
+					 extra_bytes);
 
 		seg_pio_copy_end(pbuf);
 	}



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 023/422] i2c: acpi: Force bus speed to 400KHz if a Silead touchscreen is present
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (21 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 022/422] IB/hfi1: Use a common pad buffer for 9B and 16B packets Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 024/422] x86/quirks: Disable HPET on Intel Coffe Lake platforms Greg Kroah-Hartman
                   ` (402 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, youling 257, Hans de Goede,
	Jarkko Nikula, Mika Westerberg, Wolfram Sang, stable

From: Hans de Goede <hdegoede@redhat.com>

commit 7574c0db2e68c4d0bae9d415a683bdd8b2a761e9 upstream.

Many cheap devices use Silead touchscreen controllers. Testing has shown
repeatedly that these touchscreen controllers work fine at 400KHz, but for
unknown reasons do not work properly at 100KHz. This has been seen on
both ARM and x86 devices using totally different i2c controllers.

On some devices the ACPI tables list another device at the same I2C-bus
as only being capable of 100KHz, testing has shown that these other
devices work fine at 400KHz (as can be expected of any recent I2C hw).

This commit makes i2c_acpi_find_bus_speed() always return 400KHz if a
Silead touchscreen controller is present, fixing the touchscreen not
working on devices which ACPI tables' wrongly list another device on the
same bus as only being capable of 100KHz.

Specifically this fixes the touchscreen on the Jumper EZpad 6 m4 not
working.

Reported-by: youling 257 <youling257@gmail.com>
Tested-by: youling 257 <youling257@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
[wsa: rewording warning a little]
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Cc: stable@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/i2c/i2c-core-acpi.c |   28 +++++++++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

--- a/drivers/i2c/i2c-core-acpi.c
+++ b/drivers/i2c/i2c-core-acpi.c
@@ -43,6 +43,7 @@ struct i2c_acpi_lookup {
 	int index;
 	u32 speed;
 	u32 min_speed;
+	u32 force_speed;
 };
 
 static int i2c_acpi_fill_info(struct acpi_resource *ares, void *data)
@@ -240,6 +241,19 @@ i2c_acpi_match_device(const struct acpi_
 	return acpi_match_device(matches, &client->dev);
 }
 
+static const struct acpi_device_id i2c_acpi_force_400khz_device_ids[] = {
+	/*
+	 * These Silead touchscreen controllers only work at 400KHz, for
+	 * some reason they do not work at 100KHz. On some devices the ACPI
+	 * tables list another device at their bus as only being capable
+	 * of 100KHz, testing has shown that these other devices work fine
+	 * at 400KHz (as can be expected of any recent i2c hw) so we force
+	 * the speed of the bus to 400 KHz if a Silead device is present.
+	 */
+	{ "MSSL1680", 0 },
+	{}
+};
+
 static acpi_status i2c_acpi_lookup_speed(acpi_handle handle, u32 level,
 					   void *data, void **return_value)
 {
@@ -258,6 +272,9 @@ static acpi_status i2c_acpi_lookup_speed
 	if (lookup->speed <= lookup->min_speed)
 		lookup->min_speed = lookup->speed;
 
+	if (acpi_match_device_ids(adev, i2c_acpi_force_400khz_device_ids) == 0)
+		lookup->force_speed = 400000;
+
 	return AE_OK;
 }
 
@@ -295,7 +312,16 @@ u32 i2c_acpi_find_bus_speed(struct devic
 		return 0;
 	}
 
-	return lookup.min_speed != UINT_MAX ? lookup.min_speed : 0;
+	if (lookup.force_speed) {
+		if (lookup.force_speed != lookup.min_speed)
+			dev_warn(dev, FW_BUG "DSDT uses known not-working I2C bus speed %d, forcing it to %d\n",
+				 lookup.min_speed, lookup.force_speed);
+		return lookup.force_speed;
+	} else if (lookup.min_speed != UINT_MAX) {
+		return lookup.min_speed;
+	} else {
+		return 0;
+	}
 }
 EXPORT_SYMBOL_GPL(i2c_acpi_find_bus_speed);
 



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 024/422] x86/quirks: Disable HPET on Intel Coffe Lake platforms
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (22 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 023/422] i2c: acpi: Force bus speed to 400KHz if a Silead touchscreen is present Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 025/422] ecryptfs_lookup_interpose(): lower_dentry->d_inode is not stable Greg Kroah-Hartman
                   ` (401 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Feng Tang, Kai-Heng Feng, Thomas Gleixner

From: Kai-Heng Feng <kai.heng.feng@canonical.com>

commit fc5db58539b49351e76f19817ed1102bf7c712d0 upstream.

Some Coffee Lake platforms have a skewed HPET timer once the SoCs entered
PC10, which in consequence marks TSC as unstable because HPET is used as
watchdog clocksource for TSC.

Harry Pan tried to work around it in the clocksource watchdog code [1]
thereby creating a circular dependency between HPET and TSC. This also
ignores the fact, that HPET is not only unsuitable as watchdog clocksource
on these systems, it becomes unusable in general.

Disable HPET on affected platforms.

Suggested-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=203183
Link: https://lore.kernel.org/lkml/20190516090651.1396-1-harry.pan@intel.com/ [1]
Link: https://lkml.kernel.org/r/20191016103816.30650-1-kai.heng.feng@canonical.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/x86/kernel/early-quirks.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/arch/x86/kernel/early-quirks.c
+++ b/arch/x86/kernel/early-quirks.c
@@ -707,6 +707,8 @@ static struct chipset early_qrk[] __init
 	 */
 	{ PCI_VENDOR_ID_INTEL, 0x0f00,
 		PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, force_disable_hpet},
+	{ PCI_VENDOR_ID_INTEL, 0x3ec4,
+		PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, force_disable_hpet},
 	{ PCI_VENDOR_ID_BROADCOM, 0x4331,
 	  PCI_CLASS_NETWORK_OTHER, PCI_ANY_ID, 0, apple_airport_reset},
 	{}



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 025/422] ecryptfs_lookup_interpose(): lower_dentry->d_inode is not stable
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (23 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 024/422] x86/quirks: Disable HPET on Intel Coffe Lake platforms Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19 22:00   ` Pavel Machek
  2019-11-19  5:13 ` [PATCH 4.19 026/422] ecryptfs_lookup_interpose(): lower_dentry->d_parent is not stable either Greg Kroah-Hartman
                   ` (400 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Al Viro

From: Al Viro <viro@zeniv.linux.org.uk>

commit e72b9dd6a5f17d0fb51f16f8685f3004361e83d0 upstream.

lower_dentry can't go from positive to negative (we have it pinned),
but it *can* go from negative to positive.  So fetching ->d_inode
into a local variable, doing a blocking allocation, checking that
now ->d_inode is non-NULL and feeding the value we'd fetched
earlier to a function that won't accept NULL is not a good idea.

Cc: stable@vger.kernel.org
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/ecryptfs/inode.c |   12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
@@ -325,7 +325,7 @@ static int ecryptfs_i_size_read(struct d
 static struct dentry *ecryptfs_lookup_interpose(struct dentry *dentry,
 				     struct dentry *lower_dentry)
 {
-	struct inode *inode, *lower_inode = d_inode(lower_dentry);
+	struct inode *inode, *lower_inode;
 	struct ecryptfs_dentry_info *dentry_info;
 	struct vfsmount *lower_mnt;
 	int rc = 0;
@@ -345,7 +345,15 @@ static struct dentry *ecryptfs_lookup_in
 	dentry_info->lower_path.mnt = lower_mnt;
 	dentry_info->lower_path.dentry = lower_dentry;
 
-	if (d_really_is_negative(lower_dentry)) {
+	/*
+	 * negative dentry can go positive under us here - its parent is not
+	 * locked.  That's OK and that could happen just as we return from
+	 * ecryptfs_lookup() anyway.  Just need to be careful and fetch
+	 * ->d_inode only once - it's not stable here.
+	 */
+	lower_inode = READ_ONCE(lower_dentry->d_inode);
+
+	if (!lower_inode) {
 		/* We want to add because we couldn't find in lower */
 		d_add(dentry, NULL);
 		return NULL;



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 026/422] ecryptfs_lookup_interpose(): lower_dentry->d_parent is not stable either
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (24 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 025/422] ecryptfs_lookup_interpose(): lower_dentry->d_inode is not stable Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 027/422] net: ethernet: dwmac-sun8i: Use the correct function in exit path Greg Kroah-Hartman
                   ` (399 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Al Viro

From: Al Viro <viro@zeniv.linux.org.uk>

commit 762c69685ff7ad5ad7fee0656671e20a0c9c864d upstream.

We need to get the underlying dentry of parent; sure, absent the races
it is the parent of underlying dentry, but there's nothing to prevent
losing a timeslice to preemtion in the middle of evaluation of
lower_dentry->d_parent->d_inode, having another process move lower_dentry
around and have its (ex)parent not pinned anymore and freed on memory
pressure.  Then we regain CPU and try to fetch ->d_inode from memory
that is freed by that point.

dentry->d_parent *is* stable here - it's an argument of ->lookup() and
we are guaranteed that it won't be moved anywhere until we feed it
to d_add/d_splice_alias.  So we safely go that way to get to its
underlying dentry.

Cc: stable@vger.kernel.org # since 2009 or so
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/ecryptfs/inode.c |    7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
@@ -325,9 +325,9 @@ static int ecryptfs_i_size_read(struct d
 static struct dentry *ecryptfs_lookup_interpose(struct dentry *dentry,
 				     struct dentry *lower_dentry)
 {
+	struct path *path = ecryptfs_dentry_to_lower_path(dentry->d_parent);
 	struct inode *inode, *lower_inode;
 	struct ecryptfs_dentry_info *dentry_info;
-	struct vfsmount *lower_mnt;
 	int rc = 0;
 
 	dentry_info = kmem_cache_alloc(ecryptfs_dentry_info_cache, GFP_KERNEL);
@@ -336,13 +336,12 @@ static struct dentry *ecryptfs_lookup_in
 		return ERR_PTR(-ENOMEM);
 	}
 
-	lower_mnt = mntget(ecryptfs_dentry_to_lower_mnt(dentry->d_parent));
 	fsstack_copy_attr_atime(d_inode(dentry->d_parent),
-				d_inode(lower_dentry->d_parent));
+				d_inode(path->dentry));
 	BUG_ON(!d_count(lower_dentry));
 
 	ecryptfs_set_dentry_private(dentry, dentry_info);
-	dentry_info->lower_path.mnt = lower_mnt;
+	dentry_info->lower_path.mnt = mntget(path->mnt);
 	dentry_info->lower_path.dentry = lower_dentry;
 
 	/*



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 027/422] net: ethernet: dwmac-sun8i: Use the correct function in exit path
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (25 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 026/422] ecryptfs_lookup_interpose(): lower_dentry->d_parent is not stable either Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 028/422] iommu/vt-d: Fix QI_DEV_IOTLB_PFSID and QI_DEV_EIOTLB_PFSID macros Greg Kroah-Hartman
                   ` (398 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Corentin Labbe, David S. Miller

From: Corentin Labbe <clabbe@baylibre.com>

commit 40a1dcee2d1846a24619fe9ca45c661ca0db7dda upstream.

When PHY is not powered, the probe function fail and some resource are
still unallocated.
Furthermore some BUG happens:
dwmac-sun8i 5020000.ethernet: EMAC reset timeout
------------[ cut here ]------------
kernel BUG at /linux-next/net/core/dev.c:9844!

So let's use the right function (stmmac_pltfr_remove) in the error path.

Fixes: 9f93ac8d4085 ("net-next: stmmac: Add dwmac-sun8i")
Cc: <stable@vger.kernel.org> # v4.15+
Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
@@ -1199,7 +1199,7 @@ static int sun8i_dwmac_probe(struct plat
 dwmac_mux:
 	sun8i_dwmac_unset_syscon(gmac);
 dwmac_exit:
-	sun8i_dwmac_exit(pdev, plat_dat->bsp_priv);
+	stmmac_pltfr_remove(pdev);
 return ret;
 }
 



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 028/422] iommu/vt-d: Fix QI_DEV_IOTLB_PFSID and QI_DEV_EIOTLB_PFSID macros
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (26 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 027/422] net: ethernet: dwmac-sun8i: Use the correct function in exit path Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 029/422] mm: mempolicy: fix the wrong return value and potential pages leak of mbind Greg Kroah-Hartman
                   ` (397 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Eric Auger, Jacob Pan, Lu Baolu,
	Joerg Roedel

From: Eric Auger <eric.auger@redhat.com>

commit 4e7120d79edb31e4ee68e6f8421448e4603be1e9 upstream.

For both PASID-based-Device-TLB Invalidate Descriptor and
Device-TLB Invalidate Descriptor, the Physical Function Source-ID
value is split according to this layout:

PFSID[3:0] is set at offset 12 and PFSID[15:4] is put at offset 52.
Fix the part laid out at offset 52.

Fixes: 0f725561e1684 ("iommu/vt-d: Add definitions for PFSID")
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Acked-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
Cc: stable@vger.kernel.org # v4.19+
Acked-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 include/linux/intel-iommu.h |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

--- a/include/linux/intel-iommu.h
+++ b/include/linux/intel-iommu.h
@@ -286,7 +286,8 @@ enum {
 #define QI_DEV_IOTLB_SID(sid)	((u64)((sid) & 0xffff) << 32)
 #define QI_DEV_IOTLB_QDEP(qdep)	(((qdep) & 0x1f) << 16)
 #define QI_DEV_IOTLB_ADDR(addr)	((u64)(addr) & VTD_PAGE_MASK)
-#define QI_DEV_IOTLB_PFSID(pfsid) (((u64)(pfsid & 0xf) << 12) | ((u64)(pfsid & 0xfff) << 52))
+#define QI_DEV_IOTLB_PFSID(pfsid) (((u64)(pfsid & 0xf) << 12) | \
+				   ((u64)((pfsid >> 4) & 0xfff) << 52))
 #define QI_DEV_IOTLB_SIZE	1
 #define QI_DEV_IOTLB_MAX_INVS	32
 
@@ -311,7 +312,8 @@ enum {
 #define QI_DEV_EIOTLB_PASID(p)	(((u64)p) << 32)
 #define QI_DEV_EIOTLB_SID(sid)	((u64)((sid) & 0xffff) << 16)
 #define QI_DEV_EIOTLB_QDEP(qd)	((u64)((qd) & 0x1f) << 4)
-#define QI_DEV_EIOTLB_PFSID(pfsid) (((u64)(pfsid & 0xf) << 12) | ((u64)(pfsid & 0xfff) << 52))
+#define QI_DEV_EIOTLB_PFSID(pfsid) (((u64)(pfsid & 0xf) << 12) | \
+				    ((u64)((pfsid >> 4) & 0xfff) << 52))
 #define QI_DEV_EIOTLB_MAX_INVS	32
 
 #define QI_PGRP_IDX(idx)	(((u64)(idx)) << 55)



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 029/422] mm: mempolicy: fix the wrong return value and potential pages leak of mbind
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (27 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 028/422] iommu/vt-d: Fix QI_DEV_IOTLB_PFSID and QI_DEV_EIOTLB_PFSID macros Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 030/422] mm: memcg: switch to css_tryget() in get_mem_cgroup_from_mm() Greg Kroah-Hartman
                   ` (396 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Yang Shi, Li Xinhai, Vlastimil Babka,
	Michal Hocko, Mel Gorman, Andrew Morton, Linus Torvalds

From: Yang Shi <yang.shi@linux.alibaba.com>

commit a85dfc305a21acfc48fa28a0fa0a0cb6ad496120 upstream.

Commit d883544515aa ("mm: mempolicy: make the behavior consistent when
MPOL_MF_MOVE* and MPOL_MF_STRICT were specified") fixed the return value
of mbind() for a couple of corner cases.  But, it altered the errno for
some other cases, for example, mbind() should return -EFAULT when part
or all of the memory range specified by nodemask and maxnode points
outside your accessible address space, or there was an unmapped hole in
the specified memory range specified by addr and len.

Fix this by preserving the errno returned by queue_pages_range().  And,
the pagelist may be not empty even though queue_pages_range() returns
error, put the pages back to LRU since mbind_range() is not called to
really apply the policy so those pages should not be migrated, this is
also the old behavior before the problematic commit.

Link: http://lkml.kernel.org/r/1572454731-3925-1-git-send-email-yang.shi@linux.alibaba.com
Fixes: d883544515aa ("mm: mempolicy: make the behavior consistent when MPOL_MF_MOVE* and MPOL_MF_STRICT were specified")
Signed-off-by: Yang Shi <yang.shi@linux.alibaba.com>
Reported-by: Li Xinhai <lixinhai.lxh@gmail.com>
Reviewed-by: Li Xinhai <lixinhai.lxh@gmail.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mel Gorman <mgorman@techsingularity.net>
Cc: <stable@vger.kernel.org>	[4.19 and 5.2+]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 mm/mempolicy.c |   14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -666,7 +666,9 @@ static int queue_pages_test_walk(unsigne
  * 1 - there is unmovable page, but MPOL_MF_MOVE* & MPOL_MF_STRICT were
  *     specified.
  * 0 - queue pages successfully or no misplaced page.
- * -EIO - there is misplaced page and only MPOL_MF_STRICT was specified.
+ * errno - i.e. misplaced pages with MPOL_MF_STRICT specified (-EIO) or
+ *         memory range specified by nodemask and maxnode points outside
+ *         your accessible address space (-EFAULT)
  */
 static int
 queue_pages_range(struct mm_struct *mm, unsigned long start, unsigned long end,
@@ -1273,7 +1275,7 @@ static long do_mbind(unsigned long start
 			  flags | MPOL_MF_INVERT, &pagelist);
 
 	if (ret < 0) {
-		err = -EIO;
+		err = ret;
 		goto up_out;
 	}
 
@@ -1292,10 +1294,12 @@ static long do_mbind(unsigned long start
 
 		if ((ret > 0) || (nr_failed && (flags & MPOL_MF_STRICT)))
 			err = -EIO;
-	} else
-		putback_movable_pages(&pagelist);
-
+	} else {
 up_out:
+		if (!list_empty(&pagelist))
+			putback_movable_pages(&pagelist);
+	}
+
 	up_write(&mm->mmap_sem);
 mpol_out:
 	mpol_put(new);



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 030/422] mm: memcg: switch to css_tryget() in get_mem_cgroup_from_mm()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (28 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 029/422] mm: mempolicy: fix the wrong return value and potential pages leak of mbind Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 031/422] mm: hugetlb: switch to css_tryget() in hugetlb_cgroup_charge_cgroup() Greg Kroah-Hartman
                   ` (395 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Roman Gushchin, Johannes Weiner,
	Tejun Heo, Shakeel Butt, Michal Hocko, Michal Koutn,
	Andrew Morton, Linus Torvalds

From: Roman Gushchin <guro@fb.com>

commit 00d484f354d85845991b40141d40ba9e5eb60faf upstream.

We've encountered a rcu stall in get_mem_cgroup_from_mm():

  rcu: INFO: rcu_sched self-detected stall on CPU
  rcu: 33-....: (21000 ticks this GP) idle=6c6/1/0x4000000000000002 softirq=35441/35441 fqs=5017
  (t=21031 jiffies g=324821 q=95837) NMI backtrace for cpu 33
  <...>
  RIP: 0010:get_mem_cgroup_from_mm+0x2f/0x90
  <...>
   __memcg_kmem_charge+0x55/0x140
   __alloc_pages_nodemask+0x267/0x320
   pipe_write+0x1ad/0x400
   new_sync_write+0x127/0x1c0
   __kernel_write+0x4f/0xf0
   dump_emit+0x91/0xc0
   writenote+0xa0/0xc0
   elf_core_dump+0x11af/0x1430
   do_coredump+0xc65/0xee0
   get_signal+0x132/0x7c0
   do_signal+0x36/0x640
   exit_to_usermode_loop+0x61/0xd0
   do_syscall_64+0xd4/0x100
   entry_SYSCALL_64_after_hwframe+0x44/0xa9

The problem is caused by an exiting task which is associated with an
offline memcg.  We're iterating over and over in the do {} while
(!css_tryget_online()) loop, but obviously the memcg won't become online
and the exiting task won't be migrated to a live memcg.

Let's fix it by switching from css_tryget_online() to css_tryget().

As css_tryget_online() cannot guarantee that the memcg won't go offline,
the check is usually useless, except some rare cases when for example it
determines if something should be presented to a user.

A similar problem is described by commit 18fa84a2db0e ("cgroup: Use
css_tryget() instead of css_tryget_online() in task_get_css()").

Johannes:

: The bug aside, it doesn't matter whether the cgroup is online for the
: callers.  It used to matter when offlining needed to evacuate all charges
: from the memcg, and so needed to prevent new ones from showing up, but we
: don't care now.

Link: http://lkml.kernel.org/r/20191106225131.3543616-1-guro@fb.com
Signed-off-by: Roman Gushchin <guro@fb.com>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Tejun Heo <tj@kernel.org>
Reviewed-by: Shakeel Butt <shakeeb@google.com>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Michal Koutn <mkoutny@suse.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 mm/memcontrol.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -851,7 +851,7 @@ struct mem_cgroup *get_mem_cgroup_from_m
 			if (unlikely(!memcg))
 				memcg = root_mem_cgroup;
 		}
-	} while (!css_tryget_online(&memcg->css));
+	} while (!css_tryget(&memcg->css));
 	rcu_read_unlock();
 	return memcg;
 }



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 031/422] mm: hugetlb: switch to css_tryget() in hugetlb_cgroup_charge_cgroup()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (29 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 030/422] mm: memcg: switch to css_tryget() in get_mem_cgroup_from_mm() Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 032/422] mmc: sdhci-of-at91: fix quirk2 overwrite Greg Kroah-Hartman
                   ` (394 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Roman Gushchin, Johannes Weiner,
	Tejun Heo, Shakeel Butt, Michal Hocko, Andrew Morton,
	Linus Torvalds

From: Roman Gushchin <guro@fb.com>

commit 0362f326d86c645b5e96b7dbc3ee515986ed019d upstream.

An exiting task might belong to an offline cgroup.  In this case an
attempt to grab a cgroup reference from the task can end up with an
infinite loop in hugetlb_cgroup_charge_cgroup(), because neither the
cgroup will become online, neither the task will be migrated to a live
cgroup.

Fix this by switching over to css_tryget().  As css_tryget_online()
can't guarantee that the cgroup won't go offline, in most cases the
check doesn't make sense.  In this particular case users of
hugetlb_cgroup_charge_cgroup() are not affected by this change.

A similar problem is described by commit 18fa84a2db0e ("cgroup: Use
css_tryget() instead of css_tryget_online() in task_get_css()").

Link: http://lkml.kernel.org/r/20191106225131.3543616-2-guro@fb.com
Signed-off-by: Roman Gushchin <guro@fb.com>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Tejun Heo <tj@kernel.org>
Reviewed-by: Shakeel Butt <shakeelb@google.com>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 mm/hugetlb_cgroup.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/mm/hugetlb_cgroup.c
+++ b/mm/hugetlb_cgroup.c
@@ -196,7 +196,7 @@ int hugetlb_cgroup_charge_cgroup(int idx
 again:
 	rcu_read_lock();
 	h_cg = hugetlb_cgroup_from_task(current);
-	if (!css_tryget_online(&h_cg->css)) {
+	if (!css_tryget(&h_cg->css)) {
 		rcu_read_unlock();
 		goto again;
 	}



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 032/422] mmc: sdhci-of-at91: fix quirk2 overwrite
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (30 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 031/422] mm: hugetlb: switch to css_tryget() in hugetlb_cgroup_charge_cgroup() Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 033/422] iio: adc: max9611: explicitly cast gain_selectors Greg Kroah-Hartman
                   ` (393 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Eugen Hristev, Adrian Hunter, Ulf Hansson

From: Eugen Hristev <eugen.hristev@microchip.com>

commit fed23c5829ecab4ddc712d7b0046e59610ca3ba4 upstream.

The quirks2 are parsed and set (e.g. from DT) before the quirk for broken
HS200 is set in the driver.
The driver needs to enable just this flag, not rewrite the whole quirk set.

Fixes: 7871aa60ae00 ("mmc: sdhci-of-at91: add quirk for broken HS200")
Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/mmc/host/sdhci-of-at91.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/mmc/host/sdhci-of-at91.c
+++ b/drivers/mmc/host/sdhci-of-at91.c
@@ -366,7 +366,7 @@ static int sdhci_at91_probe(struct platf
 	pm_runtime_use_autosuspend(&pdev->dev);
 
 	/* HS200 is broken at this moment */
-	host->quirks2 = SDHCI_QUIRK2_BROKEN_HS200;
+	host->quirks2 |= SDHCI_QUIRK2_BROKEN_HS200;
 
 	ret = sdhci_add_host(host);
 	if (ret)



^ permalink raw reply	[flat|nested] 478+ messages in thread

* [PATCH 4.19 033/422] iio: adc: max9611: explicitly cast gain_selectors
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (31 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 032/422] mmc: sdhci-of-at91: fix quirk2 overwrite Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 034/422] tee: optee: take DT status property into account Greg Kroah-Hartman
                   ` (392 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Stefan Agner, Jonathan Cameron, Sasha Levin

From: Stefan Agner <stefan@agner.ch>

[ Upstream commit b1ec0802503820ccbc894aadfd2a44da20232f5e ]

After finding a reasonable gain, the function converts the configured
gain to a gain configuration option selector enum max9611_csa_gain.
Make the conversion clearly visible by using an explicit cast. This
also avoids a warning seen with clang:
  drivers/iio/adc/max9611.c:292:16: warning: implicit conversion from
      enumeration type 'enum max9611_conf_ids' to different enumeration
      type 'enum max9611_csa_gain' [-Wenum-conversion]
                        *csa_gain = gain_selectors[i];
                                  ~ ^~~~~~~~~~~~~~~~~

Signed-off-by: Stefan Agner <stefan@agner.ch>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/iio/adc/max9611.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/adc/max9611.c b/drivers/iio/adc/max9611.c
index 49c1956e6a674..0884435eec68d 100644
--- a/drivers/iio/adc/max9611.c
+++ b/drivers/iio/adc/max9611.c
@@ -289,7 +289,7 @@ static int max9611_read_csa_voltage(struct max9611_dev *max9611,
 			return ret;
 
 		if (*adc_raw > 0) {
-			*csa_gain = gain_selectors[i];
+			*csa_gain = (enum max9611_csa_gain)gain_selectors[i];
 			return 0;
 		}
 	}
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 034/422] tee: optee: take DT status property into account
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (32 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 033/422] iio: adc: max9611: explicitly cast gain_selectors Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-20  2:18   ` Nobuhiro Iwamatsu
  2019-11-19  5:13 ` [PATCH 4.19 035/422] ath10k: fix kernel panic by moving pci flush after napi_disable Greg Kroah-Hartman
                   ` (391 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ard Biesheuvel, Jens Wiklander, Sasha Levin

From: Ard Biesheuvel <ard.biesheuvel@linaro.org>

[ Upstream commit db878f76b9ff7487da9bb0f686153f81829f1230 ]

DT nodes may have a 'status' property which, if set to anything other
than 'ok' or 'okay', indicates to the OS that the DT node should be
treated as if it was not present. So add that missing logic to the
OP-TEE driver.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/tee/optee/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/tee/optee/core.c b/drivers/tee/optee/core.c
index e1aafe842d660..34dce850067b9 100644
--- a/drivers/tee/optee/core.c
+++ b/drivers/tee/optee/core.c
@@ -696,7 +696,7 @@ static int __init optee_driver_init(void)
 		return -ENODEV;
 
 	np = of_find_matching_node(fw_np, optee_match);
-	if (!np)
+	if (!np || !of_device_is_available(np))
 		return -ENODEV;
 
 	optee = optee_probe(np);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 035/422] ath10k: fix kernel panic by moving pci flush after napi_disable
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (33 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 034/422] tee: optee: take DT status property into account Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 036/422] iio: dac: mcp4922: fix error handling in mcp4922_write_raw Greg Kroah-Hartman
                   ` (390 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Tamizh chelvam, Kalle Valo, Sasha Levin

From: Tamizh chelvam <tamizhr@codeaurora.org>

[ Upstream commit bd1d395070cca4f42a93e520b0597274789274a4 ]

When continuously running wifi up/down sequence, the napi poll
can be scheduled after the CE buffers being freed by ath10k_pci_flush

Steps:
  In a certain condition, during wifi down below scenario might occur.

ath10k_stop->ath10k_hif_stop->napi_schedule->ath10k_pci_flush->napi_poll(napi_synchronize).

In the above scenario, CE buffer entries will be freed up and become NULL in
ath10k_pci_flush. And the napi_poll has been invoked after the flush process
and it will try to get the skb from the CE buffer entry and perform some action on that.
Since the CE buffer already cleaned by pci flush this action will create NULL
pointer dereference and trigger below kernel panic.

Unable to handle kernel NULL pointer dereference at virtual address 0000005c
PC is at ath10k_pci_htt_rx_cb+0x64/0x3ec [ath10k_pci]
ath10k_pci_htt_rx_cb [ath10k_pci]
ath10k_ce_per_engine_service+0x74/0xc4 [ath10k_pci]
ath10k_ce_per_engine_service [ath10k_pci]
ath10k_ce_per_engine_service_any+0x74/0x80 [ath10k_pci]
ath10k_ce_per_engine_service_any [ath10k_pci]
ath10k_pci_napi_poll+0x48/0xec [ath10k_pci]
ath10k_pci_napi_poll [ath10k_pci]
net_rx_action+0xac/0x160
net_rx_action
__do_softirq+0xdc/0x208
__do_softirq
irq_exit+0x84/0xe0
irq_exit
__handle_domain_irq+0x80/0xa0
__handle_domain_irq
gic_handle_irq+0x38/0x5c
gic_handle_irq
__irq_usr+0x44/0x60

Tested on QCA4019 and firmware version 10.4.3.2.1.1-00010

Signed-off-by: Tamizh chelvam <tamizhr@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/ath/ath10k/ahb.c | 4 ++--
 drivers/net/wireless/ath/ath10k/pci.c | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/ahb.c b/drivers/net/wireless/ath/ath10k/ahb.c
index c9bd0e2b5db7e..be90c9e9e5bc1 100644
--- a/drivers/net/wireless/ath/ath10k/ahb.c
+++ b/drivers/net/wireless/ath/ath10k/ahb.c
@@ -655,10 +655,10 @@ static void ath10k_ahb_hif_stop(struct ath10k *ar)
 	ath10k_ahb_irq_disable(ar);
 	synchronize_irq(ar_ahb->irq);
 
-	ath10k_pci_flush(ar);
-
 	napi_synchronize(&ar->napi);
 	napi_disable(&ar->napi);
+
+	ath10k_pci_flush(ar);
 }
 
 static int ath10k_ahb_hif_power_up(struct ath10k *ar)
diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c
index af2cf55c4c1e6..97fa5c74f2fe7 100644
--- a/drivers/net/wireless/ath/ath10k/pci.c
+++ b/drivers/net/wireless/ath/ath10k/pci.c
@@ -2068,9 +2068,9 @@ static void ath10k_pci_hif_stop(struct ath10k *ar)
 
 	ath10k_pci_irq_disable(ar);
 	ath10k_pci_irq_sync(ar);
-	ath10k_pci_flush(ar);
 	napi_synchronize(&ar->napi);
 	napi_disable(&ar->napi);
+	ath10k_pci_flush(ar);
 
 	spin_lock_irqsave(&ar_pci->ps_lock, flags);
 	WARN_ON(ar_pci->ps_wake_refcount > 0);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 036/422] iio: dac: mcp4922: fix error handling in mcp4922_write_raw
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (34 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 035/422] ath10k: fix kernel panic by moving pci flush after napi_disable Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 037/422] clk: sunxi-ng: h6: fix PWM gate/reset offset Greg Kroah-Hartman
                   ` (389 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Marcus Folkesson, Jonathan Cameron,
	Sasha Levin

From: Marcus Folkesson <marcus.folkesson@gmail.com>

[ Upstream commit 0833627fc3f757a0dca11e2a9c46c96335a900ee ]

Do not try to write negative values and make sure that the write goes well.

Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/iio/dac/mcp4922.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/iio/dac/mcp4922.c b/drivers/iio/dac/mcp4922.c
index bf9aa3fc0534e..b5190d1dae8e3 100644
--- a/drivers/iio/dac/mcp4922.c
+++ b/drivers/iio/dac/mcp4922.c
@@ -94,17 +94,22 @@ static int mcp4922_write_raw(struct iio_dev *indio_dev,
 		long mask)
 {
 	struct mcp4922_state *state = iio_priv(indio_dev);
+	int ret;
 
 	if (val2 != 0)
 		return -EINVAL;
 
 	switch (mask) {
 	case IIO_CHAN_INFO_RAW:
-		if (val > GENMASK(chan->scan_type.realbits-1, 0))
+		if (val < 0 || val > GENMASK(chan->scan_type.realbits - 1, 0))
 			return -EINVAL;
 		val <<= chan->scan_type.shift;
-		state->value[chan->channel] = val;
-		return mcp4922_spi_write(state, chan->channel, val);
+
+		ret = mcp4922_spi_write(state, chan->channel, val);
+		if (!ret)
+			state->value[chan->channel] = val;
+		return ret;
+
 	default:
 		return -EINVAL;
 	}
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 037/422] clk: sunxi-ng: h6: fix PWM gate/reset offset
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (35 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 036/422] iio: dac: mcp4922: fix error handling in mcp4922_write_raw Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 038/422] soundwire: Initialize completion for defer messages Greg Kroah-Hartman
                   ` (388 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Rongyi Chen, Icenowy Zheng,
	Chen-Yu Tsai, Sasha Levin

From: Rongyi Chen <chenyi@tt-cool.com>

[ Upstream commit 58c0f79887d5e425fe6a9fd542778e50df69e9c6 ]

Currently the register offset of the PWM bus gate in Allwinner H6 clock
driver is wrong.

Fix this issue.

Fixes: 542353ea ("clk: sunxi-ng: add support for the Allwinner H6 CCU")
Signed-off-by: Rongyi Chen <chenyi@tt-cool.com>
[Icenowy: refactor commit message]
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/clk/sunxi-ng/ccu-sun50i-h6.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-h6.c b/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
index 0f7a0ffd3f706..d425b47cef179 100644
--- a/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
+++ b/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
@@ -352,7 +352,7 @@ static SUNXI_CCU_GATE(bus_dbg_clk, "bus-dbg", "psi-ahb1-ahb2",
 static SUNXI_CCU_GATE(bus_psi_clk, "bus-psi", "psi-ahb1-ahb2",
 		      0x79c, BIT(0), 0);
 
-static SUNXI_CCU_GATE(bus_pwm_clk, "bus-pwm", "apb1", 0x79c, BIT(0), 0);
+static SUNXI_CCU_GATE(bus_pwm_clk, "bus-pwm", "apb1", 0x7ac, BIT(0), 0);
 
 static SUNXI_CCU_GATE(bus_iommu_clk, "bus-iommu", "apb1", 0x7bc, BIT(0), 0);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 038/422] soundwire: Initialize completion for defer messages
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (36 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 037/422] clk: sunxi-ng: h6: fix PWM gate/reset offset Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-20 21:54   ` Pavel Machek
  2019-11-19  5:13 ` [PATCH 4.19 039/422] soundwire: intel: Fix uninitialized adev deref Greg Kroah-Hartman
                   ` (387 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sanyog Kale, Shreyas NC,
	Pierre-Louis Bossart, Vinod Koul, Sasha Levin

From: Shreyas NC <shreyas.nc@intel.com>

[ Upstream commit a306a0e4a5326269b6c78d136407f08433ab5ece ]

Deferred messages are async messages used to synchronize
transitions mostly while doing a bank switch on multi links.
On successful transitions these messages are marked complete
and thereby confirming that all the buses performed bank switch
successfully.

So, initialize the completion structure for the same.

Signed-off-by: Sanyog Kale <sanyog.r.kale@intel.com>
Signed-off-by: Shreyas NC <shreyas.nc@intel.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/soundwire/bus.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c
index 83576810eee65..df172bf3925f6 100644
--- a/drivers/soundwire/bus.c
+++ b/drivers/soundwire/bus.c
@@ -175,6 +175,7 @@ static inline int do_transfer_defer(struct sdw_bus *bus,
 
 	defer->msg = msg;
 	defer->length = msg->len;
+	init_completion(&defer->complete);
 
 	for (i = 0; i <= retry; i++) {
 		resp = bus->ops->xfer_msg_defer(bus, msg, defer);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 039/422] soundwire: intel: Fix uninitialized adev deref
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (37 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 038/422] soundwire: Initialize completion for defer messages Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 040/422] arm64: dts: allwinner: a64: Orange Pi Win: Fix SD card node Greg Kroah-Hartman
                   ` (386 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dan Carpenter, Pierre-Louis Bossart,
	Vinod Koul, Sasha Levin

From: Vinod Koul <vkoul@kernel.org>

[ Upstream commit e1c815f4b24a305e5bc9eceb541674bf4d02b709 ]

In case of error, we can dereference uninitialized 'adev'

drivers/soundwire/intel_init.c:154 sdw_intel_acpi_cb()
error: uninitialized symbol 'adev'.

Fix that by not using adev for warn print and make it pr_err.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/soundwire/intel_init.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/soundwire/intel_init.c b/drivers/soundwire/intel_init.c
index d1ea6b4d0ad30..5c8a20d998786 100644
--- a/drivers/soundwire/intel_init.c
+++ b/drivers/soundwire/intel_init.c
@@ -151,7 +151,7 @@ static acpi_status sdw_intel_acpi_cb(acpi_handle handle, u32 level,
 	struct acpi_device *adev;
 
 	if (acpi_bus_get_device(handle, &adev)) {
-		dev_err(&adev->dev, "Couldn't find ACPI handle\n");
+		pr_err("%s: Couldn't find ACPI handle\n", __func__);
 		return AE_NOT_FOUND;
 	}
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 040/422] arm64: dts: allwinner: a64: Orange Pi Win: Fix SD card node
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (38 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 039/422] soundwire: intel: Fix uninitialized adev deref Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 041/422] arm64: dts: allwinner: a64: Olinuxino: fix DRAM voltage Greg Kroah-Hartman
                   ` (385 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Samuel Holland, Andre Przywara,
	Maxime Ripard, Chen-Yu Tsai, Sasha Levin

From: Samuel Holland <samuel@sholland.org>

[ Upstream commit 09b964afca14d0594b2b2f265df3d987e2f43867 ]

The Orange Pi Win has a microSD card slot which is connected via all
four SD data lines. As the DT was not mentioning this fact, we got the
default single bit transfers, losing out on performance.
Also, as microSD does not have a write protect switch, we disable this
feature in the DT node.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts
index 1221764f5719c..667016815cf32 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts
@@ -67,7 +67,9 @@
 	pinctrl-names = "default";
 	pinctrl-0 = <&mmc0_pins>;
 	vmmc-supply = <&reg_dcdc1>;
-	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
+	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
+	disable-wp;
+	bus-width = <4>;
 	status = "okay";
 };
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 041/422] arm64: dts: allwinner: a64: Olinuxino: fix DRAM voltage
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (39 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 040/422] arm64: dts: allwinner: a64: Orange Pi Win: Fix SD card node Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:13 ` [PATCH 4.19 042/422] arm64: dts: allwinner: a64: NanoPi-A64: Fix DCDC1 voltage Greg Kroah-Hartman
                   ` (384 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andre Przywara, Martin Lucina,
	Maxime Ripard, Chen-Yu Tsai, Sasha Levin

From: Andre Przywara <andre.przywara@arm.com>

[ Upstream commit 93366b49a35f3a190052734b3f32c8fe2535b53f ]

The Olinuxino board uses DDR3L chips which are supposed to be driven
with 1.35V. The reset default of the AXP is properly set to 1.36V.

While technically the chips can also run at 1.5 volts, changing the
voltage on the fly while booting Linux is asking for trouble. Also
running at a lower voltage saves power.

So fix the DCDC5 value to match the actual board design.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Martin Lucina <martin@lucina.net>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts
index 3f531393eaee9..b3f186434f363 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts
@@ -142,10 +142,14 @@
 
 /* DCDC3 is polyphased with DCDC2 */
 
+/*
+ * The board uses DDR3L DRAM chips. 1.36V is the closest to the nominal
+ * 1.35V that the PMIC can drive.
+ */
 &reg_dcdc5 {
 	regulator-always-on;
-	regulator-min-microvolt = <1500000>;
-	regulator-max-microvolt = <1500000>;
+	regulator-min-microvolt = <1360000>;
+	regulator-max-microvolt = <1360000>;
 	regulator-name = "vcc-ddr3";
 };
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 042/422] arm64: dts: allwinner: a64: NanoPi-A64: Fix DCDC1 voltage
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (40 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 041/422] arm64: dts: allwinner: a64: Olinuxino: fix DRAM voltage Greg Kroah-Hartman
@ 2019-11-19  5:13 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 043/422] ALSA: pcm: signedness bug in snd_pcm_plug_alloc() Greg Kroah-Hartman
                   ` (383 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andre Przywara, Maxime Ripard,
	Chen-Yu Tsai, Sasha Levin

From: Andre Przywara <andre.przywara@arm.com>

[ Upstream commit 480f58cdbe392d4387a2193b6131a277e0111dd0 ]

According to the NanoPi-A64 schematics, DCDC1 is connected to a voltage
rail named "VDD_SYS_3.3V". All users seem to expect 3.3V here: the
Ethernet PHY, the uSD card slot, the camera interface and the GPIO pins
on the headers.
Fix up the voltage on the regulator to lift it up to 3.3V.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts
index 98dbff19f5ccc..5caba225b4f78 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts
@@ -125,9 +125,9 @@
 
 &reg_dcdc1 {
 	regulator-always-on;
-	regulator-min-microvolt = <3000000>;
-	regulator-max-microvolt = <3000000>;
-	regulator-name = "vcc-3v";
+	regulator-min-microvolt = <3300000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "vcc-3v3";
 };
 
 &reg_dcdc2 {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 043/422] ALSA: pcm: signedness bug in snd_pcm_plug_alloc()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (41 preceding siblings ...)
  2019-11-19  5:13 ` [PATCH 4.19 042/422] arm64: dts: allwinner: a64: NanoPi-A64: Fix DCDC1 voltage Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 044/422] soc/tegra: pmc: Fix pad voltage configuration for Tegra186 Greg Kroah-Hartman
                   ` (382 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dan Carpenter, Takashi Iwai, Sasha Levin

From: Dan Carpenter <dan.carpenter@oracle.com>

[ Upstream commit 6f128fa41f310e1f39ebcea9621d2905549ecf52 ]

The "frames" variable is unsigned so the error handling doesn't work
properly.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/core/oss/pcm_plugin.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sound/core/oss/pcm_plugin.c b/sound/core/oss/pcm_plugin.c
index 71571d9921598..31cb2acf8afcc 100644
--- a/sound/core/oss/pcm_plugin.c
+++ b/sound/core/oss/pcm_plugin.c
@@ -111,7 +111,7 @@ int snd_pcm_plug_alloc(struct snd_pcm_substream *plug, snd_pcm_uframes_t frames)
 		while (plugin->next) {
 			if (plugin->dst_frames)
 				frames = plugin->dst_frames(plugin, frames);
-			if (snd_BUG_ON(frames <= 0))
+			if (snd_BUG_ON((snd_pcm_sframes_t)frames <= 0))
 				return -ENXIO;
 			plugin = plugin->next;
 			err = snd_pcm_plugin_alloc(plugin, frames);
@@ -123,7 +123,7 @@ int snd_pcm_plug_alloc(struct snd_pcm_substream *plug, snd_pcm_uframes_t frames)
 		while (plugin->prev) {
 			if (plugin->src_frames)
 				frames = plugin->src_frames(plugin, frames);
-			if (snd_BUG_ON(frames <= 0))
+			if (snd_BUG_ON((snd_pcm_sframes_t)frames <= 0))
 				return -ENXIO;
 			plugin = plugin->prev;
 			err = snd_pcm_plugin_alloc(plugin, frames);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 044/422] soc/tegra: pmc: Fix pad voltage configuration for Tegra186
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (42 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 043/422] ALSA: pcm: signedness bug in snd_pcm_plug_alloc() Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 045/422] arm64: dts: tegra210-p2180: Correct sdmmc4 vqmmc-supply Greg Kroah-Hartman
                   ` (381 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Aapo Vienamo, Jon Hunter,
	Thierry Reding, Sasha Levin

From: Aapo Vienamo <avienamo@nvidia.com>

[ Upstream commit 13136a47a061c01c91df78b37f7708dd5ce7035f ]

Implement support for the PMC_IMPL_E_33V_PWR register which replaces
PMC_PWR_DET register interface of the SoC generations preceding
Tegra186. Also add the voltage bit offsets to the tegra186_io_pads[]
table and the AO_HV pad.

Signed-off-by: Aapo Vienamo <avienamo@nvidia.com>
Acked-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/soc/tegra/pmc.c | 55 +++++++++++++++++++++++++++++------------
 include/soc/tegra/pmc.h |  1 +
 2 files changed, 40 insertions(+), 16 deletions(-)

diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c
index 4b452f36f0547..f17a678154047 100644
--- a/drivers/soc/tegra/pmc.c
+++ b/drivers/soc/tegra/pmc.c
@@ -65,6 +65,8 @@
 
 #define PWRGATE_STATUS			0x38
 
+#define PMC_IMPL_E_33V_PWR		0x40
+
 #define PMC_PWR_DET			0x48
 
 #define PMC_SCRATCH0_MODE_RECOVERY	BIT(31)
@@ -154,6 +156,7 @@ struct tegra_pmc_soc {
 	bool has_tsense_reset;
 	bool has_gpu_clamps;
 	bool needs_mbist_war;
+	bool has_impl_33v_pwr;
 
 	const struct tegra_io_pad_soc *io_pads;
 	unsigned int num_io_pads;
@@ -1067,20 +1070,31 @@ int tegra_io_pad_set_voltage(enum tegra_io_pad id,
 
 	mutex_lock(&pmc->powergates_lock);
 
-	/* write-enable PMC_PWR_DET_VALUE[pad->voltage] */
-	value = tegra_pmc_readl(PMC_PWR_DET);
-	value |= BIT(pad->voltage);
-	tegra_pmc_writel(value, PMC_PWR_DET);
+	if (pmc->soc->has_impl_33v_pwr) {
+		value = tegra_pmc_readl(PMC_IMPL_E_33V_PWR);
 
-	/* update I/O voltage */
-	value = tegra_pmc_readl(PMC_PWR_DET_VALUE);
+		if (voltage == TEGRA_IO_PAD_1800000UV)
+			value &= ~BIT(pad->voltage);
+		else
+			value |= BIT(pad->voltage);
 
-	if (voltage == TEGRA_IO_PAD_1800000UV)
-		value &= ~BIT(pad->voltage);
-	else
+		tegra_pmc_writel(value, PMC_IMPL_E_33V_PWR);
+	} else {
+		/* write-enable PMC_PWR_DET_VALUE[pad->voltage] */
+		value = tegra_pmc_readl(PMC_PWR_DET);
 		value |= BIT(pad->voltage);
+		tegra_pmc_writel(value, PMC_PWR_DET);
+
+		/* update I/O voltage */
+		value = tegra_pmc_readl(PMC_PWR_DET_VALUE);
 
-	tegra_pmc_writel(value, PMC_PWR_DET_VALUE);
+		if (voltage == TEGRA_IO_PAD_1800000UV)
+			value &= ~BIT(pad->voltage);
+		else
+			value |= BIT(pad->voltage);
+
+		tegra_pmc_writel(value, PMC_PWR_DET_VALUE);
+	}
 
 	mutex_unlock(&pmc->powergates_lock);
 
@@ -1102,7 +1116,10 @@ int tegra_io_pad_get_voltage(enum tegra_io_pad id)
 	if (pad->voltage == UINT_MAX)
 		return -ENOTSUPP;
 
-	value = tegra_pmc_readl(PMC_PWR_DET_VALUE);
+	if (pmc->soc->has_impl_33v_pwr)
+		value = tegra_pmc_readl(PMC_IMPL_E_33V_PWR);
+	else
+		value = tegra_pmc_readl(PMC_PWR_DET_VALUE);
 
 	if ((value & BIT(pad->voltage)) == 0)
 		return TEGRA_IO_PAD_1800000UV;
@@ -1561,6 +1578,7 @@ static const struct tegra_pmc_soc tegra30_pmc_soc = {
 	.cpu_powergates = tegra30_cpu_powergates,
 	.has_tsense_reset = true,
 	.has_gpu_clamps = false,
+	.has_impl_33v_pwr = false,
 	.num_io_pads = 0,
 	.io_pads = NULL,
 	.regs = &tegra20_pmc_regs,
@@ -1603,6 +1621,7 @@ static const struct tegra_pmc_soc tegra114_pmc_soc = {
 	.cpu_powergates = tegra114_cpu_powergates,
 	.has_tsense_reset = true,
 	.has_gpu_clamps = false,
+	.has_impl_33v_pwr = false,
 	.num_io_pads = 0,
 	.io_pads = NULL,
 	.regs = &tegra20_pmc_regs,
@@ -1683,6 +1702,7 @@ static const struct tegra_pmc_soc tegra124_pmc_soc = {
 	.cpu_powergates = tegra124_cpu_powergates,
 	.has_tsense_reset = true,
 	.has_gpu_clamps = true,
+	.has_impl_33v_pwr = false,
 	.num_io_pads = ARRAY_SIZE(tegra124_io_pads),
 	.io_pads = tegra124_io_pads,
 	.regs = &tegra20_pmc_regs,
@@ -1772,6 +1792,7 @@ static const struct tegra_pmc_soc tegra210_pmc_soc = {
 	.cpu_powergates = tegra210_cpu_powergates,
 	.has_tsense_reset = true,
 	.has_gpu_clamps = true,
+	.has_impl_33v_pwr = false,
 	.needs_mbist_war = true,
 	.num_io_pads = ARRAY_SIZE(tegra210_io_pads),
 	.io_pads = tegra210_io_pads,
@@ -1800,7 +1821,7 @@ static const struct tegra_io_pad_soc tegra186_io_pads[] = {
 	{ .id = TEGRA_IO_PAD_HDMI_DP0, .dpd = 28, .voltage = UINT_MAX },
 	{ .id = TEGRA_IO_PAD_HDMI_DP1, .dpd = 29, .voltage = UINT_MAX },
 	{ .id = TEGRA_IO_PAD_PEX_CNTRL, .dpd = 32, .voltage = UINT_MAX },
-	{ .id = TEGRA_IO_PAD_SDMMC2_HV, .dpd = 34, .voltage = UINT_MAX },
+	{ .id = TEGRA_IO_PAD_SDMMC2_HV, .dpd = 34, .voltage = 5 },
 	{ .id = TEGRA_IO_PAD_SDMMC4, .dpd = 36, .voltage = UINT_MAX },
 	{ .id = TEGRA_IO_PAD_CAM, .dpd = 38, .voltage = UINT_MAX },
 	{ .id = TEGRA_IO_PAD_DSIB, .dpd = 40, .voltage = UINT_MAX },
@@ -1812,12 +1833,13 @@ static const struct tegra_io_pad_soc tegra186_io_pads[] = {
 	{ .id = TEGRA_IO_PAD_CSIF, .dpd = 46, .voltage = UINT_MAX },
 	{ .id = TEGRA_IO_PAD_SPI, .dpd = 47, .voltage = UINT_MAX },
 	{ .id = TEGRA_IO_PAD_UFS, .dpd = 49, .voltage = UINT_MAX },
-	{ .id = TEGRA_IO_PAD_DMIC_HV, .dpd = 52, .voltage = UINT_MAX },
+	{ .id = TEGRA_IO_PAD_DMIC_HV, .dpd = 52, .voltage = 2 },
 	{ .id = TEGRA_IO_PAD_EDP, .dpd = 53, .voltage = UINT_MAX },
-	{ .id = TEGRA_IO_PAD_SDMMC1_HV, .dpd = 55, .voltage = UINT_MAX },
-	{ .id = TEGRA_IO_PAD_SDMMC3_HV, .dpd = 56, .voltage = UINT_MAX },
+	{ .id = TEGRA_IO_PAD_SDMMC1_HV, .dpd = 55, .voltage = 4 },
+	{ .id = TEGRA_IO_PAD_SDMMC3_HV, .dpd = 56, .voltage = 6 },
 	{ .id = TEGRA_IO_PAD_CONN, .dpd = 60, .voltage = UINT_MAX },
-	{ .id = TEGRA_IO_PAD_AUDIO_HV, .dpd = 61, .voltage = UINT_MAX },
+	{ .id = TEGRA_IO_PAD_AUDIO_HV, .dpd = 61, .voltage = 1 },
+	{ .id = TEGRA_IO_PAD_AO_HV, .dpd = UINT_MAX, .voltage = 0 },
 };
 
 static const struct tegra_pmc_regs tegra186_pmc_regs = {
@@ -1870,6 +1892,7 @@ static const struct tegra_pmc_soc tegra186_pmc_soc = {
 	.cpu_powergates = NULL,
 	.has_tsense_reset = false,
 	.has_gpu_clamps = false,
+	.has_impl_33v_pwr = true,
 	.num_io_pads = ARRAY_SIZE(tegra186_io_pads),
 	.io_pads = tegra186_io_pads,
 	.regs = &tegra186_pmc_regs,
diff --git a/include/soc/tegra/pmc.h b/include/soc/tegra/pmc.h
index c32bf91c23e6f..445aa66514e90 100644
--- a/include/soc/tegra/pmc.h
+++ b/include/soc/tegra/pmc.h
@@ -134,6 +134,7 @@ enum tegra_io_pad {
 	TEGRA_IO_PAD_USB2,
 	TEGRA_IO_PAD_USB3,
 	TEGRA_IO_PAD_USB_BIAS,
+	TEGRA_IO_PAD_AO_HV,
 };
 
 /* deprecated, use TEGRA_IO_PAD_{HDMI,LVDS} instead */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 045/422] arm64: dts: tegra210-p2180: Correct sdmmc4 vqmmc-supply
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (43 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 044/422] soc/tegra: pmc: Fix pad voltage configuration for Tegra186 Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 046/422] y2038: make do_gettimeofday() and get_seconds() inline Greg Kroah-Hartman
                   ` (380 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Aapo Vienamo, Mikko Perttunen,
	Thierry Reding, Sasha Levin

From: Aapo Vienamo <avienamo@nvidia.com>

[ Upstream commit 6ff7705da8806de45ca1490194f0b4eb07725804 ]

On p2180 sdmmc4 is powered from a fixed 1.8 V regulator.

Signed-off-by: Aapo Vienamo <avienamo@nvidia.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi
index 7398ae8856dc0..ccaa555180dc0 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi
@@ -282,6 +282,7 @@
 		status = "okay";
 		bus-width = <8>;
 		non-removable;
+		vqmmc-supply = <&vdd_1v8>;
 	};
 
 	clocks {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 046/422] y2038: make do_gettimeofday() and get_seconds() inline
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (44 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 045/422] arm64: dts: tegra210-p2180: Correct sdmmc4 vqmmc-supply Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 047/422] ARM: dts: rcar: Correct SATA device sizes to 2 MiB Greg Kroah-Hartman
                   ` (379 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Arnd Bergmann, Sasha Levin

From: Arnd Bergmann <arnd@arndb.de>

[ Upstream commit 33e26418193f58d1895f2f968e1953b1caf8deb7 ]

get_seconds() and do_gettimeofday() are only used by a few modules now any
more (waiting for the respective patches to get accepted), and they are
among the last holdouts of code that is not y2038 safe in the core kernel.

Move the implementation into the timekeeping32.h header to clean up
the core kernel and isolate the old interfaces further.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/linux/timekeeping32.h | 15 +++++++++++++--
 kernel/time/time.c            | 15 +++++++++------
 kernel/time/timekeeping.c     | 24 ------------------------
 3 files changed, 22 insertions(+), 32 deletions(-)

diff --git a/include/linux/timekeeping32.h b/include/linux/timekeeping32.h
index 8762c2f45f8bf..479da36be8c82 100644
--- a/include/linux/timekeeping32.h
+++ b/include/linux/timekeeping32.h
@@ -6,8 +6,19 @@
  * over time so we can remove the file here.
  */
 
-extern void do_gettimeofday(struct timeval *tv);
-unsigned long get_seconds(void);
+static inline void do_gettimeofday(struct timeval *tv)
+{
+	struct timespec64 now;
+
+	ktime_get_real_ts64(&now);
+	tv->tv_sec = now.tv_sec;
+	tv->tv_usec = now.tv_nsec/1000;
+}
+
+static inline unsigned long get_seconds(void)
+{
+	return ktime_get_real_seconds();
+}
 
 static inline struct timespec current_kernel_time(void)
 {
diff --git a/kernel/time/time.c b/kernel/time/time.c
index be057d6579f13..f7d4fa5ddb9e2 100644
--- a/kernel/time/time.c
+++ b/kernel/time/time.c
@@ -144,9 +144,11 @@ SYSCALL_DEFINE2(gettimeofday, struct timeval __user *, tv,
 		struct timezone __user *, tz)
 {
 	if (likely(tv != NULL)) {
-		struct timeval ktv;
-		do_gettimeofday(&ktv);
-		if (copy_to_user(tv, &ktv, sizeof(ktv)))
+		struct timespec64 ts;
+
+		ktime_get_real_ts64(&ts);
+		if (put_user(ts.tv_sec, &tv->tv_sec) ||
+		    put_user(ts.tv_nsec / 1000, &tv->tv_usec))
 			return -EFAULT;
 	}
 	if (unlikely(tz != NULL)) {
@@ -227,10 +229,11 @@ COMPAT_SYSCALL_DEFINE2(gettimeofday, struct compat_timeval __user *, tv,
 		       struct timezone __user *, tz)
 {
 	if (tv) {
-		struct timeval ktv;
+		struct timespec64 ts;
 
-		do_gettimeofday(&ktv);
-		if (compat_put_timeval(&ktv, tv))
+		ktime_get_real_ts64(&ts);
+		if (put_user(ts.tv_sec, &tv->tv_sec) ||
+		    put_user(ts.tv_nsec / 1000, &tv->tv_usec))
 			return -EFAULT;
 	}
 	if (tz) {
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index c2708e1f0c69f..81ee5b83c9200 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -1214,22 +1214,6 @@ int get_device_system_crosststamp(int (*get_time_fn)
 }
 EXPORT_SYMBOL_GPL(get_device_system_crosststamp);
 
-/**
- * do_gettimeofday - Returns the time of day in a timeval
- * @tv:		pointer to the timeval to be set
- *
- * NOTE: Users should be converted to using getnstimeofday()
- */
-void do_gettimeofday(struct timeval *tv)
-{
-	struct timespec64 now;
-
-	getnstimeofday64(&now);
-	tv->tv_sec = now.tv_sec;
-	tv->tv_usec = now.tv_nsec/1000;
-}
-EXPORT_SYMBOL(do_gettimeofday);
-
 /**
  * do_settimeofday64 - Sets the time of day.
  * @ts:     pointer to the timespec64 variable containing the new time
@@ -2177,14 +2161,6 @@ void getboottime64(struct timespec64 *ts)
 }
 EXPORT_SYMBOL_GPL(getboottime64);
 
-unsigned long get_seconds(void)
-{
-	struct timekeeper *tk = &tk_core.timekeeper;
-
-	return tk->xtime_sec;
-}
-EXPORT_SYMBOL(get_seconds);
-
 void ktime_get_coarse_real_ts64(struct timespec64 *ts)
 {
 	struct timekeeper *tk = &tk_core.timekeeper;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 047/422] ARM: dts: rcar: Correct SATA device sizes to 2 MiB
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (45 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 046/422] y2038: make do_gettimeofday() and get_seconds() inline Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 048/422] ARM: dts: at91/trivial: Fix USART1 definition for at91sam9g45 Greg Kroah-Hartman
                   ` (378 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Geert Uytterhoeven, Simon Horman,
	Sasha Levin

From: Geert Uytterhoeven <geert+renesas@glider.be>

[ Upstream commit 441f61e3aa9e7386731ce1405044d484bd81f911 ]

Update the SATA device nodes on R-Car H1, H2, and M2-W to use a 2 MiB
I/O space, as specified in Rev.1.0 of the R-Car H1 and R-Car Gen2
hardware user manuals.

See also commit e9f0089b2d8a3d45 ("arm64: dts: r8a7795: Correct SATA
device size to 2MiB").

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/r8a7779.dtsi | 2 +-
 arch/arm/boot/dts/r8a7790.dtsi | 4 ++--
 arch/arm/boot/dts/r8a7791.dtsi | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/arm/boot/dts/r8a7779.dtsi b/arch/arm/boot/dts/r8a7779.dtsi
index 6b997bc016ee8..03919714645ae 100644
--- a/arch/arm/boot/dts/r8a7779.dtsi
+++ b/arch/arm/boot/dts/r8a7779.dtsi
@@ -344,7 +344,7 @@
 
 	sata: sata@fc600000 {
 		compatible = "renesas,sata-r8a7779", "renesas,rcar-sata";
-		reg = <0xfc600000 0x2000>;
+		reg = <0xfc600000 0x200000>;
 		interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
 		clocks = <&mstp1_clks R8A7779_CLK_SATA>;
 		power-domains = <&sysc R8A7779_PD_ALWAYS_ON>;
diff --git a/arch/arm/boot/dts/r8a7790.dtsi b/arch/arm/boot/dts/r8a7790.dtsi
index 0925bdca438fe..52a757f47bf08 100644
--- a/arch/arm/boot/dts/r8a7790.dtsi
+++ b/arch/arm/boot/dts/r8a7790.dtsi
@@ -1559,7 +1559,7 @@
 		sata0: sata@ee300000 {
 			compatible = "renesas,sata-r8a7790",
 				     "renesas,rcar-gen2-sata";
-			reg = <0 0xee300000 0 0x2000>;
+			reg = <0 0xee300000 0 0x200000>;
 			interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&cpg CPG_MOD 815>;
 			power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
@@ -1570,7 +1570,7 @@
 		sata1: sata@ee500000 {
 			compatible = "renesas,sata-r8a7790",
 				     "renesas,rcar-gen2-sata";
-			reg = <0 0xee500000 0 0x2000>;
+			reg = <0 0xee500000 0 0x200000>;
 			interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&cpg CPG_MOD 814>;
 			power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
diff --git a/arch/arm/boot/dts/r8a7791.dtsi b/arch/arm/boot/dts/r8a7791.dtsi
index 991ac6feedd5b..25b6a99dd87a2 100644
--- a/arch/arm/boot/dts/r8a7791.dtsi
+++ b/arch/arm/boot/dts/r8a7791.dtsi
@@ -1543,7 +1543,7 @@
 		sata0: sata@ee300000 {
 			compatible = "renesas,sata-r8a7791",
 				     "renesas,rcar-gen2-sata";
-			reg = <0 0xee300000 0 0x2000>;
+			reg = <0 0xee300000 0 0x200000>;
 			interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&cpg CPG_MOD 815>;
 			power-domains = <&sysc R8A7791_PD_ALWAYS_ON>;
@@ -1554,7 +1554,7 @@
 		sata1: sata@ee500000 {
 			compatible = "renesas,sata-r8a7791",
 				     "renesas,rcar-gen2-sata";
-			reg = <0 0xee500000 0 0x2000>;
+			reg = <0 0xee500000 0 0x200000>;
 			interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&cpg CPG_MOD 814>;
 			power-domains = <&sysc R8A7791_PD_ALWAYS_ON>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 048/422] ARM: dts: at91/trivial: Fix USART1 definition for at91sam9g45
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (46 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 047/422] ARM: dts: rcar: Correct SATA device sizes to 2 MiB Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 049/422] rtc: sysfs: fix NULL check in rtc_add_groups() Greg Kroah-Hartman
                   ` (377 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jay Foster, Nicolas Ferre,
	Alexandre Belloni, Sasha Levin

From: Jay Foster <jayfoster@ieee.org>

[ Upstream commit 10af10db8c76fa5b9bf1f52a895c1cb2c0ac24da ]

Fix a typo. No functional change made by this patch.

Signed-off-by: Jay Foster <jayfoster@ieee.org>
Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/at91sam9g45.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/at91sam9g45.dtsi b/arch/arm/boot/dts/at91sam9g45.dtsi
index 1ee25a475be87..d16db1fa7e15c 100644
--- a/arch/arm/boot/dts/at91sam9g45.dtsi
+++ b/arch/arm/boot/dts/at91sam9g45.dtsi
@@ -570,7 +570,7 @@
 					};
 				};
 
-				uart1 {
+				usart1 {
 					pinctrl_usart1: usart1-0 {
 						atmel,pins =
 							<AT91_PIOB 4 AT91_PERIPH_A AT91_PINCTRL_NONE
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 049/422] rtc: sysfs: fix NULL check in rtc_add_groups()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (47 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 048/422] ARM: dts: at91/trivial: Fix USART1 definition for at91sam9g45 Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 050/422] rtc: rv8803: fix the rv8803 id in the OF table Greg Kroah-Hartman
                   ` (376 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dan Carpenter, Alexandre Belloni,
	Sasha Levin

From: Dan Carpenter <dan.carpenter@oracle.com>

[ Upstream commit 777d8ae56da18fb6440acd941edb3597c1b02bf0 ]

devm_kcalloc() returns NULL, it never returns error pointers.  In the
current code we would return PTR_ERR(NULL) which is success, instead of
returning the -ENOMEM error code.

Fixes: a0a1a1ba3032 ("rtc: sysfs: facilitate attribute add to rtc device")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/rtc/rtc-sysfs.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/rtc/rtc-sysfs.c b/drivers/rtc/rtc-sysfs.c
index f1ff30ade5343..9746c32eee2eb 100644
--- a/drivers/rtc/rtc-sysfs.c
+++ b/drivers/rtc/rtc-sysfs.c
@@ -338,8 +338,8 @@ int rtc_add_groups(struct rtc_device *rtc, const struct attribute_group **grps)
 
 	new_cnt = old_cnt + add_cnt + 1;
 	groups = devm_kcalloc(&rtc->dev, new_cnt, sizeof(*groups), GFP_KERNEL);
-	if (IS_ERR_OR_NULL(groups))
-		return PTR_ERR(groups);
+	if (!groups)
+		return -ENOMEM;
 	memcpy(groups, rtc->dev.groups, old_cnt * sizeof(*groups));
 	memcpy(groups + old_cnt, grps, add_cnt * sizeof(*groups));
 	groups[old_cnt + add_cnt] = NULL;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 050/422] rtc: rv8803: fix the rv8803 id in the OF table
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (48 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 049/422] rtc: sysfs: fix NULL check in rtc_add_groups() Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 051/422] remoteproc/davinci: Use %zx for formating size_t Greg Kroah-Hartman
                   ` (375 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Alexandre Belloni, Sasha Levin

From: Alexandre Belloni <alexandre.belloni@bootlin.com>

[ Upstream commit c856618d20662695fcdb47bf4d560dc457662aec ]

The ID for RV8803 must be rv_8803

Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/rtc/rtc-rv8803.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/rtc/rtc-rv8803.c b/drivers/rtc/rtc-rv8803.c
index 29fc3d2103923..17ccef5d5db1a 100644
--- a/drivers/rtc/rtc-rv8803.c
+++ b/drivers/rtc/rtc-rv8803.c
@@ -623,7 +623,7 @@ MODULE_DEVICE_TABLE(i2c, rv8803_id);
 static const struct of_device_id rv8803_of_match[] = {
 	{
 		.compatible = "microcrystal,rv8803",
-		.data = (void *)rx_8900
+		.data = (void *)rv_8803
 	},
 	{
 		.compatible = "epson,rx8900",
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 051/422] remoteproc/davinci: Use %zx for formating size_t
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (49 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 050/422] rtc: rv8803: fix the rv8803 id in the OF table Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 052/422] extcon: cht-wc: Return from default case to avoid warnings Greg Kroah-Hartman
                   ` (374 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Suman Anna, Bartosz Golaszewski,
	Bjorn Andersson, Sasha Levin

From: Bjorn Andersson <bjorn.andersson@linaro.org>

[ Upstream commit 1e28dbbeced6152b9ea7c417ff8cef3f7dcf0f19 ]

da8xx_rproc_mem size is of type size_t, so use %zx to format the debug
print of it to avoid a compile warning.

Acked-by: Suman Anna <s-anna@ti.com>
Reviewed-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/remoteproc/da8xx_remoteproc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/remoteproc/da8xx_remoteproc.c b/drivers/remoteproc/da8xx_remoteproc.c
index e230bef71be1c..d200334577f68 100644
--- a/drivers/remoteproc/da8xx_remoteproc.c
+++ b/drivers/remoteproc/da8xx_remoteproc.c
@@ -226,7 +226,7 @@ static int da8xx_rproc_get_internal_memories(struct platform_device *pdev,
 				res->start & DA8XX_RPROC_LOCAL_ADDRESS_MASK;
 		drproc->mem[i].size = resource_size(res);
 
-		dev_dbg(dev, "memory %8s: bus addr %pa size 0x%x va %p da 0x%x\n",
+		dev_dbg(dev, "memory %8s: bus addr %pa size 0x%zx va %p da 0x%x\n",
 			mem_names[i], &drproc->mem[i].bus_addr,
 			drproc->mem[i].size, drproc->mem[i].cpu_addr,
 			drproc->mem[i].dev_addr);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 052/422] extcon: cht-wc: Return from default case to avoid warnings
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (50 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 051/422] remoteproc/davinci: Use %zx for formating size_t Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 053/422] cfg80211: Avoid regulatory restore when COUNTRY_IE_IGNORE is set Greg Kroah-Hartman
                   ` (373 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andy Shevchenko, Chanwoo Choi, Sasha Levin

From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

[ Upstream commit 962341b54b99965ebec5f70c8d39f1c382eea833 ]

When we have first case to fall through it's not enough to put
single comment there to satisfy compiler. Instead of doing that,
return fall back value directly from default case.

This to avoid following warnings:

drivers/extcon/extcon-intel-cht-wc.c: In function ‘cht_wc_extcon_get_charger’:
include/linux/device.h:1420:2: warning: this statement may fall through [-Wimplicit-fallthrough=]
  _dev_warn(dev, dev_fmt(fmt), ##__VA_ARGS__)
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/extcon/extcon-intel-cht-wc.c:148:3: note: in expansion of macro ‘dev_warn’
   dev_warn(ext->dev,
   ^~~~~~~~
drivers/extcon/extcon-intel-cht-wc.c:152:2: note: here
  case CHT_WC_USBSRC_TYPE_SDP:
  ^~~~

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/extcon/extcon-intel-cht-wc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/extcon/extcon-intel-cht-wc.c b/drivers/extcon/extcon-intel-cht-wc.c
index 5e1dd27722781..bdb67878179ed 100644
--- a/drivers/extcon/extcon-intel-cht-wc.c
+++ b/drivers/extcon/extcon-intel-cht-wc.c
@@ -156,7 +156,7 @@ static int cht_wc_extcon_get_charger(struct cht_wc_extcon_data *ext,
 		dev_warn(ext->dev,
 			"Unhandled charger type %d, defaulting to SDP\n",
 			 ret);
-		/* Fall through, treat as SDP */
+		return EXTCON_CHG_USB_SDP;
 	case CHT_WC_USBSRC_TYPE_SDP:
 	case CHT_WC_USBSRC_TYPE_FLOAT_DP_DN:
 	case CHT_WC_USBSRC_TYPE_OTHER:
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 053/422] cfg80211: Avoid regulatory restore when COUNTRY_IE_IGNORE is set
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (51 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 052/422] extcon: cht-wc: Return from default case to avoid warnings Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 054/422] ALSA: seq: Do error checks at creating system ports Greg Kroah-Hartman
                   ` (372 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Rajeev Kumar Sirasanagandla,
	Johannes Berg, Sasha Levin

From: Rajeev Kumar Sirasanagandla <rsirasan@codeaurora.org>

[ Upstream commit 7417844b63d4b0dc8ab23f88259bf95de7d09b57 ]

When REGULATORY_COUNTRY_IE_IGNORE is set,  __reg_process_hint_country_ie()
ignores the country code change request from __cfg80211_connect_result()
via regulatory_hint_country_ie().

After Disconnect, similar to above, country code should not be reset to
world when country IE ignore is set. But this is violated and restore of
regulatory settings is invoked by cfg80211_disconnect_work via
regulatory_hint_disconnect().

To address this, avoid regulatory restore from regulatory_hint_disconnect()
when COUNTRY_IE_IGNORE is set.

Note: Currently, restore_regulatory_settings() takes care of clearing
beacon hints. But in the proposed change, regulatory restore is avoided.
Therefore, explicitly clear beacon hints when DISABLE_BEACON_HINTS
is not set.

Signed-off-by: Rajeev Kumar Sirasanagandla <rsirasan@codeaurora.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/wireless/reg.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index cccbf845079c8..68ae97ef8bf0b 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -3225,8 +3225,54 @@ static void restore_regulatory_settings(bool reset_user)
 	schedule_work(&reg_work);
 }
 
+static bool is_wiphy_all_set_reg_flag(enum ieee80211_regulatory_flags flag)
+{
+	struct cfg80211_registered_device *rdev;
+	struct wireless_dev *wdev;
+
+	list_for_each_entry(rdev, &cfg80211_rdev_list, list) {
+		list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) {
+			wdev_lock(wdev);
+			if (!(wdev->wiphy->regulatory_flags & flag)) {
+				wdev_unlock(wdev);
+				return false;
+			}
+			wdev_unlock(wdev);
+		}
+	}
+
+	return true;
+}
+
 void regulatory_hint_disconnect(void)
 {
+	/* Restore of regulatory settings is not required when wiphy(s)
+	 * ignore IE from connected access point but clearance of beacon hints
+	 * is required when wiphy(s) supports beacon hints.
+	 */
+	if (is_wiphy_all_set_reg_flag(REGULATORY_COUNTRY_IE_IGNORE)) {
+		struct reg_beacon *reg_beacon, *btmp;
+
+		if (is_wiphy_all_set_reg_flag(REGULATORY_DISABLE_BEACON_HINTS))
+			return;
+
+		spin_lock_bh(&reg_pending_beacons_lock);
+		list_for_each_entry_safe(reg_beacon, btmp,
+					 &reg_pending_beacons, list) {
+			list_del(&reg_beacon->list);
+			kfree(reg_beacon);
+		}
+		spin_unlock_bh(&reg_pending_beacons_lock);
+
+		list_for_each_entry_safe(reg_beacon, btmp,
+					 &reg_beacon_list, list) {
+			list_del(&reg_beacon->list);
+			kfree(reg_beacon);
+		}
+
+		return;
+	}
+
 	pr_debug("All devices are disconnected, going to restore regulatory settings\n");
 	restore_regulatory_settings(false);
 }
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 054/422] ALSA: seq: Do error checks at creating system ports
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (52 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 053/422] cfg80211: Avoid regulatory restore when COUNTRY_IE_IGNORE is set Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 055/422] ath10k: skip resetting rx filter for WCN3990 Greg Kroah-Hartman
                   ` (371 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Takashi Iwai, Sasha Levin

From: Takashi Iwai <tiwai@suse.de>

[ Upstream commit b8e131542b47b81236ecf6768c923128e1f5db6e ]

snd_seq_system_client_init() doesn't check the errors returned from
its port creations.  Let's do it properly and handle the error paths.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/core/seq/seq_system.c | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/sound/core/seq/seq_system.c b/sound/core/seq/seq_system.c
index 8ce1d0b40dce1..ce1f1e4727ab1 100644
--- a/sound/core/seq/seq_system.c
+++ b/sound/core/seq/seq_system.c
@@ -123,6 +123,7 @@ int __init snd_seq_system_client_init(void)
 {
 	struct snd_seq_port_callback pcallbacks;
 	struct snd_seq_port_info *port;
+	int err;
 
 	port = kzalloc(sizeof(*port), GFP_KERNEL);
 	if (!port)
@@ -144,7 +145,10 @@ int __init snd_seq_system_client_init(void)
 	port->flags = SNDRV_SEQ_PORT_FLG_GIVEN_PORT;
 	port->addr.client = sysclient;
 	port->addr.port = SNDRV_SEQ_PORT_SYSTEM_TIMER;
-	snd_seq_kernel_client_ctl(sysclient, SNDRV_SEQ_IOCTL_CREATE_PORT, port);
+	err = snd_seq_kernel_client_ctl(sysclient, SNDRV_SEQ_IOCTL_CREATE_PORT,
+					port);
+	if (err < 0)
+		goto error_port;
 
 	/* register announcement port */
 	strcpy(port->name, "Announce");
@@ -154,16 +158,24 @@ int __init snd_seq_system_client_init(void)
 	port->flags = SNDRV_SEQ_PORT_FLG_GIVEN_PORT;
 	port->addr.client = sysclient;
 	port->addr.port = SNDRV_SEQ_PORT_SYSTEM_ANNOUNCE;
-	snd_seq_kernel_client_ctl(sysclient, SNDRV_SEQ_IOCTL_CREATE_PORT, port);
+	err = snd_seq_kernel_client_ctl(sysclient, SNDRV_SEQ_IOCTL_CREATE_PORT,
+					port);
+	if (err < 0)
+		goto error_port;
 	announce_port = port->addr.port;
 
 	kfree(port);
 	return 0;
+
+ error_port:
+	snd_seq_system_client_done();
+	kfree(port);
+	return err;
 }
 
 
 /* unregister our internal client */
-void __exit snd_seq_system_client_done(void)
+void snd_seq_system_client_done(void)
 {
 	int oldsysclient = sysclient;
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 055/422] ath10k: skip resetting rx filter for WCN3990
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (53 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 054/422] ALSA: seq: Do error checks at creating system ports Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 056/422] ath9k: fix tx99 with monitor mode interface Greg Kroah-Hartman
                   ` (370 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Rakesh Pillai, Kalle Valo, Sasha Levin

From: Rakesh Pillai <pillair@codeaurora.org>

[ Upstream commit 58da3b42307061b71f2dcce2bd1185d578a3aa53 ]

WCN3990 has the MAC_PCU_ADDR1 configured properly
and hence it will not send spurious ack frames
during boot up.

Hence the reset_rx_filter workaround is not needed
for WCN3990. Add a hw_param to indicate if hardware rx
filter reset is needed and skip the reset_rx_filter for
WCN3990.

Tested HW: WCN3990
Tested FW: WLAN.HL.2.0-01188-QCAHLSWMTPLZ-1

Signed-off-by: Rakesh Pillai <pillair@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/ath/ath10k/core.c | 17 ++++++++++++++++-
 drivers/net/wireless/ath/ath10k/hw.h   |  5 +++++
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
index 2791ef2fd716c..436eac342b622 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -91,6 +91,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
 		.rx_ring_fill_level = HTT_RX_RING_FILL_LEVEL,
 		.shadow_reg_support = false,
 		.rri_on_ddr = false,
+		.hw_filter_reset_required = true,
 	},
 	{
 		.id = QCA988X_HW_2_0_VERSION,
@@ -124,6 +125,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
 		.per_ce_irq = false,
 		.shadow_reg_support = false,
 		.rri_on_ddr = false,
+		.hw_filter_reset_required = true,
 	},
 	{
 		.id = QCA9887_HW_1_0_VERSION,
@@ -157,6 +159,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
 		.per_ce_irq = false,
 		.shadow_reg_support = false,
 		.rri_on_ddr = false,
+		.hw_filter_reset_required = true,
 	},
 	{
 		.id = QCA6174_HW_2_1_VERSION,
@@ -189,6 +192,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
 		.per_ce_irq = false,
 		.shadow_reg_support = false,
 		.rri_on_ddr = false,
+		.hw_filter_reset_required = true,
 	},
 	{
 		.id = QCA6174_HW_2_1_VERSION,
@@ -221,6 +225,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
 		.per_ce_irq = false,
 		.shadow_reg_support = false,
 		.rri_on_ddr = false,
+		.hw_filter_reset_required = true,
 	},
 	{
 		.id = QCA6174_HW_3_0_VERSION,
@@ -253,6 +258,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
 		.per_ce_irq = false,
 		.shadow_reg_support = false,
 		.rri_on_ddr = false,
+		.hw_filter_reset_required = true,
 	},
 	{
 		.id = QCA6174_HW_3_2_VERSION,
@@ -288,6 +294,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
 		.per_ce_irq = false,
 		.shadow_reg_support = false,
 		.rri_on_ddr = false,
+		.hw_filter_reset_required = true,
 	},
 	{
 		.id = QCA99X0_HW_2_0_DEV_VERSION,
@@ -326,6 +333,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
 		.per_ce_irq = false,
 		.shadow_reg_support = false,
 		.rri_on_ddr = false,
+		.hw_filter_reset_required = true,
 	},
 	{
 		.id = QCA9984_HW_1_0_DEV_VERSION,
@@ -369,6 +377,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
 		.per_ce_irq = false,
 		.shadow_reg_support = false,
 		.rri_on_ddr = false,
+		.hw_filter_reset_required = true,
 	},
 	{
 		.id = QCA9888_HW_2_0_DEV_VERSION,
@@ -411,6 +420,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
 		.per_ce_irq = false,
 		.shadow_reg_support = false,
 		.rri_on_ddr = false,
+		.hw_filter_reset_required = true,
 	},
 	{
 		.id = QCA9377_HW_1_0_DEV_VERSION,
@@ -443,6 +453,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
 		.per_ce_irq = false,
 		.shadow_reg_support = false,
 		.rri_on_ddr = false,
+		.hw_filter_reset_required = true,
 	},
 	{
 		.id = QCA9377_HW_1_1_DEV_VERSION,
@@ -477,6 +488,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
 		.per_ce_irq = false,
 		.shadow_reg_support = false,
 		.rri_on_ddr = false,
+		.hw_filter_reset_required = true,
 	},
 	{
 		.id = QCA4019_HW_1_0_DEV_VERSION,
@@ -516,6 +528,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
 		.per_ce_irq = false,
 		.shadow_reg_support = false,
 		.rri_on_ddr = false,
+		.hw_filter_reset_required = true,
 	},
 	{
 		.id = WCN3990_HW_1_0_DEV_VERSION,
@@ -540,6 +553,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
 		.per_ce_irq = true,
 		.shadow_reg_support = true,
 		.rri_on_ddr = true,
+		.hw_filter_reset_required = false,
 	},
 };
 
@@ -2406,7 +2420,8 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode,
 	 * possible to implicitly make it correct by creating a dummy vdev and
 	 * then deleting it.
 	 */
-	if (mode == ATH10K_FIRMWARE_MODE_NORMAL) {
+	if (ar->hw_params.hw_filter_reset_required &&
+	    mode == ATH10K_FIRMWARE_MODE_NORMAL) {
 		status = ath10k_core_reset_rx_filter(ar);
 		if (status) {
 			ath10k_err(ar,
diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h
index 977f79ebb4fd5..fac58c3c576a2 100644
--- a/drivers/net/wireless/ath/ath10k/hw.h
+++ b/drivers/net/wireless/ath/ath10k/hw.h
@@ -589,6 +589,11 @@ struct ath10k_hw_params {
 
 	/* Number of bytes to be the offset for each FFT sample */
 	int spectral_bin_offset;
+
+	/* targets which require hw filter reset during boot up,
+	 * to avoid it sending spurious acks.
+	 */
+	bool hw_filter_reset_required;
 };
 
 struct htt_rx_desc;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 056/422] ath9k: fix tx99 with monitor mode interface
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (54 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 055/422] ath10k: skip resetting rx filter for WCN3990 Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 057/422] wil6210: drop Rx multicast packets that are looped-back to STA Greg Kroah-Hartman
                   ` (369 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Felix Fietkau, Kalle Valo, Sasha Levin

From: Felix Fietkau <nbd@nbd.name>

[ Upstream commit d9c52fd17cb483bd8a470398afcb79f86c1b77c8 ]

Tx99 is typically configured via a monitor mode interface, which does
not get added to the driver as a vif. Since the code currently expects
a configured virtual interface for tx99, enabling tx99 via debugfs fails.
Since the vif is not needed anyway, remove all checks for it.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
[kvalo@codeaurora.org: s/CPTCFG/CONFIG/]
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/ath/ath9k/ath9k.h |  1 -
 drivers/net/wireless/ath/ath9k/main.c  | 12 +++---------
 drivers/net/wireless/ath/ath9k/tx99.c  |  9 ---------
 drivers/net/wireless/ath/ath9k/xmit.c  |  2 +-
 4 files changed, 4 insertions(+), 20 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 0fca44e91a712..50206a6d8a850 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -1074,7 +1074,6 @@ struct ath_softc {
 
 	struct ath_spec_scan_priv spec_priv;
 
-	struct ieee80211_vif *tx99_vif;
 	struct sk_buff *tx99_skb;
 	bool tx99_state;
 	s16 tx99_power;
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 1049773378f27..6ce4b9f1dcb44 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1251,15 +1251,10 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
 	struct ath_vif *avp = (void *)vif->drv_priv;
 	struct ath_node *an = &avp->mcast_node;
 
-	mutex_lock(&sc->mutex);
+	if (IS_ENABLED(CONFIG_ATH9K_TX99))
+		return -EOPNOTSUPP;
 
-	if (IS_ENABLED(CONFIG_ATH9K_TX99)) {
-		if (sc->cur_chan->nvifs >= 1) {
-			mutex_unlock(&sc->mutex);
-			return -EOPNOTSUPP;
-		}
-		sc->tx99_vif = vif;
-	}
+	mutex_lock(&sc->mutex);
 
 	ath_dbg(common, CONFIG, "Attach a VIF of type: %d\n", vif->type);
 	sc->cur_chan->nvifs++;
@@ -1342,7 +1337,6 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
 	ath9k_p2p_remove_vif(sc, vif);
 
 	sc->cur_chan->nvifs--;
-	sc->tx99_vif = NULL;
 	if (!ath9k_is_chanctx_enabled())
 		list_del(&avp->list);
 
diff --git a/drivers/net/wireless/ath/ath9k/tx99.c b/drivers/net/wireless/ath/ath9k/tx99.c
index ce50d8f5835e0..9b05ffb68c34a 100644
--- a/drivers/net/wireless/ath/ath9k/tx99.c
+++ b/drivers/net/wireless/ath/ath9k/tx99.c
@@ -54,12 +54,6 @@ static struct sk_buff *ath9k_build_tx99_skb(struct ath_softc *sc)
 	struct ieee80211_hdr *hdr;
 	struct ieee80211_tx_info *tx_info;
 	struct sk_buff *skb;
-	struct ath_vif *avp;
-
-	if (!sc->tx99_vif)
-		return NULL;
-
-	avp = (struct ath_vif *)sc->tx99_vif->drv_priv;
 
 	skb = alloc_skb(len, GFP_KERNEL);
 	if (!skb)
@@ -77,14 +71,11 @@ static struct sk_buff *ath9k_build_tx99_skb(struct ath_softc *sc)
 	memcpy(hdr->addr2, hw->wiphy->perm_addr, ETH_ALEN);
 	memcpy(hdr->addr3, hw->wiphy->perm_addr, ETH_ALEN);
 
-	hdr->seq_ctrl |= cpu_to_le16(avp->seq_no);
-
 	tx_info = IEEE80211_SKB_CB(skb);
 	memset(tx_info, 0, sizeof(*tx_info));
 	rate = &tx_info->control.rates[0];
 	tx_info->band = sc->cur_chan->chandef.chan->band;
 	tx_info->flags = IEEE80211_TX_CTL_NO_ACK;
-	tx_info->control.vif = sc->tx99_vif;
 	rate->count = 1;
 	if (ah->curchan && IS_CHAN_HT(ah->curchan)) {
 		rate->flags |= IEEE80211_TX_RC_MCS;
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index 4b7a7fc2a0fe0..3ae8d0585b6f3 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -2974,7 +2974,7 @@ int ath9k_tx99_send(struct ath_softc *sc, struct sk_buff *skb,
 		return -EINVAL;
 	}
 
-	ath_set_rates(sc->tx99_vif, NULL, bf);
+	ath_set_rates(NULL, NULL, bf);
 
 	ath9k_hw_set_desc_link(sc->sc_ah, bf->bf_desc, bf->bf_daddr);
 	ath9k_hw_tx99_start(sc->sc_ah, txctl->txq->axq_qnum);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 057/422] wil6210: drop Rx multicast packets that are looped-back to STA
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (55 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 056/422] ath9k: fix tx99 with monitor mode interface Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 058/422] wil6210: set edma variables only for Talyn-MB devices Greg Kroah-Hartman
                   ` (368 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dedy Lansky, Maya Erez, Kalle Valo,
	Sasha Levin

From: Dedy Lansky <dlansky@codeaurora.org>

[ Upstream commit 9a65064abdf82934e0ed4744125f9f466f421f57 ]

Delivering a looped-back multicast packet to network stack can cause
higher layer protocols to fail like for example IPv6 DAD.
In STA mode, upon receiving Rx multicast packet, check if the source
MAC address is equal to our own MAC address and if so drop the packet.

Signed-off-by: Dedy Lansky <dlansky@codeaurora.org>
Signed-off-by: Maya Erez <merez@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/ath/wil6210/txrx.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c
index 1b1b58e0129a3..25a65ca424c84 100644
--- a/drivers/net/wireless/ath/wil6210/txrx.c
+++ b/drivers/net/wireless/ath/wil6210/txrx.c
@@ -766,7 +766,14 @@ void wil_netif_rx_any(struct sk_buff *skb, struct net_device *ndev)
 		return;
 	}
 
-	if (wdev->iftype == NL80211_IFTYPE_AP && !vif->ap_isolate) {
+	if (wdev->iftype == NL80211_IFTYPE_STATION) {
+		if (mcast && ether_addr_equal(eth->h_source, ndev->dev_addr)) {
+			/* mcast packet looped back to us */
+			rc = GRO_DROP;
+			dev_kfree_skb(skb);
+			goto stats;
+		}
+	} else if (wdev->iftype == NL80211_IFTYPE_AP && !vif->ap_isolate) {
 		if (mcast) {
 			/* send multicast frames both to higher layers in
 			 * local net stack and back to the wireless medium
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 058/422] wil6210: set edma variables only for Talyn-MB devices
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (56 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 057/422] wil6210: drop Rx multicast packets that are looped-back to STA Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 059/422] wil6210: prevent usage of tx ring 0 for eDMA Greg Kroah-Hartman
                   ` (367 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Maya Erez, Kalle Valo, Sasha Levin

From: Maya Erez <merez@codeaurora.org>

[ Upstream commit 596bdbcce90fa93f43ebcb99cefea34bd2e27707 ]

use_rx_hw_reordering is already set to true in wil_set_capabilities
for Talyn-MB devices. Remove its setting from wil_priv_init to
prevent its activation for older chips.
Similarly, move the setting of use_compressed_rx_status to
wil_set_capabilities.

Signed-off-by: Maya Erez <merez@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/ath/wil6210/main.c     | 2 --
 drivers/net/wireless/ath/wil6210/pcie_bus.c | 1 +
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath/wil6210/main.c b/drivers/net/wireless/ath/wil6210/main.c
index a0fe8cbad104f..d186b6886c6bf 100644
--- a/drivers/net/wireless/ath/wil6210/main.c
+++ b/drivers/net/wireless/ath/wil6210/main.c
@@ -653,8 +653,6 @@ int wil_priv_init(struct wil6210_priv *wil)
 
 	/* edma configuration can be updated via debugfs before allocation */
 	wil->num_rx_status_rings = WIL_DEFAULT_NUM_RX_STATUS_RINGS;
-	wil->use_compressed_rx_status = true;
-	wil->use_rx_hw_reordering = true;
 	wil->tx_status_ring_order = WIL_TX_SRING_SIZE_ORDER_DEFAULT;
 
 	/* Rx status ring size should be bigger than the number of RX buffers
diff --git a/drivers/net/wireless/ath/wil6210/pcie_bus.c b/drivers/net/wireless/ath/wil6210/pcie_bus.c
index 89119e7facd00..c8c6613371d1b 100644
--- a/drivers/net/wireless/ath/wil6210/pcie_bus.c
+++ b/drivers/net/wireless/ath/wil6210/pcie_bus.c
@@ -108,6 +108,7 @@ int wil_set_capabilities(struct wil6210_priv *wil)
 		set_bit(hw_capa_no_flash, wil->hw_capa);
 		wil->use_enhanced_dma_hw = true;
 		wil->use_rx_hw_reordering = true;
+		wil->use_compressed_rx_status = true;
 		wil_fw_name = ftm_mode ? WIL_FW_NAME_FTM_TALYN :
 			      WIL_FW_NAME_TALYN;
 		if (wil_fw_verify_file_exists(wil, wil_fw_name))
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 059/422] wil6210: prevent usage of tx ring 0 for eDMA
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (57 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 058/422] wil6210: set edma variables only for Talyn-MB devices Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 060/422] wil6210: fix invalid memory access for rx_buff_mgmt debugfs Greg Kroah-Hartman
                   ` (366 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Maya Erez, Kalle Valo, Sasha Levin

From: Maya Erez <merez@codeaurora.org>

[ Upstream commit df2b53884a5a454bf441ca78e5b57307262c73f4 ]

In enhanced DMA ring 0 is used for RX ring, hence TX ring 0
is an unused element in ring_tx and ring2cid_tid arrays.
Initialize ring2cid_tid CID to WIL6210_MAX_CID to prevent a false
match of CID 0.
Go over the ring_tx and ring2cid_tid from wil_get_min_tx_ring_id
and on to prevent access to index 0 in eDMA.

Signed-off-by: Maya Erez <merez@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/ath/wil6210/main.c | 7 +++++--
 drivers/net/wireless/ath/wil6210/txrx.c | 6 ++++--
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/ath/wil6210/main.c b/drivers/net/wireless/ath/wil6210/main.c
index d186b6886c6bf..920cb233f4db7 100644
--- a/drivers/net/wireless/ath/wil6210/main.c
+++ b/drivers/net/wireless/ath/wil6210/main.c
@@ -223,6 +223,7 @@ __acquires(&sta->tid_rx_lock) __releases(&sta->tid_rx_lock)
 	struct net_device *ndev = vif_to_ndev(vif);
 	struct wireless_dev *wdev = vif_to_wdev(vif);
 	struct wil_sta_info *sta = &wil->sta[cid];
+	int min_ring_id = wil_get_min_tx_ring_id(wil);
 
 	might_sleep();
 	wil_dbg_misc(wil, "disconnect_cid: CID %d, MID %d, status %d\n",
@@ -273,7 +274,7 @@ __acquires(&sta->tid_rx_lock) __releases(&sta->tid_rx_lock)
 	memset(sta->tid_crypto_rx, 0, sizeof(sta->tid_crypto_rx));
 	memset(&sta->group_crypto_rx, 0, sizeof(sta->group_crypto_rx));
 	/* release vrings */
-	for (i = 0; i < ARRAY_SIZE(wil->ring_tx); i++) {
+	for (i = min_ring_id; i < ARRAY_SIZE(wil->ring_tx); i++) {
 		if (wil->ring2cid_tid[i][0] == cid)
 			wil_ring_fini_tx(wil, i);
 	}
@@ -604,8 +605,10 @@ int wil_priv_init(struct wil6210_priv *wil)
 		wil->sta[i].mid = U8_MAX;
 	}
 
-	for (i = 0; i < WIL6210_MAX_TX_RINGS; i++)
+	for (i = 0; i < WIL6210_MAX_TX_RINGS; i++) {
 		spin_lock_init(&wil->ring_tx_data[i].lock);
+		wil->ring2cid_tid[i][0] = WIL6210_MAX_CID;
+	}
 
 	mutex_init(&wil->mutex);
 	mutex_init(&wil->vif_mutex);
diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c
index 25a65ca424c84..73cdf54521f9b 100644
--- a/drivers/net/wireless/ath/wil6210/txrx.c
+++ b/drivers/net/wireless/ath/wil6210/txrx.c
@@ -77,8 +77,9 @@ bool wil_is_tx_idle(struct wil6210_priv *wil)
 {
 	int i;
 	unsigned long data_comp_to;
+	int min_ring_id = wil_get_min_tx_ring_id(wil);
 
-	for (i = 0; i < WIL6210_MAX_TX_RINGS; i++) {
+	for (i = min_ring_id; i < WIL6210_MAX_TX_RINGS; i++) {
 		struct wil_ring *vring = &wil->ring_tx[i];
 		int vring_index = vring - wil->ring_tx;
 		struct wil_ring_tx_data *txdata =
@@ -1945,6 +1946,7 @@ static inline void __wil_update_net_queues(struct wil6210_priv *wil,
 					   bool check_stop)
 {
 	int i;
+	int min_ring_id = wil_get_min_tx_ring_id(wil);
 
 	if (unlikely(!vif))
 		return;
@@ -1977,7 +1979,7 @@ static inline void __wil_update_net_queues(struct wil6210_priv *wil,
 		return;
 
 	/* check wake */
-	for (i = 0; i < WIL6210_MAX_TX_RINGS; i++) {
+	for (i = min_ring_id; i < WIL6210_MAX_TX_RINGS; i++) {
 		struct wil_ring *cur_ring = &wil->ring_tx[i];
 		struct wil_ring_tx_data  *txdata = &wil->ring_tx_data[i];
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 060/422] wil6210: fix invalid memory access for rx_buff_mgmt debugfs
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (58 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 059/422] wil6210: prevent usage of tx ring 0 for eDMA Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 061/422] ath10k: limit available channels via DT ieee80211-freq-limit Greg Kroah-Hartman
                   ` (365 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dedy Lansky, Maya Erez, Kalle Valo,
	Sasha Levin

From: Dedy Lansky <dlansky@codeaurora.org>

[ Upstream commit 4405b632e3da839defec966e4b0be44d0c5e3102 ]

Check rx_buff_mgmt is allocated before accessing its internal fields.

Signed-off-by: Dedy Lansky <dlansky@codeaurora.org>
Signed-off-by: Maya Erez <merez@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/ath/wil6210/debugfs.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/wireless/ath/wil6210/debugfs.c b/drivers/net/wireless/ath/wil6210/debugfs.c
index 51c3330bc316f..ceace95b1595c 100644
--- a/drivers/net/wireless/ath/wil6210/debugfs.c
+++ b/drivers/net/wireless/ath/wil6210/debugfs.c
@@ -1263,6 +1263,9 @@ static int wil_rx_buff_mgmt_debugfs_show(struct seq_file *s, void *data)
 	int num_active;
 	int num_free;
 
+	if (!rbm->buff_arr)
+		return -EINVAL;
+
 	seq_printf(s, "  size = %zu\n", rbm->size);
 	seq_printf(s, "  free_list_empty_cnt = %lu\n",
 		   rbm->free_list_empty_cnt);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 061/422] ath10k: limit available channels via DT ieee80211-freq-limit
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (59 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 060/422] wil6210: fix invalid memory access for rx_buff_mgmt debugfs Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 062/422] ice: Update request resource command to latest specification Greg Kroah-Hartman
                   ` (364 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sven Eckelmann, Kalle Valo, Sasha Levin

From: Sven Eckelmann <sven.eckelmann@openmesh.com>

[ Upstream commit 34d5629d2ca89d847b7040762b87964c696c14da ]

Tri-band devices (1x 2.4GHz + 2x 5GHz) often incorporate special filters in
the RX and TX path. These filtered channel can in theory still be used by
the hardware but the signal strength is reduced so much that it makes no
sense.

There is already a DT property to limit the available channels but ath10k
has to manually call this functionality to limit the currrently set wiphy
channels further.

Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/ath/ath10k/mac.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 1419f9d1505fe..9d033da46ec2e 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -18,6 +18,7 @@
 
 #include "mac.h"
 
+#include <net/cfg80211.h>
 #include <net/mac80211.h>
 #include <linux/etherdevice.h>
 #include <linux/acpi.h>
@@ -8363,6 +8364,7 @@ int ath10k_mac_register(struct ath10k *ar)
 		ar->hw->wiphy->bands[NL80211_BAND_5GHZ] = band;
 	}
 
+	wiphy_read_of_freq_limits(ar->hw->wiphy);
 	ath10k_mac_setup_ht_vht_cap(ar);
 
 	ar->hw->wiphy->interface_modes =
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 062/422] ice: Update request resource command to latest specification
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (60 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 061/422] ath10k: limit available channels via DT ieee80211-freq-limit Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 063/422] ice: Prevent control queue operations during reset Greg Kroah-Hartman
                   ` (363 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dan Nowlin, Anirudh Venkataramanan,
	Tony Brelinski, Jeff Kirsher, Sasha Levin

From: Dan Nowlin <dan.nowlin@intel.com>

[ Upstream commit ff2b13213a6a0baca105bc3bc724225f0adde1f8 ]

Align Request Resource Ownership AQ command (0x0008) to the latest
specification. This includes:

- Correcting the resource IDs for the Global Cfg and Change locks.
- new enum ICE_CHANGE_LOCK_RES_ID
- new enum ICE_GLOBAL_CFG_LOCK_RES_ID
- Altering the flow for Global Config Lock to allow only the first PF to
  download the package.

Signed-off-by: Dan Nowlin <dan.nowlin@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/intel/ice/ice_common.c | 75 ++++++++++++++++-----
 drivers/net/ethernet/intel/ice/ice_common.h |  2 +-
 drivers/net/ethernet/intel/ice/ice_nvm.c    |  2 +-
 drivers/net/ethernet/intel/ice/ice_type.h   |  9 ++-
 4 files changed, 67 insertions(+), 21 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c
index 661beea6af795..f8d00263d9019 100644
--- a/drivers/net/ethernet/intel/ice/ice_common.c
+++ b/drivers/net/ethernet/intel/ice/ice_common.c
@@ -904,7 +904,22 @@ enum ice_status ice_aq_q_shutdown(struct ice_hw *hw, bool unloading)
  * @timeout: the maximum time in ms that the driver may hold the resource
  * @cd: pointer to command details structure or NULL
  *
- * requests common resource using the admin queue commands (0x0008)
+ * Requests common resource using the admin queue commands (0x0008).
+ * When attempting to acquire the Global Config Lock, the driver can
+ * learn of three states:
+ *  1) ICE_SUCCESS -        acquired lock, and can perform download package
+ *  2) ICE_ERR_AQ_ERROR -   did not get lock, driver should fail to load
+ *  3) ICE_ERR_AQ_NO_WORK - did not get lock, but another driver has
+ *                          successfully downloaded the package; the driver does
+ *                          not have to download the package and can continue
+ *                          loading
+ *
+ * Note that if the caller is in an acquire lock, perform action, release lock
+ * phase of operation, it is possible that the FW may detect a timeout and issue
+ * a CORER. In this case, the driver will receive a CORER interrupt and will
+ * have to determine its cause. The calling thread that is handling this flow
+ * will likely get an error propagated back to it indicating the Download
+ * Package, Update Package or the Release Resource AQ commands timed out.
  */
 static enum ice_status
 ice_aq_req_res(struct ice_hw *hw, enum ice_aq_res_ids res,
@@ -922,13 +937,43 @@ ice_aq_req_res(struct ice_hw *hw, enum ice_aq_res_ids res,
 	cmd_resp->res_id = cpu_to_le16(res);
 	cmd_resp->access_type = cpu_to_le16(access);
 	cmd_resp->res_number = cpu_to_le32(sdp_number);
+	cmd_resp->timeout = cpu_to_le32(*timeout);
+	*timeout = 0;
 
 	status = ice_aq_send_cmd(hw, &desc, NULL, 0, cd);
+
 	/* The completion specifies the maximum time in ms that the driver
 	 * may hold the resource in the Timeout field.
-	 * If the resource is held by someone else, the command completes with
-	 * busy return value and the timeout field indicates the maximum time
-	 * the current owner of the resource has to free it.
+	 */
+
+	/* Global config lock response utilizes an additional status field.
+	 *
+	 * If the Global config lock resource is held by some other driver, the
+	 * command completes with ICE_AQ_RES_GLBL_IN_PROG in the status field
+	 * and the timeout field indicates the maximum time the current owner
+	 * of the resource has to free it.
+	 */
+	if (res == ICE_GLOBAL_CFG_LOCK_RES_ID) {
+		if (le16_to_cpu(cmd_resp->status) == ICE_AQ_RES_GLBL_SUCCESS) {
+			*timeout = le32_to_cpu(cmd_resp->timeout);
+			return 0;
+		} else if (le16_to_cpu(cmd_resp->status) ==
+			   ICE_AQ_RES_GLBL_IN_PROG) {
+			*timeout = le32_to_cpu(cmd_resp->timeout);
+			return ICE_ERR_AQ_ERROR;
+		} else if (le16_to_cpu(cmd_resp->status) ==
+			   ICE_AQ_RES_GLBL_DONE) {
+			return ICE_ERR_AQ_NO_WORK;
+		}
+
+		/* invalid FW response, force a timeout immediately */
+		*timeout = 0;
+		return ICE_ERR_AQ_ERROR;
+	}
+
+	/* If the resource is held by some other driver, the command completes
+	 * with a busy return value and the timeout field indicates the maximum
+	 * time the current owner of the resource has to free it.
 	 */
 	if (!status || hw->adminq.sq_last_status == ICE_AQ_RC_EBUSY)
 		*timeout = le32_to_cpu(cmd_resp->timeout);
@@ -967,30 +1012,28 @@ ice_aq_release_res(struct ice_hw *hw, enum ice_aq_res_ids res, u8 sdp_number,
  * @hw: pointer to the HW structure
  * @res: resource id
  * @access: access type (read or write)
+ * @timeout: timeout in milliseconds
  *
  * This function will attempt to acquire the ownership of a resource.
  */
 enum ice_status
 ice_acquire_res(struct ice_hw *hw, enum ice_aq_res_ids res,
-		enum ice_aq_res_access_type access)
+		enum ice_aq_res_access_type access, u32 timeout)
 {
 #define ICE_RES_POLLING_DELAY_MS	10
 	u32 delay = ICE_RES_POLLING_DELAY_MS;
+	u32 time_left = timeout;
 	enum ice_status status;
-	u32 time_left = 0;
-	u32 timeout;
 
 	status = ice_aq_req_res(hw, res, access, 0, &time_left, NULL);
 
-	/* An admin queue return code of ICE_AQ_RC_EEXIST means that another
-	 * driver has previously acquired the resource and performed any
-	 * necessary updates; in this case the caller does not obtain the
-	 * resource and has no further work to do.
+	/* A return code of ICE_ERR_AQ_NO_WORK means that another driver has
+	 * previously acquired the resource and performed any necessary updates;
+	 * in this case the caller does not obtain the resource and has no
+	 * further work to do.
 	 */
-	if (hw->adminq.sq_last_status == ICE_AQ_RC_EEXIST) {
-		status = ICE_ERR_AQ_NO_WORK;
+	if (status == ICE_ERR_AQ_NO_WORK)
 		goto ice_acquire_res_exit;
-	}
 
 	if (status)
 		ice_debug(hw, ICE_DBG_RES,
@@ -1003,11 +1046,9 @@ ice_acquire_res(struct ice_hw *hw, enum ice_aq_res_ids res,
 		timeout = (timeout > delay) ? timeout - delay : 0;
 		status = ice_aq_req_res(hw, res, access, 0, &time_left, NULL);
 
-		if (hw->adminq.sq_last_status == ICE_AQ_RC_EEXIST) {
+		if (status == ICE_ERR_AQ_NO_WORK)
 			/* lock free, but no work to do */
-			status = ICE_ERR_AQ_NO_WORK;
 			break;
-		}
 
 		if (!status)
 			/* lock acquired */
diff --git a/drivers/net/ethernet/intel/ice/ice_common.h b/drivers/net/ethernet/intel/ice/ice_common.h
index 9a5519130af13..6455b6952ec8e 100644
--- a/drivers/net/ethernet/intel/ice/ice_common.h
+++ b/drivers/net/ethernet/intel/ice/ice_common.h
@@ -23,7 +23,7 @@ enum ice_status
 ice_get_link_status(struct ice_port_info *pi, bool *link_up);
 enum ice_status
 ice_acquire_res(struct ice_hw *hw, enum ice_aq_res_ids res,
-		enum ice_aq_res_access_type access);
+		enum ice_aq_res_access_type access, u32 timeout);
 void ice_release_res(struct ice_hw *hw, enum ice_aq_res_ids res);
 enum ice_status ice_init_nvm(struct ice_hw *hw);
 enum ice_status
diff --git a/drivers/net/ethernet/intel/ice/ice_nvm.c b/drivers/net/ethernet/intel/ice/ice_nvm.c
index 295a8cd87fc16..3274c543283c6 100644
--- a/drivers/net/ethernet/intel/ice/ice_nvm.c
+++ b/drivers/net/ethernet/intel/ice/ice_nvm.c
@@ -137,7 +137,7 @@ ice_acquire_nvm(struct ice_hw *hw, enum ice_aq_res_access_type access)
 	if (hw->nvm.blank_nvm_mode)
 		return 0;
 
-	return ice_acquire_res(hw, ICE_NVM_RES_ID, access);
+	return ice_acquire_res(hw, ICE_NVM_RES_ID, access, ICE_NVM_TIMEOUT);
 }
 
 /**
diff --git a/drivers/net/ethernet/intel/ice/ice_type.h b/drivers/net/ethernet/intel/ice/ice_type.h
index ba11b58988331..a509fe5f1e543 100644
--- a/drivers/net/ethernet/intel/ice/ice_type.h
+++ b/drivers/net/ethernet/intel/ice/ice_type.h
@@ -34,10 +34,15 @@ static inline bool ice_is_tc_ena(u8 bitmap, u8 tc)
 enum ice_aq_res_ids {
 	ICE_NVM_RES_ID = 1,
 	ICE_SPD_RES_ID,
-	ICE_GLOBAL_CFG_LOCK_RES_ID,
-	ICE_CHANGE_LOCK_RES_ID
+	ICE_CHANGE_LOCK_RES_ID,
+	ICE_GLOBAL_CFG_LOCK_RES_ID
 };
 
+/* FW update timeout definitions are in milliseconds */
+#define ICE_NVM_TIMEOUT			180000
+#define ICE_CHANGE_LOCK_TIMEOUT		1000
+#define ICE_GLOBAL_CFG_LOCK_TIMEOUT	3000
+
 enum ice_aq_res_access_type {
 	ICE_RES_READ = 1,
 	ICE_RES_WRITE
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 063/422] ice: Prevent control queue operations during reset
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (61 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 062/422] ice: Update request resource command to latest specification Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-20 21:48   ` Pavel Machek
  2019-11-19  5:14 ` [PATCH 4.19 064/422] gfs2: Dont set GFS2_RDF_UPTODATE when the lvb is updated Greg Kroah-Hartman
                   ` (362 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Anirudh Venkataramanan,
	Tony Brelinski, Jeff Kirsher, Sasha Levin

From: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>

[ Upstream commit fd2a981777d911b2e94cdec50779c85c58a0dec9 ]

Once reset is issued, the driver loses all control queue interfaces.
Exercising control queue operations during reset is incorrect and
may result in long timeouts.

This patch introduces a new field 'reset_ongoing' in the hw structure.
This is set to 1 by the core driver when it receives a reset interrupt.
ice_sq_send_cmd checks reset_ongoing before actually issuing the control
queue operation. If a reset is in progress, it returns a soft error code
(ICE_ERR_RESET_PENDING) to the caller. The caller may or may not have to
take any action based on this return. Once the driver knows that the
reset is done, it has to set reset_ongoing back to 0. This will allow
control queue operations to be posted to the hardware again.

This "bail out" logic was specifically added to ice_sq_send_cmd (which
is pretty low level function) so that we have one solution in one place
that applies to all types of control queues.

Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/intel/ice/ice_controlq.c |  3 ++
 drivers/net/ethernet/intel/ice/ice_main.c     | 34 ++++++++++++++++---
 drivers/net/ethernet/intel/ice/ice_status.h   |  1 +
 drivers/net/ethernet/intel/ice/ice_type.h     |  1 +
 4 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_controlq.c b/drivers/net/ethernet/intel/ice/ice_controlq.c
index e783976c401d8..89f18fe18fe36 100644
--- a/drivers/net/ethernet/intel/ice/ice_controlq.c
+++ b/drivers/net/ethernet/intel/ice/ice_controlq.c
@@ -814,6 +814,9 @@ ice_sq_send_cmd(struct ice_hw *hw, struct ice_ctl_q_info *cq,
 	u16 retval = 0;
 	u32 val = 0;
 
+	/* if reset is in progress return a soft error */
+	if (hw->reset_ongoing)
+		return ICE_ERR_RESET_ONGOING;
 	mutex_lock(&cq->sq_lock);
 
 	cq->sq_last_status = ICE_AQ_RC_OK;
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 875f97aba6e0d..e1f95e7a51393 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -535,10 +535,13 @@ static void ice_reset_subtask(struct ice_pf *pf)
 		ice_prepare_for_reset(pf);
 
 		/* make sure we are ready to rebuild */
-		if (ice_check_reset(&pf->hw))
+		if (ice_check_reset(&pf->hw)) {
 			set_bit(__ICE_RESET_FAILED, pf->state);
-		else
+		} else {
+			/* done with reset. start rebuild */
+			pf->hw.reset_ongoing = false;
 			ice_rebuild(pf);
+		}
 		clear_bit(__ICE_RESET_RECOVERY_PENDING, pf->state);
 		goto unlock;
 	}
@@ -1757,7 +1760,8 @@ static irqreturn_t ice_misc_intr(int __always_unused irq, void *data)
 		 * We also make note of which reset happened so that peer
 		 * devices/drivers can be informed.
 		 */
-		if (!test_bit(__ICE_RESET_RECOVERY_PENDING, pf->state)) {
+		if (!test_and_set_bit(__ICE_RESET_RECOVERY_PENDING,
+				      pf->state)) {
 			if (reset == ICE_RESET_CORER)
 				set_bit(__ICE_CORER_RECV, pf->state);
 			else if (reset == ICE_RESET_GLOBR)
@@ -1765,7 +1769,20 @@ static irqreturn_t ice_misc_intr(int __always_unused irq, void *data)
 			else
 				set_bit(__ICE_EMPR_RECV, pf->state);
 
-			set_bit(__ICE_RESET_RECOVERY_PENDING, pf->state);
+			/* There are couple of different bits at play here.
+			 * hw->reset_ongoing indicates whether the hardware is
+			 * in reset. This is set to true when a reset interrupt
+			 * is received and set back to false after the driver
+			 * has determined that the hardware is out of reset.
+			 *
+			 * __ICE_RESET_RECOVERY_PENDING in pf->state indicates
+			 * that a post reset rebuild is required before the
+			 * driver is operational again. This is set above.
+			 *
+			 * As this is the start of the reset/rebuild cycle, set
+			 * both to indicate that.
+			 */
+			hw->reset_ongoing = true;
 		}
 	}
 
@@ -4188,7 +4205,14 @@ static int ice_vsi_stop_tx_rings(struct ice_vsi *vsi)
 	}
 	status = ice_dis_vsi_txq(vsi->port_info, vsi->num_txq, q_ids, q_teids,
 				 NULL);
-	if (status) {
+	/* if the disable queue command was exercised during an active reset
+	 * flow, ICE_ERR_RESET_ONGOING is returned. This is not an error as
+	 * the reset operation disables queues at the hardware level anyway.
+	 */
+	if (status == ICE_ERR_RESET_ONGOING) {
+		dev_dbg(&pf->pdev->dev,
+			"Reset in progress. LAN Tx queues already disabled\n");
+	} else if (status) {
 		dev_err(&pf->pdev->dev,
 			"Failed to disable LAN Tx queues, error: %d\n",
 			status);
diff --git a/drivers/net/ethernet/intel/ice/ice_status.h b/drivers/net/ethernet/intel/ice/ice_status.h
index 9a95c4ffd7d79..d2dae913d81e0 100644
--- a/drivers/net/ethernet/intel/ice/ice_status.h
+++ b/drivers/net/ethernet/intel/ice/ice_status.h
@@ -20,6 +20,7 @@ enum ice_status {
 	ICE_ERR_ALREADY_EXISTS			= -14,
 	ICE_ERR_DOES_NOT_EXIST			= -15,
 	ICE_ERR_MAX_LIMIT			= -17,
+	ICE_ERR_RESET_ONGOING			= -18,
 	ICE_ERR_BUF_TOO_SHORT			= -52,
 	ICE_ERR_NVM_BLANK_MODE			= -53,
 	ICE_ERR_AQ_ERROR			= -100,
diff --git a/drivers/net/ethernet/intel/ice/ice_type.h b/drivers/net/ethernet/intel/ice/ice_type.h
index a509fe5f1e543..5ca9d684429d1 100644
--- a/drivers/net/ethernet/intel/ice/ice_type.h
+++ b/drivers/net/ethernet/intel/ice/ice_type.h
@@ -293,6 +293,7 @@ struct ice_hw {
 	u8 sw_entry_point_layer;
 
 	u8 evb_veb;		/* true for VEB, false for VEPA */
+	u8 reset_ongoing;	/* true if hw is in reset, false otherwise */
 	struct ice_bus_info bus;
 	struct ice_nvm_info nvm;
 	struct ice_hw_dev_caps dev_caps;	/* device capabilities */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 064/422] gfs2: Dont set GFS2_RDF_UPTODATE when the lvb is updated
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (62 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 063/422] ice: Prevent control queue operations during reset Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 065/422] ice: Fix and update driver version string Greg Kroah-Hartman
                   ` (361 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Bob Peterson, Sasha Levin

From: Bob Peterson <rpeterso@redhat.com>

[ Upstream commit 4f36cb36c9d14340bb200d2ad9117b03ce992cfe ]

The GFS2_RDF_UPTODATE flag in the rgrp is used to determine when
a rgrp buffer is valid. It's cleared when the glock is invalidated,
signifying that the buffer data is now invalid. But before this
patch, function update_rgrp_lvb was setting the flag when it
determined it had a valid lvb. But that's an invalid assumption:
just because you have a valid lvb doesn't mean you have valid
buffers. After all, another node may have made the lvb valid,
and this node just fetched it from the glock via dlm.

Consider this scenario:
1. The file system is mounted with RGRPLVB option.
2. In gfs2_inplace_reserve it locks the rgrp glock EX, but thanks
   to GL_SKIP, it skips the gfs2_rgrp_bh_get.
3. Since loops == 0 and the allocation target (ap->target) is
   bigger than the largest known chunk of blocks in the rgrp
   (rs->rs_rbm.rgd->rd_extfail_pt) it skips that rgrp and bypasses
   the call to gfs2_rgrp_bh_get there as well.
4. update_rgrp_lvb sees the lvb MAGIC number is valid, so bypasses
   gfs2_rgrp_bh_get, but it still sets sets GFS2_RDF_UPTODATE due
   to this invalid assumption.
5. The next time update_rgrp_lvb is called, it sees the bit is set
   and just returns 0, assuming both the lvb and rgrp are both
   uptodate. But since this is a smaller allocation, or space has
   been freed by another node, thus adjusting the lvb values,
   it decides to use the rgrp for allocations, with invalid rd_free
   due to the fact it was never updated.

This patch changes update_rgrp_lvb so it doesn't set the UPTODATE
flag anymore. That way, it has no choice but to fetch the latest
values.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/gfs2/rgrp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 449d0cb45a845..63e5387c84d26 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -1227,7 +1227,7 @@ static int update_rgrp_lvb(struct gfs2_rgrpd *rgd)
 	rl_flags = be32_to_cpu(rgd->rd_rgl->rl_flags);
 	rl_flags &= ~GFS2_RDF_MASK;
 	rgd->rd_flags &= GFS2_RDF_MASK;
-	rgd->rd_flags |= (rl_flags | GFS2_RDF_UPTODATE | GFS2_RDF_CHECK);
+	rgd->rd_flags |= (rl_flags | GFS2_RDF_CHECK);
 	if (rgd->rd_rgl->rl_unlinked == 0)
 		rgd->rd_flags &= ~GFS2_RDF_CHECK;
 	rgd->rd_free = be32_to_cpu(rgd->rd_rgl->rl_free);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 065/422] ice: Fix and update driver version string
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (63 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 064/422] gfs2: Dont set GFS2_RDF_UPTODATE when the lvb is updated Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-20 21:59   ` Pavel Machek
  2019-11-19  5:14 ` [PATCH 4.19 066/422] ASoC: dapm: Dont fail creating new DAPM control on NULL pinctrl Greg Kroah-Hartman
                   ` (360 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Anirudh Venkataramanan,
	Tony Brelinski, Jeff Kirsher, Sasha Levin

From: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>

[ Upstream commit 9ea47d81a7f17c6b77211ab75fbca2127719ad39 ]

Remove the "ice" prefix for the driver version string and bump version
to 0.7.1-k.

Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/intel/ice/ice_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index e1f95e7a51393..00c833cd2b3ae 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -7,7 +7,7 @@
 
 #include "ice.h"
 
-#define DRV_VERSION	"ice-0.7.0-k"
+#define DRV_VERSION	"0.7.1-k"
 #define DRV_SUMMARY	"Intel(R) Ethernet Connection E800 Series Linux Driver"
 const char ice_drv_ver[] = DRV_VERSION;
 static const char ice_driver_string[] = DRV_SUMMARY;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 066/422] ASoC: dapm: Dont fail creating new DAPM control on NULL pinctrl
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (64 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 065/422] ice: Fix and update driver version string Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 067/422] ASoC: dpcm: Properly initialise hw->rate_max Greg Kroah-Hartman
                   ` (359 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Charles Keepax, Mark Brown, Sasha Levin

From: Charles Keepax <ckeepax@opensource.cirrus.com>

[ Upstream commit a5cd7e9cf587f51a84b86c828b4e1c7b392f448e ]

devm_pinctrl_get will only return NULL in the case that pinctrl
is not built into the kernel and all the pinctrl functions used
by the DAPM core are appropriately stubbed for that case. There
is no need to error out of snd_soc_dapm_new_control_unlocked
if pinctrl isn't built into the kernel, so change the
IS_ERR_OR_NULL to just an IS_ERR.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/soc-dapm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 4ce57510b6236..ff31d9f9ecd64 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -3514,7 +3514,7 @@ snd_soc_dapm_new_control_unlocked(struct snd_soc_dapm_context *dapm,
 		break;
 	case snd_soc_dapm_pinctrl:
 		w->pinctrl = devm_pinctrl_get(dapm->dev);
-		if (IS_ERR_OR_NULL(w->pinctrl)) {
+		if (IS_ERR(w->pinctrl)) {
 			ret = PTR_ERR(w->pinctrl);
 			if (ret == -EPROBE_DEFER)
 				return ERR_PTR(ret);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 067/422] ASoC: dpcm: Properly initialise hw->rate_max
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (65 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 066/422] ASoC: dapm: Dont fail creating new DAPM control on NULL pinctrl Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 068/422] ASoC: meson: axg-fifo: report interrupt request failure Greg Kroah-Hartman
                   ` (358 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Charles Keepax, Mark Brown, Sasha Levin

From: Charles Keepax <ckeepax@opensource.cirrus.com>

[ Upstream commit e33ffbd9cd39da09831ce62c11025d830bf78d9e ]

If the CPU DAI does not initialise rate_max, say if using
using KNOT or CONTINUOUS, then the rate_max field will be
initialised to 0. A value of zero in the rate_max field of
the hardware runtime will cause the sound card to support no
sample rates at all. Obviously this is not desired, just a
different mechanism is being used to apply the constraints. As
such update the setting of rate_max in dpcm_init_runtime_hw
to be consistent with the non-DPCM cases and set rate_max to
UINT_MAX if nothing is defined on the CPU DAI.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/soc-pcm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
index 6566c8831a965..551bfc581fc12 100644
--- a/sound/soc/soc-pcm.c
+++ b/sound/soc/soc-pcm.c
@@ -1683,7 +1683,7 @@ static void dpcm_init_runtime_hw(struct snd_pcm_runtime *runtime,
 				 struct snd_soc_pcm_stream *stream)
 {
 	runtime->hw.rate_min = stream->rate_min;
-	runtime->hw.rate_max = stream->rate_max;
+	runtime->hw.rate_max = min_not_zero(stream->rate_max, UINT_MAX);
 	runtime->hw.channels_min = stream->channels_min;
 	runtime->hw.channels_max = stream->channels_max;
 	if (runtime->hw.formats)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 068/422] ASoC: meson: axg-fifo: report interrupt request failure
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (66 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 067/422] ASoC: dpcm: Properly initialise hw->rate_max Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-21 10:14   ` Pavel Machek
  2019-11-19  5:14 ` [PATCH 4.19 069/422] ASoC: AMD: Change MCLK to 48Mhz Greg Kroah-Hartman
                   ` (357 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jerome Brunet, Mark Brown, Sasha Levin

From: Jerome Brunet <jbrunet@baylibre.com>

[ Upstream commit dadfab7272b13ca441efdb9aa9117bc669680b05 ]

Return value of request_irq() was irgnored. Fix this and report
the failure if any

Fixes: 6dc4fa179fb8 ("ASoC: meson: add axg fifo base driver")
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/meson/axg-fifo.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sound/soc/meson/axg-fifo.c b/sound/soc/meson/axg-fifo.c
index 30262550e37b1..0e4f65e654c4b 100644
--- a/sound/soc/meson/axg-fifo.c
+++ b/sound/soc/meson/axg-fifo.c
@@ -203,6 +203,8 @@ static int axg_fifo_pcm_open(struct snd_pcm_substream *ss)
 
 	ret = request_irq(fifo->irq, axg_fifo_pcm_irq_block, 0,
 			  dev_name(dev), ss);
+	if (ret)
+		return ret;
 
 	/* Enable pclk to access registers and clock the fifo ip */
 	ret = clk_prepare_enable(fifo->pclk);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 069/422] ASoC: AMD: Change MCLK to 48Mhz
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (67 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 068/422] ASoC: meson: axg-fifo: report interrupt request failure Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 070/422] pinctrl: ingenic: Probe driver at subsys_initcall Greg Kroah-Hartman
                   ` (356 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Akshu Agrawal, Daniel Kurtz,
	Mark Brown, Sasha Levin

From: Akshu Agrawal <akshu.agrawal@amd.com>

[ Upstream commit a1b1e9880f0c2754a5ac416a546d9f295f72eabc ]

25Mhz MCLK which was earlier used was of spread type.
Thus, we were not getting accurate rate. The 48Mhz system
clk is of non-spread type and we are changing to it to get
accurate rate.

Signed-off-by: Akshu Agrawal <akshu.agrawal@amd.com>
Reviewed-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/amd/acp-da7219-max98357a.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/amd/acp-da7219-max98357a.c b/sound/soc/amd/acp-da7219-max98357a.c
index 8e3275a96a821..e53b54d77692e 100644
--- a/sound/soc/amd/acp-da7219-max98357a.c
+++ b/sound/soc/amd/acp-da7219-max98357a.c
@@ -42,7 +42,7 @@
 #include "../codecs/da7219.h"
 #include "../codecs/da7219-aad.h"
 
-#define CZ_PLAT_CLK 25000000
+#define CZ_PLAT_CLK 48000000
 #define DUAL_CHANNEL		2
 
 static struct snd_soc_jack cz_jack;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 070/422] pinctrl: ingenic: Probe driver at subsys_initcall
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (68 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 069/422] ASoC: AMD: Change MCLK to 48Mhz Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-21 10:17   ` Pavel Machek
  2019-11-19  5:14 ` [PATCH 4.19 071/422] MIPS: BCM47XX: Enable USB power on Netgear WNDR3400v3 Greg Kroah-Hartman
                   ` (355 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Paul Cercueil, Linus Walleij, Sasha Levin

From: Paul Cercueil <paul@crapouillou.net>

[ Upstream commit 556a36a71ed80e17ade49225b58513ea3c9e4558 ]

Using postcore_initcall() makes the driver try to initialize way too
early.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/pinctrl/pinctrl-ingenic.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/pinctrl/pinctrl-ingenic.c b/drivers/pinctrl/pinctrl-ingenic.c
index 628817c40e3bb..a5accffbc8c91 100644
--- a/drivers/pinctrl/pinctrl-ingenic.c
+++ b/drivers/pinctrl/pinctrl-ingenic.c
@@ -847,4 +847,4 @@ static int __init ingenic_pinctrl_drv_register(void)
 {
 	return platform_driver_register(&ingenic_pinctrl_driver);
 }
-postcore_initcall(ingenic_pinctrl_drv_register);
+subsys_initcall(ingenic_pinctrl_drv_register);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 071/422] MIPS: BCM47XX: Enable USB power on Netgear WNDR3400v3
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (69 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 070/422] pinctrl: ingenic: Probe driver at subsys_initcall Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 072/422] ARM: dts: exynos: Use i2c-gpio for HDMI-DDC on Arndale Greg Kroah-Hartman
                   ` (354 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Tuomas Tynkkynen, Hauke Mehrtens,
	Paul Burton, Rafał Miłecki, linux-mips, Sasha Levin

From: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>

[ Upstream commit feef7918667b84f9d5653c501542dd8d84ae32af ]

Setting GPIO 21 high seems to be required to enable power to USB ports
on the WNDR3400v3. As there is already similar code for WNR3500L,
make the existing USB power GPIO code generic and use that.

Signed-off-by: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Paul Burton <paul.burton@mips.com>
Patchwork: https://patchwork.linux-mips.org/patch/20259/
Cc: Rafał Miłecki <zajec5@gmail.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/mips/bcm47xx/workarounds.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/arch/mips/bcm47xx/workarounds.c b/arch/mips/bcm47xx/workarounds.c
index 1a8a07e7a5633..46eddbec8d9fd 100644
--- a/arch/mips/bcm47xx/workarounds.c
+++ b/arch/mips/bcm47xx/workarounds.c
@@ -5,9 +5,8 @@
 #include <bcm47xx_board.h>
 #include <bcm47xx.h>
 
-static void __init bcm47xx_workarounds_netgear_wnr3500l(void)
+static void __init bcm47xx_workarounds_enable_usb_power(int usb_power)
 {
-	const int usb_power = 12;
 	int err;
 
 	err = gpio_request_one(usb_power, GPIOF_OUT_INIT_HIGH, "usb_power");
@@ -23,7 +22,10 @@ void __init bcm47xx_workarounds(void)
 
 	switch (board) {
 	case BCM47XX_BOARD_NETGEAR_WNR3500L:
-		bcm47xx_workarounds_netgear_wnr3500l();
+		bcm47xx_workarounds_enable_usb_power(12);
+		break;
+	case BCM47XX_BOARD_NETGEAR_WNDR3400_V3:
+		bcm47xx_workarounds_enable_usb_power(21);
 		break;
 	default:
 		/* No workaround(s) needed */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 072/422] ARM: dts: exynos: Use i2c-gpio for HDMI-DDC on Arndale
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (70 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 071/422] MIPS: BCM47XX: Enable USB power on Netgear WNDR3400v3 Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 073/422] ARM: dts: exynos: Fix HDMI-HPD line handling " Greg Kroah-Hartman
                   ` (353 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andrzej Hajda, Krzysztof Kozlowski,
	Sasha Levin

From: Andrzej Hajda <a.hajda@samsung.com>

[ Upstream commit 620375c8fdf2f9f5110ed48d6c407cc4b7554f86 ]

HDMI-DDC for unknown reasons doesn't work with Exynos I2C controllers.
Fortunately i2c-gpio comes to the rescue.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/exynos5250-arndale.dts  | 28 ++++++++++++++++-------
 arch/arm/boot/dts/exynos5250-pinctrl.dtsi |  6 +++++
 2 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/arch/arm/boot/dts/exynos5250-arndale.dts b/arch/arm/boot/dts/exynos5250-arndale.dts
index 7a8a5c55701a8..bb3fcd652b5d7 100644
--- a/arch/arm/boot/dts/exynos5250-arndale.dts
+++ b/arch/arm/boot/dts/exynos5250-arndale.dts
@@ -150,7 +150,7 @@
 
 &hdmi {
 	status = "okay";
-	ddc = <&i2c_2>;
+	ddc = <&i2c_ddc>;
 	hpd-gpios = <&gpx3 7 GPIO_ACTIVE_LOW>;
 	vdd_osc-supply = <&ldo10_reg>;
 	vdd_pll-supply = <&ldo8_reg>;
@@ -452,13 +452,6 @@
 	};
 };
 
-&i2c_2 {
-	status = "okay";
-	/* used by HDMI DDC */
-	samsung,i2c-sda-delay = <100>;
-	samsung,i2c-max-bus-freq = <66000>;
-};
-
 &i2c_3 {
 	status = "okay";
 
@@ -547,3 +540,22 @@
 	status = "okay";
 	samsung,exynos-sataphy-i2c-phandle = <&sata_phy_i2c>;
 };
+
+&soc {
+	/*
+	 * For unknown reasons HDMI-DDC does not work with Exynos I2C
+	 * controllers. Lets use software I2C over GPIO pins as a workaround.
+	 */
+	i2c_ddc: i2c-gpio {
+		pinctrl-names = "default";
+		pinctrl-0 = <&i2c2_gpio_bus>;
+		status = "okay";
+		compatible = "i2c-gpio";
+		gpios = <&gpa0 6 0 /* sda */
+			 &gpa0 7 0 /* scl */
+			>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+	};
+};
diff --git a/arch/arm/boot/dts/exynos5250-pinctrl.dtsi b/arch/arm/boot/dts/exynos5250-pinctrl.dtsi
index 6ff6dea29d449..b25d520393b8b 100644
--- a/arch/arm/boot/dts/exynos5250-pinctrl.dtsi
+++ b/arch/arm/boot/dts/exynos5250-pinctrl.dtsi
@@ -225,6 +225,12 @@
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
 
+	i2c2_gpio_bus: i2c2-gpio-bus {
+		samsung,pins = "gpa0-6", "gpa0-7";
+		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	uart2_data: uart2-data {
 		samsung,pins = "gpa1-0", "gpa1-1";
 		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 073/422] ARM: dts: exynos: Fix HDMI-HPD line handling on Arndale
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (71 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 072/422] ARM: dts: exynos: Use i2c-gpio for HDMI-DDC on Arndale Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 074/422] ARM: dts: exynos: Fix sound in Snow-rev5 Chromebook Greg Kroah-Hartman
                   ` (352 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andrzej Hajda, Krzysztof Kozlowski,
	Sasha Levin

From: Andrzej Hajda <a.hajda@samsung.com>

[ Upstream commit 21cb5a27483a3cfdbcb7508a06a30c0a485e1211 ]

HDMI-HPD was set active low, moreover by default pincontrol chip sets
pull-down on the pin. As a result HDMI driver assumes TV is always
connected regardless of actual state.  The patch fixes it.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/exynos5250-arndale.dts  | 4 +++-
 arch/arm/boot/dts/exynos5250-pinctrl.dtsi | 5 +++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/exynos5250-arndale.dts b/arch/arm/boot/dts/exynos5250-arndale.dts
index bb3fcd652b5d7..9c8ab4b7fb2cf 100644
--- a/arch/arm/boot/dts/exynos5250-arndale.dts
+++ b/arch/arm/boot/dts/exynos5250-arndale.dts
@@ -149,9 +149,11 @@
 };
 
 &hdmi {
+	pinctrl-names = "default";
+	pinctrl-0 = <&hdmi_hpd>;
 	status = "okay";
 	ddc = <&i2c_ddc>;
-	hpd-gpios = <&gpx3 7 GPIO_ACTIVE_LOW>;
+	hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
 	vdd_osc-supply = <&ldo10_reg>;
 	vdd_pll-supply = <&ldo8_reg>;
 	vdd-supply = <&ldo8_reg>;
diff --git a/arch/arm/boot/dts/exynos5250-pinctrl.dtsi b/arch/arm/boot/dts/exynos5250-pinctrl.dtsi
index b25d520393b8b..d31a68672bfac 100644
--- a/arch/arm/boot/dts/exynos5250-pinctrl.dtsi
+++ b/arch/arm/boot/dts/exynos5250-pinctrl.dtsi
@@ -599,6 +599,11 @@
 		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
+
+	hdmi_hpd: hdmi-hpd {
+		samsung,pins = "gpx3-7";
+		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+	};
 };
 
 &pinctrl_1 {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 074/422] ARM: dts: exynos: Fix sound in Snow-rev5 Chromebook
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (72 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 073/422] ARM: dts: exynos: Fix HDMI-HPD line handling " Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 075/422] liquidio: fix race condition in instruction completion processing Greg Kroah-Hartman
                   ` (351 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Marek Szyprowski,
	Krzysztof Kozlowski, Sasha Levin

From: Marek Szyprowski <m.szyprowski@samsung.com>

[ Upstream commit 64858773d78e820003a94e5a7179d368213655d6 ]

This patch adds missing properties to the CODEC and sound nodes, so the
audio will work also on Snow rev5 Chromebook. This patch is an extension
to the commit e9eefc3f8ce0 ("ARM: dts: exynos: Add missing clock and
DAI properties to the max98095 node in Snow Chromebook")
and commit 6ab569936d60 ("ARM: dts: exynos: Enable HDMI audio on Snow
Chromebook").  It has been reported that such changes work fine on the
rev5 board too.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
[krzk: Fixed typo in phandle to &max98090]
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/exynos5250-snow-rev5.dts | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/arch/arm/boot/dts/exynos5250-snow-rev5.dts b/arch/arm/boot/dts/exynos5250-snow-rev5.dts
index 0348b1c49a691..7cbfc6f1f4b8f 100644
--- a/arch/arm/boot/dts/exynos5250-snow-rev5.dts
+++ b/arch/arm/boot/dts/exynos5250-snow-rev5.dts
@@ -20,6 +20,14 @@
 
 		samsung,model = "Snow-I2S-MAX98090";
 		samsung,audio-codec = <&max98090>;
+
+		cpu {
+			sound-dai = <&i2s0 0>;
+		};
+
+		codec {
+			sound-dai = <&max98090 0>, <&hdmi>;
+		};
 	};
 };
 
@@ -31,6 +39,9 @@
 		interrupt-parent = <&gpx0>;
 		pinctrl-names = "default";
 		pinctrl-0 = <&max98090_irq>;
+		clocks = <&pmu_system_controller 0>;
+		clock-names = "mclk";
+		#sound-dai-cells = <1>;
 	};
 };
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 075/422] liquidio: fix race condition in instruction completion processing
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (73 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 074/422] ARM: dts: exynos: Fix sound in Snow-rev5 Chromebook Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 076/422] arm64: dts: stratix10: i2c clock running out of spec Greg Kroah-Hartman
                   ` (350 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Rick Farrington, Felix Manlunas,
	David S. Miller, Sasha Levin

From: Rick Farrington <ricardo.farrington@cavium.com>

[ Upstream commit b943f17e06493fd2c7fd00743093ad5dcdb90e7f ]

In lio_enable_irq, the pkt_in_done count register was being cleared to
zero.  However, there could be some completed instructions which were not
yet processed due to budget and limit constraints.
So, only write this register with the number of actual completions
that were processed.

Signed-off-by: Rick Farrington <ricardo.farrington@cavium.com>
Signed-off-by: Felix Manlunas <felix.manlunas@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/cavium/liquidio/octeon_device.c   | 5 +++--
 drivers/net/ethernet/cavium/liquidio/octeon_iq.h       | 2 ++
 drivers/net/ethernet/cavium/liquidio/request_manager.c | 2 ++
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_device.c b/drivers/net/ethernet/cavium/liquidio/octeon_device.c
index f878a552fef3b..d0ed6c4f9e1a2 100644
--- a/drivers/net/ethernet/cavium/liquidio/octeon_device.c
+++ b/drivers/net/ethernet/cavium/liquidio/octeon_device.c
@@ -1450,8 +1450,9 @@ void lio_enable_irq(struct octeon_droq *droq, struct octeon_instr_queue *iq)
 	}
 	if (iq) {
 		spin_lock_bh(&iq->lock);
-		writel(iq->pkt_in_done, iq->inst_cnt_reg);
-		iq->pkt_in_done = 0;
+		writel(iq->pkts_processed, iq->inst_cnt_reg);
+		iq->pkt_in_done -= iq->pkts_processed;
+		iq->pkts_processed = 0;
 		/* this write needs to be flushed before we release the lock */
 		mmiowb();
 		spin_unlock_bh(&iq->lock);
diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_iq.h b/drivers/net/ethernet/cavium/liquidio/octeon_iq.h
index 2327062e8af6b..aecd0d36d6349 100644
--- a/drivers/net/ethernet/cavium/liquidio/octeon_iq.h
+++ b/drivers/net/ethernet/cavium/liquidio/octeon_iq.h
@@ -94,6 +94,8 @@ struct octeon_instr_queue {
 
 	u32 pkt_in_done;
 
+	u32 pkts_processed;
+
 	/** A spinlock to protect access to the input ring.*/
 	spinlock_t iq_flush_running_lock;
 
diff --git a/drivers/net/ethernet/cavium/liquidio/request_manager.c b/drivers/net/ethernet/cavium/liquidio/request_manager.c
index 3deb3c07681fd..1d9ab7f4a2fef 100644
--- a/drivers/net/ethernet/cavium/liquidio/request_manager.c
+++ b/drivers/net/ethernet/cavium/liquidio/request_manager.c
@@ -123,6 +123,7 @@ int octeon_init_instr_queue(struct octeon_device *oct,
 	iq->do_auto_flush = 1;
 	iq->db_timeout = (u32)conf->db_timeout;
 	atomic_set(&iq->instr_pending, 0);
+	iq->pkts_processed = 0;
 
 	/* Initialize the spinlock for this instruction queue */
 	spin_lock_init(&iq->lock);
@@ -497,6 +498,7 @@ octeon_flush_iq(struct octeon_device *oct, struct octeon_instr_queue *iq,
 				lio_process_iq_request_list(oct, iq, 0);
 
 		if (inst_processed) {
+			iq->pkts_processed += inst_processed;
 			atomic_sub(inst_processed, &iq->instr_pending);
 			iq->stats.instr_processed += inst_processed;
 		}
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 076/422] arm64: dts: stratix10: i2c clock running out of spec
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (74 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 075/422] liquidio: fix race condition in instruction completion processing Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 077/422] ARM: dts: exynos: Fix regulators configuration on Peach Pi/Pit Chromebooks Greg Kroah-Hartman
                   ` (349 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Alan Tull, Dinh Nguyen, Sasha Levin

From: Alan Tull <atull@kernel.org>

[ Upstream commit c8da1d15b8a4957f105ad77bb1404d72e304566f ]

DesignWare I2C controller was observed running at 105.93kHz rather
than the specified 100kHz.  Adjust device tree settings to bring it
within spec (a slightly conservative 98 MHz).

Signed-off-by: Alan Tull <atull@kernel.org>
Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts b/arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts
index 7c661753bfaf4..faa017d4cd56b 100644
--- a/arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts
+++ b/arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts
@@ -124,6 +124,8 @@
 &i2c1 {
 	status = "okay";
 	clock-frequency = <100000>;
+	i2c-sda-falling-time-ns = <890>;  /* hcnt */
+	i2c-sdl-falling-time-ns = <890>;  /* lcnt */
 
 	adc@14 {
 		compatible = "lltc,ltc2497";
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 077/422] ARM: dts: exynos: Fix regulators configuration on Peach Pi/Pit Chromebooks
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (75 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 076/422] arm64: dts: stratix10: i2c clock running out of spec Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 078/422] i40evf: Validate the number of queues a PF sends Greg Kroah-Hartman
                   ` (348 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Marek Szyprowski, Tomasz Figa,
	Krzysztof Kozlowski, Sasha Levin

From: Marek Szyprowski <m.szyprowski@samsung.com>

[ Upstream commit f8f3b7fc21b1cb59385b780acd9b9a26d04cb7b2 ]

Regulators, which are marked as 'on-in-suspend' seems to be critical for
board operation, thus they must not be disabled anytime. This can be
only assured by marking them as 'always-on', because otherwise some
actions of their clients might result in turning them off. This patch
restores suspend/resume operation on Peach-Pit Chromebook board. It
partially reverts 'always-on' property removal done by the commit
mentioned in the Fixes tag.

Fixes: 665c441eea3d ("ARM: dts: exynos: Remove unneded always-on for regulators on Peach boards")
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Tested-by: Tomasz Figa <tfiga@chromium.org>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/exynos5420-peach-pit.dts | 3 +++
 arch/arm/boot/dts/exynos5800-peach-pi.dts  | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/arch/arm/boot/dts/exynos5420-peach-pit.dts b/arch/arm/boot/dts/exynos5420-peach-pit.dts
index 25bdc9d97a4df..769d60d6c9006 100644
--- a/arch/arm/boot/dts/exynos5420-peach-pit.dts
+++ b/arch/arm/boot/dts/exynos5420-peach-pit.dts
@@ -312,6 +312,7 @@
 				regulator-name = "vdd_1v35";
 				regulator-min-microvolt = <1350000>;
 				regulator-max-microvolt = <1350000>;
+				regulator-always-on;
 				regulator-boot-on;
 				regulator-state-mem {
 					regulator-on-in-suspend;
@@ -333,6 +334,7 @@
 				regulator-name = "vdd_2v";
 				regulator-min-microvolt = <2000000>;
 				regulator-max-microvolt = <2000000>;
+				regulator-always-on;
 				regulator-boot-on;
 				regulator-state-mem {
 					regulator-on-in-suspend;
@@ -343,6 +345,7 @@
 				regulator-name = "vdd_1v8";
 				regulator-min-microvolt = <1800000>;
 				regulator-max-microvolt = <1800000>;
+				regulator-always-on;
 				regulator-boot-on;
 				regulator-state-mem {
 					regulator-on-in-suspend;
diff --git a/arch/arm/boot/dts/exynos5800-peach-pi.dts b/arch/arm/boot/dts/exynos5800-peach-pi.dts
index 7989631b39ccf..492e2cd2e559e 100644
--- a/arch/arm/boot/dts/exynos5800-peach-pi.dts
+++ b/arch/arm/boot/dts/exynos5800-peach-pi.dts
@@ -312,6 +312,7 @@
 				regulator-name = "vdd_1v35";
 				regulator-min-microvolt = <1350000>;
 				regulator-max-microvolt = <1350000>;
+				regulator-always-on;
 				regulator-boot-on;
 				regulator-state-mem {
 					regulator-on-in-suspend;
@@ -333,6 +334,7 @@
 				regulator-name = "vdd_2v";
 				regulator-min-microvolt = <2000000>;
 				regulator-max-microvolt = <2000000>;
+				regulator-always-on;
 				regulator-boot-on;
 				regulator-state-mem {
 					regulator-on-in-suspend;
@@ -343,6 +345,7 @@
 				regulator-name = "vdd_1v8";
 				regulator-min-microvolt = <1800000>;
 				regulator-max-microvolt = <1800000>;
+				regulator-always-on;
 				regulator-boot-on;
 				regulator-state-mem {
 					regulator-on-in-suspend;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 078/422] i40evf: Validate the number of queues a PF sends
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (76 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 077/422] ARM: dts: exynos: Fix regulators configuration on Peach Pi/Pit Chromebooks Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 079/422] i40e: use correct length for strncpy Greg Kroah-Hartman
                   ` (347 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Paul M Stillwell Jr, Andrew Bowers,
	Jeff Kirsher, Sasha Levin

From: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>

[ Upstream commit 3c818910911c93bb5099c6637ec350f90c0e71fc ]

A PF can send any number of queues to the VF and the VF may not
be able to support that many. Check to see that the number of
queues is less than or equal to the max number of queues the
VF can have.

Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../ethernet/intel/i40evf/i40evf_virtchnl.c   | 32 +++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c b/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c
index 565677de5ba37..94dabc9d89f73 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c
@@ -153,6 +153,32 @@ int i40evf_send_vf_config_msg(struct i40evf_adapter *adapter)
 					  NULL, 0);
 }
 
+/**
+ * i40evf_validate_num_queues
+ * @adapter: adapter structure
+ *
+ * Validate that the number of queues the PF has sent in
+ * VIRTCHNL_OP_GET_VF_RESOURCES is not larger than the VF can handle.
+ **/
+static void i40evf_validate_num_queues(struct i40evf_adapter *adapter)
+{
+	if (adapter->vf_res->num_queue_pairs > I40EVF_MAX_REQ_QUEUES) {
+		struct virtchnl_vsi_resource *vsi_res;
+		int i;
+
+		dev_info(&adapter->pdev->dev, "Received %d queues, but can only have a max of %d\n",
+			 adapter->vf_res->num_queue_pairs,
+			 I40EVF_MAX_REQ_QUEUES);
+		dev_info(&adapter->pdev->dev, "Fixing by reducing queues to %d\n",
+			 I40EVF_MAX_REQ_QUEUES);
+		adapter->vf_res->num_queue_pairs = I40EVF_MAX_REQ_QUEUES;
+		for (i = 0; i < adapter->vf_res->num_vsis; i++) {
+			vsi_res = &adapter->vf_res->vsi_res[i];
+			vsi_res->num_queue_pairs = I40EVF_MAX_REQ_QUEUES;
+		}
+	}
+}
+
 /**
  * i40evf_get_vf_config
  * @adapter: private adapter structure
@@ -195,6 +221,11 @@ int i40evf_get_vf_config(struct i40evf_adapter *adapter)
 	err = (i40e_status)le32_to_cpu(event.desc.cookie_low);
 	memcpy(adapter->vf_res, event.msg_buf, min(event.msg_len, len));
 
+	/* some PFs send more queues than we should have so validate that
+	 * we aren't getting too many queues
+	 */
+	if (!err)
+		i40evf_validate_num_queues(adapter);
 	i40e_vf_parse_hw_config(hw, adapter->vf_res);
 out_alloc:
 	kfree(event.msg_buf);
@@ -1329,6 +1360,7 @@ void i40evf_virtchnl_completion(struct i40evf_adapter *adapter,
 			  I40E_MAX_VF_VSI *
 			  sizeof(struct virtchnl_vsi_resource);
 		memcpy(adapter->vf_res, msg, min(msglen, len));
+		i40evf_validate_num_queues(adapter);
 		i40e_vf_parse_hw_config(&adapter->hw, adapter->vf_res);
 		/* restore current mac address */
 		ether_addr_copy(adapter->hw.mac.addr, netdev->dev_addr);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 079/422] i40e: use correct length for strncpy
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (77 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 078/422] i40evf: Validate the number of queues a PF sends Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-21 10:35   ` Pavel Machek
  2019-11-19  5:14 ` [PATCH 4.19 080/422] i40evf: set IFF_UNICAST_FLT flag for the VF Greg Kroah-Hartman
                   ` (346 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Mitch Williams, Andrew Bowers,
	Jeff Kirsher, Sasha Levin

From: Mitch Williams <mitch.a.williams@intel.com>

[ Upstream commit 7eb74ff891b4e94b8bac48f648a21e4b94ddee64 ]

Caught by GCC 8. When we provide a length for strncpy, we should not
include the terminating null. So we must tell it one less than the size
of the destination buffer.

Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/intel/i40e/i40e_ptp.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_ptp.c b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
index 35f2866b38c6b..1199f0502d6d5 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ptp.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
@@ -694,7 +694,8 @@ static long i40e_ptp_create_clock(struct i40e_pf *pf)
 	if (!IS_ERR_OR_NULL(pf->ptp_clock))
 		return 0;
 
-	strncpy(pf->ptp_caps.name, i40e_driver_name, sizeof(pf->ptp_caps.name));
+	strncpy(pf->ptp_caps.name, i40e_driver_name,
+		sizeof(pf->ptp_caps.name) - 1);
 	pf->ptp_caps.owner = THIS_MODULE;
 	pf->ptp_caps.max_adj = 999999999;
 	pf->ptp_caps.n_ext_ts = 0;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 080/422] i40evf: set IFF_UNICAST_FLT flag for the VF
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (78 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 079/422] i40e: use correct length for strncpy Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 081/422] i40e: Check and correct speed values for link on open Greg Kroah-Hartman
                   ` (345 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Lihong Yang, Andrew Bowers,
	Jeff Kirsher, Sasha Levin

From: Lihong Yang <lihong.yang@intel.com>

[ Upstream commit e65aae086330d0a6c6c9f874aef03c69cf98884b ]

Set IFF_UNICAST_FLT flag for the VF to prevent it from entering
promiscuous mode when macvlan is added to the VF.

Signed-off-by: Lihong Yang <lihong.yang@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index fef6d892ed4cf..bc4fa9df6da3e 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -3332,6 +3332,8 @@ int i40evf_process_config(struct i40evf_adapter *adapter)
 	if (vfres->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_VLAN)
 		netdev->features |= NETIF_F_HW_VLAN_CTAG_FILTER;
 
+	netdev->priv_flags |= IFF_UNICAST_FLT;
+
 	/* Do not turn on offloads when they are requested to be turned off.
 	 * TSO needs minimum 576 bytes to work correctly.
 	 */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 081/422] i40e: Check and correct speed values for link on open
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (79 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 080/422] i40evf: set IFF_UNICAST_FLT flag for the VF Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 082/422] i40evf: Dont enable vlan stripping when rx offload is turned on Greg Kroah-Hartman
                   ` (344 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jan Sokolowski, Andrew Bowers,
	Jeff Kirsher, Sasha Levin

From: Jan Sokolowski <jan.sokolowski@intel.com>

[ Upstream commit e78d9a39fd06109022d11c8ca444cfcec2abb290 ]

If our card has been put in an unstable state due to
other drivers interacting with it, speed settings
might be incorrect. If incorrect, forcefully reset them
on open to known default values.

Signed-off-by: Jan Sokolowski <jan.sokolowski@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/intel/i40e/i40e_main.c | 27 ++++++++++++++++++---
 1 file changed, 24 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 055562c930fb0..1577dbaab7425 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -6587,6 +6587,24 @@ static i40e_status i40e_force_link_state(struct i40e_pf *pf, bool is_up)
 	struct i40e_hw *hw = &pf->hw;
 	i40e_status err;
 	u64 mask;
+	u8 speed;
+
+	/* Card might've been put in an unstable state by other drivers
+	 * and applications, which causes incorrect speed values being
+	 * set on startup. In order to clear speed registers, we call
+	 * get_phy_capabilities twice, once to get initial state of
+	 * available speeds, and once to get current PHY config.
+	 */
+	err = i40e_aq_get_phy_capabilities(hw, false, true, &abilities,
+					   NULL);
+	if (err) {
+		dev_err(&pf->pdev->dev,
+			"failed to get phy cap., ret =  %s last_status =  %s\n",
+			i40e_stat_str(hw, err),
+			i40e_aq_str(hw, hw->aq.asq_last_status));
+		return err;
+	}
+	speed = abilities.link_speed;
 
 	/* Get the current phy config */
 	err = i40e_aq_get_phy_capabilities(hw, false, false, &abilities,
@@ -6600,9 +6618,9 @@ static i40e_status i40e_force_link_state(struct i40e_pf *pf, bool is_up)
 	}
 
 	/* If link needs to go up, but was not forced to go down,
-	 * no need for a flap
+	 * and its speed values are OK, no need for a flap
 	 */
-	if (is_up && abilities.phy_type != 0)
+	if (is_up && abilities.phy_type != 0 && abilities.link_speed != 0)
 		return I40E_SUCCESS;
 
 	/* To force link we need to set bits for all supported PHY types,
@@ -6614,7 +6632,10 @@ static i40e_status i40e_force_link_state(struct i40e_pf *pf, bool is_up)
 	config.phy_type_ext = is_up ? (u8)((mask >> 32) & 0xff) : 0;
 	/* Copy the old settings, except of phy_type */
 	config.abilities = abilities.abilities;
-	config.link_speed = abilities.link_speed;
+	if (abilities.link_speed != 0)
+		config.link_speed = abilities.link_speed;
+	else
+		config.link_speed = speed;
 	config.eee_capability = abilities.eee_capability;
 	config.eeer = abilities.eeer_val;
 	config.low_power_ctrl = abilities.d3_lpan;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 082/422] i40evf: Dont enable vlan stripping when rx offload is turned on
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (80 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 081/422] i40e: Check and correct speed values for link on open Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 083/422] i40e: hold the rtnl lock on clearing interrupt scheme Greg Kroah-Hartman
                   ` (343 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Patryk Małek, Andrew Bowers,
	Jeff Kirsher, Sasha Levin

From: Patryk Małek <patryk.malek@intel.com>

[ Upstream commit 3bd77e2ae1477d6f87fc3f542c737119d5decf9f ]

With current implementation of i40evf_set_features when user sets
any offload via ethtool we set I40EVF_FLAG_AQ_ENABLE_VLAN_STRIPPING
as a required aq which triggers driver to call
i40evf_enable_vlan_stripping. This shouldn't take place.
This patches fixes it by setting the flag only when VLAN offload
is turned on.

Signed-off-by: Patryk Małek <patryk.malek@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index bc4fa9df6da3e..3fc46d2adc087 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -3097,18 +3097,19 @@ static int i40evf_set_features(struct net_device *netdev,
 {
 	struct i40evf_adapter *adapter = netdev_priv(netdev);
 
-	/* Don't allow changing VLAN_RX flag when VLAN is set for VF
-	 * and return an error in this case
+	/* Don't allow changing VLAN_RX flag when adapter is not capable
+	 * of VLAN offload
 	 */
-	if (VLAN_ALLOWED(adapter)) {
+	if (!VLAN_ALLOWED(adapter)) {
+		if ((netdev->features ^ features) & NETIF_F_HW_VLAN_CTAG_RX)
+			return -EINVAL;
+	} else if ((netdev->features ^ features) & NETIF_F_HW_VLAN_CTAG_RX) {
 		if (features & NETIF_F_HW_VLAN_CTAG_RX)
 			adapter->aq_required |=
 				I40EVF_FLAG_AQ_ENABLE_VLAN_STRIPPING;
 		else
 			adapter->aq_required |=
 				I40EVF_FLAG_AQ_DISABLE_VLAN_STRIPPING;
-	} else if ((netdev->features ^ features) & NETIF_F_HW_VLAN_CTAG_RX) {
-		return -EINVAL;
 	}
 
 	return 0;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 083/422] i40e: hold the rtnl lock on clearing interrupt scheme
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (81 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 082/422] i40evf: Dont enable vlan stripping when rx offload is turned on Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 084/422] i40evf: cancel workqueue sync for adminq when a VF is removed Greg Kroah-Hartman
                   ` (342 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Patryk Małek, Andrew Bowers,
	Jeff Kirsher, Sasha Levin

From: Patryk Małek <patryk.malek@intel.com>

[ Upstream commit 5cba17b14182696d6bb0ec83a1d087933f252241 ]

Hold the rtnl lock when we're clearing interrupt scheme
in i40e_shutdown and in i40e_remove.

Signed-off-by: Patryk Małek <patryk.malek@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/intel/i40e/i40e_main.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 1577dbaab7425..1a66373184d62 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -14208,6 +14208,7 @@ static void i40e_remove(struct pci_dev *pdev)
 	mutex_destroy(&hw->aq.asq_mutex);
 
 	/* Clear all dynamic memory lists of rings, q_vectors, and VSIs */
+	rtnl_lock();
 	i40e_clear_interrupt_scheme(pf);
 	for (i = 0; i < pf->num_alloc_vsi; i++) {
 		if (pf->vsi[i]) {
@@ -14216,6 +14217,7 @@ static void i40e_remove(struct pci_dev *pdev)
 			pf->vsi[i] = NULL;
 		}
 	}
+	rtnl_unlock();
 
 	for (i = 0; i < I40E_MAX_VEB; i++) {
 		kfree(pf->veb[i]);
@@ -14427,7 +14429,13 @@ static void i40e_shutdown(struct pci_dev *pdev)
 	wr32(hw, I40E_PFPM_WUFC,
 	     (pf->wol_en ? I40E_PFPM_WUFC_MAG_MASK : 0));
 
+	/* Since we're going to destroy queues during the
+	 * i40e_clear_interrupt_scheme() we should hold the RTNL lock for this
+	 * whole section
+	 */
+	rtnl_lock();
 	i40e_clear_interrupt_scheme(pf);
+	rtnl_unlock();
 
 	if (system_state == SYSTEM_POWER_OFF) {
 		pci_wake_from_d3(pdev, pf->wol_en);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 084/422] i40evf: cancel workqueue sync for adminq when a VF is removed
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (82 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 083/422] i40e: hold the rtnl lock on clearing interrupt scheme Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 085/422] i40e: Prevent deleting MAC address from VF when set by PF Greg Kroah-Hartman
                   ` (341 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Lihong Yang, Andrew Bowers,
	Jeff Kirsher, Sasha Levin

From: Lihong Yang <lihong.yang@intel.com>

[ Upstream commit babbcc60040abfb7a9e3caa1c58fe182ae73762a ]

If a VF is being removed, there is no need to continue with the
workqueue sync for the adminq task, thus cancel it. Without this call,
when VFs are created and removed right away, there might be a chance for
the driver to crash with events stuck in the adminq.

Signed-off-by: Lihong Yang <lihong.yang@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index 3fc46d2adc087..f50c19b833686 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -3884,6 +3884,8 @@ static void i40evf_remove(struct pci_dev *pdev)
 	if (adapter->watchdog_timer.function)
 		del_timer_sync(&adapter->watchdog_timer);
 
+	cancel_work_sync(&adapter->adminq_task);
+
 	i40evf_free_rss(adapter);
 
 	if (hw->aq.asq.count)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 085/422] i40e: Prevent deleting MAC address from VF when set by PF
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (83 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 084/422] i40evf: cancel workqueue sync for adminq when a VF is removed Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 086/422] IB/rxe: avoid back-to-back retries Greg Kroah-Hartman
                   ` (340 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Patryk Małek, Andrew Bowers,
	Jeff Kirsher, Sasha Levin

From: Patryk Małek <patryk.malek@intel.com>

[ Upstream commit 5907cf6c5bbe78be2ed18b875b316c6028b20634 ]

To prevent VF from deleting MAC address that was assigned by the
PF we need to check for that scenario when we try to delete a MAC
address from a VF.

Signed-off-by: Patryk Małek <patryk.malek@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index d86f3fa7aa6a4..46a71d289bca2 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -2571,6 +2571,16 @@ static int i40e_vc_del_mac_addr_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
 			ret = I40E_ERR_INVALID_MAC_ADDR;
 			goto error_param;
 		}
+
+		if (vf->pf_set_mac &&
+		    ether_addr_equal(al->list[i].addr,
+				     vf->default_lan_addr.addr)) {
+			dev_err(&pf->pdev->dev,
+				"MAC addr %pM has been set by PF, cannot delete it for VF %d, reset VF to change MAC addr\n",
+				vf->default_lan_addr.addr, vf->vf_id);
+			ret = I40E_ERR_PARAM;
+			goto error_param;
+		}
 	}
 	vsi = pf->vsi[vf->lan_vsi_idx];
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 086/422] IB/rxe: avoid back-to-back retries
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (84 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 085/422] i40e: Prevent deleting MAC address from VF when set by PF Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 087/422] IB/rxe: fixes for rdma read retry Greg Kroah-Hartman
                   ` (339 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Vijay Immanuel, Doug Ledford, Sasha Levin

From: Vijay Immanuel <vijayi@attalasystems.com>

[ Upstream commit 4e4c53df567714b3d08b2b5d8ccb1d175fc9be01 ]

Error retries can occur due to timeouts, NAKs or receiving
packets beyond the current read request. Avoid back-to-back
retries due to packet processing, by only retrying the initial
attempt immediately. Subsequent retries must be due to timeouts.

Continue to process completion packets after scheduling a retry.

Signed-off-by: Vijay Immanuel <vijayi@attalasystems.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/sw/rxe/rxe_comp.c  | 18 +++++++++++++++++-
 drivers/infiniband/sw/rxe/rxe_verbs.h |  1 +
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/drivers/infiniband/sw/rxe/rxe_comp.c b/drivers/infiniband/sw/rxe/rxe_comp.c
index 83311dd07019b..ed96441595d81 100644
--- a/drivers/infiniband/sw/rxe/rxe_comp.c
+++ b/drivers/infiniband/sw/rxe/rxe_comp.c
@@ -191,6 +191,7 @@ static inline void reset_retry_counters(struct rxe_qp *qp)
 {
 	qp->comp.retry_cnt = qp->attr.retry_cnt;
 	qp->comp.rnr_retry = qp->attr.rnr_retry;
+	qp->comp.started_retry = 0;
 }
 
 static inline enum comp_state check_psn(struct rxe_qp *qp,
@@ -676,6 +677,20 @@ int rxe_completer(void *arg)
 				goto exit;
 			}
 
+			/* if we've started a retry, don't start another
+			 * retry sequence, unless this is a timeout.
+			 */
+			if (qp->comp.started_retry &&
+			    !qp->comp.timeout_retry) {
+				if (pkt) {
+					rxe_drop_ref(pkt->qp);
+					kfree_skb(skb);
+					skb = NULL;
+				}
+
+				goto done;
+			}
+
 			if (qp->comp.retry_cnt > 0) {
 				if (qp->comp.retry_cnt != 7)
 					qp->comp.retry_cnt--;
@@ -692,6 +707,7 @@ int rxe_completer(void *arg)
 					rxe_counter_inc(rxe,
 							RXE_CNT_COMP_RETRY);
 					qp->req.need_retry = 1;
+					qp->comp.started_retry = 1;
 					rxe_run_task(&qp->req.task, 1);
 				}
 
@@ -701,7 +717,7 @@ int rxe_completer(void *arg)
 					skb = NULL;
 				}
 
-				goto exit;
+				goto done;
 
 			} else {
 				rxe_counter_inc(rxe, RXE_CNT_RETRY_EXCEEDED);
diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h b/drivers/infiniband/sw/rxe/rxe_verbs.h
index 3b731c7682e5b..a0ec28d2b71a4 100644
--- a/drivers/infiniband/sw/rxe/rxe_verbs.h
+++ b/drivers/infiniband/sw/rxe/rxe_verbs.h
@@ -158,6 +158,7 @@ struct rxe_comp_info {
 	int			opcode;
 	int			timeout;
 	int			timeout_retry;
+	int			started_retry;
 	u32			retry_cnt;
 	u32			rnr_retry;
 	struct rxe_task		task;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 087/422] IB/rxe: fixes for rdma read retry
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (85 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 086/422] IB/rxe: avoid back-to-back retries Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 088/422] iwlwifi: drop packets with bad status in CD Greg Kroah-Hartman
                   ` (338 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Vijay Immanuel, Doug Ledford, Sasha Levin

From: Vijay Immanuel <vijayi@attalasystems.com>

[ Upstream commit 030e46e495af855a13964a0aab9753ea82a96edc ]

When a read request is retried for the remaining partial
data, the response may restart from read response first
or read response only. So support those cases.

Do not advance the comp psn beyond the current wqe's last_psn
as that could skip over an entire read wqe and will cause the
req_retry() logic to set an incorrect req psn.
An example sequence is as follows:
Write        PSN 40 -- this is the current WQE.
Read request PSN 41
Write        PSN 42
Receive ACK  PSN 42 -- this will complete the current WQE
for PSN 40, and set the comp psn to 42 which is a problem
because the read request at PSN 41 has been skipped over.
So when req_retry() tries to retransmit the read request,
it sets the req psn to 42 which is incorrect.

When retrying a read request, calculate the number of psns
completed based on the dma resid instead of the wqe first_psn.
The wqe first_psn could have moved if the read request was
retried multiple times.

Set the reth length to the dma resid to handle read retries for
the remaining partial data.

Signed-off-by: Vijay Immanuel <vijayi@attalasystems.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/sw/rxe/rxe_comp.c | 21 ++++++++++++++++-----
 drivers/infiniband/sw/rxe/rxe_req.c  | 15 +++++++++------
 2 files changed, 25 insertions(+), 11 deletions(-)

diff --git a/drivers/infiniband/sw/rxe/rxe_comp.c b/drivers/infiniband/sw/rxe/rxe_comp.c
index ed96441595d81..ea089cb091ade 100644
--- a/drivers/infiniband/sw/rxe/rxe_comp.c
+++ b/drivers/infiniband/sw/rxe/rxe_comp.c
@@ -254,6 +254,17 @@ static inline enum comp_state check_ack(struct rxe_qp *qp,
 	case IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE:
 		if (pkt->opcode != IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE &&
 		    pkt->opcode != IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST) {
+			/* read retries of partial data may restart from
+			 * read response first or response only.
+			 */
+			if ((pkt->psn == wqe->first_psn &&
+			     pkt->opcode ==
+			     IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST) ||
+			    (wqe->first_psn == wqe->last_psn &&
+			     pkt->opcode ==
+			     IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY))
+				break;
+
 			return COMPST_ERROR;
 		}
 		break;
@@ -500,11 +511,11 @@ static inline enum comp_state complete_wqe(struct rxe_qp *qp,
 					   struct rxe_pkt_info *pkt,
 					   struct rxe_send_wqe *wqe)
 {
-	qp->comp.opcode = -1;
-
-	if (pkt) {
-		if (psn_compare(pkt->psn, qp->comp.psn) >= 0)
-			qp->comp.psn = (pkt->psn + 1) & BTH_PSN_MASK;
+	if (pkt && wqe->state == wqe_state_pending) {
+		if (psn_compare(wqe->last_psn, qp->comp.psn) >= 0) {
+			qp->comp.psn = (wqe->last_psn + 1) & BTH_PSN_MASK;
+			qp->comp.opcode = -1;
+		}
 
 		if (qp->req.wait_psn) {
 			qp->req.wait_psn = 0;
diff --git a/drivers/infiniband/sw/rxe/rxe_req.c b/drivers/infiniband/sw/rxe/rxe_req.c
index fa98a52796470..f7dd8de799415 100644
--- a/drivers/infiniband/sw/rxe/rxe_req.c
+++ b/drivers/infiniband/sw/rxe/rxe_req.c
@@ -73,9 +73,6 @@ static void req_retry(struct rxe_qp *qp)
 	int npsn;
 	int first = 1;
 
-	wqe = queue_head(qp->sq.queue);
-	npsn = (qp->comp.psn - wqe->first_psn) & BTH_PSN_MASK;
-
 	qp->req.wqe_index	= consumer_index(qp->sq.queue);
 	qp->req.psn		= qp->comp.psn;
 	qp->req.opcode		= -1;
@@ -107,11 +104,17 @@ static void req_retry(struct rxe_qp *qp)
 		if (first) {
 			first = 0;
 
-			if (mask & WR_WRITE_OR_SEND_MASK)
+			if (mask & WR_WRITE_OR_SEND_MASK) {
+				npsn = (qp->comp.psn - wqe->first_psn) &
+					BTH_PSN_MASK;
 				retry_first_write_send(qp, wqe, mask, npsn);
+			}
 
-			if (mask & WR_READ_MASK)
+			if (mask & WR_READ_MASK) {
+				npsn = (wqe->dma.length - wqe->dma.resid) /
+					qp->mtu;
 				wqe->iova += npsn * qp->mtu;
+			}
 		}
 
 		wqe->state = wqe_state_posted;
@@ -435,7 +438,7 @@ static struct sk_buff *init_req_packet(struct rxe_qp *qp,
 	if (pkt->mask & RXE_RETH_MASK) {
 		reth_set_rkey(pkt, ibwr->wr.rdma.rkey);
 		reth_set_va(pkt, wqe->iova);
-		reth_set_len(pkt, wqe->dma.length);
+		reth_set_len(pkt, wqe->dma.resid);
 	}
 
 	if (pkt->mask & RXE_IMMDT_MASK)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 088/422] iwlwifi: drop packets with bad status in CD
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (86 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 087/422] IB/rxe: fixes for rdma read retry Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 089/422] iwlwifi: dont WARN on trying to dump dead firmware Greg Kroah-Hartman
                   ` (337 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sara Sharon, Luca Coelho, Sasha Levin

From: Sara Sharon <sara.sharon@intel.com>

[ Upstream commit 7891965d74bc48fb42b5068033192f97c9aa2090 ]

We need to drop packets with errors (such as replay,
MIC, ICV, conversion, duplicate and so on).

Drop invalid packets, put the status bits in the metadata and
move the enum definition to the correct place (FW API header).

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../net/wireless/intel/iwlwifi/fw/api/rx.h    | 63 +++++++++++++++++++
 .../net/wireless/intel/iwlwifi/iwl-trans.h    |  1 +
 .../wireless/intel/iwlwifi/pcie/internal.h    | 60 ------------------
 drivers/net/wireless/intel/iwlwifi/pcie/rx.c  |  8 ++-
 4 files changed, 70 insertions(+), 62 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/rx.h b/drivers/net/wireless/intel/iwlwifi/fw/api/rx.h
index 2f599353c8856..2ba1401e5c0d5 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/api/rx.h
+++ b/drivers/net/wireless/intel/iwlwifi/fw/api/rx.h
@@ -574,6 +574,69 @@ struct iwl_rx_mpdu_desc {
 
 #define IWL_RX_DESC_SIZE_V1 offsetofend(struct iwl_rx_mpdu_desc, v1)
 
+#define IWL_CD_STTS_OPTIMIZED_POS	0
+#define IWL_CD_STTS_OPTIMIZED_MSK	0x01
+#define IWL_CD_STTS_TRANSFER_STATUS_POS	1
+#define IWL_CD_STTS_TRANSFER_STATUS_MSK	0x0E
+#define IWL_CD_STTS_WIFI_STATUS_POS	4
+#define IWL_CD_STTS_WIFI_STATUS_MSK	0xF0
+
+/**
+ * enum iwl_completion_desc_transfer_status -  transfer status (bits 1-3)
+ * @IWL_CD_STTS_UNUSED: unused
+ * @IWL_CD_STTS_UNUSED_2: unused
+ * @IWL_CD_STTS_END_TRANSFER: successful transfer complete.
+ *	In sniffer mode, when split is used, set in last CD completion. (RX)
+ * @IWL_CD_STTS_OVERFLOW: In sniffer mode, when using split - used for
+ *	all CD completion. (RX)
+ * @IWL_CD_STTS_ABORTED: CR abort / close flow. (RX)
+ * @IWL_CD_STTS_ERROR: general error (RX)
+ */
+enum iwl_completion_desc_transfer_status {
+	IWL_CD_STTS_UNUSED,
+	IWL_CD_STTS_UNUSED_2,
+	IWL_CD_STTS_END_TRANSFER,
+	IWL_CD_STTS_OVERFLOW,
+	IWL_CD_STTS_ABORTED,
+	IWL_CD_STTS_ERROR,
+};
+
+/**
+ * enum iwl_completion_desc_wifi_status - wifi status (bits 4-7)
+ * @IWL_CD_STTS_VALID: the packet is valid (RX)
+ * @IWL_CD_STTS_FCS_ERR: frame check sequence error (RX)
+ * @IWL_CD_STTS_SEC_KEY_ERR: error handling the security key of rx (RX)
+ * @IWL_CD_STTS_DECRYPTION_ERR: error decrypting the frame (RX)
+ * @IWL_CD_STTS_DUP: duplicate packet (RX)
+ * @IWL_CD_STTS_ICV_MIC_ERR: MIC error (RX)
+ * @IWL_CD_STTS_INTERNAL_SNAP_ERR: problems removing the snap (RX)
+ * @IWL_CD_STTS_SEC_PORT_FAIL: security port fail (RX)
+ * @IWL_CD_STTS_BA_OLD_SN: block ack received old SN (RX)
+ * @IWL_CD_STTS_QOS_NULL: QoS null packet (RX)
+ * @IWL_CD_STTS_MAC_HDR_ERR: MAC header conversion error (RX)
+ * @IWL_CD_STTS_MAX_RETRANS: reached max number of retransmissions (TX)
+ * @IWL_CD_STTS_EX_LIFETIME: exceeded lifetime (TX)
+ * @IWL_CD_STTS_NOT_USED: completed but not used (RX)
+ * @IWL_CD_STTS_REPLAY_ERR: pn check failed, replay error (RX)
+ */
+enum iwl_completion_desc_wifi_status {
+	IWL_CD_STTS_VALID,
+	IWL_CD_STTS_FCS_ERR,
+	IWL_CD_STTS_SEC_KEY_ERR,
+	IWL_CD_STTS_DECRYPTION_ERR,
+	IWL_CD_STTS_DUP,
+	IWL_CD_STTS_ICV_MIC_ERR,
+	IWL_CD_STTS_INTERNAL_SNAP_ERR,
+	IWL_CD_STTS_SEC_PORT_FAIL,
+	IWL_CD_STTS_BA_OLD_SN,
+	IWL_CD_STTS_QOS_NULL,
+	IWL_CD_STTS_MAC_HDR_ERR,
+	IWL_CD_STTS_MAX_RETRANS,
+	IWL_CD_STTS_EX_LIFETIME,
+	IWL_CD_STTS_NOT_USED,
+	IWL_CD_STTS_REPLAY_ERR,
+};
+
 struct iwl_frame_release {
 	u8 baid;
 	u8 reserved;
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h
index 279dd7b7a3fb9..0b8cf7f3af933 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h
@@ -269,6 +269,7 @@ struct iwl_rx_cmd_buffer {
 	bool _page_stolen;
 	u32 _rx_page_order;
 	unsigned int truesize;
+	u8 status;
 };
 
 static inline void *rxb_addr(struct iwl_rx_cmd_buffer *r)
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/internal.h b/drivers/net/wireless/intel/iwlwifi/pcie/internal.h
index 00f9566bcc213..e9d67ba3e56dd 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/internal.h
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/internal.h
@@ -102,66 +102,6 @@ struct isr_statistics {
 	u32 unhandled;
 };
 
-#define IWL_CD_STTS_OPTIMIZED_POS	0
-#define IWL_CD_STTS_OPTIMIZED_MSK	0x01
-#define IWL_CD_STTS_TRANSFER_STATUS_POS	1
-#define IWL_CD_STTS_TRANSFER_STATUS_MSK	0x0E
-#define IWL_CD_STTS_WIFI_STATUS_POS	4
-#define IWL_CD_STTS_WIFI_STATUS_MSK	0xF0
-
-/**
- * enum iwl_completion_desc_transfer_status -  transfer status (bits 1-3)
- * @IWL_CD_STTS_END_TRANSFER: successful transfer complete.
- *	In sniffer mode, when split is used, set in last CD completion. (RX)
- * @IWL_CD_STTS_OVERFLOW: In sniffer mode, when using split - used for
- *	all CD completion. (RX)
- * @IWL_CD_STTS_ABORTED: CR abort / close flow. (RX)
- */
-enum iwl_completion_desc_transfer_status {
-	IWL_CD_STTS_UNUSED,
-	IWL_CD_STTS_UNUSED_2,
-	IWL_CD_STTS_END_TRANSFER,
-	IWL_CD_STTS_OVERFLOW,
-	IWL_CD_STTS_ABORTED,
-	IWL_CD_STTS_ERROR,
-};
-
-/**
- * enum iwl_completion_desc_wifi_status - wifi status (bits 4-7)
- * @IWL_CD_STTS_VALID: the packet is valid (RX)
- * @IWL_CD_STTS_FCS_ERR: frame check sequence error (RX)
- * @IWL_CD_STTS_SEC_KEY_ERR: error handling the security key of rx (RX)
- * @IWL_CD_STTS_DECRYPTION_ERR: error decrypting the frame (RX)
- * @IWL_CD_STTS_DUP: duplicate packet (RX)
- * @IWL_CD_STTS_ICV_MIC_ERR: MIC error (RX)
- * @IWL_CD_STTS_INTERNAL_SNAP_ERR: problems removing the snap (RX)
- * @IWL_CD_STTS_SEC_PORT_FAIL: security port fail (RX)
- * @IWL_CD_STTS_BA_OLD_SN: block ack received old SN (RX)
- * @IWL_CD_STTS_QOS_NULL: QoS null packet (RX)
- * @IWL_CD_STTS_MAC_HDR_ERR: MAC header conversion error (RX)
- * @IWL_CD_STTS_MAX_RETRANS: reached max number of retransmissions (TX)
- * @IWL_CD_STTS_EX_LIFETIME: exceeded lifetime (TX)
- * @IWL_CD_STTS_NOT_USED: completed but not used (RX)
- * @IWL_CD_STTS_REPLAY_ERR: pn check failed, replay error (RX)
- */
-enum iwl_completion_desc_wifi_status {
-	IWL_CD_STTS_VALID,
-	IWL_CD_STTS_FCS_ERR,
-	IWL_CD_STTS_SEC_KEY_ERR,
-	IWL_CD_STTS_DECRYPTION_ERR,
-	IWL_CD_STTS_DUP,
-	IWL_CD_STTS_ICV_MIC_ERR,
-	IWL_CD_STTS_INTERNAL_SNAP_ERR,
-	IWL_CD_STTS_SEC_PORT_FAIL,
-	IWL_CD_STTS_BA_OLD_SN,
-	IWL_CD_STTS_QOS_NULL,
-	IWL_CD_STTS_MAC_HDR_ERR,
-	IWL_CD_STTS_MAX_RETRANS,
-	IWL_CD_STTS_EX_LIFETIME,
-	IWL_CD_STTS_NOT_USED,
-	IWL_CD_STTS_REPLAY_ERR,
-};
-
 #define IWL_RX_TD_TYPE_MSK	0xff000000
 #define IWL_RX_TD_SIZE_MSK	0x00ffffff
 #define IWL_RX_TD_SIZE_2K	BIT(11)
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
index 1d144985ea589..80a1a50f5da51 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
@@ -1198,7 +1198,8 @@ static void iwl_pcie_rx_reuse_rbd(struct iwl_trans *trans,
 static void iwl_pcie_rx_handle_rb(struct iwl_trans *trans,
 				struct iwl_rxq *rxq,
 				struct iwl_rx_mem_buffer *rxb,
-				bool emergency)
+				bool emergency,
+				int i)
 {
 	struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
 	struct iwl_txq *txq = trans_pcie->txq[trans_pcie->cmd_queue];
@@ -1224,6 +1225,9 @@ static void iwl_pcie_rx_handle_rb(struct iwl_trans *trans,
 			.truesize = max_len,
 		};
 
+		if (trans->cfg->device_family >= IWL_DEVICE_FAMILY_22560)
+			rxcb.status = rxq->cd[i].status;
+
 		pkt = rxb_addr(&rxcb);
 
 		if (pkt->len_n_flags == cpu_to_le32(FH_RSCSR_FRAME_INVALID)) {
@@ -1430,7 +1434,7 @@ restart:
 			goto out;
 
 		IWL_DEBUG_RX(trans, "Q %d: HW = %d, SW = %d\n", rxq->id, r, i);
-		iwl_pcie_rx_handle_rb(trans, rxq, rxb, emergency);
+		iwl_pcie_rx_handle_rb(trans, rxq, rxb, emergency, i);
 
 		i = (i + 1) & (rxq->queue_size - 1);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 089/422] iwlwifi: dont WARN on trying to dump dead firmware
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (87 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 088/422] iwlwifi: drop packets with bad status in CD Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 090/422] iwlwifi: mvm: avoid sending too many BARs Greg Kroah-Hartman
                   ` (336 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Johannes Berg, Luca Coelho, Sasha Levin

From: Johannes Berg <johannes.berg@intel.com>

[ Upstream commit 84f260251ed8153e84c64eb2c5278ab18d3ddef6 ]

There's no point in warning here, the user will just get an
error back to the debugfs file write, and warning just makes
it seem like there's an internal consistency problem when in
reality the user just happened to hit this at a bad time.
Remove the warning.

Fixes: f45f979dc208 ("iwlwifi: mvm: disable dbg data collect when fw isn't alive")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
index a31a42e673c46..8070b2d4c46fe 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
+++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
@@ -1016,7 +1016,7 @@ int iwl_fw_dbg_collect_desc(struct iwl_fw_runtime *fwrt,
 	 * If the loading of the FW completed successfully, the next step is to
 	 * get the SMEM config data. Thus, if fwrt->smem_cfg.num_lmacs is non
 	 * zero, the FW was already loaded successully. If the state is "NO_FW"
-	 * in such a case - WARN and exit, since FW may be dead. Otherwise, we
+	 * in such a case - exit, since FW may be dead. Otherwise, we
 	 * can try to collect the data, since FW might just not be fully
 	 * loaded (no "ALIVE" yet), and the debug data is accessible.
 	 *
@@ -1024,9 +1024,8 @@ int iwl_fw_dbg_collect_desc(struct iwl_fw_runtime *fwrt,
 	 *	config. In such a case, due to HW access problems, we might
 	 *	collect garbage.
 	 */
-	if (WARN((fwrt->trans->state == IWL_TRANS_NO_FW) &&
-		 fwrt->smem_cfg.num_lmacs,
-		 "Can't collect dbg data when FW isn't alive\n"))
+	if (fwrt->trans->state == IWL_TRANS_NO_FW &&
+	    fwrt->smem_cfg.num_lmacs)
 		return -EIO;
 
 	if (test_and_set_bit(IWL_FWRT_STATUS_DUMPING, &fwrt->status))
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 090/422] iwlwifi: mvm: avoid sending too many BARs
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (88 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 089/422] iwlwifi: dont WARN on trying to dump dead firmware Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 091/422] media: vicodec: fix out-of-range values when decoding Greg Kroah-Hartman
                   ` (335 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sara Sharon, Luca Coelho, Sasha Levin

From: Sara Sharon <sara.sharon@intel.com>

[ Upstream commit 1a19c139be18ed4d6d681049cc48586fae070120 ]

When we receive TX response, we may release a few packets
due to a hole that was closed in the transmission window.

However, if that frame failed, we will mark all the released
frames as failed and will send multiple BARs.

This affects statistics badly, and cause unnecessary frames
transmission.

Instead, mark all the following packets as success, with the
desired result of sending a bar for the failed frame only.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
index 5615ce55cef56..cb2e52e7f46c9 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
@@ -1438,6 +1438,14 @@ static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm,
 			break;
 		}
 
+		/*
+		 * If we are freeing multiple frames, mark all the frames
+		 * but the first one as acked, since they were acknowledged
+		 * before
+		 * */
+		if (skb_freed > 1)
+			info->flags |= IEEE80211_TX_STAT_ACK;
+
 		iwl_mvm_tx_status_check_trigger(mvm, status);
 
 		info->status.rates[0].count = tx_resp->failure_frame + 1;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 091/422] media: vicodec: fix out-of-range values when decoding
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (89 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 090/422] iwlwifi: mvm: avoid sending too many BARs Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 092/422] media: i2c: Fix pm_runtime_get_if_in_use() usage in sensor drivers Greg Kroah-Hartman
                   ` (334 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Hans Verkuil, Mauro Carvalho Chehab,
	Sasha Levin

From: Hans Verkuil <hverkuil@xs4all.nl>

[ Upstream commit be5a1509af8dd8a78fea24a35fe4a82d4cd0ae70 ]

While decoding you need to make sure you do not get values < 0
or > 255. Note that since this code will also be used in userspace
utilities the clamp macro isn't used since that is kernel-only.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/media/platform/vicodec/vicodec-codec.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/vicodec/vicodec-codec.c b/drivers/media/platform/vicodec/vicodec-codec.c
index 2d047646f6147..d854b2344f12b 100644
--- a/drivers/media/platform/vicodec/vicodec-codec.c
+++ b/drivers/media/platform/vicodec/vicodec-codec.c
@@ -588,8 +588,14 @@ static void fill_decoder_block(u8 *dst, const s16 *input, int stride)
 	int i, j;
 
 	for (i = 0; i < 8; i++) {
-		for (j = 0; j < 8; j++)
-			*dst++ = *input++;
+		for (j = 0; j < 8; j++, input++, dst++) {
+			if (*input < 0)
+				*dst = 0;
+			else if (*input > 255)
+				*dst = 255;
+			else
+				*dst = *input;
+		}
 		dst += stride - 8;
 	}
 }
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 092/422] media: i2c: Fix pm_runtime_get_if_in_use() usage in sensor drivers
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (90 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 091/422] media: vicodec: fix out-of-range values when decoding Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 093/422] media: ov772x: Disable clk on error path Greg Kroah-Hartman
                   ` (333 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sakari Ailus, Tomasz Figa,
	Mauro Carvalho Chehab, Sasha Levin

From: Sakari Ailus <sakari.ailus@linux.intel.com>

[ Upstream commit 4d471563d87b2b83e73b8abffb9273950e6d2e36 ]

pm_runtime_get_if_in_use() returns -EINVAL if runtime PM is disabled. This
should not be considered an error. Generally the driver has enabled
runtime PM already so getting this error due to runtime PM being disabled
will not happen.

Instead of checking for lesser or equal to zero, check for zero only.
Address this for drivers where this pattern exists.

This patch has been produced using the following command:

$ git grep -l pm_runtime_get_if_in_use -- drivers/media/i2c/ | \
  xargs perl -i -pe 's/(pm_runtime_get_if_in_use\(.*\)) \<\= 0/!$1/'

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Tomasz Figa <tfiga@chromium.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/media/i2c/ov13858.c | 2 +-
 drivers/media/i2c/ov2685.c  | 2 +-
 drivers/media/i2c/ov5670.c  | 2 +-
 drivers/media/i2c/ov5695.c  | 2 +-
 drivers/media/i2c/ov7740.c  | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/media/i2c/ov13858.c b/drivers/media/i2c/ov13858.c
index a66f6201f53c7..0e7a85c4996c7 100644
--- a/drivers/media/i2c/ov13858.c
+++ b/drivers/media/i2c/ov13858.c
@@ -1230,7 +1230,7 @@ static int ov13858_set_ctrl(struct v4l2_ctrl *ctrl)
 	 * Applying V4L2 control value only happens
 	 * when power is up for streaming
 	 */
-	if (pm_runtime_get_if_in_use(&client->dev) <= 0)
+	if (!pm_runtime_get_if_in_use(&client->dev))
 		return 0;
 
 	ret = 0;
diff --git a/drivers/media/i2c/ov2685.c b/drivers/media/i2c/ov2685.c
index 385c1886a9470..98a1f2e312b58 100644
--- a/drivers/media/i2c/ov2685.c
+++ b/drivers/media/i2c/ov2685.c
@@ -549,7 +549,7 @@ static int ov2685_set_ctrl(struct v4l2_ctrl *ctrl)
 		break;
 	}
 
-	if (pm_runtime_get_if_in_use(&client->dev) <= 0)
+	if (!pm_runtime_get_if_in_use(&client->dev))
 		return 0;
 
 	switch (ctrl->id) {
diff --git a/drivers/media/i2c/ov5670.c b/drivers/media/i2c/ov5670.c
index 7b7c74d773707..53dd30d96e691 100644
--- a/drivers/media/i2c/ov5670.c
+++ b/drivers/media/i2c/ov5670.c
@@ -2016,7 +2016,7 @@ static int ov5670_set_ctrl(struct v4l2_ctrl *ctrl)
 	}
 
 	/* V4L2 controls values will be applied only when power is already up */
-	if (pm_runtime_get_if_in_use(&client->dev) <= 0)
+	if (!pm_runtime_get_if_in_use(&client->dev))
 		return 0;
 
 	switch (ctrl->id) {
diff --git a/drivers/media/i2c/ov5695.c b/drivers/media/i2c/ov5695.c
index 9a80decd93d3c..5d107c53364d6 100644
--- a/drivers/media/i2c/ov5695.c
+++ b/drivers/media/i2c/ov5695.c
@@ -1110,7 +1110,7 @@ static int ov5695_set_ctrl(struct v4l2_ctrl *ctrl)
 		break;
 	}
 
-	if (pm_runtime_get_if_in_use(&client->dev) <= 0)
+	if (!pm_runtime_get_if_in_use(&client->dev))
 		return 0;
 
 	switch (ctrl->id) {
diff --git a/drivers/media/i2c/ov7740.c b/drivers/media/i2c/ov7740.c
index 8a6a7a5929aa3..7804013934ab5 100644
--- a/drivers/media/i2c/ov7740.c
+++ b/drivers/media/i2c/ov7740.c
@@ -510,7 +510,7 @@ static int ov7740_set_ctrl(struct v4l2_ctrl *ctrl)
 	int ret;
 	u8 val = 0;
 
-	if (pm_runtime_get_if_in_use(&client->dev) <= 0)
+	if (!pm_runtime_get_if_in_use(&client->dev))
 		return 0;
 
 	switch (ctrl->id) {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 093/422] media: ov772x: Disable clk on error path
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (91 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 092/422] media: i2c: Fix pm_runtime_get_if_in_use() usage in sensor drivers Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 094/422] ARM: dts: pxa: fix the rtc controller Greg Kroah-Hartman
                   ` (332 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Alexey Khoroshilov, Jacopo Mondi,
	Sakari Ailus, Mauro Carvalho Chehab, Sasha Levin

From: Alexey Khoroshilov <khoroshilov@ispras.ru>

[ Upstream commit 1d18c2cd9d38ad639b2e00546b9ee638f2cef4b0 ]

If ov772x_power_on() is unable to get GPIO rstb,
the clock is left undisabled.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Acked-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/media/i2c/ov772x.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/ov772x.c b/drivers/media/i2c/ov772x.c
index 7158c31d8403b..4eae5f2f7d318 100644
--- a/drivers/media/i2c/ov772x.c
+++ b/drivers/media/i2c/ov772x.c
@@ -896,6 +896,7 @@ static int ov772x_power_on(struct ov772x_priv *priv)
 					     GPIOD_OUT_LOW);
 	if (IS_ERR(priv->rstb_gpio)) {
 		dev_info(&client->dev, "Unable to get GPIO \"reset\"");
+		clk_disable_unprepare(priv->clk);
 		return PTR_ERR(priv->rstb_gpio);
 	}
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 094/422] ARM: dts: pxa: fix the rtc controller
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (92 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 093/422] media: ov772x: Disable clk on error path Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 095/422] ARM: dts: pxa: fix power i2c base address Greg Kroah-Hartman
                   ` (331 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Robert Jarzmik, Sasha Levin

From: Robert Jarzmik <robert.jarzmik@free.fr>

[ Upstream commit 24a610eba32a80ed778ea79680b600c3fe73d7de ]

The RTC controller is fed by an external fixed 32kHz clock. Yet the
driver wants to acquire this clock, even though it doesn't make any use
of it, ie. doesn't get the rate to make calculation.

Therefore, use the exported 32.768kHz clock in the PXA clock tree to
make the driver happy and working.

Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/pxa25x.dtsi | 4 ++++
 arch/arm/boot/dts/pxa27x.dtsi | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/arch/arm/boot/dts/pxa25x.dtsi b/arch/arm/boot/dts/pxa25x.dtsi
index 95d59be97213e..8494b57871709 100644
--- a/arch/arm/boot/dts/pxa25x.dtsi
+++ b/arch/arm/boot/dts/pxa25x.dtsi
@@ -80,6 +80,10 @@
 			#pwm-cells = <1>;
 			clocks = <&clks CLK_PWM1>;
 		};
+
+		rtc@40900000 {
+			clocks = <&clks CLK_OSC32k768>;
+		};
 	};
 
 	timer@40a00000 {
diff --git a/arch/arm/boot/dts/pxa27x.dtsi b/arch/arm/boot/dts/pxa27x.dtsi
index 747f750f675d9..2ab6986433c82 100644
--- a/arch/arm/boot/dts/pxa27x.dtsi
+++ b/arch/arm/boot/dts/pxa27x.dtsi
@@ -113,6 +113,10 @@
 
 			status = "disabled";
 		};
+
+		rtc@40900000 {
+			clocks = <&clks CLK_OSC32k768>;
+		};
 	};
 
 	clocks {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 095/422] ARM: dts: pxa: fix power i2c base address
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (93 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 094/422] ARM: dts: pxa: fix the rtc controller Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 096/422] rtl8187: Fix warning generated when strncpy() destination length matches the sixe argument Greg Kroah-Hartman
                   ` (330 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Marcel Ziswiler, Robert Jarzmik, Sasha Levin

From: Marcel Ziswiler <marcel@ziswiler.com>

[ Upstream commit 8a1ecc01a473b75ab97be9b36f623e4551a6e9ae ]

There is one too many zeroes in the Power I2C base address. Fix this.

Signed-off-by: Marcel Ziswiler <marcel@ziswiler.com>
Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/pxa27x.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/pxa27x.dtsi b/arch/arm/boot/dts/pxa27x.dtsi
index 2ab6986433c82..3228ad5fb725f 100644
--- a/arch/arm/boot/dts/pxa27x.dtsi
+++ b/arch/arm/boot/dts/pxa27x.dtsi
@@ -71,7 +71,7 @@
 			clocks = <&clks CLK_PWM1>;
 		};
 
-		pwri2c: i2c@40f000180 {
+		pwri2c: i2c@40f00180 {
 			compatible = "mrvl,pxa-i2c";
 			reg = <0x40f00180 0x24>;
 			interrupts = <6>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 096/422] rtl8187: Fix warning generated when strncpy() destination length matches the sixe argument
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (94 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 095/422] ARM: dts: pxa: fix power i2c base address Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 097/422] mwifiex: do no submit URB in suspended state Greg Kroah-Hartman
                   ` (329 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Larry Finger, Kalle Valo, Sasha Levin

From: Larry Finger <Larry.Finger@lwfinger.net>

[ Upstream commit 199ba9faca909e77ac533449ecd1248123ce89e7 ]

In gcc8, when the 3rd argument (size) of a call to strncpy() matches the
length of the first argument, the compiler warns of the possibility of an
unterminated string. Using strlcpy() forces a null at the end.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c b/drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c
index c2d5b495c179a..c089540116fa7 100644
--- a/drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c
+++ b/drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c
@@ -146,7 +146,7 @@ static int rtl8187_register_led(struct ieee80211_hw *dev,
 	led->dev = dev;
 	led->ledpin = ledpin;
 	led->is_radio = is_radio;
-	strncpy(led->name, name, sizeof(led->name));
+	strlcpy(led->name, name, sizeof(led->name));
 
 	led->led_dev.name = led->name;
 	led->led_dev.default_trigger = default_trigger;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 097/422] mwifiex: do no submit URB in suspended state
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (95 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 096/422] rtl8187: Fix warning generated when strncpy() destination length matches the sixe argument Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 098/422] mwifex: free rx_cmd skb " Greg Kroah-Hartman
                   ` (328 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Vidya Dharmaraju, Cathy Luo,
	Ganapathi Bhat, Kalle Valo, Sasha Levin

From: Ganapathi Bhat <gbhat@marvell.com>

[ Upstream commit 7bd4628c2f31c51254aa39628ecae521d00d0b90 ]

There is a possible race between USB suspend and main thread:

1. After processing the command response, main thread will submit
rx_cmd URB back so as to process next command response, by
calling mwifiex_usb_submit_rx_urb.

2. During USB suspend, the suspend handler will check if rx_cmd
URB is pending(submitted) and if true, kill this URB.

There is a possible race between #1 and #2, where rx_cmd URB will
be submitted by main thread(#1) after the suspend handler check
in #2.

To fix this, check if device is already suspended in
mwifiex_usb_submit_rx_urb, in which case do not submit the URB.

Signed-off-by: Vidya Dharmaraju <vidyad@marvell.com>
Signed-off-by: Cathy Luo <cluo@marvell.com>
Signed-off-by: Ganapathi Bhat <gbhat@marvell.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/marvell/mwifiex/usb.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/net/wireless/marvell/mwifiex/usb.c b/drivers/net/wireless/marvell/mwifiex/usb.c
index 433c6a16870b6..76d80fd545236 100644
--- a/drivers/net/wireless/marvell/mwifiex/usb.c
+++ b/drivers/net/wireless/marvell/mwifiex/usb.c
@@ -298,6 +298,13 @@ static int mwifiex_usb_submit_rx_urb(struct urb_context *ctx, int size)
 	struct mwifiex_adapter *adapter = ctx->adapter;
 	struct usb_card_rec *card = (struct usb_card_rec *)adapter->card;
 
+	if (test_bit(MWIFIEX_IS_SUSPENDED, &adapter->work_flags)) {
+		mwifiex_dbg(adapter, ERROR,
+			    "%s: card removed/suspended, EP %d rx_cmd URB submit skipped\n",
+			    __func__, ctx->ep);
+		return -1;
+	}
+
 	if (card->rx_cmd_ep != ctx->ep) {
 		ctx->skb = dev_alloc_skb(size);
 		if (!ctx->skb) {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 098/422] mwifex: free rx_cmd skb in suspended state
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (96 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 097/422] mwifiex: do no submit URB in suspended state Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 099/422] brcmfmac: fix wrong strnchr usage Greg Kroah-Hartman
                   ` (327 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Vidya Dharmaraju, Cathy Luo,
	Ganapathi Bhat, Kalle Valo, Sasha Levin

From: Ganapathi Bhat <gbhat@marvell.com>

[ Upstream commit 33a164fa8a4c91408e0b7738f754cb1a7827c5f2 ]

USB suspend handler will kill the presubmitted rx_cmd URB. This
triggers a call to the corresponding URB complete handler, which
will free the rx_cmd skb, associated with rx_cmd URB. Due to a
possible race betwen suspend handler and main thread, depicted in
'commit bfcacac6c84b ("mwifiex: do no submit URB in suspended
state")', it is possible that the rx_cmd skb will fail to get
freed. This causes a memory leak, since the resume handler will
always allocate a new rx_cmd skb.

To fix this, free the rx_cmd skb in mwifiex_usb_submit_rx_urb, if
the device is in suspended state.

Signed-off-by: Vidya Dharmaraju <vidyad@marvell.com>
Signed-off-by: Cathy Luo <cluo@marvell.com>
Signed-off-by: Ganapathi Bhat <gbhat@marvell.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/marvell/mwifiex/usb.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/wireless/marvell/mwifiex/usb.c b/drivers/net/wireless/marvell/mwifiex/usb.c
index 76d80fd545236..d445acc4786b7 100644
--- a/drivers/net/wireless/marvell/mwifiex/usb.c
+++ b/drivers/net/wireless/marvell/mwifiex/usb.c
@@ -299,6 +299,12 @@ static int mwifiex_usb_submit_rx_urb(struct urb_context *ctx, int size)
 	struct usb_card_rec *card = (struct usb_card_rec *)adapter->card;
 
 	if (test_bit(MWIFIEX_IS_SUSPENDED, &adapter->work_flags)) {
+		if (card->rx_cmd_ep == ctx->ep) {
+			mwifiex_dbg(adapter, INFO, "%s: free rx_cmd skb\n",
+				    __func__);
+			dev_kfree_skb_any(ctx->skb);
+			ctx->skb = NULL;
+		}
 		mwifiex_dbg(adapter, ERROR,
 			    "%s: card removed/suspended, EP %d rx_cmd URB submit skipped\n",
 			    __func__, ctx->ep);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 099/422] brcmfmac: fix wrong strnchr usage
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (97 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 098/422] mwifex: free rx_cmd skb " Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 100/422] mt76: Fix comparisons with invalid hardware key index Greg Kroah-Hartman
                   ` (326 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Rasmus Villemoes, Kalle Valo, Sasha Levin

From: Rasmus Villemoes <linux@rasmusvillemoes.dk>

[ Upstream commit cb18e2e9ec71d42409a51b83546686c609780dde ]

strnchr takes arguments in the order of its name: string, max bytes to
read, character to search for. Here we're passing '\n' aka 10 as the
buffer size, and searching for sizeof(buf) aka BRCMF_DCMD_SMLEN aka
256 (aka '\0', since it's implicitly converted to char) within those 10
bytes.

Just interchanging the last two arguments would still leave a bug,
because if we've been successful once, there are not sizeof(buf)
characters left after the new value of p.

Since clmver is immediately afterwards passed as a %s argument, I assume
that it is actually a properly nul-terminated string. For that case, we
have strreplace().

Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
index 27893af63ebc3..8510d207ee87d 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
@@ -296,9 +296,7 @@ int brcmf_c_preinit_dcmds(struct brcmf_if *ifp)
 		/* Replace all newline/linefeed characters with space
 		 * character
 		 */
-		ptr = clmver;
-		while ((ptr = strnchr(ptr, '\n', sizeof(buf))) != NULL)
-			*ptr = ' ';
+		strreplace(clmver, '\n', ' ');
 
 		brcmf_dbg(INFO, "CLM version = %s\n", clmver);
 	}
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 100/422] mt76: Fix comparisons with invalid hardware key index
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (98 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 099/422] brcmfmac: fix wrong strnchr usage Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 101/422] soc: imx: gpc: fix PDN delay Greg Kroah-Hartman
                   ` (325 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Geert Uytterhoeven, Kalle Valo, Sasha Levin

From: Geert Uytterhoeven <geert@linux-m68k.org>

[ Upstream commit 81c8eccc2404d06082025b773f1d90e8c861bc6a ]

With gcc 4.1.2:

    drivers/net/wireless/mediatek/mt76/mt76x0/tx.c: In function ‘mt76x0_tx’:
    drivers/net/wireless/mediatek/mt76/mt76x0/tx.c:169: warning: comparison is always true due to limited range of data type
    drivers/net/wireless/mediatek/mt76/mt76x2_tx_common.c: In function ‘mt76x2_tx’:
    drivers/net/wireless/mediatek/mt76/mt76x2_tx_common.c:35: warning: comparison is always true due to limited range of data type

While assigning -1 to a u8 works fine, comparing with -1 does not work
as expected.

Fix this by comparing with 0xff, like is already done in some other
places.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/mediatek/mt76/mt76x0/tx.c        | 2 +-
 drivers/net/wireless/mediatek/mt76/mt76x2_tx_common.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/tx.c b/drivers/net/wireless/mediatek/mt76/mt76x0/tx.c
index 751b49c28ae53..c45d05d5aab1d 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x0/tx.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x0/tx.c
@@ -166,7 +166,7 @@ void mt76x0_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
 	if (sta) {
 		msta = (struct mt76_sta *) sta->drv_priv;
 		wcid = &msta->wcid;
-	} else if (vif && (!info->control.hw_key && wcid->hw_key_idx != -1)) {
+	} else if (vif && (!info->control.hw_key && wcid->hw_key_idx != 0xff)) {
 		struct mt76_vif *mvif = (struct mt76_vif *)vif->drv_priv;
 
 		wcid = &mvif->group_wcid;
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2_tx_common.c b/drivers/net/wireless/mediatek/mt76/mt76x2_tx_common.c
index 36afb166fa3ff..c0ca0df84ed8b 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x2_tx_common.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x2_tx_common.c
@@ -32,7 +32,7 @@ void mt76x2_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
 		msta = (struct mt76x2_sta *)control->sta->drv_priv;
 		wcid = &msta->wcid;
 		/* sw encrypted frames */
-		if (!info->control.hw_key && wcid->hw_key_idx != -1)
+		if (!info->control.hw_key && wcid->hw_key_idx != 0xff)
 			control->sta = NULL;
 	}
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 101/422] soc: imx: gpc: fix PDN delay
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (99 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 100/422] mt76: Fix comparisons with invalid hardware key index Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:14 ` [PATCH 4.19 102/422] ASoC: rsnd: ssi: Fix issue in dma data address assignment Greg Kroah-Hartman
                   ` (324 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sven Schmitt, Leonard Crestez,
	Shawn Guo, Sasha Levin

From: Sven Schmitt <Sven.Schmitt@mixed-mode.de>

[ Upstream commit 9f4d61d531e0efc9c3283963ae5ef7e314579191 ]

imx6_pm_domain_power_off() reads iso and iso2sw from GPC_PGC_PUPSCR_OFFS
which stores the power up delays.
So use GPC_PGC_PDNSCR_OFFS for the correct delays.

Signed-off-by: Sven Schmitt <sven.schmitt@mixed-mode.de>
Reviewed-by: Leonard Crestez <leonard.crestez@nxp.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/soc/imx/gpc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/soc/imx/gpc.c b/drivers/soc/imx/gpc.c
index b3da635970ea7..d160fc2a7b7a2 100644
--- a/drivers/soc/imx/gpc.c
+++ b/drivers/soc/imx/gpc.c
@@ -69,7 +69,7 @@ static int imx6_pm_domain_power_off(struct generic_pm_domain *genpd)
 	u32 val;
 
 	/* Read ISO and ISO2SW power down delays */
-	regmap_read(pd->regmap, pd->reg_offs + GPC_PGC_PUPSCR_OFFS, &val);
+	regmap_read(pd->regmap, pd->reg_offs + GPC_PGC_PDNSCR_OFFS, &val);
 	iso = val & 0x3f;
 	iso2sw = (val >> 8) & 0x3f;
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 102/422] ASoC: rsnd: ssi: Fix issue in dma data address assignment
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (100 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 101/422] soc: imx: gpc: fix PDN delay Greg Kroah-Hartman
@ 2019-11-19  5:14 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 103/422] net: hns3: Fix for multicast failure Greg Kroah-Hartman
                   ` (323 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jiada Wang, Timo Wischer,
	Kuninori Morimoto, Hiroyuki Yokoyama, Mark Brown, Sasha Levin

From: Jiada Wang <jiada_wang@mentor.com>

[ Upstream commit 0e289012b47a2de1f029a6b61c75998e2f159dd9 ]

Same SSI device may be used in different dai links,
by only having one dma struct in rsnd_ssi, after the first
instance's dma config be initilized, the following instances
can no longer configure dma, this causes issue, when their
dma data address are different from the first instance.

Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
Signed-off-by: Timo Wischer <twischer@de.adit-jv.com>
[Kuninori: tidyup for upstream]
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tested-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/sh/rcar/rsnd.h | 1 +
 sound/soc/sh/rcar/ssi.c  | 4 +---
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h
index 8f7a0abfa751e..f64c7058b258b 100644
--- a/sound/soc/sh/rcar/rsnd.h
+++ b/sound/soc/sh/rcar/rsnd.h
@@ -438,6 +438,7 @@ struct rsnd_dai_stream {
 	char name[RSND_DAI_NAME_SIZE];
 	struct snd_pcm_substream *substream;
 	struct rsnd_mod *mod[RSND_MOD_MAX];
+	struct rsnd_mod *dma;
 	struct rsnd_dai *rdai;
 	struct device *dmac_dev; /* for IPMMU */
 	u32 parent_ssi_status;
diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c
index 9410e0a9b14b7..33dc8d6ad35b2 100644
--- a/sound/soc/sh/rcar/ssi.c
+++ b/sound/soc/sh/rcar/ssi.c
@@ -72,7 +72,6 @@
 
 struct rsnd_ssi {
 	struct rsnd_mod mod;
-	struct rsnd_mod *dma;
 
 	u32 flags;
 	u32 cr_own;
@@ -873,7 +872,6 @@ static int rsnd_ssi_dma_probe(struct rsnd_mod *mod,
 			      struct rsnd_dai_stream *io,
 			      struct rsnd_priv *priv)
 {
-	struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
 	int ret;
 
 	/*
@@ -888,7 +886,7 @@ static int rsnd_ssi_dma_probe(struct rsnd_mod *mod,
 		return ret;
 
 	/* SSI probe might be called many times in MUX multi path */
-	ret = rsnd_dma_attach(io, mod, &ssi->dma);
+	ret = rsnd_dma_attach(io, mod, &io->dma);
 
 	return ret;
 }
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 103/422] net: hns3: Fix for multicast failure
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (101 preceding siblings ...)
  2019-11-19  5:14 ` [PATCH 4.19 102/422] ASoC: rsnd: ssi: Fix issue in dma data address assignment Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 104/422] net: hns3: Fix error of checking used vlan id Greg Kroah-Hartman
                   ` (322 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Huazhong Tan, Peng Li, Salil Mehta,
	David S. Miller, Sasha Levin

From: Huazhong Tan <tanhuazhong@huawei.com>

[ Upstream commit fd5f9da3f6583046215d614a87792b46e55785e2 ]

When the lower 24 bits of the IPV6 link-local addresses at both
ends are the same, the multicast MAC address for Neigbour Discovery
is the same. The multicast for Neigbour Discovery will fail.

This patch fixes it by including the bonding uplink port in the
multicast group.

Fixes: 46a3df9f9718("net: hns3: Add HNS3 Acceleration Engine & Compatibility Layer Support")
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index 89ca69fa2b97b..44d0cb3f73a44 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -4374,7 +4374,7 @@ int hclge_add_mc_addr_common(struct hclge_vport *vport,
 	hnae3_set_bit(req.flags, HCLGE_MAC_VLAN_BIT0_EN_B, 1);
 	hnae3_set_bit(req.entry_type, HCLGE_MAC_VLAN_BIT0_EN_B, 0);
 	hnae3_set_bit(req.entry_type, HCLGE_MAC_VLAN_BIT1_EN_B, 1);
-	hnae3_set_bit(req.mc_mac_en, HCLGE_MAC_VLAN_BIT0_EN_B, 0);
+	hnae3_set_bit(req.mc_mac_en, HCLGE_MAC_VLAN_BIT0_EN_B, 1);
 	hclge_prepare_mac_addr(&req, addr);
 	status = hclge_lookup_mac_vlan_tbl(vport, &req, desc, true);
 	if (!status) {
@@ -4441,7 +4441,7 @@ int hclge_rm_mc_addr_common(struct hclge_vport *vport,
 	hnae3_set_bit(req.flags, HCLGE_MAC_VLAN_BIT0_EN_B, 1);
 	hnae3_set_bit(req.entry_type, HCLGE_MAC_VLAN_BIT0_EN_B, 0);
 	hnae3_set_bit(req.entry_type, HCLGE_MAC_VLAN_BIT1_EN_B, 1);
-	hnae3_set_bit(req.mc_mac_en, HCLGE_MAC_VLAN_BIT0_EN_B, 0);
+	hnae3_set_bit(req.mc_mac_en, HCLGE_MAC_VLAN_BIT0_EN_B, 1);
 	hclge_prepare_mac_addr(&req, addr);
 	status = hclge_lookup_mac_vlan_tbl(vport, &req, desc, true);
 	if (!status) {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 104/422] net: hns3: Fix error of checking used vlan id
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (102 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 103/422] net: hns3: Fix for multicast failure Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 105/422] net: hns3: Fix for loopback selftest failed problem Greg Kroah-Hartman
                   ` (321 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jian Shen, Peng Li, Salil Mehta,
	David S. Miller, Sasha Levin

From: Jian Shen <shenjian15@huawei.com>

[ Upstream commit 54e97d117bafa161b08c6ade243a335d92890d94 ]

PF uses hdev->vlan_table to manage the port vlan table. In function
hclge_set_vlan_filter_hw(), it checks whether a vlan id has been used,
by foreach all the vport bits. It should use macro HCLGE_VPORT_NUM,
not VLAN_N_VID as the foreach condition.

Fixes: 6c251711b37f ("net: hns3: Disable vf vlan filter when vf vlan table is full")
Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index 44d0cb3f73a44..0e7c92f624e91 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -4784,7 +4784,7 @@ static int hclge_set_vlan_filter_hw(struct hclge_dev *hdev, __be16 proto,
 		return -EINVAL;
 	}
 
-	for_each_set_bit(vport_idx, hdev->vlan_table[vlan_id], VLAN_N_VID)
+	for_each_set_bit(vport_idx, hdev->vlan_table[vlan_id], HCLGE_VPORT_NUM)
 		vport_num++;
 
 	if ((is_kill && vport_num == 0) || (!is_kill && vport_num == 1))
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 105/422] net: hns3: Fix for loopback selftest failed problem
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (103 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 104/422] net: hns3: Fix error of checking used vlan id Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 106/422] net: hns3: Change the dst mac addr of loopback packet Greg Kroah-Hartman
                   ` (320 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Yunsheng Lin, Peng Li, Salil Mehta,
	David S. Miller, Sasha Levin

From: Yunsheng Lin <linyunsheng@huawei.com>

[ Upstream commit 0f29fc23b21d3cbd966537bfabba07c00466b787 ]

Tqp and mac need to be enabled when doing loopback selftest,
ae_algo->ops->start/stop is used to do the job, there is a
time window between ae_algo->ops->start/stop and loopback setup,
which will cause selftest failed problem when there is frame
coming in during that time window.

This patch fixes it by enabling the tqp and mac during loopback
setup process.

Fixes: c39c4d98dc65 ("net: hns3: Add mac loopback selftest support in hns3 driver")
Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../ethernet/hisilicon/hns3/hns3_ethtool.c    | 17 +------
 .../hisilicon/hns3/hns3pf/hclge_main.c        | 51 +++++++++++--------
 2 files changed, 31 insertions(+), 37 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
index 6a3c6b02a77cd..5bdcd92d86122 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
@@ -100,41 +100,26 @@ static int hns3_lp_up(struct net_device *ndev, enum hnae3_loop loop_mode)
 	struct hnae3_handle *h = hns3_get_handle(ndev);
 	int ret;
 
-	if (!h->ae_algo->ops->start)
-		return -EOPNOTSUPP;
-
 	ret = hns3_nic_reset_all_ring(h);
 	if (ret)
 		return ret;
 
-	ret = h->ae_algo->ops->start(h);
-	if (ret) {
-		netdev_err(ndev,
-			   "hns3_lb_up ae start return error: %d\n", ret);
-		return ret;
-	}
-
 	ret = hns3_lp_setup(ndev, loop_mode, true);
 	usleep_range(10000, 20000);
 
-	return ret;
+	return 0;
 }
 
 static int hns3_lp_down(struct net_device *ndev, enum hnae3_loop loop_mode)
 {
-	struct hnae3_handle *h = hns3_get_handle(ndev);
 	int ret;
 
-	if (!h->ae_algo->ops->stop)
-		return -EOPNOTSUPP;
-
 	ret = hns3_lp_setup(ndev, loop_mode, false);
 	if (ret) {
 		netdev_err(ndev, "lb_setup return error: %d\n", ret);
 		return ret;
 	}
 
-	h->ae_algo->ops->stop(h);
 	usleep_range(10000, 20000);
 
 	return 0;
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index 0e7c92f624e91..0cf33fa351df3 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -3666,6 +3666,8 @@ static int hclge_set_mac_loopback(struct hclge_dev *hdev, bool en)
 	/* 2 Then setup the loopback flag */
 	loop_en = le32_to_cpu(req->txrx_pad_fcs_loop_en);
 	hnae3_set_bit(loop_en, HCLGE_MAC_APP_LP_B, en ? 1 : 0);
+	hnae3_set_bit(loop_en, HCLGE_MAC_TX_EN_B, en ? 1 : 0);
+	hnae3_set_bit(loop_en, HCLGE_MAC_RX_EN_B, en ? 1 : 0);
 
 	req->txrx_pad_fcs_loop_en = cpu_to_le32(loop_en);
 
@@ -3726,15 +3728,36 @@ static int hclge_set_serdes_loopback(struct hclge_dev *hdev, bool en)
 		return -EIO;
 	}
 
+	hclge_cfg_mac_mode(hdev, en);
 	return 0;
 }
 
+static int hclge_tqp_enable(struct hclge_dev *hdev, int tqp_id,
+			    int stream_id, bool enable)
+{
+	struct hclge_desc desc;
+	struct hclge_cfg_com_tqp_queue_cmd *req =
+		(struct hclge_cfg_com_tqp_queue_cmd *)desc.data;
+	int ret;
+
+	hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_CFG_COM_TQP_QUEUE, false);
+	req->tqp_id = cpu_to_le16(tqp_id & HCLGE_RING_ID_MASK);
+	req->stream_id = cpu_to_le16(stream_id);
+	req->enable |= enable << HCLGE_TQP_ENABLE_B;
+
+	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
+	if (ret)
+		dev_err(&hdev->pdev->dev,
+			"Tqp enable fail, status =%d.\n", ret);
+	return ret;
+}
+
 static int hclge_set_loopback(struct hnae3_handle *handle,
 			      enum hnae3_loop loop_mode, bool en)
 {
 	struct hclge_vport *vport = hclge_get_vport(handle);
 	struct hclge_dev *hdev = vport->back;
-	int ret;
+	int i, ret;
 
 	switch (loop_mode) {
 	case HNAE3_MAC_INTER_LOOP_MAC:
@@ -3750,27 +3773,13 @@ static int hclge_set_loopback(struct hnae3_handle *handle,
 		break;
 	}
 
-	return ret;
-}
-
-static int hclge_tqp_enable(struct hclge_dev *hdev, int tqp_id,
-			    int stream_id, bool enable)
-{
-	struct hclge_desc desc;
-	struct hclge_cfg_com_tqp_queue_cmd *req =
-		(struct hclge_cfg_com_tqp_queue_cmd *)desc.data;
-	int ret;
-
-	hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_CFG_COM_TQP_QUEUE, false);
-	req->tqp_id = cpu_to_le16(tqp_id & HCLGE_RING_ID_MASK);
-	req->stream_id = cpu_to_le16(stream_id);
-	req->enable |= enable << HCLGE_TQP_ENABLE_B;
+	for (i = 0; i < vport->alloc_tqps; i++) {
+		ret = hclge_tqp_enable(hdev, i, 0, en);
+		if (ret)
+			return ret;
+	}
 
-	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
-	if (ret)
-		dev_err(&hdev->pdev->dev,
-			"Tqp enable fail, status =%d.\n", ret);
-	return ret;
+	return 0;
 }
 
 static void hclge_reset_tqp_stats(struct hnae3_handle *handle)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 106/422] net: hns3: Change the dst mac addr of loopback packet
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (104 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 105/422] net: hns3: Fix for loopback selftest failed problem Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 107/422] net/mlx5: Fix atomic_mode enum values Greg Kroah-Hartman
                   ` (319 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Yunsheng Lin, Peng Li, Salil Mehta,
	David S. Miller, Sasha Levin

From: Yunsheng Lin <linyunsheng@huawei.com>

[ Upstream commit 7f7d9e501f4123e64b130576621d24f9379adc8f ]

Currently, the dst mac addr of loopback packet is the same as
the host' mac addr, the SSU component may loop back the packet
to host before the packet reaches mac or serdes, which will defect
the purpose of mac or serdes selftest.

This patch changes it by adding 0x1f to the last byte of dst mac
addr.

Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
index 5bdcd92d86122..0c34ea1223580 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
@@ -137,6 +137,7 @@ static void hns3_lp_setup_skb(struct sk_buff *skb)
 	packet = skb_put(skb, HNS3_NIC_LB_TEST_PACKET_SIZE);
 
 	memcpy(ethh->h_dest, ndev->dev_addr, ETH_ALEN);
+	ethh->h_dest[5] += 0x1f;
 	eth_zero_addr(ethh->h_source);
 	ethh->h_proto = htons(ETH_P_ARP);
 	skb_reset_mac_header(skb);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 107/422] net/mlx5: Fix atomic_mode enum values
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (105 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 106/422] net: hns3: Change the dst mac addr of loopback packet Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 108/422] net: phy: mscc: read vsc8531,vddmac as an u32 Greg Kroah-Hartman
                   ` (318 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Moni Shoua, Artemy Kovalyov,
	Leon Romanovsky, Sasha Levin

From: Moni Shoua <monis@mellanox.com>

[ Upstream commit aa7e80b220f3a543eefbe4b7e2c5d2b73e2e2ef7 ]

The field atomic_mode is 4 bits wide and therefore can hold values
from 0x0 to 0xf. Remove the unnecessary 20 bit shift that made the values
be incorrect. While that, remove unused enum values.

Fixes: 57cda166bbe0 ("net/mlx5: Add DCT command interface")
Signed-off-by: Moni Shoua <monis@mellanox.com>
Reviewed-by: Artemy Kovalyov <artemyko@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/linux/mlx5/driver.h | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h
index e8b92dee5a726..ae64fced188d1 100644
--- a/include/linux/mlx5/driver.h
+++ b/include/linux/mlx5/driver.h
@@ -163,10 +163,7 @@ enum mlx5_dcbx_oper_mode {
 };
 
 enum mlx5_dct_atomic_mode {
-	MLX5_ATOMIC_MODE_DCT_OFF        = 20,
-	MLX5_ATOMIC_MODE_DCT_NONE       = 0 << MLX5_ATOMIC_MODE_DCT_OFF,
-	MLX5_ATOMIC_MODE_DCT_IB_COMP    = 1 << MLX5_ATOMIC_MODE_DCT_OFF,
-	MLX5_ATOMIC_MODE_DCT_CX         = 2 << MLX5_ATOMIC_MODE_DCT_OFF,
+	MLX5_ATOMIC_MODE_DCT_CX         = 2,
 };
 
 enum {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 108/422] net: phy: mscc: read vsc8531,vddmac as an u32
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (106 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 107/422] net/mlx5: Fix atomic_mode enum values Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 109/422] net: phy: mscc: read vsc8531, edge-slowdown " Greg Kroah-Hartman
                   ` (317 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Quentin Schulz, David S. Miller, Sasha Levin

From: Quentin Schulz <quentin.schulz@bootlin.com>

[ Upstream commit a993e0f583c7925adaa7721226ccd7a41e7e63d1 ]

In the DT binding, it is specified nowhere that 'vsc8531,vddmac' is an
u16, even though it's read as an u16 in the driver.

Let's update the driver to take into consideration that the
'vsc8531,vddmac' property is of the default type u32.

Signed-off-by: Quentin Schulz <quentin.schulz@bootlin.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/phy/mscc.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/phy/mscc.c b/drivers/net/phy/mscc.c
index 84ca9ff40ae0b..53d63a71a03e2 100644
--- a/drivers/net/phy/mscc.c
+++ b/drivers/net/phy/mscc.c
@@ -111,7 +111,7 @@ struct vsc8531_private {
 
 #ifdef CONFIG_OF_MDIO
 struct vsc8531_edge_rate_table {
-	u16 vddmac;
+	u32 vddmac;
 	u8 slowdown[8];
 };
 
@@ -376,7 +376,7 @@ out_unlock:
 static int vsc85xx_edge_rate_magic_get(struct phy_device *phydev)
 {
 	u8 sd;
-	u16 vdd;
+	u32 vdd;
 	int rc, i, j;
 	struct device *dev = &phydev->mdio.dev;
 	struct device_node *of_node = dev->of_node;
@@ -385,7 +385,7 @@ static int vsc85xx_edge_rate_magic_get(struct phy_device *phydev)
 	if (!of_node)
 		return -ENODEV;
 
-	rc = of_property_read_u16(of_node, "vsc8531,vddmac", &vdd);
+	rc = of_property_read_u32(of_node, "vsc8531,vddmac", &vdd);
 	if (rc != 0)
 		vdd = MSCC_VDDMAC_3300;
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 109/422] net: phy: mscc: read vsc8531, edge-slowdown as an u32
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (107 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 108/422] net: phy: mscc: read vsc8531,vddmac as an u32 Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 110/422] ARM: dts: meson8: fix the clock controller register size Greg Kroah-Hartman
                   ` (316 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Quentin Schulz, David S. Miller, Sasha Levin

From: Quentin Schulz <quentin.schulz@bootlin.com>

[ Upstream commit 36c53cf0f46526b898390659b125155939f67892 ]

In the DT binding, it is specified nowhere that 'vsc8531,edge-slowdown'
is an u8, even though it's read as an u8 in the driver.

Let's update the driver to take into consideration that the
'vsc8531,edge-slowdown' property is of the default type u32.

Signed-off-by: Quentin Schulz <quentin.schulz@bootlin.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/phy/mscc.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/net/phy/mscc.c b/drivers/net/phy/mscc.c
index 53d63a71a03e2..36647b70b9a36 100644
--- a/drivers/net/phy/mscc.c
+++ b/drivers/net/phy/mscc.c
@@ -112,7 +112,7 @@ struct vsc8531_private {
 #ifdef CONFIG_OF_MDIO
 struct vsc8531_edge_rate_table {
 	u32 vddmac;
-	u8 slowdown[8];
+	u32 slowdown[8];
 };
 
 static const struct vsc8531_edge_rate_table edge_table[] = {
@@ -375,8 +375,7 @@ out_unlock:
 #ifdef CONFIG_OF_MDIO
 static int vsc85xx_edge_rate_magic_get(struct phy_device *phydev)
 {
-	u8 sd;
-	u32 vdd;
+	u32 vdd, sd;
 	int rc, i, j;
 	struct device *dev = &phydev->mdio.dev;
 	struct device_node *of_node = dev->of_node;
@@ -389,7 +388,7 @@ static int vsc85xx_edge_rate_magic_get(struct phy_device *phydev)
 	if (rc != 0)
 		vdd = MSCC_VDDMAC_3300;
 
-	rc = of_property_read_u8(of_node, "vsc8531,edge-slowdown", &sd);
+	rc = of_property_read_u32(of_node, "vsc8531,edge-slowdown", &sd);
 	if (rc != 0)
 		sd = 0;
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 110/422] ARM: dts: meson8: fix the clock controller register size
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (108 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 109/422] net: phy: mscc: read vsc8531, edge-slowdown " Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 111/422] ARM: dts: meson8b: " Greg Kroah-Hartman
                   ` (315 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Martin Blumenstingl, Neil Armstrong,
	Kevin Hilman, Sasha Levin

From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>

[ Upstream commit f7f9da89bc4f61e33f7b9f5c75c4efdc1f0455d8 ]

The clock controller registers are not 0x460 wide because the reset
controller starts at CBUS 0x4404. This currently overlaps with the
clock controller (which is at CBUS 0x4000).

There is no public documentation available on the actual size of the
clock controller's register area (also called "HHI"). However, in
Amlogic's GPL kernel sources the last "HHI" register is
HHI_HDMI_PHY_CNTL2 at CBUS + 0x43a8. 0x400 was chosen because that size
doesn't seem unlikely.

Fixes: 2c323c43a3d619 ("ARM: dts: meson8: add and use the real clock controller")
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/meson8.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/meson8.dtsi b/arch/arm/boot/dts/meson8.dtsi
index d77dcf890cfc8..7162e0ca05b0a 100644
--- a/arch/arm/boot/dts/meson8.dtsi
+++ b/arch/arm/boot/dts/meson8.dtsi
@@ -194,7 +194,7 @@
 		#clock-cells = <1>;
 		#reset-cells = <1>;
 		compatible = "amlogic,meson8-clkc";
-		reg = <0x8000 0x4>, <0x4000 0x460>;
+		reg = <0x8000 0x4>, <0x4000 0x400>;
 	};
 
 	reset: reset-controller@4404 {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 111/422] ARM: dts: meson8b: fix the clock controller register size
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (109 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 110/422] ARM: dts: meson8: fix the clock controller register size Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 112/422] mtd: rawnand: marvell: use regmap_update_bits() for syscon access Greg Kroah-Hartman
                   ` (314 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Martin Blumenstingl, Neil Armstrong,
	Kevin Hilman, Sasha Levin

From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>

[ Upstream commit f31094fe8c16fbd2ca47921acf93b744b045aace ]

The clock controller registers are not 0x460 wide because the reset
controller starts at CBUS 0x4404. This currently overlaps with the
clock controller (which is at CBUS 0x4000).

There is no public documentation available on the actual size of the
clock controller's register area (also called "HHI"). However, in
Amlogic's GPL kernel sources the last "HHI" register is
HHI_HDMI_PHY_CNTL2 at CBUS + 0x43a8. 0x400 was chosen because that size
doesn't seem unlikely.

Fixes: 4a69fcd3a10803 ("ARM: meson: Add DTS for Odroid-C1 and Tronfy MXQ boards")
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/meson8b.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/meson8b.dtsi b/arch/arm/boot/dts/meson8b.dtsi
index 5b3e5c50c72f7..4293047a4b76b 100644
--- a/arch/arm/boot/dts/meson8b.dtsi
+++ b/arch/arm/boot/dts/meson8b.dtsi
@@ -163,7 +163,7 @@
 		#clock-cells = <1>;
 		#reset-cells = <1>;
 		compatible = "amlogic,meson8b-clkc";
-		reg = <0x8000 0x4>, <0x4000 0x460>;
+		reg = <0x8000 0x4>, <0x4000 0x400>;
 	};
 
 	reset: reset-controller@4404 {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 112/422] mtd: rawnand: marvell: use regmap_update_bits() for syscon access
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (110 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 111/422] ARM: dts: meson8b: " Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 113/422] mtd: rawnand: fsl_ifc: check result of SRAM initialization Greg Kroah-Hartman
                   ` (313 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Thomas Petazzoni, Miquel Raynal, Sasha Levin

From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>

[ Upstream commit 88aa3bbfc020d14b13d67af3f5c08aa992d82cd8 ]

The marvell_nfc_init() function fiddles with some bits of a system
controller on Armada 7K/8K. However, it does a read/modify/write
sequence on GENCONF_CLK_GATING_CTRL and GENCONF_ND_CLK_CTRL, which
isn't safe from a concurrency point of view, as the regmap lock isn't
taken accross the read/modify/write sequence. To solve this issue, use
regmap_update_bits().

While at it, since the "reg" variable is no longer needed for the
read/modify/write sequences, get rid of it for the regmap_write() to
GENCONF_SOC_DEVICE_MUX, and directly pass the value to be written as
argument.

Fixes: 02f26ecf8c772 ("mtd: nand: add reworked Marvell NAND controller driver")
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/mtd/nand/raw/marvell_nand.c | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/drivers/mtd/nand/raw/marvell_nand.c b/drivers/mtd/nand/raw/marvell_nand.c
index 9c90695a885fe..7a84a8f05b46d 100644
--- a/drivers/mtd/nand/raw/marvell_nand.c
+++ b/drivers/mtd/nand/raw/marvell_nand.c
@@ -2710,24 +2710,23 @@ static int marvell_nfc_init(struct marvell_nfc *nfc)
 		struct regmap *sysctrl_base =
 			syscon_regmap_lookup_by_phandle(np,
 							"marvell,system-controller");
-		u32 reg;
 
 		if (IS_ERR(sysctrl_base))
 			return PTR_ERR(sysctrl_base);
 
-		reg = GENCONF_SOC_DEVICE_MUX_NFC_EN |
-		      GENCONF_SOC_DEVICE_MUX_ECC_CLK_RST |
-		      GENCONF_SOC_DEVICE_MUX_ECC_CORE_RST |
-		      GENCONF_SOC_DEVICE_MUX_NFC_INT_EN;
-		regmap_write(sysctrl_base, GENCONF_SOC_DEVICE_MUX, reg);
+		regmap_write(sysctrl_base, GENCONF_SOC_DEVICE_MUX,
+			     GENCONF_SOC_DEVICE_MUX_NFC_EN |
+			     GENCONF_SOC_DEVICE_MUX_ECC_CLK_RST |
+			     GENCONF_SOC_DEVICE_MUX_ECC_CORE_RST |
+			     GENCONF_SOC_DEVICE_MUX_NFC_INT_EN);
 
-		regmap_read(sysctrl_base, GENCONF_CLK_GATING_CTRL, &reg);
-		reg |= GENCONF_CLK_GATING_CTRL_ND_GATE;
-		regmap_write(sysctrl_base, GENCONF_CLK_GATING_CTRL, reg);
+		regmap_update_bits(sysctrl_base, GENCONF_CLK_GATING_CTRL,
+				   GENCONF_CLK_GATING_CTRL_ND_GATE,
+				   GENCONF_CLK_GATING_CTRL_ND_GATE);
 
-		regmap_read(sysctrl_base, GENCONF_ND_CLK_CTRL, &reg);
-		reg |= GENCONF_ND_CLK_CTRL_EN;
-		regmap_write(sysctrl_base, GENCONF_ND_CLK_CTRL, reg);
+		regmap_update_bits(sysctrl_base, GENCONF_ND_CLK_CTRL,
+				   GENCONF_ND_CLK_CTRL_EN,
+				   GENCONF_ND_CLK_CTRL_EN);
 	}
 
 	/* Configure the DMA if appropriate */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 113/422] mtd: rawnand: fsl_ifc: check result of SRAM initialization
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (111 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 112/422] mtd: rawnand: marvell: use regmap_update_bits() for syscon access Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 114/422] mtd: rawnand: fsl_ifc: fixup SRAM init for newer ctrl versions Greg Kroah-Hartman
                   ` (312 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Kurt Kanzenbach, Miquel Raynal, Sasha Levin

From: Kurt Kanzenbach <kurt@linutronix.de>

[ Upstream commit 434655af6a187129d8114640443b27d2cecfb979 ]

The SRAM initialization might fail. If that happens further NAND operations
won't be successful. Therefore, the chip init routine should fail if the SRAM
initialization didn't work.

Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/mtd/nand/raw/fsl_ifc_nand.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/drivers/mtd/nand/raw/fsl_ifc_nand.c b/drivers/mtd/nand/raw/fsl_ifc_nand.c
index 24f59d0066afd..e4f5792dc5893 100644
--- a/drivers/mtd/nand/raw/fsl_ifc_nand.c
+++ b/drivers/mtd/nand/raw/fsl_ifc_nand.c
@@ -761,7 +761,7 @@ static const struct nand_controller_ops fsl_ifc_controller_ops = {
 	.attach_chip = fsl_ifc_attach_chip,
 };
 
-static void fsl_ifc_sram_init(struct fsl_ifc_mtd *priv)
+static int fsl_ifc_sram_init(struct fsl_ifc_mtd *priv)
 {
 	struct fsl_ifc_ctrl *ctrl = priv->ctrl;
 	struct fsl_ifc_runtime __iomem *ifc_runtime = ctrl->rregs;
@@ -805,12 +805,16 @@ static void fsl_ifc_sram_init(struct fsl_ifc_mtd *priv)
 	wait_event_timeout(ctrl->nand_wait, ctrl->nand_stat,
 			   msecs_to_jiffies(IFC_TIMEOUT_MSECS));
 
-	if (ctrl->nand_stat != IFC_NAND_EVTER_STAT_OPC)
+	if (ctrl->nand_stat != IFC_NAND_EVTER_STAT_OPC) {
 		pr_err("fsl-ifc: Failed to Initialise SRAM\n");
+		return -ETIMEDOUT;
+	}
 
 	/* Restore CSOR and CSOR_ext */
 	ifc_out32(csor, &ifc_global->csor_cs[cs].csor);
 	ifc_out32(csor_ext, &ifc_global->csor_cs[cs].csor_ext);
+
+	return 0;
 }
 
 static int fsl_ifc_chip_init(struct fsl_ifc_mtd *priv)
@@ -914,8 +918,13 @@ static int fsl_ifc_chip_init(struct fsl_ifc_mtd *priv)
 		chip->ecc.algo = NAND_ECC_HAMMING;
 	}
 
-	if (ctrl->version >= FSL_IFC_VERSION_1_1_0)
-		fsl_ifc_sram_init(priv);
+	if (ctrl->version >= FSL_IFC_VERSION_1_1_0) {
+		int ret;
+
+		ret = fsl_ifc_sram_init(priv);
+		if (ret)
+			return ret;
+	}
 
 	/*
 	 * As IFC version 2.0.0 has 16KB of internal SRAM as compared to older
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 114/422] mtd: rawnand: fsl_ifc: fixup SRAM init for newer ctrl versions
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (112 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 113/422] mtd: rawnand: fsl_ifc: check result of SRAM initialization Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 115/422] mtd: rawnand: qcom: dont include dma-direct.h Greg Kroah-Hartman
                   ` (311 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Kurt Kanzenbach, Miquel Raynal, Sasha Levin

From: Kurt Kanzenbach <kurt@linutronix.de>

[ Upstream commit ff8648f29fe58c2d94d32a076d2de7b92be4b485 ]

Newer versions of the IFC controller use a different method of initializing the
internal SRAM: Instead of reading from flash, a bit in the NAND configuration
register has to be set in order to trigger the self-initializing process.

Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/mtd/nand/raw/fsl_ifc_nand.c | 33 +++++++++++++++++++++++------
 include/linux/fsl_ifc.h             |  2 ++
 2 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/drivers/mtd/nand/raw/fsl_ifc_nand.c b/drivers/mtd/nand/raw/fsl_ifc_nand.c
index e4f5792dc5893..7e7729df78278 100644
--- a/drivers/mtd/nand/raw/fsl_ifc_nand.c
+++ b/drivers/mtd/nand/raw/fsl_ifc_nand.c
@@ -30,6 +30,7 @@
 #include <linux/mtd/partitions.h>
 #include <linux/mtd/nand_ecc.h>
 #include <linux/fsl_ifc.h>
+#include <linux/iopoll.h>
 
 #define ERR_BYTE		0xFF /* Value returned for read
 					bytes when read failed	*/
@@ -769,6 +770,27 @@ static int fsl_ifc_sram_init(struct fsl_ifc_mtd *priv)
 	uint32_t csor = 0, csor_8k = 0, csor_ext = 0;
 	uint32_t cs = priv->bank;
 
+	if (ctrl->version < FSL_IFC_VERSION_1_1_0)
+		return 0;
+
+	if (ctrl->version > FSL_IFC_VERSION_1_1_0) {
+		u32 ncfgr, status;
+		int ret;
+
+		/* Trigger auto initialization */
+		ncfgr = ifc_in32(&ifc_runtime->ifc_nand.ncfgr);
+		ifc_out32(ncfgr | IFC_NAND_NCFGR_SRAM_INIT_EN, &ifc_runtime->ifc_nand.ncfgr);
+
+		/* Wait until done */
+		ret = readx_poll_timeout(ifc_in32, &ifc_runtime->ifc_nand.ncfgr,
+					 status, !(status & IFC_NAND_NCFGR_SRAM_INIT_EN),
+					 10, IFC_TIMEOUT_MSECS * 1000);
+		if (ret)
+			dev_err(priv->dev, "Failed to initialize SRAM!\n");
+
+		return ret;
+	}
+
 	/* Save CSOR and CSOR_ext */
 	csor = ifc_in32(&ifc_global->csor_cs[cs].csor);
 	csor_ext = ifc_in32(&ifc_global->csor_cs[cs].csor_ext);
@@ -825,6 +847,7 @@ static int fsl_ifc_chip_init(struct fsl_ifc_mtd *priv)
 	struct nand_chip *chip = &priv->chip;
 	struct mtd_info *mtd = nand_to_mtd(&priv->chip);
 	u32 csor;
+	int ret;
 
 	/* Fill in fsl_ifc_mtd structure */
 	mtd->dev.parent = priv->dev;
@@ -918,13 +941,9 @@ static int fsl_ifc_chip_init(struct fsl_ifc_mtd *priv)
 		chip->ecc.algo = NAND_ECC_HAMMING;
 	}
 
-	if (ctrl->version >= FSL_IFC_VERSION_1_1_0) {
-		int ret;
-
-		ret = fsl_ifc_sram_init(priv);
-		if (ret)
-			return ret;
-	}
+	ret = fsl_ifc_sram_init(priv);
+	if (ret)
+		return ret;
 
 	/*
 	 * As IFC version 2.0.0 has 16KB of internal SRAM as compared to older
diff --git a/include/linux/fsl_ifc.h b/include/linux/fsl_ifc.h
index 3fdfede2f0f3e..5f343b796ad95 100644
--- a/include/linux/fsl_ifc.h
+++ b/include/linux/fsl_ifc.h
@@ -274,6 +274,8 @@
  */
 /* Auto Boot Mode */
 #define IFC_NAND_NCFGR_BOOT		0x80000000
+/* SRAM Initialization */
+#define IFC_NAND_NCFGR_SRAM_INIT_EN	0x20000000
 /* Addressing Mode-ROW0+n/COL0 */
 #define IFC_NAND_NCFGR_ADDR_MODE_RC0	0x00000000
 /* Addressing Mode-ROW0+n/COL0+n */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 115/422] mtd: rawnand: qcom: dont include dma-direct.h
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (113 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 114/422] mtd: rawnand: fsl_ifc: fixup SRAM init for newer ctrl versions Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 116/422] IB/mlx5: Change TX affinity assignment in RoCE LAG mode Greg Kroah-Hartman
                   ` (310 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Christoph Hellwig, Miquel Raynal,
	Sasha Levin

From: Christoph Hellwig <hch@lst.de>

[ Upstream commit ab0fb17c7d46406e1aac2dda265874751946626d ]

A recent commit removed the incorrect use of phys_to_dma from this
driver, but failed to remove the dma-direct.h include, so do that
now.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/mtd/nand/raw/qcom_nandc.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/mtd/nand/raw/qcom_nandc.c b/drivers/mtd/nand/raw/qcom_nandc.c
index 880e75f63a19b..07d8750313fd6 100644
--- a/drivers/mtd/nand/raw/qcom_nandc.c
+++ b/drivers/mtd/nand/raw/qcom_nandc.c
@@ -23,7 +23,6 @@
 #include <linux/of_device.h>
 #include <linux/delay.h>
 #include <linux/dma/qcom_bam_dma.h>
-#include <linux/dma-direct.h> /* XXX: drivers shall never use this directly! */
 
 /* NANDc reg offsets */
 #define	NAND_FLASH_CMD			0x00
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 116/422] IB/mlx5: Change TX affinity assignment in RoCE LAG mode
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (114 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 115/422] mtd: rawnand: qcom: dont include dma-direct.h Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 117/422] qxl: fix null-pointer crash during suspend Greg Kroah-Hartman
                   ` (309 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Majd Dibbiny, Moni Shoua,
	Leon Romanovsky, Jason Gunthorpe, Sasha Levin

From: Majd Dibbiny <majd@mellanox.com>

[ Upstream commit c6a21c3864fc7f5febae7d096cd136f397c791f2 ]

In the current code, the TX affinity is per RoCE device, which can cause
unfairness between different contexts. e.g. if we open two contexts, and
each open 10 QPs concurrently, all of the QPs of the first context might
end up on the first port instead of distributed on the two ports as
expected

To overcome this unfairness between processes, we maintain per device TX
affinity, and per process TX affinity.

The allocation algorithm is as follow:

1. Hold two tx_port_affinity atomic variables, one per RoCE device and one
   per ucontext. Both initialized to 0.

2. In mlx5_ib_alloc_ucontext do:
 2.1. ucontext.tx_port_affinity = device.tx_port_affinity
 2.2. device.tx_port_affinity += 1

3. In modify QP INIT2RST:
 3.1. qp.tx_port_affinity = ucontext.tx_port_affinity % MLX5_PORT_NUM
 3.2. ucontext.tx_port_affinity += 1

Signed-off-by: Majd Dibbiny <majd@mellanox.com>
Reviewed-by: Moni Shoua <monis@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/hw/mlx5/main.c    |  8 ++++++
 drivers/infiniband/hw/mlx5/mlx5_ib.h |  4 ++-
 drivers/infiniband/hw/mlx5/qp.c      | 37 +++++++++++++++++++++++++---
 3 files changed, 44 insertions(+), 5 deletions(-)

diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
index c05eae93170eb..f4ffdc588ea07 100644
--- a/drivers/infiniband/hw/mlx5/main.c
+++ b/drivers/infiniband/hw/mlx5/main.c
@@ -1823,6 +1823,14 @@ static struct ib_ucontext *mlx5_ib_alloc_ucontext(struct ib_device *ibdev,
 	context->lib_caps = req.lib_caps;
 	print_lib_caps(dev, context->lib_caps);
 
+	if (mlx5_lag_is_active(dev->mdev)) {
+		u8 port = mlx5_core_native_port_num(dev->mdev);
+
+		atomic_set(&context->tx_port_affinity,
+			   atomic_add_return(
+				   1, &dev->roce[port].tx_port_affinity));
+	}
+
 	return &context->ibucontext;
 
 out_mdev:
diff --git a/drivers/infiniband/hw/mlx5/mlx5_ib.h b/drivers/infiniband/hw/mlx5/mlx5_ib.h
index 941d1df54631a..6a060c84598fe 100644
--- a/drivers/infiniband/hw/mlx5/mlx5_ib.h
+++ b/drivers/infiniband/hw/mlx5/mlx5_ib.h
@@ -139,6 +139,8 @@ struct mlx5_ib_ucontext {
 	u64			lib_caps;
 	DECLARE_BITMAP(dm_pages, MLX5_MAX_MEMIC_PAGES);
 	u16			devx_uid;
+	/* For RoCE LAG TX affinity */
+	atomic_t		tx_port_affinity;
 };
 
 static inline struct mlx5_ib_ucontext *to_mucontext(struct ib_ucontext *ibucontext)
@@ -700,7 +702,7 @@ struct mlx5_roce {
 	rwlock_t		netdev_lock;
 	struct net_device	*netdev;
 	struct notifier_block	nb;
-	atomic_t		next_port;
+	atomic_t		tx_port_affinity;
 	enum ib_port_state last_port_state;
 	struct mlx5_ib_dev	*dev;
 	u8			native_port_num;
diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c
index 900f85ce0fb08..2e7230392a498 100644
--- a/drivers/infiniband/hw/mlx5/qp.c
+++ b/drivers/infiniband/hw/mlx5/qp.c
@@ -2910,6 +2910,37 @@ static int modify_raw_packet_qp(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
 	return 0;
 }
 
+static unsigned int get_tx_affinity(struct mlx5_ib_dev *dev,
+				    struct mlx5_ib_pd *pd,
+				    struct mlx5_ib_qp_base *qp_base,
+				    u8 port_num)
+{
+	struct mlx5_ib_ucontext *ucontext = NULL;
+	unsigned int tx_port_affinity;
+
+	if (pd && pd->ibpd.uobject && pd->ibpd.uobject->context)
+		ucontext = to_mucontext(pd->ibpd.uobject->context);
+
+	if (ucontext) {
+		tx_port_affinity = (unsigned int)atomic_add_return(
+					   1, &ucontext->tx_port_affinity) %
+					   MLX5_MAX_PORTS +
+				   1;
+		mlx5_ib_dbg(dev, "Set tx affinity 0x%x to qpn 0x%x ucontext %p\n",
+				tx_port_affinity, qp_base->mqp.qpn, ucontext);
+	} else {
+		tx_port_affinity =
+			(unsigned int)atomic_add_return(
+				1, &dev->roce[port_num].tx_port_affinity) %
+				MLX5_MAX_PORTS +
+			1;
+		mlx5_ib_dbg(dev, "Set tx affinity 0x%x to qpn 0x%x\n",
+				tx_port_affinity, qp_base->mqp.qpn);
+	}
+
+	return tx_port_affinity;
+}
+
 static int __mlx5_ib_modify_qp(struct ib_qp *ibqp,
 			       const struct ib_qp_attr *attr, int attr_mask,
 			       enum ib_qp_state cur_state, enum ib_qp_state new_state,
@@ -2975,6 +3006,7 @@ static int __mlx5_ib_modify_qp(struct ib_qp *ibqp,
 	if (!context)
 		return -ENOMEM;
 
+	pd = get_pd(qp);
 	context->flags = cpu_to_be32(mlx5_st << 16);
 
 	if (!(attr_mask & IB_QP_PATH_MIG_STATE)) {
@@ -3003,9 +3035,7 @@ static int __mlx5_ib_modify_qp(struct ib_qp *ibqp,
 		    (ibqp->qp_type == IB_QPT_XRC_TGT)) {
 			if (mlx5_lag_is_active(dev->mdev)) {
 				u8 p = mlx5_core_native_port_num(dev->mdev);
-				tx_affinity = (unsigned int)atomic_add_return(1,
-						&dev->roce[p].next_port) %
-						MLX5_MAX_PORTS + 1;
+				tx_affinity = get_tx_affinity(dev, pd, base, p);
 				context->flags |= cpu_to_be32(tx_affinity << 24);
 			}
 		}
@@ -3063,7 +3093,6 @@ static int __mlx5_ib_modify_qp(struct ib_qp *ibqp,
 			goto out;
 	}
 
-	pd = get_pd(qp);
 	get_cqs(qp->ibqp.qp_type, qp->ibqp.send_cq, qp->ibqp.recv_cq,
 		&send_cq, &recv_cq);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 117/422] qxl: fix null-pointer crash during suspend
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (115 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 116/422] IB/mlx5: Change TX affinity assignment in RoCE LAG mode Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 118/422] mac80211: fix saving a few HE values Greg Kroah-Hartman
                   ` (308 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Peter Wu, Gerd Hoffmann, Sasha Levin

From: Peter Wu <peter@lekensteyn.nl>

[ Upstream commit 7948a2b15873319d1bff4d37c09b9f2bf87b9021 ]

"crtc->helper_private" is not initialized by the QXL driver and thus the
"crtc_funcs->disable" call would crash (resulting in suspend failure).
Fix this by converting the suspend/resume functions to use the
drm_mode_config_helper_* helpers.

Tested system sleep with QEMU 3.0 using "echo mem > /sys/power/state".
During suspend the following message is visible from QEMU:

    spice/server/display-channel.c:2425:display_channel_validate_surface: canvas address is 0x7fd05da68308 for 0 (and is NULL)
    spice/server/display-channel.c:2426:display_channel_validate_surface: failed on 0

This seems to be triggered by QXL_IO_NOTIFY_CMD after
QXL_IO_DESTROY_PRIMARY_ASYNC, but aside from the warning things still
seem to work (tested with both the GTK and -spice options).

Signed-off-by: Peter Wu <peter@lekensteyn.nl>
Link: http://patchwork.freedesktop.org/patch/msgid/20180904202747.14968-1-peter@lekensteyn.nl
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/qxl/qxl_drv.c | 26 +++++---------------------
 1 file changed, 5 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c
index 2445e75cf7ea6..d00f45eed03ca 100644
--- a/drivers/gpu/drm/qxl/qxl_drv.c
+++ b/drivers/gpu/drm/qxl/qxl_drv.c
@@ -136,20 +136,11 @@ static int qxl_drm_freeze(struct drm_device *dev)
 {
 	struct pci_dev *pdev = dev->pdev;
 	struct qxl_device *qdev = dev->dev_private;
-	struct drm_crtc *crtc;
-
-	drm_kms_helper_poll_disable(dev);
-
-	console_lock();
-	qxl_fbdev_set_suspend(qdev, 1);
-	console_unlock();
+	int ret;
 
-	/* unpin the front buffers */
-	list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
-		const struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
-		if (crtc->enabled)
-			(*crtc_funcs->disable)(crtc);
-	}
+	ret = drm_mode_config_helper_suspend(dev);
+	if (ret)
+		return ret;
 
 	qxl_destroy_monitors_object(qdev);
 	qxl_surf_evict(qdev);
@@ -175,14 +166,7 @@ static int qxl_drm_resume(struct drm_device *dev, bool thaw)
 	}
 
 	qxl_create_monitors_object(qdev);
-	drm_helper_resume_force_mode(dev);
-
-	console_lock();
-	qxl_fbdev_set_suspend(qdev, 0);
-	console_unlock();
-
-	drm_kms_helper_poll_enable(dev);
-	return 0;
+	return drm_mode_config_helper_resume(dev);
 }
 
 static int qxl_pm_suspend(struct device *dev)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 118/422] mac80211: fix saving a few HE values
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (116 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 117/422] qxl: fix null-pointer crash during suspend Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 119/422] cfg80211: validate wmm rule when setting Greg Kroah-Hartman
                   ` (307 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Naftali Goldstein, Luca Coelho,
	Johannes Berg, Sasha Levin

From: Naftali Goldstein <naftali.goldstein@intel.com>

[ Upstream commit 77cbbc35a49b75969d98edce9400beb21720aa39 ]

After masking the he_oper_params, to get the requested values as
integers one must rshift and not lshift.  Fix that by using the
le32_get_bits() macro.

Fixes: 41cbb0f5a295 ("mac80211: add support for HE")
Signed-off-by: Naftali Goldstein <naftali.goldstein@intel.com>
[converted to use le32_get_bits()]
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/mac80211/mlme.c | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 5c9dcafbc3424..b0667467337d4 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -3255,19 +3255,16 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
 	}
 
 	if (bss_conf->he_support) {
-		u32 he_oper_params =
-			le32_to_cpu(elems.he_operation->he_oper_params);
+		bss_conf->bss_color =
+			le32_get_bits(elems.he_operation->he_oper_params,
+				      IEEE80211_HE_OPERATION_BSS_COLOR_MASK);
 
-		bss_conf->bss_color = he_oper_params &
-				      IEEE80211_HE_OPERATION_BSS_COLOR_MASK;
 		bss_conf->htc_trig_based_pkt_ext =
-			(he_oper_params &
-			 IEEE80211_HE_OPERATION_DFLT_PE_DURATION_MASK) <<
-			IEEE80211_HE_OPERATION_DFLT_PE_DURATION_OFFSET;
+			le32_get_bits(elems.he_operation->he_oper_params,
+			      IEEE80211_HE_OPERATION_DFLT_PE_DURATION_MASK);
 		bss_conf->frame_time_rts_th =
-			(he_oper_params &
-			 IEEE80211_HE_OPERATION_RTS_THRESHOLD_MASK) <<
-			IEEE80211_HE_OPERATION_RTS_THRESHOLD_OFFSET;
+			le32_get_bits(elems.he_operation->he_oper_params,
+			      IEEE80211_HE_OPERATION_RTS_THRESHOLD_MASK);
 
 		bss_conf->multi_sta_back_32bit =
 			sta->sta.he_cap.he_cap_elem.mac_cap_info[2] &
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 119/422] cfg80211: validate wmm rule when setting
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (117 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 118/422] mac80211: fix saving a few HE values Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 120/422] f2fs: avoid wrong decrypted data from disk Greg Kroah-Hartman
                   ` (306 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Stanislaw Gruszka, Johannes Berg,
	Sasha Levin

From: Stanislaw Gruszka <sgruszka@redhat.com>

[ Upstream commit 014f5a250fc49fa8c6cd50093e725e71f3ae52da ]

Add validation check for wmm rule when copy rules from fwdb and print
error when rule is invalid.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/wireless/reg.c | 64 +++++++++++++++++++++++++---------------------
 1 file changed, 35 insertions(+), 29 deletions(-)

diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 68ae97ef8bf0b..64841238df855 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -847,22 +847,36 @@ static bool valid_regdb(const u8 *data, unsigned int size)
 	return true;
 }
 
-static void set_wmm_rule(struct ieee80211_reg_rule *rrule,
-			 struct fwdb_wmm_rule *wmm)
-{
-	struct ieee80211_wmm_rule *rule = &rrule->wmm_rule;
-	unsigned int i;
+static void set_wmm_rule(const struct fwdb_header *db,
+			 const struct fwdb_country *country,
+			 const struct fwdb_rule *rule,
+			 struct ieee80211_reg_rule *rrule)
+{
+	struct ieee80211_wmm_rule *wmm_rule = &rrule->wmm_rule;
+	struct fwdb_wmm_rule *wmm;
+	unsigned int i, wmm_ptr;
+
+	wmm_ptr = be16_to_cpu(rule->wmm_ptr) << 2;
+	wmm = (void *)((u8 *)db + wmm_ptr);
+
+	if (!valid_wmm(wmm)) {
+		pr_err("Invalid regulatory WMM rule %u-%u in domain %c%c\n",
+		       be32_to_cpu(rule->start), be32_to_cpu(rule->end),
+		       country->alpha2[0], country->alpha2[1]);
+		return;
+	}
 
 	for (i = 0; i < IEEE80211_NUM_ACS; i++) {
-		rule->client[i].cw_min =
+		wmm_rule->client[i].cw_min =
 			ecw2cw((wmm->client[i].ecw & 0xf0) >> 4);
-		rule->client[i].cw_max = ecw2cw(wmm->client[i].ecw & 0x0f);
-		rule->client[i].aifsn =  wmm->client[i].aifsn;
-		rule->client[i].cot = 1000 * be16_to_cpu(wmm->client[i].cot);
-		rule->ap[i].cw_min = ecw2cw((wmm->ap[i].ecw & 0xf0) >> 4);
-		rule->ap[i].cw_max = ecw2cw(wmm->ap[i].ecw & 0x0f);
-		rule->ap[i].aifsn = wmm->ap[i].aifsn;
-		rule->ap[i].cot = 1000 * be16_to_cpu(wmm->ap[i].cot);
+		wmm_rule->client[i].cw_max = ecw2cw(wmm->client[i].ecw & 0x0f);
+		wmm_rule->client[i].aifsn =  wmm->client[i].aifsn;
+		wmm_rule->client[i].cot =
+			1000 * be16_to_cpu(wmm->client[i].cot);
+		wmm_rule->ap[i].cw_min = ecw2cw((wmm->ap[i].ecw & 0xf0) >> 4);
+		wmm_rule->ap[i].cw_max = ecw2cw(wmm->ap[i].ecw & 0x0f);
+		wmm_rule->ap[i].aifsn = wmm->ap[i].aifsn;
+		wmm_rule->ap[i].cot = 1000 * be16_to_cpu(wmm->ap[i].cot);
 	}
 
 	rrule->has_wmm = true;
@@ -870,7 +884,7 @@ static void set_wmm_rule(struct ieee80211_reg_rule *rrule,
 
 static int __regdb_query_wmm(const struct fwdb_header *db,
 			     const struct fwdb_country *country, int freq,
-			     struct ieee80211_reg_rule *rule)
+			     struct ieee80211_reg_rule *rrule)
 {
 	unsigned int ptr = be16_to_cpu(country->coll_ptr) << 2;
 	struct fwdb_collection *coll = (void *)((u8 *)db + ptr);
@@ -879,18 +893,14 @@ static int __regdb_query_wmm(const struct fwdb_header *db,
 	for (i = 0; i < coll->n_rules; i++) {
 		__be16 *rules_ptr = (void *)((u8 *)coll + ALIGN(coll->len, 2));
 		unsigned int rule_ptr = be16_to_cpu(rules_ptr[i]) << 2;
-		struct fwdb_rule *rrule = (void *)((u8 *)db + rule_ptr);
-		struct fwdb_wmm_rule *wmm;
-		unsigned int wmm_ptr;
+		struct fwdb_rule *rule = (void *)((u8 *)db + rule_ptr);
 
-		if (rrule->len < offsetofend(struct fwdb_rule, wmm_ptr))
+		if (rule->len < offsetofend(struct fwdb_rule, wmm_ptr))
 			continue;
 
-		if (freq >= KHZ_TO_MHZ(be32_to_cpu(rrule->start)) &&
-		    freq <= KHZ_TO_MHZ(be32_to_cpu(rrule->end))) {
-			wmm_ptr = be16_to_cpu(rrule->wmm_ptr) << 2;
-			wmm = (void *)((u8 *)db + wmm_ptr);
-			set_wmm_rule(rule, wmm);
+		if (freq >= KHZ_TO_MHZ(be32_to_cpu(rule->start)) &&
+		    freq <= KHZ_TO_MHZ(be32_to_cpu(rule->end))) {
+			set_wmm_rule(db, country, rule, rrule);
 			return 0;
 		}
 	}
@@ -972,12 +982,8 @@ static int regdb_query_country(const struct fwdb_header *db,
 		if (rule->len >= offsetofend(struct fwdb_rule, cac_timeout))
 			rrule->dfs_cac_ms =
 				1000 * be16_to_cpu(rule->cac_timeout);
-		if (rule->len >= offsetofend(struct fwdb_rule, wmm_ptr)) {
-			u32 wmm_ptr = be16_to_cpu(rule->wmm_ptr) << 2;
-			struct fwdb_wmm_rule *wmm = (void *)((u8 *)db + wmm_ptr);
-
-			set_wmm_rule(rrule, wmm);
-		}
+		if (rule->len >= offsetofend(struct fwdb_rule, wmm_ptr))
+			set_wmm_rule(db, country, rule, rrule);
 	}
 
 	return reg_schedule_apply(regdom);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 120/422] f2fs: avoid wrong decrypted data from disk
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (118 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 119/422] cfg80211: validate wmm rule when setting Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 121/422] net: lan78xx: Bail out if lan78xx_get_endpoints fails Greg Kroah-Hartman
                   ` (305 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Chao Yu, Jaegeuk Kim, Sasha Levin

From: Jaegeuk Kim <jaegeuk@kernel.org>

[ Upstream commit 0ded69f632bb717be9aeea3ae74e29050fcb060c ]

1. Create a file in an encrypted directory
2. Do GC & drop caches
3. Read stale data before its bio for metapage was not issued yet

Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/f2fs/data.c    | 18 ++++++++++--------
 fs/f2fs/f2fs.h    |  2 +-
 fs/f2fs/file.c    |  3 +--
 fs/f2fs/segment.c |  6 +++++-
 4 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 9511466bc7857..c61beaedf0789 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -575,9 +575,6 @@ static struct bio *f2fs_grab_read_bio(struct inode *inode, block_t blkaddr,
 		ctx->bio = bio;
 		ctx->enabled_steps = post_read_steps;
 		bio->bi_private = ctx;
-
-		/* wait the page to be moved by cleaning */
-		f2fs_wait_on_block_writeback(sbi, blkaddr);
 	}
 
 	return bio;
@@ -592,6 +589,9 @@ static int f2fs_submit_page_read(struct inode *inode, struct page *page,
 	if (IS_ERR(bio))
 		return PTR_ERR(bio);
 
+	/* wait for GCed page writeback via META_MAPPING */
+	f2fs_wait_on_block_writeback(inode, blkaddr);
+
 	if (bio_add_page(bio, page, PAGE_SIZE, 0) < PAGE_SIZE) {
 		bio_put(bio);
 		return -EFAULT;
@@ -1569,6 +1569,12 @@ submit_and_realloc:
 			}
 		}
 
+		/*
+		 * If the page is under writeback, we need to wait for
+		 * its completion to see the correct decrypted data.
+		 */
+		f2fs_wait_on_block_writeback(inode, block_nr);
+
 		if (bio_add_page(bio, page, blocksize, 0) < blocksize)
 			goto submit_and_realloc;
 
@@ -1637,7 +1643,7 @@ static int encrypt_one_page(struct f2fs_io_info *fio)
 		return 0;
 
 	/* wait for GCed page writeback via META_MAPPING */
-	f2fs_wait_on_block_writeback(fio->sbi, fio->old_blkaddr);
+	f2fs_wait_on_block_writeback(inode, fio->old_blkaddr);
 
 retry_encrypt:
 	fio->encrypted_page = fscrypt_encrypt_page(inode, fio->page,
@@ -2402,10 +2408,6 @@ repeat:
 
 	f2fs_wait_on_page_writeback(page, DATA, false);
 
-	/* wait for GCed page writeback via META_MAPPING */
-	if (f2fs_post_read_required(inode))
-		f2fs_wait_on_block_writeback(sbi, blkaddr);
-
 	if (len == PAGE_SIZE || PageUptodate(page))
 		return 0;
 
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index fb216488d67a9..6d361c8c61306 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -2973,7 +2973,7 @@ void f2fs_allocate_data_block(struct f2fs_sb_info *sbi, struct page *page,
 			struct f2fs_io_info *fio, bool add_list);
 void f2fs_wait_on_page_writeback(struct page *page,
 			enum page_type type, bool ordered);
-void f2fs_wait_on_block_writeback(struct f2fs_sb_info *sbi, block_t blkaddr);
+void f2fs_wait_on_block_writeback(struct inode *inode, block_t blkaddr);
 void f2fs_write_data_summaries(struct f2fs_sb_info *sbi, block_t start_blk);
 void f2fs_write_node_summaries(struct f2fs_sb_info *sbi, block_t start_blk);
 int f2fs_lookup_journal_in_cursum(struct f2fs_journal *journal, int type,
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 8d1eb8dec6058..6972c6d7c3893 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -112,8 +112,7 @@ mapped:
 	f2fs_wait_on_page_writeback(page, DATA, false);
 
 	/* wait for GCed page writeback via META_MAPPING */
-	if (f2fs_post_read_required(inode))
-		f2fs_wait_on_block_writeback(sbi, dn.data_blkaddr);
+	f2fs_wait_on_block_writeback(inode, dn.data_blkaddr);
 
 out_sem:
 	up_read(&F2FS_I(inode)->i_mmap_sem);
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 10d5dcdb34be6..d78009694f3fd 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -3214,10 +3214,14 @@ void f2fs_wait_on_page_writeback(struct page *page,
 	}
 }
 
-void f2fs_wait_on_block_writeback(struct f2fs_sb_info *sbi, block_t blkaddr)
+void f2fs_wait_on_block_writeback(struct inode *inode, block_t blkaddr)
 {
+	struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
 	struct page *cpage;
 
+	if (!f2fs_post_read_required(inode))
+		return;
+
 	if (!is_valid_data_blkaddr(sbi, blkaddr))
 		return;
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 121/422] net: lan78xx: Bail out if lan78xx_get_endpoints fails
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (119 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 120/422] f2fs: avoid wrong decrypted data from disk Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 122/422] rtnetlink: move type calculation out of loop Greg Kroah-Hartman
                   ` (304 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Stefan Wahren,
	Raghuram Chary Jallipalli, David S. Miller, Sasha Levin

From: Stefan Wahren <stefan.wahren@i2se.com>

[ Upstream commit fa8cd98c06407b5798b927cd7fd14d30f360ed02 ]

We need to bail out if lan78xx_get_endpoints() fails, otherwise the
result is overwritten.

Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet")
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Reviewed-by: Raghuram Chary Jallipalli <raghuramchary.jallipalli@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/usb/lan78xx.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
index 3a172fcb06fe0..50bf4b2080d5f 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -2950,6 +2950,11 @@ static int lan78xx_bind(struct lan78xx_net *dev, struct usb_interface *intf)
 	int i;
 
 	ret = lan78xx_get_endpoints(dev, intf);
+	if (ret) {
+		netdev_warn(dev->net, "lan78xx_get_endpoints failed: %d\n",
+			    ret);
+		return ret;
+	}
 
 	dev->data[0] = (unsigned long)kzalloc(sizeof(*pdata), GFP_KERNEL);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 122/422] rtnetlink: move type calculation out of loop
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (120 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 121/422] net: lan78xx: Bail out if lan78xx_get_endpoints fails Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 123/422] ASoC: sgtl5000: avoid division by zero if lo_vag is zero Greg Kroah-Hartman
                   ` (303 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Christian Brauner, David S. Miller,
	Sasha Levin

From: Christian Brauner <christian@brauner.io>

[ Upstream commit 87ccbb1f943625884b824c5560f635dcea8e4510 ]

I don't see how the type - which is one of
RTM_{GETADDR,GETROUTE,GETNETCONF} - can change. So do the message type
calculation once before entering the for loop.

Signed-off-by: Christian Brauner <christian@brauner.io>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/core/rtnetlink.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index 95768a9fca06e..c0de73b125802 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -3268,13 +3268,13 @@ static int rtnl_dump_all(struct sk_buff *skb, struct netlink_callback *cb)
 {
 	int idx;
 	int s_idx = cb->family;
+	int type = cb->nlh->nlmsg_type - RTM_BASE;
 
 	if (s_idx == 0)
 		s_idx = 1;
 
 	for (idx = 1; idx <= RTNL_FAMILY_MAX; idx++) {
 		struct rtnl_link **tab;
-		int type = cb->nlh->nlmsg_type-RTM_BASE;
 		struct rtnl_link *link;
 		rtnl_dumpit_func dumpit;
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 123/422] ASoC: sgtl5000: avoid division by zero if lo_vag is zero
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (121 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 122/422] rtnetlink: move type calculation out of loop Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 124/422] ath10k: avoid possible memory access violation Greg Kroah-Hartman
                   ` (302 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Colin Ian King, Mark Brown, Sasha Levin

From: Colin Ian King <colin.king@canonical.com>

[ Upstream commit 9ab708aef61f5620113269a9d1bdb1543d1207d0 ]

In the case where lo_vag <= SGTL5000_LINE_OUT_GND_BASE, lo_vag
is set to zero and later vol_quot is computed by dividing by
lo_vag causing a division by zero error.  Fix this by avoiding
a zero division and set vol_quot to zero in this specific case
so that the lowest setting for i is correctly set.

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/codecs/sgtl5000.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c
index 64a52d495b1f5..896412d11a31c 100644
--- a/sound/soc/codecs/sgtl5000.c
+++ b/sound/soc/codecs/sgtl5000.c
@@ -1387,7 +1387,7 @@ static int sgtl5000_set_power_regs(struct snd_soc_component *component)
 	 * Searching for a suitable index solving this formula:
 	 * idx = 40 * log10(vag_val / lo_cagcntrl) + 15
 	 */
-	vol_quot = (vag * 100) / lo_vag;
+	vol_quot = lo_vag ? (vag * 100) / lo_vag : 0;
 	lo_vol = 0;
 	for (i = 0; i < ARRAY_SIZE(vol_quot_table); i++) {
 		if (vol_quot >= vol_quot_table[i])
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 124/422] ath10k: avoid possible memory access violation
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (122 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 123/422] ASoC: sgtl5000: avoid division by zero if lo_vag is zero Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 125/422] ARM: dts: exynos: Disable pull control for S5M8767 PMIC Greg Kroah-Hartman
                   ` (301 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, K.T.VIJAYAKUMAAR, Kalle Valo, Sasha Levin

From: K.T.VIJAYAKUMAAR <vijay.bvb@samsung.com>

[ Upstream commit 97c69a70dc2cecb2c3b96a66529e0082dabc2d2c ]

array "ctl_power_table" access index "pream" is initialized with -1 and
is raised as a static analysis tool issue.
[drivers\net\wireless\ath\ath10k\wmi.c:4719] ->
[drivers\net\wireless\ath\ath10k\wmi.c:4730]: (error) Array index -1 is
out of bounds.

Since the "pream" index for accessing ctl_power_table array is initialized
with -1, there is a chance of memory access violation for the cases below.
1) wmi_pdev_tpc_final_table_event change frequency is between 2483 and 5180
2) pream_idx is out of the enumeration ranges of wmi_tpc_pream_2ghz,
wmi_tpc_pream_5ghz

Signed-off-by: K.T.VIJAYAKUMAAR <vijay.bvb@samsung.com>
[kvalo@codeaurora.org: clean up the warning message]
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/ath/ath10k/wmi.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
index 9f31b9a108507..583147f00fa4e 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
@@ -4785,6 +4785,13 @@ ath10k_wmi_tpc_final_get_rate(struct ath10k *ar,
 		}
 	}
 
+	if (pream == -1) {
+		ath10k_warn(ar, "unknown wmi tpc final index and frequency: %u, %u\n",
+			    pream_idx, __le32_to_cpu(ev->chan_freq));
+		tpc = 0;
+		goto out;
+	}
+
 	if (pream == 4)
 		tpc = min_t(u8, ev->rates_array[rate_idx],
 			    ev->max_reg_allow_pow[ch]);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 125/422] ARM: dts: exynos: Disable pull control for S5M8767 PMIC
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (123 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 124/422] ath10k: avoid possible memory access violation Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 126/422] ath10k: wmi: disable softirqs while calling ieee80211_rx Greg Kroah-Hartman
                   ` (300 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Marek Szyprowski,
	Krzysztof Kozlowski, Sasha Levin

From: Marek Szyprowski <m.szyprowski@samsung.com>

[ Upstream commit ef2ecab9af5feae97c47b7f61cdd96f7f49b2c23 ]

S5M8767 PMIC interrupt line on Exynos5250-based Arndale board has
external pull-up resistors, so disable any pull control for it in
in controller node. This fixes support for S5M8767 interrupts and
enables operation of wakeup from S5M8767 RTC alarm.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/exynos5250-arndale.dts | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/arch/arm/boot/dts/exynos5250-arndale.dts b/arch/arm/boot/dts/exynos5250-arndale.dts
index 9c8ab4b7fb2cf..4ab1f1c66c27f 100644
--- a/arch/arm/boot/dts/exynos5250-arndale.dts
+++ b/arch/arm/boot/dts/exynos5250-arndale.dts
@@ -170,6 +170,8 @@
 		reg = <0x66>;
 		interrupt-parent = <&gpx3>;
 		interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&s5m8767_irq>;
 
 		vinb1-supply = <&main_dc_reg>;
 		vinb2-supply = <&main_dc_reg>;
@@ -530,6 +532,13 @@
 	cap-sd-highspeed;
 };
 
+&pinctrl_0 {
+	s5m8767_irq: s5m8767-irq {
+		samsung,pins = "gpx3-2";
+		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+	};
+};
+
 &rtc {
 	status = "okay";
 };
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 126/422] ath10k: wmi: disable softirqs while calling ieee80211_rx
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (124 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 125/422] ARM: dts: exynos: Disable pull control for S5M8767 PMIC Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 127/422] i2c: mediatek: Use DMA safe buffers for i2c transactions Greg Kroah-Hartman
                   ` (299 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Erik Stromdahl, Kalle Valo, Sasha Levin

From: Erik Stromdahl <erik.stromdahl@gmail.com>

[ Upstream commit 37f62c0d5822f631b786b29a1b1069ab714d1a28 ]

This is done in order not to trig the below warning in
ieee80211_rx_napi:

WARN_ON_ONCE(softirq_count() == 0);

ieee80211_rx_napi requires that softirq's are disabled during
execution.

The High latency bus drivers (SDIO and USB) sometimes call the wmi
ep_rx_complete callback from non softirq context, resulting in a trigger
of the above warning.

Calling ieee80211_rx_ni with softirq's already disabled (e.g., from
softirq context) should be safe as the local_bh_disable and
local_bh_enable functions (called from ieee80211_rx_ni) are fully
reentrant.

Signed-off-by: Erik Stromdahl <erik.stromdahl@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/ath/ath10k/wmi.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
index 583147f00fa4e..40b36e73bb48c 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
@@ -2487,7 +2487,8 @@ int ath10k_wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb)
 		   status->freq, status->band, status->signal,
 		   status->rate_idx);
 
-	ieee80211_rx(ar->hw, skb);
+	ieee80211_rx_ni(ar->hw, skb);
+
 	return 0;
 }
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 127/422] i2c: mediatek: Use DMA safe buffers for i2c transactions
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (125 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 126/422] ath10k: wmi: disable softirqs while calling ieee80211_rx Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-20  1:44   ` Nobuhiro Iwamatsu
  2019-11-19  5:15 ` [PATCH 4.19 128/422] IB/mlx5: Dont hold spin lock while checking device state Greg Kroah-Hartman
                   ` (298 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jun Gao, Wolfram Sang, Sasha Levin

From: Jun Gao <jun.gao@mediatek.com>

[ Upstream commit fc66b39fe36acfd06f716e338de7cd8f9550fad2 ]

DMA mode will always be used in i2c transactions, try to allocate
a DMA safe buffer if the buf of struct i2c_msg used is not DMA safe.

Signed-off-by: Jun Gao <jun.gao@mediatek.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/i2c/busses/i2c-mt65xx.c | 62 +++++++++++++++++++++++++++++----
 1 file changed, 55 insertions(+), 7 deletions(-)

diff --git a/drivers/i2c/busses/i2c-mt65xx.c b/drivers/i2c/busses/i2c-mt65xx.c
index 1e57f58fcb001..a74ef76705e0c 100644
--- a/drivers/i2c/busses/i2c-mt65xx.c
+++ b/drivers/i2c/busses/i2c-mt65xx.c
@@ -441,6 +441,8 @@ static int mtk_i2c_do_transfer(struct mtk_i2c *i2c, struct i2c_msg *msgs,
 	u16 control_reg;
 	u16 restart_flag = 0;
 	u32 reg_4g_mode;
+	u8 *dma_rd_buf = NULL;
+	u8 *dma_wr_buf = NULL;
 	dma_addr_t rpaddr = 0;
 	dma_addr_t wpaddr = 0;
 	int ret;
@@ -500,10 +502,18 @@ static int mtk_i2c_do_transfer(struct mtk_i2c *i2c, struct i2c_msg *msgs,
 	if (i2c->op == I2C_MASTER_RD) {
 		writel(I2C_DMA_INT_FLAG_NONE, i2c->pdmabase + OFFSET_INT_FLAG);
 		writel(I2C_DMA_CON_RX, i2c->pdmabase + OFFSET_CON);
-		rpaddr = dma_map_single(i2c->dev, msgs->buf,
+
+		dma_rd_buf = i2c_get_dma_safe_msg_buf(msgs, 0);
+		if (!dma_rd_buf)
+			return -ENOMEM;
+
+		rpaddr = dma_map_single(i2c->dev, dma_rd_buf,
 					msgs->len, DMA_FROM_DEVICE);
-		if (dma_mapping_error(i2c->dev, rpaddr))
+		if (dma_mapping_error(i2c->dev, rpaddr)) {
+			i2c_put_dma_safe_msg_buf(dma_rd_buf, msgs, false);
+
 			return -ENOMEM;
+		}
 
 		if (i2c->dev_comp->support_33bits) {
 			reg_4g_mode = mtk_i2c_set_4g_mode(rpaddr);
@@ -515,10 +525,18 @@ static int mtk_i2c_do_transfer(struct mtk_i2c *i2c, struct i2c_msg *msgs,
 	} else if (i2c->op == I2C_MASTER_WR) {
 		writel(I2C_DMA_INT_FLAG_NONE, i2c->pdmabase + OFFSET_INT_FLAG);
 		writel(I2C_DMA_CON_TX, i2c->pdmabase + OFFSET_CON);
-		wpaddr = dma_map_single(i2c->dev, msgs->buf,
+
+		dma_wr_buf = i2c_get_dma_safe_msg_buf(msgs, 0);
+		if (!dma_wr_buf)
+			return -ENOMEM;
+
+		wpaddr = dma_map_single(i2c->dev, dma_wr_buf,
 					msgs->len, DMA_TO_DEVICE);
-		if (dma_mapping_error(i2c->dev, wpaddr))
+		if (dma_mapping_error(i2c->dev, wpaddr)) {
+			i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, false);
+
 			return -ENOMEM;
+		}
 
 		if (i2c->dev_comp->support_33bits) {
 			reg_4g_mode = mtk_i2c_set_4g_mode(wpaddr);
@@ -530,16 +548,39 @@ static int mtk_i2c_do_transfer(struct mtk_i2c *i2c, struct i2c_msg *msgs,
 	} else {
 		writel(I2C_DMA_CLR_FLAG, i2c->pdmabase + OFFSET_INT_FLAG);
 		writel(I2C_DMA_CLR_FLAG, i2c->pdmabase + OFFSET_CON);
-		wpaddr = dma_map_single(i2c->dev, msgs->buf,
+
+		dma_wr_buf = i2c_get_dma_safe_msg_buf(msgs, 0);
+		if (!dma_wr_buf)
+			return -ENOMEM;
+
+		wpaddr = dma_map_single(i2c->dev, dma_wr_buf,
 					msgs->len, DMA_TO_DEVICE);
-		if (dma_mapping_error(i2c->dev, wpaddr))
+		if (dma_mapping_error(i2c->dev, wpaddr)) {
+			i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, false);
+
 			return -ENOMEM;
-		rpaddr = dma_map_single(i2c->dev, (msgs + 1)->buf,
+		}
+
+		dma_rd_buf = i2c_get_dma_safe_msg_buf((msgs + 1), 0);
+		if (!dma_rd_buf) {
+			dma_unmap_single(i2c->dev, wpaddr,
+					 msgs->len, DMA_TO_DEVICE);
+
+			i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, false);
+
+			return -ENOMEM;
+		}
+
+		rpaddr = dma_map_single(i2c->dev, dma_rd_buf,
 					(msgs + 1)->len,
 					DMA_FROM_DEVICE);
 		if (dma_mapping_error(i2c->dev, rpaddr)) {
 			dma_unmap_single(i2c->dev, wpaddr,
 					 msgs->len, DMA_TO_DEVICE);
+
+			i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, false);
+			i2c_put_dma_safe_msg_buf(dma_rd_buf, (msgs + 1), false);
+
 			return -ENOMEM;
 		}
 
@@ -578,14 +619,21 @@ static int mtk_i2c_do_transfer(struct mtk_i2c *i2c, struct i2c_msg *msgs,
 	if (i2c->op == I2C_MASTER_WR) {
 		dma_unmap_single(i2c->dev, wpaddr,
 				 msgs->len, DMA_TO_DEVICE);
+
+		i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, true);
 	} else if (i2c->op == I2C_MASTER_RD) {
 		dma_unmap_single(i2c->dev, rpaddr,
 				 msgs->len, DMA_FROM_DEVICE);
+
+		i2c_put_dma_safe_msg_buf(dma_rd_buf, msgs, true);
 	} else {
 		dma_unmap_single(i2c->dev, wpaddr, msgs->len,
 				 DMA_TO_DEVICE);
 		dma_unmap_single(i2c->dev, rpaddr, (msgs + 1)->len,
 				 DMA_FROM_DEVICE);
+
+		i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, true);
+		i2c_put_dma_safe_msg_buf(dma_rd_buf, (msgs + 1), true);
 	}
 
 	if (ret == 0) {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 128/422] IB/mlx5: Dont hold spin lock while checking device state
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (126 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 127/422] i2c: mediatek: Use DMA safe buffers for i2c transactions Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 129/422] IB/ipoib: Ensure that MTU isnt less than minimum permitted Greg Kroah-Hartman
                   ` (297 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Parav Pandit, Daniel Jurgens,
	Maor Gottlieb, Leon Romanovsky, Jason Gunthorpe, Sasha Levin

From: Parav Pandit <parav@mellanox.com>

[ Upstream commit 6c75520f7e5a6a353f3b332509d205e213d05855 ]

mdev->state device state is not protected by the QP for which WRs are
being processed. Therefore, there is no need to hold spin lock while
checking mdev state.

Given that device fatal error is unlikely situation, wrap the condition
check with unlikely().

Additionally, kernel QP1 is also a kernel ULP for which soft CQEs needs
to be generated. Therefore, check for device fatal error before
processing QP1 work requests.

Fixes: 89ea94a7b6c4 ("IB/mlx5: Reset flow support for IB kernel ULPs")
Signed-off-by: Parav Pandit <parav@mellanox.com>
Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
Reviewed-by: Maor Gottlieb <maorg@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/hw/mlx5/qp.c | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c
index 2e7230392a498..ef0f710587ad8 100644
--- a/drivers/infiniband/hw/mlx5/qp.c
+++ b/drivers/infiniband/hw/mlx5/qp.c
@@ -4407,6 +4407,12 @@ static int _mlx5_ib_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr,
 	u8 next_fence = 0;
 	u8 fence;
 
+	if (unlikely(mdev->state == MLX5_DEVICE_STATE_INTERNAL_ERROR &&
+		     !drain)) {
+		*bad_wr = wr;
+		return -EIO;
+	}
+
 	if (unlikely(ibqp->qp_type == IB_QPT_GSI))
 		return mlx5_ib_gsi_post_send(ibqp, wr, bad_wr);
 
@@ -4416,13 +4422,6 @@ static int _mlx5_ib_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr,
 
 	spin_lock_irqsave(&qp->sq.lock, flags);
 
-	if (mdev->state == MLX5_DEVICE_STATE_INTERNAL_ERROR && !drain) {
-		err = -EIO;
-		*bad_wr = wr;
-		nreq = 0;
-		goto out;
-	}
-
 	for (nreq = 0; wr; nreq++, wr = wr->next) {
 		if (unlikely(wr->opcode >= ARRAY_SIZE(mlx5_ib_opcode))) {
 			mlx5_ib_warn(dev, "\n");
@@ -4737,18 +4736,17 @@ static int _mlx5_ib_post_recv(struct ib_qp *ibqp, const struct ib_recv_wr *wr,
 	int ind;
 	int i;
 
+	if (unlikely(mdev->state == MLX5_DEVICE_STATE_INTERNAL_ERROR &&
+		     !drain)) {
+		*bad_wr = wr;
+		return -EIO;
+	}
+
 	if (unlikely(ibqp->qp_type == IB_QPT_GSI))
 		return mlx5_ib_gsi_post_recv(ibqp, wr, bad_wr);
 
 	spin_lock_irqsave(&qp->rq.lock, flags);
 
-	if (mdev->state == MLX5_DEVICE_STATE_INTERNAL_ERROR && !drain) {
-		err = -EIO;
-		*bad_wr = wr;
-		nreq = 0;
-		goto out;
-	}
-
 	ind = qp->rq.head & (qp->rq.wqe_cnt - 1);
 
 	for (nreq = 0; wr; nreq++, wr = wr->next) {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 129/422] IB/ipoib: Ensure that MTU isnt less than minimum permitted
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (127 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 128/422] IB/mlx5: Dont hold spin lock while checking device state Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 130/422] RDMA/core: Rate limit MAD error messages Greg Kroah-Hartman
                   ` (296 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Muhammad Sammar, Feras Daoud,
	Leon Romanovsky, Jason Gunthorpe, Sasha Levin

From: Muhammad Sammar <muhammads@mellanox.com>

[ Upstream commit 142a9c287613560edf5a03c8d142c8b6ebc1995b ]

It is illegal to change MTU to a value lower than the minimum MTU
stated in ethernet spec. In addition to that we need to add 4 bytes
for encapsulation header (IPOIB_ENCAP_LEN).

Before "ifconfig ib0 mtu 0" command, succeeds while it obviously shouldn't.

Signed-off-by: Muhammad Sammar <muhammads@mellanox.com>
Reviewed-by: Feras Daoud <ferasda@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/ulp/ipoib/ipoib_main.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index 78dd36daac00e..d8cb5bbe6eb58 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -243,7 +243,8 @@ static int ipoib_change_mtu(struct net_device *dev, int new_mtu)
 		return 0;
 	}
 
-	if (new_mtu > IPOIB_UD_MTU(priv->max_ib_mtu))
+	if (new_mtu < (ETH_MIN_MTU + IPOIB_ENCAP_LEN) ||
+	    new_mtu > IPOIB_UD_MTU(priv->max_ib_mtu))
 		return -EINVAL;
 
 	priv->admin_mtu = new_mtu;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 130/422] RDMA/core: Rate limit MAD error messages
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (128 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 129/422] IB/ipoib: Ensure that MTU isnt less than minimum permitted Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 131/422] RDMA/core: Follow correct unregister order between sysfs and cgroup Greg Kroah-Hartman
                   ` (295 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Parav Pandit, Leon Romanovsky,
	Dennis Dalessandro, Jason Gunthorpe, Sasha Levin

From: Parav Pandit <parav@mellanox.com>

[ Upstream commit f9d08f1e1939ad4d92e38bd3dee6842512f5bee6 ]

While registering a mad agent, a user space can trigger various errors
and flood the logs.

Therefore, decrease verbosity and rate limit such error messages.
While we are at it, use __func__ to print function name.

Signed-off-by: Parav Pandit <parav@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/core/mad.c | 72 ++++++++++++++++++-----------------
 1 file changed, 37 insertions(+), 35 deletions(-)

diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
index 74aa3e651bc3c..218411282069b 100644
--- a/drivers/infiniband/core/mad.c
+++ b/drivers/infiniband/core/mad.c
@@ -223,30 +223,30 @@ struct ib_mad_agent *ib_register_mad_agent(struct ib_device *device,
 	/* Validate parameters */
 	qpn = get_spl_qp_index(qp_type);
 	if (qpn == -1) {
-		dev_notice(&device->dev,
-			   "ib_register_mad_agent: invalid QP Type %d\n",
-			   qp_type);
+		dev_dbg_ratelimited(&device->dev, "%s: invalid QP Type %d\n",
+				    __func__, qp_type);
 		goto error1;
 	}
 
 	if (rmpp_version && rmpp_version != IB_MGMT_RMPP_VERSION) {
-		dev_notice(&device->dev,
-			   "ib_register_mad_agent: invalid RMPP Version %u\n",
-			   rmpp_version);
+		dev_dbg_ratelimited(&device->dev,
+				    "%s: invalid RMPP Version %u\n",
+				    __func__, rmpp_version);
 		goto error1;
 	}
 
 	/* Validate MAD registration request if supplied */
 	if (mad_reg_req) {
 		if (mad_reg_req->mgmt_class_version >= MAX_MGMT_VERSION) {
-			dev_notice(&device->dev,
-				   "ib_register_mad_agent: invalid Class Version %u\n",
-				   mad_reg_req->mgmt_class_version);
+			dev_dbg_ratelimited(&device->dev,
+					    "%s: invalid Class Version %u\n",
+					    __func__,
+					    mad_reg_req->mgmt_class_version);
 			goto error1;
 		}
 		if (!recv_handler) {
-			dev_notice(&device->dev,
-				   "ib_register_mad_agent: no recv_handler\n");
+			dev_dbg_ratelimited(&device->dev,
+					    "%s: no recv_handler\n", __func__);
 			goto error1;
 		}
 		if (mad_reg_req->mgmt_class >= MAX_MGMT_CLASS) {
@@ -256,9 +256,9 @@ struct ib_mad_agent *ib_register_mad_agent(struct ib_device *device,
 			 */
 			if (mad_reg_req->mgmt_class !=
 			    IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE) {
-				dev_notice(&device->dev,
-					   "ib_register_mad_agent: Invalid Mgmt Class 0x%x\n",
-					   mad_reg_req->mgmt_class);
+				dev_dbg_ratelimited(&device->dev,
+					"%s: Invalid Mgmt Class 0x%x\n",
+					__func__, mad_reg_req->mgmt_class);
 				goto error1;
 			}
 		} else if (mad_reg_req->mgmt_class == 0) {
@@ -266,8 +266,9 @@ struct ib_mad_agent *ib_register_mad_agent(struct ib_device *device,
 			 * Class 0 is reserved in IBA and is used for
 			 * aliasing of IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE
 			 */
-			dev_notice(&device->dev,
-				   "ib_register_mad_agent: Invalid Mgmt Class 0\n");
+			dev_dbg_ratelimited(&device->dev,
+					    "%s: Invalid Mgmt Class 0\n",
+					    __func__);
 			goto error1;
 		} else if (is_vendor_class(mad_reg_req->mgmt_class)) {
 			/*
@@ -275,18 +276,19 @@ struct ib_mad_agent *ib_register_mad_agent(struct ib_device *device,
 			 * ensure supplied OUI is not zero
 			 */
 			if (!is_vendor_oui(mad_reg_req->oui)) {
-				dev_notice(&device->dev,
-					   "ib_register_mad_agent: No OUI specified for class 0x%x\n",
-					   mad_reg_req->mgmt_class);
+				dev_dbg_ratelimited(&device->dev,
+					"%s: No OUI specified for class 0x%x\n",
+					__func__,
+					mad_reg_req->mgmt_class);
 				goto error1;
 			}
 		}
 		/* Make sure class supplied is consistent with RMPP */
 		if (!ib_is_mad_class_rmpp(mad_reg_req->mgmt_class)) {
 			if (rmpp_version) {
-				dev_notice(&device->dev,
-					   "ib_register_mad_agent: RMPP version for non-RMPP class 0x%x\n",
-					   mad_reg_req->mgmt_class);
+				dev_dbg_ratelimited(&device->dev,
+					"%s: RMPP version for non-RMPP class 0x%x\n",
+					__func__, mad_reg_req->mgmt_class);
 				goto error1;
 			}
 		}
@@ -297,9 +299,9 @@ struct ib_mad_agent *ib_register_mad_agent(struct ib_device *device,
 					IB_MGMT_CLASS_SUBN_LID_ROUTED) &&
 			    (mad_reg_req->mgmt_class !=
 					IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE)) {
-				dev_notice(&device->dev,
-					   "ib_register_mad_agent: Invalid SM QP type: class 0x%x\n",
-					   mad_reg_req->mgmt_class);
+				dev_dbg_ratelimited(&device->dev,
+					"%s: Invalid SM QP type: class 0x%x\n",
+					__func__, mad_reg_req->mgmt_class);
 				goto error1;
 			}
 		} else {
@@ -307,9 +309,9 @@ struct ib_mad_agent *ib_register_mad_agent(struct ib_device *device,
 					IB_MGMT_CLASS_SUBN_LID_ROUTED) ||
 			    (mad_reg_req->mgmt_class ==
 					IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE)) {
-				dev_notice(&device->dev,
-					   "ib_register_mad_agent: Invalid GS QP type: class 0x%x\n",
-					   mad_reg_req->mgmt_class);
+				dev_dbg_ratelimited(&device->dev,
+					"%s: Invalid GS QP type: class 0x%x\n",
+					__func__, mad_reg_req->mgmt_class);
 				goto error1;
 			}
 		}
@@ -324,18 +326,18 @@ struct ib_mad_agent *ib_register_mad_agent(struct ib_device *device,
 	/* Validate device and port */
 	port_priv = ib_get_mad_port(device, port_num);
 	if (!port_priv) {
-		dev_notice(&device->dev,
-			   "ib_register_mad_agent: Invalid port %d\n",
-			   port_num);
+		dev_dbg_ratelimited(&device->dev, "%s: Invalid port %d\n",
+				    __func__, port_num);
 		ret = ERR_PTR(-ENODEV);
 		goto error1;
 	}
 
-	/* Verify the QP requested is supported.  For example, Ethernet devices
-	 * will not have QP0 */
+	/* Verify the QP requested is supported. For example, Ethernet devices
+	 * will not have QP0.
+	 */
 	if (!port_priv->qp_info[qpn].qp) {
-		dev_notice(&device->dev,
-			   "ib_register_mad_agent: QP %d not supported\n", qpn);
+		dev_dbg_ratelimited(&device->dev, "%s: QP %d not supported\n",
+				    __func__, qpn);
 		ret = ERR_PTR(-EPROTONOSUPPORT);
 		goto error1;
 	}
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 131/422] RDMA/core: Follow correct unregister order between sysfs and cgroup
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (129 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 130/422] RDMA/core: Rate limit MAD error messages Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 132/422] mips: txx9: fix iounmap related issue Greg Kroah-Hartman
                   ` (294 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Parav Pandit, Daniel Jurgens,
	Leon Romanovsky, Jason Gunthorpe, Sasha Levin

From: Parav Pandit <parav@mellanox.com>

[ Upstream commit c715a39541bb399eb03d728a996b224d90ce1336 ]

During register_device() init sequence is,
(a) register with rdma cgroup followed by
(b) register with sysfs

Therefore, unregister_device() sequence should follow the reverse order.

Signed-off-by: Parav Pandit <parav@mellanox.com>
Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/core/device.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
index 6d8ac51a39cc0..6a585c3e21923 100644
--- a/drivers/infiniband/core/device.c
+++ b/drivers/infiniband/core/device.c
@@ -599,8 +599,8 @@ void ib_unregister_device(struct ib_device *device)
 	}
 	up_read(&lists_rwsem);
 
-	ib_device_unregister_rdmacg(device);
 	ib_device_unregister_sysfs(device);
+	ib_device_unregister_rdmacg(device);
 
 	mutex_unlock(&device_mutex);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 132/422] mips: txx9: fix iounmap related issue
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (130 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 131/422] RDMA/core: Follow correct unregister order between sysfs and cgroup Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 133/422] udf: Fix crash during mount Greg Kroah-Hartman
                   ` (293 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ding Xiang, Atsushi Nemoto,
	Paul Burton, ralf, jhogan, linux-mips, Sasha Levin

From: Ding Xiang <dingxiang@cmss.chinamobile.com>

[ Upstream commit c6e1241a82e6e74d1ae5cc34581dab2ffd6022d0 ]

if device_register return error, iounmap should be called, also iounmap
need to call before put_device.

Signed-off-by: Ding Xiang <dingxiang@cmss.chinamobile.com>
Reviewed-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Paul Burton <paul.burton@mips.com>
Patchwork: https://patchwork.linux-mips.org/patch/20476/
Cc: ralf@linux-mips.org
Cc: jhogan@kernel.org
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/mips/txx9/generic/setup.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/arch/mips/txx9/generic/setup.c b/arch/mips/txx9/generic/setup.c
index f6d9182ef82a9..70a1ab66d252c 100644
--- a/arch/mips/txx9/generic/setup.c
+++ b/arch/mips/txx9/generic/setup.c
@@ -960,12 +960,11 @@ void __init txx9_sramc_init(struct resource *r)
 		goto exit_put;
 	err = sysfs_create_bin_file(&dev->dev.kobj, &dev->bindata_attr);
 	if (err) {
-		device_unregister(&dev->dev);
 		iounmap(dev->base);
-		kfree(dev);
+		device_unregister(&dev->dev);
 	}
 	return;
 exit_put:
+	iounmap(dev->base);
 	put_device(&dev->dev);
-	return;
 }
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 133/422] udf: Fix crash during mount
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (131 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 132/422] mips: txx9: fix iounmap related issue Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 134/422] ASoC: dapm: Avoid uninitialised variable warning Greg Kroah-Hartman
                   ` (292 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Anatoly Trosinenko, Jan Kara, Sasha Levin

From: Jan Kara <jack@suse.cz>

[ Upstream commit b085fbe2ef7fa7489903c45271ae7b7a52b0f9ab ]

Fix a crash during an attempt to mount a filesystem that has both
Unallocated Space Table and Unallocated Space Bitmap. Such filesystem
actually violates the UDF standard so we just have to properly detect
such situation and refuse to mount such filesystem read-write. When we
are at it, verify also other constraints on the allocation information
mandated by the standard.

Reported-by: Anatoly Trosinenko <anatoly.trosinenko@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/udf/super.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 60 insertions(+), 5 deletions(-)

diff --git a/fs/udf/super.c b/fs/udf/super.c
index c495db7165aee..7af011dc9ae8a 100644
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -989,12 +989,62 @@ static struct udf_bitmap *udf_sb_alloc_bitmap(struct super_block *sb, u32 index)
 	return bitmap;
 }
 
+static int check_partition_desc(struct super_block *sb,
+				struct partitionDesc *p,
+				struct udf_part_map *map)
+{
+	bool umap, utable, fmap, ftable;
+	struct partitionHeaderDesc *phd;
+
+	switch (le32_to_cpu(p->accessType)) {
+	case PD_ACCESS_TYPE_READ_ONLY:
+	case PD_ACCESS_TYPE_WRITE_ONCE:
+	case PD_ACCESS_TYPE_REWRITABLE:
+	case PD_ACCESS_TYPE_NONE:
+		goto force_ro;
+	}
+
+	/* No Partition Header Descriptor? */
+	if (strcmp(p->partitionContents.ident, PD_PARTITION_CONTENTS_NSR02) &&
+	    strcmp(p->partitionContents.ident, PD_PARTITION_CONTENTS_NSR03))
+		goto force_ro;
+
+	phd = (struct partitionHeaderDesc *)p->partitionContentsUse;
+	utable = phd->unallocSpaceTable.extLength;
+	umap = phd->unallocSpaceBitmap.extLength;
+	ftable = phd->freedSpaceTable.extLength;
+	fmap = phd->freedSpaceBitmap.extLength;
+
+	/* No allocation info? */
+	if (!utable && !umap && !ftable && !fmap)
+		goto force_ro;
+
+	/* We don't support blocks that require erasing before overwrite */
+	if (ftable || fmap)
+		goto force_ro;
+	/* UDF 2.60: 2.3.3 - no mixing of tables & bitmaps, no VAT. */
+	if (utable && umap)
+		goto force_ro;
+
+	if (map->s_partition_type == UDF_VIRTUAL_MAP15 ||
+	    map->s_partition_type == UDF_VIRTUAL_MAP20)
+		goto force_ro;
+
+	return 0;
+force_ro:
+	if (!sb_rdonly(sb))
+		return -EACCES;
+	UDF_SET_FLAG(sb, UDF_FLAG_RW_INCOMPAT);
+	return 0;
+}
+
 static int udf_fill_partdesc_info(struct super_block *sb,
 		struct partitionDesc *p, int p_index)
 {
 	struct udf_part_map *map;
 	struct udf_sb_info *sbi = UDF_SB(sb);
 	struct partitionHeaderDesc *phd;
+	int err;
 
 	map = &sbi->s_partmaps[p_index];
 
@@ -1014,8 +1064,16 @@ static int udf_fill_partdesc_info(struct super_block *sb,
 		  p_index, map->s_partition_type,
 		  map->s_partition_root, map->s_partition_len);
 
-	if (strcmp(p->partitionContents.ident, PD_PARTITION_CONTENTS_NSR02) &&
-	    strcmp(p->partitionContents.ident, PD_PARTITION_CONTENTS_NSR03))
+	err = check_partition_desc(sb, p, map);
+	if (err)
+		return err;
+
+	/*
+	 * Skip loading allocation info it we cannot ever write to the fs.
+	 * This is a correctness thing as we may have decided to force ro mount
+	 * to avoid allocation info we don't support.
+	 */
+	if (UDF_QUERY_FLAG(sb, UDF_FLAG_RW_INCOMPAT))
 		return 0;
 
 	phd = (struct partitionHeaderDesc *)p->partitionContentsUse;
@@ -1051,9 +1109,6 @@ static int udf_fill_partdesc_info(struct super_block *sb,
 			  p_index, bitmap->s_extPosition);
 	}
 
-	if (phd->partitionIntegrityTable.extLength)
-		udf_debug("partitionIntegrityTable (part %d)\n", p_index);
-
 	if (phd->freedSpaceTable.extLength) {
 		struct kernel_lb_addr loc = {
 			.logicalBlockNum = le32_to_cpu(
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 134/422] ASoC: dapm: Avoid uninitialised variable warning
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (132 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 133/422] udf: Fix crash during mount Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 135/422] ASoC: Intel: hdac_hdmi: Limit sampling rates at dai creation Greg Kroah-Hartman
                   ` (291 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Charles Keepax, Mark Brown, Sasha Levin

From: Charles Keepax <ckeepax@opensource.cirrus.com>

[ Upstream commit fc269c0396448cabe1afd648c0b335669aa347b7 ]

Commit 4a75aae17b2a ("ASoC: dapm: Add support for multi-CODEC
CODEC to CODEC links") adds loops that iterate over multiple
CODECs in snd_soc_dai_link_event. This also introduced a compiler
warning for a potentially uninitialised variable in the case
no CODECs are present. This should never be the case as the
DAI link must by definition contain at least 1 CODEC however
probably best to avoid the compiler warning by initialising ret
to zero.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/soc-dapm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index ff31d9f9ecd64..7f0b48b363809 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -3684,7 +3684,7 @@ static int snd_soc_dai_link_event(struct snd_soc_dapm_widget *w,
 	struct snd_pcm_hw_params *params = NULL;
 	struct snd_pcm_runtime *runtime = NULL;
 	unsigned int fmt;
-	int ret;
+	int ret = 0;
 
 	if (WARN_ON(!config) ||
 	    WARN_ON(list_empty(&w->edges[SND_SOC_DAPM_DIR_OUT]) ||
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 135/422] ASoC: Intel: hdac_hdmi: Limit sampling rates at dai creation
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (133 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 134/422] ASoC: dapm: Avoid uninitialised variable warning Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 136/422] ata: Disable AHCI ALPM feature for Ampere Computing eMAG SATA Greg Kroah-Hartman
                   ` (290 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Yong Zhi, Pierre-Louis Bossart,
	Takashi Iwai, Mark Brown, Sasha Levin

From: Yong Zhi <yong.zhi@intel.com>

[ Upstream commit 3b857472f34faa7d11001afa5e158833812c98d7 ]

Playback of 44.1Khz contents with HDMI plugged returns
"Invalid pipe config" because HDMI paths in the FW
topology are configured to operate at 48Khz.

This patch filters out sampling rates not supported
at hdac_hdmi_create_dais() to let user space SRC
to do the converting.

Signed-off-by: Yong Zhi <yong.zhi@intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/codecs/hdac_hdmi.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/sound/soc/codecs/hdac_hdmi.c b/sound/soc/codecs/hdac_hdmi.c
index 098196610542a..be2473166bfaf 100644
--- a/sound/soc/codecs/hdac_hdmi.c
+++ b/sound/soc/codecs/hdac_hdmi.c
@@ -1410,6 +1410,12 @@ static int hdac_hdmi_create_dais(struct hdac_device *hdev,
 		if (ret)
 			return ret;
 
+		/* Filter out 44.1, 88.2 and 176.4Khz */
+		rates &= ~(SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_88200 |
+			   SNDRV_PCM_RATE_176400);
+		if (!rates)
+			return -EINVAL;
+
 		sprintf(dai_name, "intel-hdmi-hifi%d", i+1);
 		hdmi_dais[i].name = devm_kstrdup(&hdev->dev,
 					dai_name, GFP_KERNEL);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 136/422] ata: Disable AHCI ALPM feature for Ampere Computing eMAG SATA
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (134 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 135/422] ASoC: Intel: hdac_hdmi: Limit sampling rates at dai creation Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 137/422] of: make PowerMac cache node search conditional on CONFIG_PPC_PMAC Greg Kroah-Hartman
                   ` (289 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Suman Trpathi, Rameshwar Prasad Sahu,
	Jens Axboe, Sasha Levin

From: Suman Tripathi <stripathi@amperecomputing.com>

[ Upstream commit 20bdc376b427cb420836f39ee8f281ea85dbaeef ]

Due to hardware errata, Ampere Computing eMAG SATA can't support
AHCI ALPM feature. This patch disables the AHCI ALPM feature for
eMAG SATA.

Signed-off-by: Suman Trpathi <stripathi@amperecomputing.com>
Signed-off-by: Rameshwar Prasad Sahu <rameshwar.sahu@amperecomputing.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/ata/ahci_platform.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c
index 46f0bd75eff79..cf1e0e18a7a98 100644
--- a/drivers/ata/ahci_platform.c
+++ b/drivers/ata/ahci_platform.c
@@ -33,6 +33,13 @@ static const struct ata_port_info ahci_port_info = {
 	.port_ops	= &ahci_platform_ops,
 };
 
+static const struct ata_port_info ahci_port_info_nolpm = {
+	.flags		= AHCI_FLAG_COMMON | ATA_FLAG_NO_LPM,
+	.pio_mask	= ATA_PIO4,
+	.udma_mask	= ATA_UDMA6,
+	.port_ops	= &ahci_platform_ops,
+};
+
 static struct scsi_host_template ahci_platform_sht = {
 	AHCI_SHT(DRV_NAME),
 };
@@ -41,6 +48,7 @@ static int ahci_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
 	struct ahci_host_priv *hpriv;
+	const struct ata_port_info *port;
 	int rc;
 
 	hpriv = ahci_platform_get_resources(pdev,
@@ -58,7 +66,11 @@ static int ahci_probe(struct platform_device *pdev)
 	if (of_device_is_compatible(dev->of_node, "hisilicon,hisi-ahci"))
 		hpriv->flags |= AHCI_HFLAG_NO_FBS | AHCI_HFLAG_NO_NCQ;
 
-	rc = ahci_platform_init_host(pdev, hpriv, &ahci_port_info,
+	port = acpi_device_get_match_data(dev);
+	if (!port)
+		port = &ahci_port_info;
+
+	rc = ahci_platform_init_host(pdev, hpriv, port,
 				     &ahci_platform_sht);
 	if (rc)
 		goto disable_resources;
@@ -85,6 +97,7 @@ static const struct of_device_id ahci_of_match[] = {
 MODULE_DEVICE_TABLE(of, ahci_of_match);
 
 static const struct acpi_device_id ahci_acpi_match[] = {
+	{ "APMC0D33", (unsigned long)&ahci_port_info_nolpm },
 	{ ACPI_DEVICE_CLASS(PCI_CLASS_STORAGE_SATA_AHCI, 0xffffff) },
 	{},
 };
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 137/422] of: make PowerMac cache node search conditional on CONFIG_PPC_PMAC
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (135 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 136/422] ata: Disable AHCI ALPM feature for Ampere Computing eMAG SATA Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 138/422] ARM: dts: omap3-gta04: give spi_lcd node a label so that we can overwrite in other DTS files Greg Kroah-Hartman
                   ` (288 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Rob Herring, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit f6707fd6241e483f6fea2caae82d876e422bb11a ]

Cache nodes under the cpu node(s) is PowerMac specific according to the
comment above, so make the code enforce that.

Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/of/base.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/of/base.c b/drivers/of/base.c
index 3f21ea6a90dcb..f0dbb7ad88cf6 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -2066,7 +2066,7 @@ struct device_node *of_find_next_cache_node(const struct device_node *np)
 	/* OF on pmac has nodes instead of properties named "l2-cache"
 	 * beneath CPU nodes.
 	 */
-	if (!strcmp(np->type, "cpu"))
+	if (IS_ENABLED(CONFIG_PPC_PMAC) && !strcmp(np->type, "cpu"))
 		for_each_child_of_node(np, child)
 			if (!strcmp(child->type, "cache"))
 				return child;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 138/422] ARM: dts: omap3-gta04: give spi_lcd node a label so that we can overwrite in other DTS files
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (136 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 137/422] of: make PowerMac cache node search conditional on CONFIG_PPC_PMAC Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 139/422] ARM: dts: omap3-gta04: fixes for tvout / venc Greg Kroah-Hartman
                   ` (287 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, H. Nikolaus Schaller, Tony Lindgren,
	Sasha Levin

From: H. Nikolaus Schaller <hns@goldelico.com>

[ Upstream commit fa0d7dc355c890725b6178dab0cc11b194203afa ]

needed for device variants based on GTA04 board but with
different display panel (driver).

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/omap3-gta04.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/omap3-gta04.dtsi b/arch/arm/boot/dts/omap3-gta04.dtsi
index ac830b9177763..ae33e0e0f1d2c 100644
--- a/arch/arm/boot/dts/omap3-gta04.dtsi
+++ b/arch/arm/boot/dts/omap3-gta04.dtsi
@@ -78,7 +78,7 @@
 		#sound-dai-cells = <0>;
 	};
 
-	spi_lcd {
+	spi_lcd: spi_lcd {
 		compatible = "spi-gpio";
 		#address-cells = <0x1>;
 		#size-cells = <0x0>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 139/422] ARM: dts: omap3-gta04: fixes for tvout / venc
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (137 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 138/422] ARM: dts: omap3-gta04: give spi_lcd node a label so that we can overwrite in other DTS files Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 140/422] ARM: dts: omap3-gta04: tvout: enable as display1 alias Greg Kroah-Hartman
                   ` (286 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, H. Nikolaus Schaller, Tony Lindgren,
	Sasha Levin

From: H. Nikolaus Schaller <hns@goldelico.com>

[ Upstream commit f6591391373dbff2c0200e1055d4ff86191578d2 ]

* fix connector compatibility (composite)
* add comment for gpio1 23
* add proper #address-cells
* we use only one venc_out channel for composite

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/omap3-gta04.dtsi | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/arch/arm/boot/dts/omap3-gta04.dtsi b/arch/arm/boot/dts/omap3-gta04.dtsi
index ae33e0e0f1d2c..eee5fa0035071 100644
--- a/arch/arm/boot/dts/omap3-gta04.dtsi
+++ b/arch/arm/boot/dts/omap3-gta04.dtsi
@@ -131,7 +131,7 @@
 	};
 
 	tv0: connector {
-		compatible = "svideo-connector";
+		compatible = "composite-video-connector";
 		label = "tv";
 
 		port {
@@ -143,7 +143,7 @@
 
 	tv_amp: opa362 {
 		compatible = "ti,opa362";
-		enable-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
+		enable-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;	/* GPIO_23 to enable video out amplifier */
 
 		ports {
 			#address-cells = <1>;
@@ -551,10 +551,14 @@
 
 	vdda-supply = <&vdac>;
 
+	#address-cells = <1>;
+	#size-cells = <0>;
+
 	port {
+		reg = <0>;
 		venc_out: endpoint {
 			remote-endpoint = <&opa_in>;
-			ti,channels = <2>;
+			ti,channels = <1>;
 			ti,invert-polarity;
 		};
 	};
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 140/422] ARM: dts: omap3-gta04: tvout: enable as display1 alias
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (138 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 139/422] ARM: dts: omap3-gta04: fixes for tvout / venc Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 141/422] ARM: dts: omap3-gta04: fix touchscreen tsc2007 Greg Kroah-Hartman
                   ` (285 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, H. Nikolaus Schaller, Tony Lindgren,
	Sasha Levin

From: H. Nikolaus Schaller <hns@goldelico.com>

[ Upstream commit 8905592b6e50cec905e6c6035bbd36201a3bfac1 ]

The omap dss susbystem takes the display aliases to find
out which displays exist. To enable tv-out we must define
an alias.

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/omap3-gta04.dtsi | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/boot/dts/omap3-gta04.dtsi b/arch/arm/boot/dts/omap3-gta04.dtsi
index eee5fa0035071..79d708ce3a93f 100644
--- a/arch/arm/boot/dts/omap3-gta04.dtsi
+++ b/arch/arm/boot/dts/omap3-gta04.dtsi
@@ -28,6 +28,7 @@
 
 	aliases {
 		display0 = &lcd;
+		display1 = &tv0;
 	};
 
 	/* fixed 26MHz oscillator */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 141/422] ARM: dts: omap3-gta04: fix touchscreen tsc2007
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (139 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 140/422] ARM: dts: omap3-gta04: tvout: enable as display1 alias Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 142/422] ARM: dts: omap3-gta04: make NAND partitions compatible with recent U-Boot Greg Kroah-Hartman
                   ` (284 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, H. Nikolaus Schaller, Tony Lindgren,
	Sasha Levin

From: H. Nikolaus Schaller <hns@goldelico.com>

[ Upstream commit 7384a24248eda140a234d356b6c840701ee9f055 ]

we fix penirq polarity, add penirq pinmux and touchscreen
properties.

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/omap3-gta04.dtsi | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/omap3-gta04.dtsi b/arch/arm/boot/dts/omap3-gta04.dtsi
index 79d708ce3a93f..de873e395c05d 100644
--- a/arch/arm/boot/dts/omap3-gta04.dtsi
+++ b/arch/arm/boot/dts/omap3-gta04.dtsi
@@ -283,6 +283,13 @@
 			OMAP3_CORE1_IOPAD(0x2134, PIN_INPUT_PULLUP | MUX_MODE4) /* gpio112 */
 		>;
 	};
+
+	penirq_pins: pinmux_penirq_pins {
+		pinctrl-single,pins = <
+			/* here we could enable to wakeup the cpu from suspend by a pen touch */
+			OMAP3_CORE1_IOPAD(0x2194, PIN_INPUT_PULLUP | MUX_MODE4) /* gpio160 */
+		>;
+	};
 };
 
 &omap3_pmx_core2 {
@@ -423,10 +430,19 @@
 	tsc2007@48 {
 		compatible = "ti,tsc2007";
 		reg = <0x48>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&penirq_pins>;
 		interrupt-parent = <&gpio6>;
 		interrupts = <0 IRQ_TYPE_EDGE_FALLING>; /* GPIO_160 */
-		gpios = <&gpio6 0 GPIO_ACTIVE_LOW>;
+		gpios = <&gpio6 0 GPIO_ACTIVE_LOW>;	/* GPIO_160 */
 		ti,x-plate-ohms = <600>;
+		touchscreen-size-x = <480>;
+		touchscreen-size-y = <640>;
+		touchscreen-max-pressure = <1000>;
+		touchscreen-fuzz-x = <3>;
+		touchscreen-fuzz-y = <8>;
+		touchscreen-fuzz-pressure = <10>;
+		touchscreen-inverted-y;
 	};
 
 	/* RFID EEPROM */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 142/422] ARM: dts: omap3-gta04: make NAND partitions compatible with recent U-Boot
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (140 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 141/422] ARM: dts: omap3-gta04: fix touchscreen tsc2007 Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 143/422] ARM: dts: omap3-gta04: keep vpll2 always on Greg Kroah-Hartman
                   ` (283 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, H. Nikolaus Schaller, Tony Lindgren,
	Sasha Levin

From: H. Nikolaus Schaller <hns@goldelico.com>

[ Upstream commit fa99c21ecb3cd4021a60d0e8bf880e78b5bd0729 ]

Vendor defined U-Boot has changed the partition scheme a while ago:

* kernel partition 6MB
* file system partition uses the remainder up to end of the NAND
* increased size of the environment partition (to get an OneNAND compatible base address)
* shrink the U-Boot partition

Let's be compatible (e.g. Debian kernel built from upstream).

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/omap3-gta04.dtsi | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/arm/boot/dts/omap3-gta04.dtsi b/arch/arm/boot/dts/omap3-gta04.dtsi
index de873e395c05d..bb435684500fc 100644
--- a/arch/arm/boot/dts/omap3-gta04.dtsi
+++ b/arch/arm/boot/dts/omap3-gta04.dtsi
@@ -619,22 +619,22 @@
 
 		bootloaders@80000 {
 			label = "U-Boot";
-			reg = <0x80000 0x1e0000>;
+			reg = <0x80000 0x1c0000>;
 		};
 
-		bootloaders_env@260000 {
+		bootloaders_env@240000 {
 			label = "U-Boot Env";
-			reg = <0x260000 0x20000>;
+			reg = <0x240000 0x40000>;
 		};
 
 		kernel@280000 {
 			label = "Kernel";
-			reg = <0x280000 0x400000>;
+			reg = <0x280000 0x600000>;
 		};
 
-		filesystem@680000 {
+		filesystem@880000 {
 			label = "File System";
-			reg = <0x680000 0xf980000>;
+			reg = <0x880000 0>;	/* 0 = MTDPART_SIZ_FULL */
 		};
 	};
 };
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 143/422] ARM: dts: omap3-gta04: keep vpll2 always on
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (141 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 142/422] ARM: dts: omap3-gta04: make NAND partitions compatible with recent U-Boot Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 144/422] f2fs: submit bio after shutdown Greg Kroah-Hartman
                   ` (282 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, H. Nikolaus Schaller, Tony Lindgren,
	Sasha Levin

From: H. Nikolaus Schaller <hns@goldelico.com>

[ Upstream commit 1ae00833e30c9b4af5cbfda65d75b1de12f74013 ]

This is needed to make the display and venc work properly.
Compare to omap3-beagle.dts.

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/omap3-gta04.dtsi | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm/boot/dts/omap3-gta04.dtsi b/arch/arm/boot/dts/omap3-gta04.dtsi
index bb435684500fc..0c39a2340030b 100644
--- a/arch/arm/boot/dts/omap3-gta04.dtsi
+++ b/arch/arm/boot/dts/omap3-gta04.dtsi
@@ -548,6 +548,12 @@
 	regulator-max-microvolt = <3150000>;
 };
 
+/* Needed to power the DPI pins */
+
+&vpll2 {
+	regulator-always-on;
+};
+
 &dss {
 	pinctrl-names = "default";
 	pinctrl-0 = < &dss_dpi_pins >;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 144/422] f2fs: submit bio after shutdown
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (142 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 143/422] ARM: dts: omap3-gta04: keep vpll2 always on Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 145/422] failover: Fix error return code in net_failover_create Greg Kroah-Hartman
                   ` (281 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Jaegeuk Kim, Sasha Levin

From: Jaegeuk Kim <jaegeuk@kernel.org>

[ Upstream commit 5ce805869cbed93267ed26552ff76e30f05c91f7 ]

Sometimes, some merged IOs could get a chance to be submitted, resulting in
system hang in shutdown test. This issues IOs all the time after shutdown.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/f2fs/data.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index c61beaedf0789..b4a634da1372b 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -543,6 +543,8 @@ skip:
 	if (fio->in_list)
 		goto next;
 out:
+	if (is_sbi_flag_set(sbi, SBI_IS_SHUTDOWN))
+		__submit_merged_bio(io);
 	up_write(&io->io_rwsem);
 }
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 145/422] failover: Fix error return code in net_failover_create
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (143 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 144/422] f2fs: submit bio after shutdown Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 146/422] sched/debug: Explicitly cast sched_feat() to bool Greg Kroah-Hartman
                   ` (280 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, YueHaibing, David S. Miller, Sasha Levin

From: YueHaibing <yuehaibing@huawei.com>

[ Upstream commit 09317da317e55e70ccbe23f65008348a4a1b7c7f ]

if failover_register failed, 'err' code should be set correctly

Fixes: cfc80d9a1163 ("net: Introduce net_failover driver")
Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/net_failover.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/net_failover.c b/drivers/net/net_failover.c
index 5a749dc25bec4..beeb7eb76ca32 100644
--- a/drivers/net/net_failover.c
+++ b/drivers/net/net_failover.c
@@ -765,8 +765,10 @@ struct failover *net_failover_create(struct net_device *standby_dev)
 	netif_carrier_off(failover_dev);
 
 	failover = failover_register(failover_dev, &net_failover_ops);
-	if (IS_ERR(failover))
+	if (IS_ERR(failover)) {
+		err = PTR_ERR(failover);
 		goto err_failover_register;
+	}
 
 	return failover;
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 146/422] sched/debug: Explicitly cast sched_feat() to bool
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (144 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 145/422] failover: Fix error return code in net_failover_create Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 147/422] sched/debug: Use symbolic names for task state constants Greg Kroah-Hartman
                   ` (279 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Philipp Klocke, Nick Desaulniers,
	Peter Zijlstra (Intel),
	Linus Torvalds, Thomas Gleixner, Ingo Molnar, Sasha Levin

From: Peter Zijlstra <peterz@infradead.org>

[ Upstream commit 7e6f4c5d600c1c8e2a1d900e65cab319d9b6782e ]

LLVM has a warning that tags expressions like:

	if (foo && non-bool-const)

This pattern triggers for CONFIG_SCHED_DEBUG=n where sched_feat() ends
up being whatever bit we select. Avoid the warning with an explicit
cast to bool.

Reported-by: Philipp Klocke <philipp97kl@gmail.com>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 kernel/sched/sched.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 62058fd6dcf63..94bec97bd5e28 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -1389,7 +1389,7 @@ static const_debug __maybe_unused unsigned int sysctl_sched_features =
 	0;
 #undef SCHED_FEAT
 
-#define sched_feat(x) (sysctl_sched_features & (1UL << __SCHED_FEAT_##x))
+#define sched_feat(x) !!(sysctl_sched_features & (1UL << __SCHED_FEAT_##x))
 
 #endif /* SCHED_DEBUG && CONFIG_JUMP_LABEL */
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 147/422] sched/debug: Use symbolic names for task state constants
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (145 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 146/422] sched/debug: Explicitly cast sched_feat() to bool Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 148/422] firmware: arm_scmi: use strlcpy to ensure NULL-terminated strings Greg Kroah-Hartman
                   ` (278 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Uwe Kleine-König,
	Peter Zijlstra (Intel),
	Linus Torvalds, Sebastian Andrzej Siewior, Thomas Gleixner,
	kernel, Ingo Molnar, Sasha Levin

From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

[ Upstream commit ff28915fd31ccafc0d38e6f84b66df280ed9e86a ]

include/trace/events/sched.h includes <linux/sched.h> (via
<linux/sched/numa_balancing.h>) and so knows about the TASK_* constants
used to interpret .prev_state. So instead of duplicating the magic
numbers make use of the defined macros to ease understanding the
mapping from state bits to letters which isn't completely intuitive for
an outsider.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: kernel@pengutronix.de
Link: http://lkml.kernel.org/r/20180905093636.24068-1-u.kleine-koenig@pengutronix.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/trace/events/sched.h | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h
index 5e1a7578c9edd..9a4bdfadab077 100644
--- a/include/trace/events/sched.h
+++ b/include/trace/events/sched.h
@@ -169,9 +169,14 @@ TRACE_EVENT(sched_switch,
 
 		(__entry->prev_state & (TASK_REPORT_MAX - 1)) ?
 		  __print_flags(__entry->prev_state & (TASK_REPORT_MAX - 1), "|",
-				{ 0x01, "S" }, { 0x02, "D" }, { 0x04, "T" },
-				{ 0x08, "t" }, { 0x10, "X" }, { 0x20, "Z" },
-				{ 0x40, "P" }, { 0x80, "I" }) :
+				{ TASK_INTERRUPTIBLE, "S" },
+				{ TASK_UNINTERRUPTIBLE, "D" },
+				{ __TASK_STOPPED, "T" },
+				{ __TASK_TRACED, "t" },
+				{ EXIT_DEAD, "X" },
+				{ EXIT_ZOMBIE, "Z" },
+				{ TASK_PARKED, "P" },
+				{ TASK_DEAD, "I" }) :
 		  "R",
 
 		__entry->prev_state & TASK_REPORT_MAX ? "+" : "",
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 148/422] firmware: arm_scmi: use strlcpy to ensure NULL-terminated strings
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (146 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 147/422] sched/debug: Use symbolic names for task state constants Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 149/422] arm64: dts: rockchip: Fix VCC5V0_HOST_EN on rk3399-sapphire Greg Kroah-Hartman
                   ` (277 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Olof Johansson, Sudeep Holla, Sasha Levin

From: Sudeep Holla <sudeep.holla@arm.com>

[ Upstream commit ca64b719a1e665ac7449b6a968059176af7365a8 ]

Replace all the memcpy() for copying name strings from the firmware with
strlcpy() to make sure we are bounded by the source buffer size and we
also always have NULL-terminated strings.

This is needed to avoid out of bounds accesses if the firmware returns
a non-terminated string.

Reported-by: Olof Johansson <olof@lixom.net>
Acked-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/firmware/arm_scmi/base.c    | 2 +-
 drivers/firmware/arm_scmi/clock.c   | 2 +-
 drivers/firmware/arm_scmi/perf.c    | 2 +-
 drivers/firmware/arm_scmi/power.c   | 2 +-
 drivers/firmware/arm_scmi/sensors.c | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/firmware/arm_scmi/base.c b/drivers/firmware/arm_scmi/base.c
index 9dff33ea6416f..204390297f4bd 100644
--- a/drivers/firmware/arm_scmi/base.c
+++ b/drivers/firmware/arm_scmi/base.c
@@ -208,7 +208,7 @@ static int scmi_base_discover_agent_get(const struct scmi_handle *handle,
 
 	ret = scmi_do_xfer(handle, t);
 	if (!ret)
-		memcpy(name, t->rx.buf, SCMI_MAX_STR_SIZE);
+		strlcpy(name, t->rx.buf, SCMI_MAX_STR_SIZE);
 
 	scmi_xfer_put(handle, t);
 
diff --git a/drivers/firmware/arm_scmi/clock.c b/drivers/firmware/arm_scmi/clock.c
index e4119eb34986c..30fc04e284312 100644
--- a/drivers/firmware/arm_scmi/clock.c
+++ b/drivers/firmware/arm_scmi/clock.c
@@ -111,7 +111,7 @@ static int scmi_clock_attributes_get(const struct scmi_handle *handle,
 
 	ret = scmi_do_xfer(handle, t);
 	if (!ret)
-		memcpy(clk->name, attr->name, SCMI_MAX_STR_SIZE);
+		strlcpy(clk->name, attr->name, SCMI_MAX_STR_SIZE);
 	else
 		clk->name[0] = '\0';
 
diff --git a/drivers/firmware/arm_scmi/perf.c b/drivers/firmware/arm_scmi/perf.c
index 64342944d9175..87c99d296ecd3 100644
--- a/drivers/firmware/arm_scmi/perf.c
+++ b/drivers/firmware/arm_scmi/perf.c
@@ -174,7 +174,7 @@ scmi_perf_domain_attributes_get(const struct scmi_handle *handle, u32 domain,
 			dom_info->mult_factor =
 					(dom_info->sustained_freq_khz * 1000) /
 					dom_info->sustained_perf_level;
-		memcpy(dom_info->name, attr->name, SCMI_MAX_STR_SIZE);
+		strlcpy(dom_info->name, attr->name, SCMI_MAX_STR_SIZE);
 	}
 
 	scmi_xfer_put(handle, t);
diff --git a/drivers/firmware/arm_scmi/power.c b/drivers/firmware/arm_scmi/power.c
index cfa033b05aed5..62f3401a1f01e 100644
--- a/drivers/firmware/arm_scmi/power.c
+++ b/drivers/firmware/arm_scmi/power.c
@@ -106,7 +106,7 @@ scmi_power_domain_attributes_get(const struct scmi_handle *handle, u32 domain,
 		dom_info->state_set_notify = SUPPORTS_STATE_SET_NOTIFY(flags);
 		dom_info->state_set_async = SUPPORTS_STATE_SET_ASYNC(flags);
 		dom_info->state_set_sync = SUPPORTS_STATE_SET_SYNC(flags);
-		memcpy(dom_info->name, attr->name, SCMI_MAX_STR_SIZE);
+		strlcpy(dom_info->name, attr->name, SCMI_MAX_STR_SIZE);
 	}
 
 	scmi_xfer_put(handle, t);
diff --git a/drivers/firmware/arm_scmi/sensors.c b/drivers/firmware/arm_scmi/sensors.c
index 27f2092b9882a..b53d5cc9c9f6c 100644
--- a/drivers/firmware/arm_scmi/sensors.c
+++ b/drivers/firmware/arm_scmi/sensors.c
@@ -140,7 +140,7 @@ static int scmi_sensor_description_get(const struct scmi_handle *handle,
 			s = &si->sensors[desc_index + cnt];
 			s->id = le32_to_cpu(buf->desc[cnt].id);
 			s->type = SENSOR_TYPE(attrh);
-			memcpy(s->name, buf->desc[cnt].name, SCMI_MAX_STR_SIZE);
+			strlcpy(s->name, buf->desc[cnt].name, SCMI_MAX_STR_SIZE);
 		}
 
 		desc_index += num_returned;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 149/422] arm64: dts: rockchip: Fix VCC5V0_HOST_EN on rk3399-sapphire
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (147 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 148/422] firmware: arm_scmi: use strlcpy to ensure NULL-terminated strings Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 150/422] tty/serial: atmel: Change the driver to work under at91-usart MFD Greg Kroah-Hartman
                   ` (276 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Vicente Bergas, Heiko Stuebner, Sasha Levin

From: Vicente Bergas <vicencb@gmail.com>

[ Upstream commit bcdb578a5f5b4aea79441606ab7f0a2e076b4474 ]

The pin is GPIO4-D1 not GPIO1-D1, see schematic, page 15 for reference.

Signed-off-by: Vicente Bergas <vicencb@gmail.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi
index 36b60791c156d..8b33ef3306820 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi
@@ -116,7 +116,7 @@
 	vcc5v0_host: vcc5v0-host-regulator {
 		compatible = "regulator-fixed";
 		enable-active-high;
-		gpio = <&gpio1 RK_PD1 GPIO_ACTIVE_HIGH>;
+		gpio = <&gpio4 RK_PD1 GPIO_ACTIVE_HIGH>;
 		pinctrl-names = "default";
 		pinctrl-0 = <&vcc5v0_host_en>;
 		regulator-name = "vcc5v0_host";
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 150/422] tty/serial: atmel: Change the driver to work under at91-usart MFD
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (148 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 149/422] arm64: dts: rockchip: Fix VCC5V0_HOST_EN on rk3399-sapphire Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19 12:01   ` Richard Genoud
  2019-11-19  5:15 ` [PATCH 4.19 151/422] ARM: dts: exynos: Disable pull control for PMIC IRQ line on Artik5 board Greg Kroah-Hartman
                   ` (275 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Radu Pirea, Andy Shevchenko,
	Richard Genoud, Nicolas Ferre, Lee Jones, Sasha Levin

From: Radu Pirea <radu.pirea@microchip.com>

[ Upstream commit c24d25317a7c6bb3053d4c193b3cf57d1e9a3e4b ]

This patch modifies the place where resources and device tree properties
are searched.

Signed-off-by: Radu Pirea <radu.pirea@microchip.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Acked-by: Richard Genoud <richard.genoud@gmail.com>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/tty/serial/Kconfig        |  1 +
 drivers/tty/serial/atmel_serial.c | 42 ++++++++++++++++++++-----------
 2 files changed, 28 insertions(+), 15 deletions(-)

diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
index df8bd0c7b97db..32886c3046413 100644
--- a/drivers/tty/serial/Kconfig
+++ b/drivers/tty/serial/Kconfig
@@ -118,6 +118,7 @@ config SERIAL_ATMEL
 	depends on ARCH_AT91 || COMPILE_TEST
 	select SERIAL_CORE
 	select SERIAL_MCTRL_GPIO if GPIOLIB
+	select MFD_AT91_USART
 	help
 	  This enables the driver for the on-chip UARTs of the Atmel
 	  AT91 processors.
diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
index dd8949e8fcd7a..251f708f47f76 100644
--- a/drivers/tty/serial/atmel_serial.c
+++ b/drivers/tty/serial/atmel_serial.c
@@ -195,8 +195,7 @@ static struct console atmel_console;
 
 #if defined(CONFIG_OF)
 static const struct of_device_id atmel_serial_dt_ids[] = {
-	{ .compatible = "atmel,at91rm9200-usart" },
-	{ .compatible = "atmel,at91sam9260-usart" },
+	{ .compatible = "atmel,at91rm9200-usart-serial" },
 	{ /* sentinel */ }
 };
 #endif
@@ -926,6 +925,7 @@ static void atmel_tx_dma(struct uart_port *port)
 static int atmel_prepare_tx_dma(struct uart_port *port)
 {
 	struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
+	struct device *mfd_dev = port->dev->parent;
 	dma_cap_mask_t		mask;
 	struct dma_slave_config config;
 	int ret, nent;
@@ -933,7 +933,7 @@ static int atmel_prepare_tx_dma(struct uart_port *port)
 	dma_cap_zero(mask);
 	dma_cap_set(DMA_SLAVE, mask);
 
-	atmel_port->chan_tx = dma_request_slave_channel(port->dev, "tx");
+	atmel_port->chan_tx = dma_request_slave_channel(mfd_dev, "tx");
 	if (atmel_port->chan_tx == NULL)
 		goto chan_err;
 	dev_info(port->dev, "using %s for tx DMA transfers\n",
@@ -1104,6 +1104,7 @@ static void atmel_rx_from_dma(struct uart_port *port)
 static int atmel_prepare_rx_dma(struct uart_port *port)
 {
 	struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
+	struct device *mfd_dev = port->dev->parent;
 	struct dma_async_tx_descriptor *desc;
 	dma_cap_mask_t		mask;
 	struct dma_slave_config config;
@@ -1115,7 +1116,7 @@ static int atmel_prepare_rx_dma(struct uart_port *port)
 	dma_cap_zero(mask);
 	dma_cap_set(DMA_CYCLIC, mask);
 
-	atmel_port->chan_rx = dma_request_slave_channel(port->dev, "rx");
+	atmel_port->chan_rx = dma_request_slave_channel(mfd_dev, "rx");
 	if (atmel_port->chan_rx == NULL)
 		goto chan_err;
 	dev_info(port->dev, "using %s for rx DMA transfers\n",
@@ -2246,8 +2247,8 @@ static const char *atmel_type(struct uart_port *port)
  */
 static void atmel_release_port(struct uart_port *port)
 {
-	struct platform_device *pdev = to_platform_device(port->dev);
-	int size = pdev->resource[0].end - pdev->resource[0].start + 1;
+	struct platform_device *mpdev = to_platform_device(port->dev->parent);
+	int size = resource_size(mpdev->resource);
 
 	release_mem_region(port->mapbase, size);
 
@@ -2262,8 +2263,8 @@ static void atmel_release_port(struct uart_port *port)
  */
 static int atmel_request_port(struct uart_port *port)
 {
-	struct platform_device *pdev = to_platform_device(port->dev);
-	int size = pdev->resource[0].end - pdev->resource[0].start + 1;
+	struct platform_device *mpdev = to_platform_device(port->dev->parent);
+	int size = resource_size(mpdev->resource);
 
 	if (!request_mem_region(port->mapbase, size, "atmel_serial"))
 		return -EBUSY;
@@ -2365,27 +2366,28 @@ static int atmel_init_port(struct atmel_uart_port *atmel_port,
 {
 	int ret;
 	struct uart_port *port = &atmel_port->uart;
+	struct platform_device *mpdev = to_platform_device(pdev->dev.parent);
 
 	atmel_init_property(atmel_port, pdev);
 	atmel_set_ops(port);
 
-	uart_get_rs485_mode(&pdev->dev, &port->rs485);
+	uart_get_rs485_mode(&mpdev->dev, &port->rs485);
 
 	port->iotype		= UPIO_MEM;
 	port->flags		= UPF_BOOT_AUTOCONF | UPF_IOREMAP;
 	port->ops		= &atmel_pops;
 	port->fifosize		= 1;
 	port->dev		= &pdev->dev;
-	port->mapbase	= pdev->resource[0].start;
-	port->irq	= pdev->resource[1].start;
+	port->mapbase		= mpdev->resource[0].start;
+	port->irq		= mpdev->resource[1].start;
 	port->rs485_config	= atmel_config_rs485;
-	port->membase	= NULL;
+	port->membase		= NULL;
 
 	memset(&atmel_port->rx_ring, 0, sizeof(atmel_port->rx_ring));
 
 	/* for console, the clock could already be configured */
 	if (!atmel_port->clk) {
-		atmel_port->clk = clk_get(&pdev->dev, "usart");
+		atmel_port->clk = clk_get(&mpdev->dev, "usart");
 		if (IS_ERR(atmel_port->clk)) {
 			ret = PTR_ERR(atmel_port->clk);
 			atmel_port->clk = NULL;
@@ -2718,13 +2720,22 @@ static void atmel_serial_probe_fifos(struct atmel_uart_port *atmel_port,
 static int atmel_serial_probe(struct platform_device *pdev)
 {
 	struct atmel_uart_port *atmel_port;
-	struct device_node *np = pdev->dev.of_node;
+	struct device_node *np = pdev->dev.parent->of_node;
 	void *data;
 	int ret = -ENODEV;
 	bool rs485_enabled;
 
 	BUILD_BUG_ON(ATMEL_SERIAL_RINGSIZE & (ATMEL_SERIAL_RINGSIZE - 1));
 
+	/*
+	 * In device tree there is no node with "atmel,at91rm9200-usart-serial"
+	 * as compatible string. This driver is probed by at91-usart mfd driver
+	 * which is just a wrapper over the atmel_serial driver and
+	 * spi-at91-usart driver. All attributes needed by this driver are
+	 * found in of_node of parent.
+	 */
+	pdev->dev.of_node = np;
+
 	ret = of_alias_get_id(np, "serial");
 	if (ret < 0)
 		/* port id not found in platform data nor device-tree aliases:
@@ -2860,6 +2871,7 @@ static int atmel_serial_remove(struct platform_device *pdev)
 
 	clk_put(atmel_port->clk);
 	atmel_port->clk = NULL;
+	pdev->dev.of_node = NULL;
 
 	return ret;
 }
@@ -2870,7 +2882,7 @@ static struct platform_driver atmel_serial_driver = {
 	.suspend	= atmel_serial_suspend,
 	.resume		= atmel_serial_resume,
 	.driver		= {
-		.name			= "atmel_usart",
+		.name			= "atmel_usart_serial",
 		.of_match_table		= of_match_ptr(atmel_serial_dt_ids),
 	},
 };
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 151/422] ARM: dts: exynos: Disable pull control for PMIC IRQ line on Artik5 board
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (149 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 150/422] tty/serial: atmel: Change the driver to work under at91-usart MFD Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 152/422] usb: mtu3: disable vbus rise/fall interrupts of ltssm Greg Kroah-Hartman
                   ` (274 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Marek Szyprowski,
	Krzysztof Kozlowski, Sasha Levin

From: Marek Szyprowski <m.szyprowski@samsung.com>

[ Upstream commit 62623718fd31d08b26ebea6c8b40f24924153ab7 ]

S2MPS14 PMIC interrupt line on Exynos3250-based Artik5 evaluation board
has external pull-up resistors, so disable any pull control for it in
controller node. This fixes support for S2MPS14 PMIC interrupts and
enables operation of wakeup from S2MPS14 RTC alarm.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/exynos3250-artik5.dtsi | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/arch/arm/boot/dts/exynos3250-artik5.dtsi b/arch/arm/boot/dts/exynos3250-artik5.dtsi
index 620b50c19ead9..7c22cbf6f3d41 100644
--- a/arch/arm/boot/dts/exynos3250-artik5.dtsi
+++ b/arch/arm/boot/dts/exynos3250-artik5.dtsi
@@ -69,6 +69,8 @@
 		compatible = "samsung,s2mps14-pmic";
 		interrupt-parent = <&gpx3>;
 		interrupts = <5 IRQ_TYPE_NONE>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&s2mps14_irq>;
 		reg = <0x66>;
 
 		s2mps14_osc: clocks {
@@ -350,6 +352,11 @@
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV3>;
 		samsung,pin-val = <1>;
 	};
+
+	s2mps14_irq: s2mps14-irq {
+		samsung,pins = "gpx3-5";
+		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+	};
 };
 
 &rtc {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 152/422] usb: mtu3: disable vbus rise/fall interrupts of ltssm
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (150 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 151/422] ARM: dts: exynos: Disable pull control for PMIC IRQ line on Artik5 board Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 153/422] dmaengine: dma-jz4780: Dont depend on MACH_JZ4780 Greg Kroah-Hartman
                   ` (273 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Chunfeng Yun, Sasha Levin

From: Chunfeng Yun <chunfeng.yun@mediatek.com>

[ Upstream commit 0eae49582b4dee1a0e96007e1dea5122db98371a ]

The vbus rise & fall interrupts are used to enable and disable
U3 function of device automatically, this cause some issues when
class driver is initialized as deactivated, and will skip over
software-controlled connect by pullup(), but UDC wants to keep
disconnect until usb_gadget_activate() is called which calls
pullup() if needed. So we disable vbus rise & fall interrupts
and just use pullup() to enable & disable U3 function, and reset
mtu3 state when disconnect instead when vbus fall.

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/usb/mtu3/mtu3_core.c   |  4 ++--
 drivers/usb/mtu3/mtu3_gadget.c | 22 ++++++++++++++--------
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/drivers/usb/mtu3/mtu3_core.c b/drivers/usb/mtu3/mtu3_core.c
index 48d10a61e271c..8606935201326 100644
--- a/drivers/usb/mtu3/mtu3_core.c
+++ b/drivers/usb/mtu3/mtu3_core.c
@@ -185,8 +185,8 @@ static void mtu3_intr_enable(struct mtu3 *mtu)
 
 	if (mtu->is_u3_ip) {
 		/* Enable U3 LTSSM interrupts */
-		value = HOT_RST_INTR | WARM_RST_INTR | VBUS_RISE_INTR |
-		    VBUS_FALL_INTR | ENTER_U3_INTR | EXIT_U3_INTR;
+		value = HOT_RST_INTR | WARM_RST_INTR |
+			ENTER_U3_INTR | EXIT_U3_INTR;
 		mtu3_writel(mbase, U3D_LTSSM_INTR_ENABLE, value);
 	}
 
diff --git a/drivers/usb/mtu3/mtu3_gadget.c b/drivers/usb/mtu3/mtu3_gadget.c
index 5c60a8c5a0b5c..bbcd3332471dc 100644
--- a/drivers/usb/mtu3/mtu3_gadget.c
+++ b/drivers/usb/mtu3/mtu3_gadget.c
@@ -585,6 +585,17 @@ static const struct usb_gadget_ops mtu3_gadget_ops = {
 	.udc_stop = mtu3_gadget_stop,
 };
 
+static void mtu3_state_reset(struct mtu3 *mtu)
+{
+	mtu->address = 0;
+	mtu->ep0_state = MU3D_EP0_STATE_SETUP;
+	mtu->may_wakeup = 0;
+	mtu->u1_enable = 0;
+	mtu->u2_enable = 0;
+	mtu->delayed_status = false;
+	mtu->test_mode = false;
+}
+
 static void init_hw_ep(struct mtu3 *mtu, struct mtu3_ep *mep,
 		u32 epnum, u32 is_in)
 {
@@ -702,6 +713,7 @@ void mtu3_gadget_disconnect(struct mtu3 *mtu)
 		spin_lock(&mtu->lock);
 	}
 
+	mtu3_state_reset(mtu);
 	usb_gadget_set_state(&mtu->g, USB_STATE_NOTATTACHED);
 }
 
@@ -712,12 +724,6 @@ void mtu3_gadget_reset(struct mtu3 *mtu)
 	/* report disconnect, if we didn't flush EP state */
 	if (mtu->g.speed != USB_SPEED_UNKNOWN)
 		mtu3_gadget_disconnect(mtu);
-
-	mtu->address = 0;
-	mtu->ep0_state = MU3D_EP0_STATE_SETUP;
-	mtu->may_wakeup = 0;
-	mtu->u1_enable = 0;
-	mtu->u2_enable = 0;
-	mtu->delayed_status = false;
-	mtu->test_mode = false;
+	else
+		mtu3_state_reset(mtu);
 }
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 153/422] dmaengine: dma-jz4780: Dont depend on MACH_JZ4780
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (151 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 152/422] usb: mtu3: disable vbus rise/fall interrupts of ltssm Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 154/422] dmaengine: dma-jz4780: Further residue status fix Greg Kroah-Hartman
                   ` (272 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Paul Cercueil, Vinod Koul, Sasha Levin

From: Paul Cercueil <paul@crapouillou.net>

[ Upstream commit c558ecd21c852c97ff98dc6c61f715ba420ec251 ]

If we make this driver depend on MACH_JZ4780, that means it can be
enabled only if we're building a kernel specially crafted for a
JZ4780-based board, while most GNU/Linux distributions will want one
generic MIPS kernel that works on multiple boards.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/dma/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index dacf3f42426de..a4f95574eb9ad 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -143,7 +143,7 @@ config DMA_JZ4740
 
 config DMA_JZ4780
 	tristate "JZ4780 DMA support"
-	depends on MACH_JZ4780 || COMPILE_TEST
+	depends on MIPS || COMPILE_TEST
 	select DMA_ENGINE
 	select DMA_VIRTUAL_CHANNELS
 	help
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 154/422] dmaengine: dma-jz4780: Further residue status fix
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (152 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 153/422] dmaengine: dma-jz4780: Dont depend on MACH_JZ4780 Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 155/422] EDAC, sb_edac: Return early on ADDRV bit and address type test Greg Kroah-Hartman
                   ` (271 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Daniel Silsby, Paul Cercueil,
	Mathieu Malaterre, Vinod Koul, Sasha Levin

From: Daniel Silsby <dansilsby@gmail.com>

[ Upstream commit 83ef4fb7556b6a673f755da670cbacab7e2c7f1b ]

Func jz4780_dma_desc_residue() expects the index to the next hw
descriptor as its last parameter. Caller func jz4780_dma_tx_status(),
however, applied modulus before passing it. When the current hw
descriptor was last in the list, the index passed became zero.

The resulting excess of reported residue especially caused problems
with cyclic DMA transfer clients, i.e. ALSA AIC audio output, which
rely on this for determining current DMA location within buffer.

Combined with the recent and related residue-reporting fixes, spurious
ALSA audio underruns on jz4770 hardware are now fixed.

Signed-off-by: Daniel Silsby <dansilsby@gmail.com>
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Tested-by: Mathieu Malaterre <malat@debian.org>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/dma/dma-jz4780.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/dma/dma-jz4780.c b/drivers/dma/dma-jz4780.c
index 987899610b461..edff93aacad36 100644
--- a/drivers/dma/dma-jz4780.c
+++ b/drivers/dma/dma-jz4780.c
@@ -587,7 +587,7 @@ static enum dma_status jz4780_dma_tx_status(struct dma_chan *chan,
 					to_jz4780_dma_desc(vdesc), 0);
 	} else if (cookie == jzchan->desc->vdesc.tx.cookie) {
 		txstate->residue = jz4780_dma_desc_residue(jzchan, jzchan->desc,
-			  (jzchan->curr_hwdesc + 1) % jzchan->desc->count);
+					jzchan->curr_hwdesc + 1);
 	} else
 		txstate->residue = 0;
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 155/422] EDAC, sb_edac: Return early on ADDRV bit and address type test
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (153 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 154/422] dmaengine: dma-jz4780: Further residue status fix Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 156/422] rtc: mt6397: fix possible race condition Greg Kroah-Hartman
                   ` (270 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Qiuxu Zhuo, Aristeu Rozanski,
	Mauro Carvalho Chehab, linux-edac, Tony Luck, Borislav Petkov,
	Sasha Levin

From: Qiuxu Zhuo <qiuxu.zhuo@intel.com>

[ Upstream commit dcc960b225ceb2bd66c45e0845d03e577f7010f9 ]

Users of the mce_register_decode_chain() are called for every logged
error. EDAC drivers should check:

1) Is this a memory error? [bit 7 in status register]
2) Is there a valid address? [bit 58 in status register]
3) Is the address a system address? [bitfield 8:6 in misc register]

The sb_edac driver performed test "1" twice. Waited far too long to
perform check "2". Didn't do check "3" at all.

Fix it by moving the test for valid address from
sbridge_mce_output_error() into sbridge_mce_check_error() and add a test
for the type immediately after. Delete the redundant check for the type
of the error from sbridge_mce_output_error().

Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Cc: Aristeu Rozanski <aris@redhat.com>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Cc: linux-edac <linux-edac@vger.kernel.org>
Link: http://lkml.kernel.org/r/20180907230828.13901-2-tony.luck@intel.com
[ Re-word commit message. ]
Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/edac/sb_edac.c | 68 ++++++++++++++++++++++--------------------
 1 file changed, 35 insertions(+), 33 deletions(-)

diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
index 72cea3cb86224..7447f1453200d 100644
--- a/drivers/edac/sb_edac.c
+++ b/drivers/edac/sb_edac.c
@@ -2912,35 +2912,27 @@ static void sbridge_mce_output_error(struct mem_ctl_info *mci,
 	 *	cccc = channel
 	 * If the mask doesn't match, report an error to the parsing logic
 	 */
-	if (! ((errcode & 0xef80) == 0x80)) {
-		optype = "Can't parse: it is not a mem";
-	} else {
-		switch (optypenum) {
-		case 0:
-			optype = "generic undef request error";
-			break;
-		case 1:
-			optype = "memory read error";
-			break;
-		case 2:
-			optype = "memory write error";
-			break;
-		case 3:
-			optype = "addr/cmd error";
-			break;
-		case 4:
-			optype = "memory scrubbing error";
-			break;
-		default:
-			optype = "reserved";
-			break;
-		}
+	switch (optypenum) {
+	case 0:
+		optype = "generic undef request error";
+		break;
+	case 1:
+		optype = "memory read error";
+		break;
+	case 2:
+		optype = "memory write error";
+		break;
+	case 3:
+		optype = "addr/cmd error";
+		break;
+	case 4:
+		optype = "memory scrubbing error";
+		break;
+	default:
+		optype = "reserved";
+		break;
 	}
 
-	/* Only decode errors with an valid address (ADDRV) */
-	if (!GET_BITFIELD(m->status, 58, 58))
-		return;
-
 	if (pvt->info.type == KNIGHTS_LANDING) {
 		if (channel == 14) {
 			edac_dbg(0, "%s%s err_code:%04x:%04x EDRAM bank %d\n",
@@ -3046,17 +3038,11 @@ static int sbridge_mce_check_error(struct notifier_block *nb, unsigned long val,
 {
 	struct mce *mce = (struct mce *)data;
 	struct mem_ctl_info *mci;
-	struct sbridge_pvt *pvt;
 	char *type;
 
 	if (edac_get_report_status() == EDAC_REPORTING_DISABLED)
 		return NOTIFY_DONE;
 
-	mci = get_mci_for_node_id(mce->socketid, IMC0);
-	if (!mci)
-		return NOTIFY_DONE;
-	pvt = mci->pvt_info;
-
 	/*
 	 * Just let mcelog handle it if the error is
 	 * outside the memory controller. A memory error
@@ -3066,6 +3052,22 @@ static int sbridge_mce_check_error(struct notifier_block *nb, unsigned long val,
 	if ((mce->status & 0xefff) >> 7 != 1)
 		return NOTIFY_DONE;
 
+	/* Check ADDRV bit in STATUS */
+	if (!GET_BITFIELD(mce->status, 58, 58))
+		return NOTIFY_DONE;
+
+	/* Check MISCV bit in STATUS */
+	if (!GET_BITFIELD(mce->status, 59, 59))
+		return NOTIFY_DONE;
+
+	/* Check address type in MISC (physical address only) */
+	if (GET_BITFIELD(mce->misc, 6, 8) != 2)
+		return NOTIFY_DONE;
+
+	mci = get_mci_for_node_id(mce->socketid, IMC0);
+	if (!mci)
+		return NOTIFY_DONE;
+
 	if (mce->mcgstatus & MCG_STATUS_MCIP)
 		type = "Exception";
 	else
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 156/422] rtc: mt6397: fix possible race condition
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (154 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 155/422] EDAC, sb_edac: Return early on ADDRV bit and address type test Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 157/422] rtc: pl030: " Greg Kroah-Hartman
                   ` (269 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Eddie Huang, Alexandre Belloni, Sasha Levin

From: Alexandre Belloni <alexandre.belloni@bootlin.com>

[ Upstream commit babab2f86440352d24e76118fdd7d40cab5fd7bf ]

The IRQ is requested before the struct rtc is allocated and registered, but
this struct is used in the IRQ handler. This may lead to a NULL pointer
dereference.

Switch to devm_rtc_allocate_device/rtc_register_device to allocate the rtc
before requesting the IRQ.

Acked-by: Eddie Huang <eddie.huang@mediatek.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/rtc/rtc-mt6397.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/rtc/rtc-mt6397.c b/drivers/rtc/rtc-mt6397.c
index 385f8303bb412..e9a25ec4d434f 100644
--- a/drivers/rtc/rtc-mt6397.c
+++ b/drivers/rtc/rtc-mt6397.c
@@ -332,6 +332,10 @@ static int mtk_rtc_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, rtc);
 
+	rtc->rtc_dev = devm_rtc_allocate_device(rtc->dev);
+	if (IS_ERR(rtc->rtc_dev))
+		return PTR_ERR(rtc->rtc_dev);
+
 	ret = request_threaded_irq(rtc->irq, NULL,
 				   mtk_rtc_irq_handler_thread,
 				   IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
@@ -344,11 +348,11 @@ static int mtk_rtc_probe(struct platform_device *pdev)
 
 	device_init_wakeup(&pdev->dev, 1);
 
-	rtc->rtc_dev = rtc_device_register("mt6397-rtc", &pdev->dev,
-					   &mtk_rtc_ops, THIS_MODULE);
-	if (IS_ERR(rtc->rtc_dev)) {
+	rtc->rtc_dev->ops = &mtk_rtc_ops;
+
+	ret = rtc_register_device(rtc->rtc_dev);
+	if (ret) {
 		dev_err(&pdev->dev, "register rtc device failed\n");
-		ret = PTR_ERR(rtc->rtc_dev);
 		goto out_free_irq;
 	}
 
@@ -365,7 +369,6 @@ static int mtk_rtc_remove(struct platform_device *pdev)
 {
 	struct mt6397_rtc *rtc = platform_get_drvdata(pdev);
 
-	rtc_device_unregister(rtc->rtc_dev);
 	free_irq(rtc->irq, rtc->rtc_dev);
 	irq_dispose_mapping(rtc->irq);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 157/422] rtc: pl030: fix possible race condition
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (155 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 156/422] rtc: mt6397: fix possible race condition Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 158/422] ath9k: add back support for using active monitor interfaces for tx99 Greg Kroah-Hartman
                   ` (268 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Alexandre Belloni, Sasha Levin

From: Alexandre Belloni <alexandre.belloni@bootlin.com>

[ Upstream commit c778ec85825dc895936940072aea9fe9037db684 ]

The IRQ is requested before the struct rtc is allocated and registered, but
this struct is used in the IRQ handler. This may lead to a NULL pointer
dereference.

Switch to devm_rtc_allocate_device/rtc_register_device to allocate the rtc
before requesting the IRQ.

Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/rtc/rtc-pl030.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/rtc/rtc-pl030.c b/drivers/rtc/rtc-pl030.c
index f85a1a93e669f..343bb6ed17839 100644
--- a/drivers/rtc/rtc-pl030.c
+++ b/drivers/rtc/rtc-pl030.c
@@ -112,6 +112,13 @@ static int pl030_probe(struct amba_device *dev, const struct amba_id *id)
 		goto err_rtc;
 	}
 
+	rtc->rtc = devm_rtc_allocate_device(&dev->dev);
+	if (IS_ERR(rtc->rtc)) {
+		ret = PTR_ERR(rtc->rtc);
+		goto err_rtc;
+	}
+
+	rtc->rtc->ops = &pl030_ops;
 	rtc->base = ioremap(dev->res.start, resource_size(&dev->res));
 	if (!rtc->base) {
 		ret = -ENOMEM;
@@ -128,12 +135,9 @@ static int pl030_probe(struct amba_device *dev, const struct amba_id *id)
 	if (ret)
 		goto err_irq;
 
-	rtc->rtc = rtc_device_register("pl030", &dev->dev, &pl030_ops,
-				       THIS_MODULE);
-	if (IS_ERR(rtc->rtc)) {
-		ret = PTR_ERR(rtc->rtc);
+	ret = rtc_register_device(rtc->rtc);
+	if (ret)
 		goto err_reg;
-	}
 
 	return 0;
 
@@ -154,7 +158,6 @@ static int pl030_remove(struct amba_device *dev)
 	writel(0, rtc->base + RTC_CR);
 
 	free_irq(dev->irq[0], rtc);
-	rtc_device_unregister(rtc->rtc);
 	iounmap(rtc->base);
 	amba_release_regions(dev);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 158/422] ath9k: add back support for using active monitor interfaces for tx99
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (156 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 157/422] rtc: pl030: " Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 159/422] dmaengine: at_xdmac: remove a stray bottom half unlock Greg Kroah-Hartman
                   ` (267 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Felix Fietkau, Kalle Valo, Sasha Levin

From: Felix Fietkau <nbd@nbd.name>

[ Upstream commit 6df0580be8bc30803c4d8b2ed9c2230a2740c795 ]

Various documented examples on how to set up tx99 with ath9k rely
on setting up a regular monitor interface for setting the channel.
My previous patch "ath9k: fix tx99 with monitor mode interface" made
it possible to set it up this way again. However, it was removing support
for using an active monitor interface, which is required for controlling
the bitrate as well, since the bitrate is not passed down with a regular
monitor interface.

This patch partially reverts the previous one, but keeps support for using
a regular monitor interface to keep documented steps working in cases
where the bitrate does not matter

Fixes: d9c52fd17cb48 ("ath9k: fix tx99 with monitor mode interface")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/ath/ath9k/ath9k.h |  1 +
 drivers/net/wireless/ath/ath9k/main.c  | 10 ++++++++--
 drivers/net/wireless/ath/ath9k/tx99.c  |  7 +++++++
 drivers/net/wireless/ath/ath9k/xmit.c  |  2 +-
 4 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 50206a6d8a850..0fca44e91a712 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -1074,6 +1074,7 @@ struct ath_softc {
 
 	struct ath_spec_scan_priv spec_priv;
 
+	struct ieee80211_vif *tx99_vif;
 	struct sk_buff *tx99_skb;
 	bool tx99_state;
 	s16 tx99_power;
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 6ce4b9f1dcb44..c85f613e8ceb5 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1251,8 +1251,13 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
 	struct ath_vif *avp = (void *)vif->drv_priv;
 	struct ath_node *an = &avp->mcast_node;
 
-	if (IS_ENABLED(CONFIG_ATH9K_TX99))
-		return -EOPNOTSUPP;
+	if (IS_ENABLED(CONFIG_ATH9K_TX99)) {
+		if (sc->cur_chan->nvifs >= 1) {
+			mutex_unlock(&sc->mutex);
+			return -EOPNOTSUPP;
+		}
+		sc->tx99_vif = vif;
+	}
 
 	mutex_lock(&sc->mutex);
 
@@ -1337,6 +1342,7 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
 	ath9k_p2p_remove_vif(sc, vif);
 
 	sc->cur_chan->nvifs--;
+	sc->tx99_vif = NULL;
 	if (!ath9k_is_chanctx_enabled())
 		list_del(&avp->list);
 
diff --git a/drivers/net/wireless/ath/ath9k/tx99.c b/drivers/net/wireless/ath/ath9k/tx99.c
index 9b05ffb68c34a..95544ce05acf9 100644
--- a/drivers/net/wireless/ath/ath9k/tx99.c
+++ b/drivers/net/wireless/ath/ath9k/tx99.c
@@ -54,6 +54,7 @@ static struct sk_buff *ath9k_build_tx99_skb(struct ath_softc *sc)
 	struct ieee80211_hdr *hdr;
 	struct ieee80211_tx_info *tx_info;
 	struct sk_buff *skb;
+	struct ath_vif *avp;
 
 	skb = alloc_skb(len, GFP_KERNEL);
 	if (!skb)
@@ -71,11 +72,17 @@ static struct sk_buff *ath9k_build_tx99_skb(struct ath_softc *sc)
 	memcpy(hdr->addr2, hw->wiphy->perm_addr, ETH_ALEN);
 	memcpy(hdr->addr3, hw->wiphy->perm_addr, ETH_ALEN);
 
+	if (sc->tx99_vif) {
+		avp = (struct ath_vif *) sc->tx99_vif->drv_priv;
+		hdr->seq_ctrl |= cpu_to_le16(avp->seq_no);
+	}
+
 	tx_info = IEEE80211_SKB_CB(skb);
 	memset(tx_info, 0, sizeof(*tx_info));
 	rate = &tx_info->control.rates[0];
 	tx_info->band = sc->cur_chan->chandef.chan->band;
 	tx_info->flags = IEEE80211_TX_CTL_NO_ACK;
+	tx_info->control.vif = sc->tx99_vif;
 	rate->count = 1;
 	if (ah->curchan && IS_CHAN_HT(ah->curchan)) {
 		rate->flags |= IEEE80211_TX_RC_MCS;
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index 3ae8d0585b6f3..4b7a7fc2a0fe0 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -2974,7 +2974,7 @@ int ath9k_tx99_send(struct ath_softc *sc, struct sk_buff *skb,
 		return -EINVAL;
 	}
 
-	ath_set_rates(NULL, NULL, bf);
+	ath_set_rates(sc->tx99_vif, NULL, bf);
 
 	ath9k_hw_set_desc_link(sc->sc_ah, bf->bf_desc, bf->bf_daddr);
 	ath9k_hw_tx99_start(sc->sc_ah, txctl->txq->axq_qnum);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 159/422] dmaengine: at_xdmac: remove a stray bottom half unlock
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (157 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 158/422] ath9k: add back support for using active monitor interfaces for tx99 Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 160/422] RDMA/hns: Fix an error code in hns_roce_v2_init_eq_table() Greg Kroah-Hartman
                   ` (266 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dan Carpenter, Vinod Koul, Sasha Levin

From: Dan Carpenter <dan.carpenter@oracle.com>

[ Upstream commit 0b515abb6b7eb08e90bdfc01fc8fbdd112c15d81 ]

We switched this code from spin_lock_bh() to vanilla spin_lock() but
there was one stray spin_unlock_bh() that was overlooked.  This
patch converts it to spin_unlock() as well.

Fixes: d8570d018f69 ("dmaengine: at_xdmac: move spin_lock_bh to spin_lock in tasklet")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/dma/at_xdmac.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c
index db5b8fe1dd4ab..7db66f974041e 100644
--- a/drivers/dma/at_xdmac.c
+++ b/drivers/dma/at_xdmac.c
@@ -1608,7 +1608,7 @@ static void at_xdmac_tasklet(unsigned long data)
 		dev_vdbg(chan2dev(&atchan->chan), "%s: desc 0x%p\n", __func__, desc);
 		if (!desc->active_xfer) {
 			dev_err(chan2dev(&atchan->chan), "Xfer not active: exiting");
-			spin_unlock_bh(&atchan->lock);
+			spin_unlock(&atchan->lock);
 			return;
 		}
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 160/422] RDMA/hns: Fix an error code in hns_roce_v2_init_eq_table()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (158 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 159/422] dmaengine: at_xdmac: remove a stray bottom half unlock Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 161/422] IB/hfi1: Missing return value in error path for user sdma Greg Kroah-Hartman
                   ` (265 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dan Carpenter, Jason Gunthorpe, Sasha Levin

From: Dan Carpenter <dan.carpenter@oracle.com>

[ Upstream commit f1a315420e79fe5c077fa119db9439ffabd2cda2 ]

The error code isn't set on this path.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
index cf878e1b71fc1..3f8e13190aa71 100644
--- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
+++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
@@ -5117,6 +5117,7 @@ static int hns_roce_v2_init_eq_table(struct hns_roce_dev *hr_dev)
 		create_singlethread_workqueue("hns_roce_irq_workqueue");
 	if (!hr_dev->irq_workq) {
 		dev_err(dev, "Create irq workqueue failed!\n");
+		ret = -ENOMEM;
 		goto err_request_irq_fail;
 	}
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 161/422] IB/hfi1: Missing return value in error path for user sdma
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (159 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 160/422] RDMA/hns: Fix an error code in hns_roce_v2_init_eq_table() Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:15 ` [PATCH 4.19 162/422] signal: Always ignore SIGKILL and SIGSTOP sent to the global init Greg Kroah-Hartman
                   ` (264 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Michael J. Ruhl, Dennis Dalessandro,
	Jason Gunthorpe, Sasha Levin

From: Michael J. Ruhl <michael.j.ruhl@intel.com>

[ Upstream commit 2bf4b33f83dfe521c4c7c407b6b150aeec04d69c ]

If the set_txreq_header_agh() function returns an error, the exit path
is chosen.

In this path, the code fails to set the return value.  This will cause
the caller to not realize an error has occurred.

Set the return value correctly in the error path.

Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/hw/hfi1/user_sdma.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/infiniband/hw/hfi1/user_sdma.c b/drivers/infiniband/hw/hfi1/user_sdma.c
index cbff746d9e9de..684a298e15037 100644
--- a/drivers/infiniband/hw/hfi1/user_sdma.c
+++ b/drivers/infiniband/hw/hfi1/user_sdma.c
@@ -856,8 +856,10 @@ static int user_sdma_send_pkts(struct user_sdma_request *req, unsigned maxpkts)
 
 				changes = set_txreq_header_ahg(req, tx,
 							       datalen);
-				if (changes < 0)
+				if (changes < 0) {
+					ret = changes;
 					goto free_tx;
+				}
 			}
 		} else {
 			ret = sdma_txinit(&tx->txreq, 0, sizeof(req->hdr) +
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 162/422] signal: Always ignore SIGKILL and SIGSTOP sent to the global init
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (160 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 161/422] IB/hfi1: Missing return value in error path for user sdma Greg Kroah-Hartman
@ 2019-11-19  5:15 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 163/422] signal: Properly deliver SIGILL from uprobes Greg Kroah-Hartman
                   ` (263 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Thomas Gleixner, Eric W. Biederman,
	Sasha Levin

From: Eric W. Biederman <ebiederm@xmission.com>

[ Upstream commit 86989c41b5ea08776c450cb759592532314a4ed6 ]

If the first process started (aka /sbin/init) receives a SIGKILL it
will panic the system if it is delivered.  Making the system unusable
and undebugable.  It isn't much better if the first process started
receives SIGSTOP.

So always ignore SIGSTOP and SIGKILL sent to init.

This is done in a separate clause in sig_task_ignored as force_sig_info
can clear SIG_UNKILLABLE and this protection should work even then.

Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 kernel/signal.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/kernel/signal.c b/kernel/signal.c
index 0e6bc3049427e..7278302e34850 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -78,6 +78,10 @@ static bool sig_task_ignored(struct task_struct *t, int sig, bool force)
 
 	handler = sig_handler(t, sig);
 
+	/* SIGKILL and SIGSTOP may not be sent to the global init */
+	if (unlikely(is_global_init(t) && sig_kernel_only(sig)))
+		return true;
+
 	if (unlikely(t->signal->flags & SIGNAL_UNKILLABLE) &&
 	    handler == SIG_DFL && !(force && sig_kernel_only(sig)))
 		return true;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 163/422] signal: Properly deliver SIGILL from uprobes
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (161 preceding siblings ...)
  2019-11-19  5:15 ` [PATCH 4.19 162/422] signal: Always ignore SIGKILL and SIGSTOP sent to the global init Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 164/422] signal: Properly deliver SIGSEGV from x86 uprobes Greg Kroah-Hartman
                   ` (262 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Thomas Gleixner, Eric W. Biederman,
	Sasha Levin

From: Eric W. Biederman <ebiederm@xmission.com>

[ Upstream commit 55a3235fc71bf34303e34a95eeee235b2d2a35dd ]

For userspace to tell the difference between a random signal and an
exception, the exception must include siginfo information.

Using SEND_SIG_FORCED for SIGILL is thus wrong, and it will result
in userspace seeing si_code == SI_USER (like a random signal) instead
of si_code == SI_KERNEL or a more specific si_code as all exceptions
deliver.

Therefore replace force_sig_info(SIGILL, SEND_SIG_FORCE, current)
with force_sig(SIG_ILL, current) which gets this right and is
shorter and easier to type.

Fixes: 014940bad8e4 ("uprobes/x86: Send SIGILL if arch_uprobe_post_xol() fails")
Fixes: 0b5256c7f173 ("uprobes: Send SIGILL if handle_trampoline() fails")
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 kernel/events/uprobes.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
index 578d4ac54484f..c173e4131df88 100644
--- a/kernel/events/uprobes.c
+++ b/kernel/events/uprobes.c
@@ -1858,7 +1858,7 @@ static void handle_trampoline(struct pt_regs *regs)
 
  sigill:
 	uprobe_warn(current, "handle uretprobe, sending SIGILL.");
-	force_sig_info(SIGILL, SEND_SIG_FORCED, current);
+	force_sig(SIGILL, current);
 
 }
 
@@ -1974,7 +1974,7 @@ static void handle_singlestep(struct uprobe_task *utask, struct pt_regs *regs)
 
 	if (unlikely(err)) {
 		uprobe_warn(current, "execute the probed insn, sending SIGILL.");
-		force_sig_info(SIGILL, SEND_SIG_FORCED, current);
+		force_sig(SIGILL, current);
 	}
 }
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 164/422] signal: Properly deliver SIGSEGV from x86 uprobes
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (162 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 163/422] signal: Properly deliver SIGILL from uprobes Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 165/422] f2fs: fix memory leak of write_io in fill_super() Greg Kroah-Hartman
                   ` (261 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Thomas Gleixner, Eric W. Biederman,
	Sasha Levin

From: Eric W. Biederman <ebiederm@xmission.com>

[ Upstream commit 4a63c1ffd384ebdce40aac9c997dab68379137be ]

For userspace to tell the difference between an random signal
and an exception, the exception must include siginfo information.

Using SEND_SIG_FORCED for SIGSEGV is thus wrong, and it will result in
userspace seeing si_code == SI_USER (like a random signal) instead of
si_code == SI_KERNEL or a more specific si_code as all exceptions
deliver.

Therefore replace force_sig_info(SIGSEGV, SEND_SIG_FORCE, current)
with force_sig(SIG_SEGV, current) which gets this right and is shorter
and easier to type.

Fixes: 791eca10107f ("uretprobes/x86: Hijack return address")
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/x86/kernel/uprobes.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/uprobes.c b/arch/x86/kernel/uprobes.c
index 9119859ba7871..420aa7d3a2e6b 100644
--- a/arch/x86/kernel/uprobes.c
+++ b/arch/x86/kernel/uprobes.c
@@ -1089,7 +1089,7 @@ arch_uretprobe_hijack_return_addr(unsigned long trampoline_vaddr, struct pt_regs
 		pr_err("return address clobbered: pid=%d, %%sp=%#lx, %%ip=%#lx\n",
 		       current->pid, regs->sp, regs->ip);
 
-		force_sig_info(SIGSEGV, SEND_SIG_FORCED, current);
+		force_sig(SIGSEGV, current);
 	}
 
 	return -1;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 165/422] f2fs: fix memory leak of write_io in fill_super()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (163 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 164/422] signal: Properly deliver SIGSEGV from x86 uprobes Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 166/422] f2fs: fix memory leak of percpu counter " Greg Kroah-Hartman
                   ` (260 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Chao Yu, Jaegeuk Kim, Sasha Levin

From: Chao Yu <yuchao0@huawei.com>

[ Upstream commit 0b2103e886e6de9802e1170e57c573443286a483 ]

It needs to release memory allocated for sbi->write_io in error path,
otherwise, it will cause memory leak.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/f2fs/super.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index d9106bbe7df63..58931d55dc1d2 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -2929,7 +2929,7 @@ try_onemore:
 				     GFP_KERNEL);
 		if (!sbi->write_io[i]) {
 			err = -ENOMEM;
-			goto free_options;
+			goto free_bio_info;
 		}
 
 		for (j = HOT; j < n; j++) {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 166/422] f2fs: fix memory leak of percpu counter in fill_super()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (164 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 165/422] f2fs: fix memory leak of write_io in fill_super() Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-21 13:39   ` Pavel Machek
  2019-11-19  5:16 ` [PATCH 4.19 167/422] f2fs: fix setattr project check upon fssetxattr ioctl Greg Kroah-Hartman
                   ` (259 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Chao Yu, Jaegeuk Kim, Sasha Levin

From: Chao Yu <yuchao0@huawei.com>

[ Upstream commit 4a70e255449c9a13eed7a6eeecc85a1ea63cef76 ]

In fill_super -> init_percpu_info, we should destroy percpu counter
in error path, otherwise memory allcoated for percpu counter will
leak.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/f2fs/super.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 58931d55dc1d2..c5d28e92d146e 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -2516,8 +2516,12 @@ static int init_percpu_info(struct f2fs_sb_info *sbi)
 	if (err)
 		return err;
 
-	return percpu_counter_init(&sbi->total_valid_inode_count, 0,
+	err = percpu_counter_init(&sbi->total_valid_inode_count, 0,
 								GFP_KERNEL);
+	if (err)
+		percpu_counter_destroy(&sbi->alloc_valid_block_count);
+
+	return err;
 }
 
 #ifdef CONFIG_BLK_DEV_ZONED
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 167/422] f2fs: fix setattr project check upon fssetxattr ioctl
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (165 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 166/422] f2fs: fix memory leak of percpu counter " Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 168/422] scsi: qla2xxx: Use correct qpair for ABTS/CMD Greg Kroah-Hartman
                   ` (258 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Wang Shilong, Chao Yu, Jaegeuk Kim,
	Sasha Levin

From: Wang Shilong <wangshilong1991@gmail.com>

[ Upstream commit c8e927579e00a182eda07e4c45df9c8c699c8ded ]

Currently, project quota could be changed by fssetxattr
ioctl, and existed permission check inode_owner_or_capable()
is obviously not enough, just think that common users could
change project id of file, that could make users to
break project quota easily.

This patch try to follow same regular of xfs project
quota:

"Project Quota ID state is only allowed to change from
within the init namespace. Enforce that restriction only
if we are trying to change the quota ID state.
Everything else is allowed in user namespaces."

Besides that, check and set project id'state should
be an atomic operation, protect whole operation with
inode lock.

Signed-off-by: Wang Shilong <wshilong@ddn.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/f2fs/file.c | 60 +++++++++++++++++++++++++++++++-------------------
 1 file changed, 37 insertions(+), 23 deletions(-)

diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 6972c6d7c3893..c7ea122997695 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -2618,34 +2618,26 @@ static int f2fs_ioc_setproject(struct file *filp, __u32 projid)
 	if (projid_eq(kprojid, F2FS_I(inode)->i_projid))
 		return 0;
 
-	err = mnt_want_write_file(filp);
-	if (err)
-		return err;
-
 	err = -EPERM;
-	inode_lock(inode);
-
 	/* Is it quota file? Do not allow user to mess with it */
 	if (IS_NOQUOTA(inode))
-		goto out_unlock;
+		return err;
 
 	ipage = f2fs_get_node_page(sbi, inode->i_ino);
-	if (IS_ERR(ipage)) {
-		err = PTR_ERR(ipage);
-		goto out_unlock;
-	}
+	if (IS_ERR(ipage))
+		return PTR_ERR(ipage);
 
 	if (!F2FS_FITS_IN_INODE(F2FS_INODE(ipage), fi->i_extra_isize,
 								i_projid)) {
 		err = -EOVERFLOW;
 		f2fs_put_page(ipage, 1);
-		goto out_unlock;
+		return err;
 	}
 	f2fs_put_page(ipage, 1);
 
 	err = dquot_initialize(inode);
 	if (err)
-		goto out_unlock;
+		return err;
 
 	transfer_to[PRJQUOTA] = dqget(sb, make_kqid_projid(kprojid));
 	if (!IS_ERR(transfer_to[PRJQUOTA])) {
@@ -2659,9 +2651,6 @@ static int f2fs_ioc_setproject(struct file *filp, __u32 projid)
 	inode->i_ctime = current_time(inode);
 out_dirty:
 	f2fs_mark_inode_dirty_sync(inode, true);
-out_unlock:
-	inode_unlock(inode);
-	mnt_drop_write_file(filp);
 	return err;
 }
 #else
@@ -2737,6 +2726,30 @@ static int f2fs_ioc_fsgetxattr(struct file *filp, unsigned long arg)
 	return 0;
 }
 
+static int f2fs_ioctl_check_project(struct inode *inode, struct fsxattr *fa)
+{
+	/*
+	 * Project Quota ID state is only allowed to change from within the init
+	 * namespace. Enforce that restriction only if we are trying to change
+	 * the quota ID state. Everything else is allowed in user namespaces.
+	 */
+	if (current_user_ns() == &init_user_ns)
+		return 0;
+
+	if (__kprojid_val(F2FS_I(inode)->i_projid) != fa->fsx_projid)
+		return -EINVAL;
+
+	if (F2FS_I(inode)->i_flags & F2FS_PROJINHERIT_FL) {
+		if (!(fa->fsx_xflags & FS_XFLAG_PROJINHERIT))
+			return -EINVAL;
+	} else {
+		if (fa->fsx_xflags & FS_XFLAG_PROJINHERIT)
+			return -EINVAL;
+	}
+
+	return 0;
+}
+
 static int f2fs_ioc_fssetxattr(struct file *filp, unsigned long arg)
 {
 	struct inode *inode = file_inode(filp);
@@ -2764,19 +2777,20 @@ static int f2fs_ioc_fssetxattr(struct file *filp, unsigned long arg)
 		return err;
 
 	inode_lock(inode);
+	err = f2fs_ioctl_check_project(inode, &fa);
+	if (err)
+		goto out;
 	flags = (fi->i_flags & ~F2FS_FL_XFLAG_VISIBLE) |
 				(flags & F2FS_FL_XFLAG_VISIBLE);
 	err = __f2fs_ioc_setflags(inode, flags);
-	inode_unlock(inode);
-	mnt_drop_write_file(filp);
 	if (err)
-		return err;
+		goto out;
 
 	err = f2fs_ioc_setproject(filp, fa.fsx_projid);
-	if (err)
-		return err;
-
-	return 0;
+out:
+	inode_unlock(inode);
+	mnt_drop_write_file(filp);
+	return err;
 }
 
 int f2fs_pin_file_control(struct inode *inode, bool inc)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 168/422] scsi: qla2xxx: Use correct qpair for ABTS/CMD
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (166 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 167/422] f2fs: fix setattr project check upon fssetxattr ioctl Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 169/422] scsi: qla2xxx: Fix iIDMA error Greg Kroah-Hartman
                   ` (257 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Quinn Tran, Himanshu Madhani,
	Martin K. Petersen, Sasha Levin

From: Quinn Tran <quinn.tran@cavium.com>

[ Upstream commit 49cecca7dd49e2950ed6d973acfa84e7c8c7a480 ]

On Abort of initiator scsi command, the abort needs to follow the same qpair
as the the scsi command to prevent out of order processing.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/qla2xxx/qla_init.c | 15 +++++----------
 drivers/scsi/qla2xxx/qla_iocb.c | 12 +++++++-----
 2 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index bee9cfb291529..e5ecef94aebdb 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -1772,18 +1772,18 @@ int
 qla24xx_async_abort_cmd(srb_t *cmd_sp, bool wait)
 {
 	scsi_qla_host_t *vha = cmd_sp->vha;
-	fc_port_t *fcport = cmd_sp->fcport;
 	struct srb_iocb *abt_iocb;
 	srb_t *sp;
 	int rval = QLA_FUNCTION_FAILED;
 
-	sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL);
+	sp = qla2xxx_get_qpair_sp(cmd_sp->qpair, cmd_sp->fcport, GFP_KERNEL);
 	if (!sp)
 		goto done;
 
 	abt_iocb = &sp->u.iocb_cmd;
 	sp->type = SRB_ABT_CMD;
 	sp->name = "abort";
+	sp->qpair = cmd_sp->qpair;
 	if (wait)
 		sp->flags = SRB_WAKEUP_ON_COMP;
 
@@ -1792,18 +1792,13 @@ qla24xx_async_abort_cmd(srb_t *cmd_sp, bool wait)
 	qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha));
 
 	abt_iocb->u.abt.cmd_hndl = cmd_sp->handle;
-
-	if (vha->flags.qpairs_available && cmd_sp->qpair)
-		abt_iocb->u.abt.req_que_no =
-		    cpu_to_le16(cmd_sp->qpair->req->id);
-	else
-		abt_iocb->u.abt.req_que_no = cpu_to_le16(vha->req->id);
+	abt_iocb->u.abt.req_que_no = cpu_to_le16(cmd_sp->qpair->req->id);
 
 	sp->done = qla24xx_abort_sp_done;
 
 	ql_dbg(ql_dbg_async, vha, 0x507c,
-	    "Abort command issued - hdl=%x, target_id=%x\n",
-	    cmd_sp->handle, fcport->tgt_id);
+	    "Abort command issued - hdl=%x, type=%x\n",
+	    cmd_sp->handle, cmd_sp->type);
 
 	rval = qla2x00_start_sp(sp);
 	if (rval != QLA_SUCCESS)
diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c
index 119927220299e..c699bbb8485bb 100644
--- a/drivers/scsi/qla2xxx/qla_iocb.c
+++ b/drivers/scsi/qla2xxx/qla_iocb.c
@@ -3297,19 +3297,21 @@ qla24xx_abort_iocb(srb_t *sp, struct abort_entry_24xx *abt_iocb)
 {
 	struct srb_iocb *aio = &sp->u.iocb_cmd;
 	scsi_qla_host_t *vha = sp->vha;
-	struct req_que *req = vha->req;
+	struct req_que *req = sp->qpair->req;
 
 	memset(abt_iocb, 0, sizeof(struct abort_entry_24xx));
 	abt_iocb->entry_type = ABORT_IOCB_TYPE;
 	abt_iocb->entry_count = 1;
 	abt_iocb->handle = cpu_to_le32(MAKE_HANDLE(req->id, sp->handle));
-	abt_iocb->nport_handle = cpu_to_le16(sp->fcport->loop_id);
+	if (sp->fcport) {
+		abt_iocb->nport_handle = cpu_to_le16(sp->fcport->loop_id);
+		abt_iocb->port_id[0] = sp->fcport->d_id.b.al_pa;
+		abt_iocb->port_id[1] = sp->fcport->d_id.b.area;
+		abt_iocb->port_id[2] = sp->fcport->d_id.b.domain;
+	}
 	abt_iocb->handle_to_abort =
 	    cpu_to_le32(MAKE_HANDLE(aio->u.abt.req_que_no,
 				    aio->u.abt.cmd_hndl));
-	abt_iocb->port_id[0] = sp->fcport->d_id.b.al_pa;
-	abt_iocb->port_id[1] = sp->fcport->d_id.b.area;
-	abt_iocb->port_id[2] = sp->fcport->d_id.b.domain;
 	abt_iocb->vp_index = vha->vp_idx;
 	abt_iocb->req_que_no = cpu_to_le16(aio->u.abt.req_que_no);
 	/* Send the command to the firmware */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 169/422] scsi: qla2xxx: Fix iIDMA error
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (167 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 168/422] scsi: qla2xxx: Use correct qpair for ABTS/CMD Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 170/422] scsi: qla2xxx: Defer chip reset until target mode is enabled Greg Kroah-Hartman
                   ` (256 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Quinn Tran, Himanshu Madhani,
	Martin K. Petersen, Sasha Levin

From: Quinn Tran <quinn.tran@cavium.com>

[ Upstream commit 8d9bf0a9a268f7ca0b811d6e6a1fc783afa5c746 ]

When switch responds with error for Get Port Speed Command (GPSC), driver
should not proceed with telling FW about the speed of the remote port.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/qla2xxx/qla_gs.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c
index 34ff4bbc8de10..d611cf722244c 100644
--- a/drivers/scsi/qla2xxx/qla_gs.c
+++ b/drivers/scsi/qla2xxx/qla_gs.c
@@ -3277,7 +3277,7 @@ static void qla24xx_async_gpsc_sp_done(void *s, int res)
 			ql_dbg(ql_dbg_disc, vha, 0x2019,
 			    "GPSC command unsupported, disabling query.\n");
 			ha->flags.gpsc_supported = 0;
-			res = QLA_SUCCESS;
+			goto done;
 		}
 	} else {
 		switch (be16_to_cpu(ct_rsp->rsp.gpsc.speed)) {
@@ -3310,7 +3310,6 @@ static void qla24xx_async_gpsc_sp_done(void *s, int res)
 		    be16_to_cpu(ct_rsp->rsp.gpsc.speeds),
 		    be16_to_cpu(ct_rsp->rsp.gpsc.speed));
 	}
-done:
 	memset(&ea, 0, sizeof(ea));
 	ea.event = FCME_GPSC_DONE;
 	ea.rc = res;
@@ -3318,6 +3317,7 @@ done:
 	ea.sp = sp;
 	qla2x00_fcport_event_handler(vha, &ea);
 
+done:
 	sp->free(sp);
 }
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 170/422] scsi: qla2xxx: Defer chip reset until target mode is enabled
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (168 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 169/422] scsi: qla2xxx: Fix iIDMA error Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 171/422] scsi: qla2xxx: Terminate Plogi/PRLI if WWN is 0 Greg Kroah-Hartman
                   ` (255 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Quinn Tran, Himanshu Madhani,
	Martin K. Petersen, Sasha Levin

From: Quinn Tran <quinn.tran@cavium.com>

[ Upstream commit 93eca6135183f7a71e36acd47655a085ed11bcdc ]

For target mode, any chip reset triggered before target mode is enabled will
be held off until user is ready to enable.  This prevents the chip from
starting or running before it is intended.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/qla2xxx/qla_os.c | 28 +++++++++++++++++++++-------
 1 file changed, 21 insertions(+), 7 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 18ee614fe07f5..d978ea1344625 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -6059,12 +6059,27 @@ qla2x00_do_dpc(void *data)
 		if (test_and_clear_bit
 		    (ISP_ABORT_NEEDED, &base_vha->dpc_flags) &&
 		    !test_bit(UNLOADING, &base_vha->dpc_flags)) {
+			bool do_reset = true;
+
+			switch (ql2x_ini_mode) {
+			case QLA2XXX_INI_MODE_ENABLED:
+				break;
+			case QLA2XXX_INI_MODE_DISABLED:
+				if (!qla_tgt_mode_enabled(base_vha))
+					do_reset = false;
+				break;
+			case QLA2XXX_INI_MODE_DUAL:
+				if (!qla_dual_mode_enabled(base_vha))
+					do_reset = false;
+				break;
+			default:
+				break;
+			}
 
-			ql_dbg(ql_dbg_dpc, base_vha, 0x4007,
-			    "ISP abort scheduled.\n");
-			if (!(test_and_set_bit(ABORT_ISP_ACTIVE,
+			if (do_reset && !(test_and_set_bit(ABORT_ISP_ACTIVE,
 			    &base_vha->dpc_flags))) {
-
+				ql_dbg(ql_dbg_dpc, base_vha, 0x4007,
+				    "ISP abort scheduled.\n");
 				if (ha->isp_ops->abort_isp(base_vha)) {
 					/* failed. retry later */
 					set_bit(ISP_ABORT_NEEDED,
@@ -6072,10 +6087,9 @@ qla2x00_do_dpc(void *data)
 				}
 				clear_bit(ABORT_ISP_ACTIVE,
 						&base_vha->dpc_flags);
+				ql_dbg(ql_dbg_dpc, base_vha, 0x4008,
+				    "ISP abort end.\n");
 			}
-
-			ql_dbg(ql_dbg_dpc, base_vha, 0x4008,
-			    "ISP abort end.\n");
 		}
 
 		if (test_and_clear_bit(FCPORT_UPDATE_NEEDED,
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 171/422] scsi: qla2xxx: Terminate Plogi/PRLI if WWN is 0
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (169 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 170/422] scsi: qla2xxx: Defer chip reset until target mode is enabled Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 172/422] scsi: qla2xxx: Fix deadlock between ATIO and HW lock Greg Kroah-Hartman
                   ` (254 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Quinn Tran, Himanshu Madhani,
	Martin K. Petersen, Sasha Levin

From: Quinn Tran <quinn.tran@cavium.com>

[ Upstream commit aa9e6d7b9643fc50a88c7b7aa1e34be8dc032749 ]

When driver receive PLOGI/PRLI from FW, the WWPN value will be provided.  If
it is not, then driver will terminate it.  The WWPN allows driver to locate
the session or create a new session.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/qla2xxx/qla_target.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
index d6dc320f81a7a..078d124533247 100644
--- a/drivers/scsi/qla2xxx/qla_target.c
+++ b/drivers/scsi/qla2xxx/qla_target.c
@@ -4703,6 +4703,12 @@ static int qlt_handle_login(struct scsi_qla_host *vha,
 		sess = qlt_find_sess_invalidate_other(vha, wwn,
 		    port_id, loop_id, &conflict_sess);
 		spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags);
+	} else {
+		ql_dbg(ql_dbg_disc, vha, 0xffff,
+		    "%s %d Term INOT due to WWN=0 lid=%d, NportID %06X ",
+		    __func__, __LINE__, loop_id, port_id.b24);
+		qlt_send_term_imm_notif(vha, iocb, 1);
+		goto out;
 	}
 
 	if (IS_SW_RESV_ADDR(port_id)) {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 172/422] scsi: qla2xxx: Fix deadlock between ATIO and HW lock
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (170 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 171/422] scsi: qla2xxx: Terminate Plogi/PRLI if WWN is 0 Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 173/422] scsi: qla2xxx: Increase abort timeout value Greg Kroah-Hartman
                   ` (253 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Quinn Tran, Himanshu Madhani,
	Martin K. Petersen, Sasha Levin

From: Quinn Tran <quinn.tran@cavium.com>

[ Upstream commit 1073daa470d906f1853ed4b828f16e2350a5875c ]

Move ATIO queue processing out of hardware_lock to prevent deadlock.

Fixes: 3bb67df5b5f8 ("qla2xxx: Check for online flag instead of active reset when transmitting responses")
Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/qla2xxx/qla_init.c | 17 +++---------
 drivers/scsi/qla2xxx/qla_isr.c  | 48 +++++++++++++++------------------
 2 files changed, 26 insertions(+), 39 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index e5ecef94aebdb..733a55c09b1ca 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -4869,19 +4869,10 @@ qla2x00_configure_loop(scsi_qla_host_t *vha)
 			 */
 			if (qla_tgt_mode_enabled(vha) ||
 			    qla_dual_mode_enabled(vha)) {
-				if (IS_QLA27XX(ha) || IS_QLA83XX(ha)) {
-					spin_lock_irqsave(&ha->tgt.atio_lock,
-					    flags);
-					qlt_24xx_process_atio_queue(vha, 0);
-					spin_unlock_irqrestore(
-					    &ha->tgt.atio_lock, flags);
-				} else {
-					spin_lock_irqsave(&ha->hardware_lock,
-					    flags);
-					qlt_24xx_process_atio_queue(vha, 1);
-					spin_unlock_irqrestore(
-					    &ha->hardware_lock, flags);
-				}
+				spin_lock_irqsave(&ha->tgt.atio_lock, flags);
+				qlt_24xx_process_atio_queue(vha, 0);
+				spin_unlock_irqrestore(&ha->tgt.atio_lock,
+				    flags);
 			}
 		}
 	}
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 88d8acf86a2a4..f559beda8d5ad 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -3121,6 +3121,7 @@ qla24xx_intr_handler(int irq, void *dev_id)
 	uint16_t	mb[8];
 	struct rsp_que *rsp;
 	unsigned long	flags;
+	bool process_atio = false;
 
 	rsp = (struct rsp_que *) dev_id;
 	if (!rsp) {
@@ -3181,22 +3182,13 @@ qla24xx_intr_handler(int irq, void *dev_id)
 			qla24xx_process_response_queue(vha, rsp);
 			break;
 		case INTR_ATIO_QUE_UPDATE_27XX:
-		case INTR_ATIO_QUE_UPDATE:{
-			unsigned long flags2;
-			spin_lock_irqsave(&ha->tgt.atio_lock, flags2);
-			qlt_24xx_process_atio_queue(vha, 1);
-			spin_unlock_irqrestore(&ha->tgt.atio_lock, flags2);
+		case INTR_ATIO_QUE_UPDATE:
+			process_atio = true;
 			break;
-		}
-		case INTR_ATIO_RSP_QUE_UPDATE: {
-			unsigned long flags2;
-			spin_lock_irqsave(&ha->tgt.atio_lock, flags2);
-			qlt_24xx_process_atio_queue(vha, 1);
-			spin_unlock_irqrestore(&ha->tgt.atio_lock, flags2);
-
+		case INTR_ATIO_RSP_QUE_UPDATE:
+			process_atio = true;
 			qla24xx_process_response_queue(vha, rsp);
 			break;
-		}
 		default:
 			ql_dbg(ql_dbg_async, vha, 0x504f,
 			    "Unrecognized interrupt type (%d).\n", stat * 0xff);
@@ -3210,6 +3202,12 @@ qla24xx_intr_handler(int irq, void *dev_id)
 	qla2x00_handle_mbx_completion(ha, status);
 	spin_unlock_irqrestore(&ha->hardware_lock, flags);
 
+	if (process_atio) {
+		spin_lock_irqsave(&ha->tgt.atio_lock, flags);
+		qlt_24xx_process_atio_queue(vha, 0);
+		spin_unlock_irqrestore(&ha->tgt.atio_lock, flags);
+	}
+
 	return IRQ_HANDLED;
 }
 
@@ -3256,6 +3254,7 @@ qla24xx_msix_default(int irq, void *dev_id)
 	uint32_t	hccr;
 	uint16_t	mb[8];
 	unsigned long flags;
+	bool process_atio = false;
 
 	rsp = (struct rsp_que *) dev_id;
 	if (!rsp) {
@@ -3312,22 +3311,13 @@ qla24xx_msix_default(int irq, void *dev_id)
 			qla24xx_process_response_queue(vha, rsp);
 			break;
 		case INTR_ATIO_QUE_UPDATE_27XX:
-		case INTR_ATIO_QUE_UPDATE:{
-			unsigned long flags2;
-			spin_lock_irqsave(&ha->tgt.atio_lock, flags2);
-			qlt_24xx_process_atio_queue(vha, 1);
-			spin_unlock_irqrestore(&ha->tgt.atio_lock, flags2);
+		case INTR_ATIO_QUE_UPDATE:
+			process_atio = true;
 			break;
-		}
-		case INTR_ATIO_RSP_QUE_UPDATE: {
-			unsigned long flags2;
-			spin_lock_irqsave(&ha->tgt.atio_lock, flags2);
-			qlt_24xx_process_atio_queue(vha, 1);
-			spin_unlock_irqrestore(&ha->tgt.atio_lock, flags2);
-
+		case INTR_ATIO_RSP_QUE_UPDATE:
+			process_atio = true;
 			qla24xx_process_response_queue(vha, rsp);
 			break;
-		}
 		default:
 			ql_dbg(ql_dbg_async, vha, 0x5051,
 			    "Unrecognized interrupt type (%d).\n", stat & 0xff);
@@ -3338,6 +3328,12 @@ qla24xx_msix_default(int irq, void *dev_id)
 	qla2x00_handle_mbx_completion(ha, status);
 	spin_unlock_irqrestore(&ha->hardware_lock, flags);
 
+	if (process_atio) {
+		spin_lock_irqsave(&ha->tgt.atio_lock, flags);
+		qlt_24xx_process_atio_queue(vha, 0);
+		spin_unlock_irqrestore(&ha->tgt.atio_lock, flags);
+	}
+
 	return IRQ_HANDLED;
 }
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 173/422] scsi: qla2xxx: Increase abort timeout value
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (171 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 172/422] scsi: qla2xxx: Fix deadlock between ATIO and HW lock Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 174/422] scsi: qla2xxx: Check for Register disconnect Greg Kroah-Hartman
                   ` (252 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Quinn Tran, Himanshu Madhani,
	Martin K. Petersen, Sasha Levin

From: Quinn Tran <quinn.tran@cavium.com>

[ Upstream commit 8bccfe0d21b5adbba6ec4fe1776160b80d09f78a ]

Abort IOCB request can take up to 40s or 2 ABTS timeout.  We will wait for
ABTS response for 20s. On a timeout, second ABTS can go out with another 20s
timeout. On 2nd ABTS timeout FW will automatically do Logout.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/qla2xxx/qla_init.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 733a55c09b1ca..8f502505aa796 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -1789,7 +1789,8 @@ qla24xx_async_abort_cmd(srb_t *cmd_sp, bool wait)
 
 	abt_iocb->timeout = qla24xx_abort_iocb_timeout;
 	init_completion(&abt_iocb->u.abt.comp);
-	qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha));
+	/* FW can send 2 x ABTS's timeout/20s */
+	qla2x00_init_timer(sp, 42);
 
 	abt_iocb->u.abt.cmd_hndl = cmd_sp->handle;
 	abt_iocb->u.abt.req_que_no = cpu_to_le16(cmd_sp->qpair->req->id);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 174/422] scsi: qla2xxx: Check for Register disconnect
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (172 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 173/422] scsi: qla2xxx: Increase abort timeout value Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 175/422] scsi: qla2xxx: Fix port speed display on chip reset Greg Kroah-Hartman
                   ` (251 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sawan Chandak, Himanshu Madhani,
	Martin K. Petersen, Sasha Levin

From: Sawan Chandak <sawan.chandak@cavium.com>

[ Upstream commit f99c5d294b3653e6ae563eaac5db5b4138afe31c ]

During adapter shutdown process check for register disconnect before
proceeding to call PCI functions.

Signed-off-by: Sawan Chandak <sawan.chandak@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/qla2xxx/qla_os.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index d978ea1344625..3e892e013658d 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -1744,6 +1744,7 @@ __qla2x00_abort_all_cmds(struct qla_qpair *qp, int res)
 				    !ha->flags.eeh_busy &&
 				    (!test_bit(ABORT_ISP_ACTIVE,
 					&vha->dpc_flags)) &&
+				    !qla2x00_isp_reg_stat(ha) &&
 				    (sp->type == SRB_SCSI_CMD)) {
 					/*
 					 * Don't abort commands in
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 175/422] scsi: qla2xxx: Fix port speed display on chip reset
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (173 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 174/422] scsi: qla2xxx: Check for Register disconnect Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 176/422] scsi: qla2xxx: Fix dropped srb resource Greg Kroah-Hartman
                   ` (250 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Quinn Tran, Himanshu Madhani,
	Martin K. Petersen, Sasha Levin

From: Quinn Tran <quinn.tran@cavium.com>

[ Upstream commit 5d74c87a20adcc77b19753c315ad9c320b2288be ]

Clear port speed value on chip reset.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/qla2xxx/qla_init.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 8f502505aa796..653d535e3052f 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -6502,6 +6502,7 @@ qla2x00_abort_isp_cleanup(scsi_qla_host_t *vha)
 	if (!(IS_P3P_TYPE(ha)))
 		ha->isp_ops->reset_chip(vha);
 
+	ha->link_data_rate = PORT_SPEED_UNKNOWN;
 	SAVE_TOPO(ha);
 	ha->flags.rida_fmt2 = 0;
 	ha->flags.n2n_ae = 0;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 176/422] scsi: qla2xxx: Fix dropped srb resource.
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (174 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 175/422] scsi: qla2xxx: Fix port speed display on chip reset Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 177/422] scsi: qla2xxx: Fix duplicate switchs Nport ID entries Greg Kroah-Hartman
                   ` (249 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Quinn Tran, Himanshu Madhani,
	Martin K. Petersen, Sasha Levin

From: Quinn Tran <quinn.tran@cavium.com>

[ Upstream commit 527b8ae3948bb59c13ebaa7d657ced56ea25ab05 ]

When FW rejects a command due to "entry_status" error (malform IOCB), the srb
resource needs to be returned back for cleanup.  The filter to catch this is
in the wrong location.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/qla2xxx/qla_isr.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index f559beda8d5ad..8fa7242dbb437 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -2837,6 +2837,7 @@ qla2x00_error_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, sts_entry_t *pkt)
 	case ELS_IOCB_TYPE:
 	case ABORT_IOCB_TYPE:
 	case MBX_IOCB_TYPE:
+	default:
 		sp = qla2x00_get_sp_from_handle(vha, func, req, pkt);
 		if (sp) {
 			sp->done(sp, res);
@@ -2847,7 +2848,6 @@ qla2x00_error_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, sts_entry_t *pkt)
 	case ABTS_RESP_24XX:
 	case CTIO_TYPE7:
 	case CTIO_CRC2:
-	default:
 		return 1;
 	}
 fatal:
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 177/422] scsi: qla2xxx: Fix duplicate switchs Nport ID entries
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (175 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 176/422] scsi: qla2xxx: Fix dropped srb resource Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 178/422] scsi: lpfc: Fix GFT_ID and PRLI logic for RSCN Greg Kroah-Hartman
                   ` (248 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Quinn Tran, Himanshu Madhani,
	Martin K. Petersen, Sasha Levin

From: Quinn Tran <quinn.tran@cavium.com>

[ Upstream commit f3a03ee1102a44ccbd2c5de80a6e862ba23e9b55 ]

Current code relies on switch to provide a unique combination of WWPN +
NPORTID to tract an FC port.  This patch tries to detect a case where switch
data base can get corrupted where multiple WWPNs can have the same Nport ID.
The 1st Nport ID on the list will be kept while the duplicate Nport ID will be
discarded.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/qla2xxx/qla_gs.c | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c
index d611cf722244c..b8d3403c3c85a 100644
--- a/drivers/scsi/qla2xxx/qla_gs.c
+++ b/drivers/scsi/qla2xxx/qla_gs.c
@@ -3902,9 +3902,10 @@ void qla24xx_async_gnnft_done(scsi_qla_host_t *vha, srb_t *sp)
 	fc_port_t *fcport;
 	u32 i, rc;
 	bool found;
-	struct fab_scan_rp *rp;
+	struct fab_scan_rp *rp, *trp;
 	unsigned long flags;
 	u8 recheck = 0;
+	u16 dup = 0, dup_cnt = 0;
 
 	ql_dbg(ql_dbg_disc, vha, 0xffff,
 	    "%s enter\n", __func__);
@@ -3935,6 +3936,7 @@ void qla24xx_async_gnnft_done(scsi_qla_host_t *vha, srb_t *sp)
 
 	for (i = 0; i < vha->hw->max_fibre_devices; i++) {
 		u64 wwn;
+		int k;
 
 		rp = &vha->scan.l[i];
 		found = false;
@@ -3943,6 +3945,20 @@ void qla24xx_async_gnnft_done(scsi_qla_host_t *vha, srb_t *sp)
 		if (wwn == 0)
 			continue;
 
+		/* Remove duplicate NPORT ID entries from switch data base */
+		for (k = i + 1; k < vha->hw->max_fibre_devices; k++) {
+			trp = &vha->scan.l[k];
+			if (rp->id.b24 == trp->id.b24) {
+				dup = 1;
+				dup_cnt++;
+				ql_dbg(ql_dbg_disc + ql_dbg_verbose,
+				    vha, 0xffff,
+				    "Detected duplicate NPORT ID from switch data base: ID %06x WWN %8phN WWN %8phN\n",
+				    rp->id.b24, rp->port_name, trp->port_name);
+				memset(trp, 0, sizeof(*trp));
+			}
+		}
+
 		if (!memcmp(rp->port_name, vha->port_name, WWN_SIZE))
 			continue;
 
@@ -3982,6 +3998,12 @@ void qla24xx_async_gnnft_done(scsi_qla_host_t *vha, srb_t *sp)
 		}
 	}
 
+	if (dup) {
+		ql_log(ql_log_warn, vha, 0xffff,
+		    "Detected %d duplicate NPORT ID(s) from switch data base\n",
+		    dup_cnt);
+	}
+
 	/*
 	 * Logout all previous fabric dev marked lost, except FCP2 devices.
 	 */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 178/422] scsi: lpfc: Fix GFT_ID and PRLI logic for RSCN
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (176 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 177/422] scsi: qla2xxx: Fix duplicate switchs Nport ID entries Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 179/422] scsi: lpfc: Correct invalid EQ doorbell write on if_type=6 Greg Kroah-Hartman
                   ` (247 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dick Kennedy, James Smart,
	Martin K. Petersen, Sasha Levin

From: James Smart <jsmart2021@gmail.com>

[ Upstream commit 01a8aed6a009625282b6265880f6b20cbd7a9c70 ]

Driver only sends NVME PRLI to a device that also supports FCP.  This resuls
in remote ports that don't have fc_remote_ports created for them. The driver
is clearing the nlp_fc4_type for a ndlp at the wrong time.

Fix by moving the nlp_fc4_type clearing to the discovery engine in the
DEVICE_RECOVERY state. Also ensure that rport registration is done for all
nlp_fc4_types.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/lpfc/lpfc_ct.c        | 5 -----
 drivers/scsi/lpfc/lpfc_hbadisc.c   | 2 +-
 drivers/scsi/lpfc/lpfc_nportdisc.c | 3 +++
 3 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/drivers/scsi/lpfc/lpfc_ct.c b/drivers/scsi/lpfc/lpfc_ct.c
index d909d90035bb2..384f5cd7c3c81 100644
--- a/drivers/scsi/lpfc/lpfc_ct.c
+++ b/drivers/scsi/lpfc/lpfc_ct.c
@@ -471,11 +471,6 @@ lpfc_prep_node_fc4type(struct lpfc_vport *vport, uint32_t Did, uint8_t fc4_type)
 				"Parse GID_FTrsp: did:x%x flg:x%x x%x",
 				Did, ndlp->nlp_flag, vport->fc_flag);
 
-			/* Don't assume the rport is always the previous
-			 * FC4 type.
-			 */
-			ndlp->nlp_fc4_type &= ~(NLP_FC4_FCP | NLP_FC4_NVME);
-
 			/* By default, the driver expects to support FCP FC4 */
 			if (fc4_type == FC_TYPE_FCP)
 				ndlp->nlp_fc4_type |= NLP_FC4_FCP;
diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c
index ccdd82b1123f7..db183d1f34ab2 100644
--- a/drivers/scsi/lpfc/lpfc_hbadisc.c
+++ b/drivers/scsi/lpfc/lpfc_hbadisc.c
@@ -4198,7 +4198,7 @@ lpfc_nlp_state_cleanup(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
 
 	if (new_state ==  NLP_STE_MAPPED_NODE ||
 	    new_state == NLP_STE_UNMAPPED_NODE) {
-		if (ndlp->nlp_fc4_type & NLP_FC4_FCP ||
+		if (ndlp->nlp_fc4_type ||
 		    ndlp->nlp_DID == Fabric_DID ||
 		    ndlp->nlp_DID == NameServer_DID ||
 		    ndlp->nlp_DID == FDMI_DID) {
diff --git a/drivers/scsi/lpfc/lpfc_nportdisc.c b/drivers/scsi/lpfc/lpfc_nportdisc.c
index ae6301c796785..c15f3265eefeb 100644
--- a/drivers/scsi/lpfc/lpfc_nportdisc.c
+++ b/drivers/scsi/lpfc/lpfc_nportdisc.c
@@ -2323,6 +2323,7 @@ lpfc_device_recov_unmap_node(struct lpfc_vport *vport,
 	lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE);
 	spin_lock_irq(shost->host_lock);
 	ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC);
+	ndlp->nlp_fc4_type &= ~(NLP_FC4_FCP | NLP_FC4_NVME);
 	spin_unlock_irq(shost->host_lock);
 	lpfc_disc_set_adisc(vport, ndlp);
 
@@ -2400,6 +2401,7 @@ lpfc_device_recov_mapped_node(struct lpfc_vport *vport,
 	lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE);
 	spin_lock_irq(shost->host_lock);
 	ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC);
+	ndlp->nlp_fc4_type &= ~(NLP_FC4_FCP | NLP_FC4_NVME);
 	spin_unlock_irq(shost->host_lock);
 	lpfc_disc_set_adisc(vport, ndlp);
 	return ndlp->nlp_state;
@@ -2657,6 +2659,7 @@ lpfc_device_recov_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
 	lpfc_cancel_retry_delay_tmo(vport, ndlp);
 	spin_lock_irq(shost->host_lock);
 	ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC);
+	ndlp->nlp_fc4_type &= ~(NLP_FC4_FCP | NLP_FC4_NVME);
 	spin_unlock_irq(shost->host_lock);
 	return ndlp->nlp_state;
 }
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 179/422] scsi: lpfc: Correct invalid EQ doorbell write on if_type=6
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (177 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 178/422] scsi: lpfc: Fix GFT_ID and PRLI logic for RSCN Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 180/422] scsi: lpfc: Fix errors in log messages Greg Kroah-Hartman
                   ` (246 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dick Kennedy, James Smart,
	Martin K. Petersen, Sasha Levin

From: James Smart <jsmart2021@gmail.com>

[ Upstream commit aad59d5d34738d6fd8c359df8048a84cd443e504 ]

During attachment, the driver writes the EQ doorbell to disable potential
interrupts from an EQ. The current EQ doorbell format used for clearing the
interrupt is incorrect and uses an if_type=2 format, making the operation act
on the wrong EQ.

Correct the code to use the proper if_type=6 EQ doorbell format.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/lpfc/lpfc_sli.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
index a490e63c94b67..e704297618e06 100644
--- a/drivers/scsi/lpfc/lpfc_sli.c
+++ b/drivers/scsi/lpfc/lpfc_sli.c
@@ -392,11 +392,7 @@ lpfc_sli4_if6_eq_clr_intr(struct lpfc_queue *q)
 	struct lpfc_register doorbell;
 
 	doorbell.word0 = 0;
-	bf_set(lpfc_eqcq_doorbell_eqci, &doorbell, 1);
-	bf_set(lpfc_eqcq_doorbell_qt, &doorbell, LPFC_QUEUE_TYPE_EVENT);
-	bf_set(lpfc_eqcq_doorbell_eqid_hi, &doorbell,
-		(q->queue_id >> LPFC_EQID_HI_FIELD_SHIFT));
-	bf_set(lpfc_eqcq_doorbell_eqid_lo, &doorbell, q->queue_id);
+	bf_set(lpfc_if6_eq_doorbell_eqid, &doorbell, q->queue_id);
 	writel(doorbell.word0, q->phba->sli4_hba.EQDBregaddr);
 }
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 180/422] scsi: lpfc: Fix errors in log messages.
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (178 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 179/422] scsi: lpfc: Correct invalid EQ doorbell write on if_type=6 Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 181/422] scsi: sym53c8xx: fix NULL pointer dereference panic in sym_int_sir() Greg Kroah-Hartman
                   ` (245 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dick Kennedy, James Smart,
	Martin K. Petersen, Sasha Levin

From: James Smart <jsmart2021@gmail.com>

[ Upstream commit 2879265f514b1f4154288243c91438ddbedb3ed4 ]

Message 6408 is displayed for each entry in an array, but the cpu and queue
numbers were incorrect for the entry.  Message 6001 includes an extraneous
character.

Resolve both issues

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/lpfc/lpfc_nvme.c  | 2 +-
 drivers/scsi/lpfc/lpfc_nvmet.c | 7 +++----
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/scsi/lpfc/lpfc_nvme.c b/drivers/scsi/lpfc/lpfc_nvme.c
index 645ffb5332b4a..8ee585e453dcf 100644
--- a/drivers/scsi/lpfc/lpfc_nvme.c
+++ b/drivers/scsi/lpfc/lpfc_nvme.c
@@ -282,7 +282,7 @@ lpfc_nvme_delete_queue(struct nvme_fc_local_port *pnvme_lport,
 	vport = lport->vport;
 
 	lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME,
-			"6001 ENTER.  lpfc_pnvme %p, qidx x%xi qhandle %p\n",
+			"6001 ENTER.  lpfc_pnvme %p, qidx x%x qhandle %p\n",
 			lport, qidx, handle);
 	kfree(handle);
 }
diff --git a/drivers/scsi/lpfc/lpfc_nvmet.c b/drivers/scsi/lpfc/lpfc_nvmet.c
index 22efefcc6cd84..768eba8c111d9 100644
--- a/drivers/scsi/lpfc/lpfc_nvmet.c
+++ b/drivers/scsi/lpfc/lpfc_nvmet.c
@@ -1340,15 +1340,14 @@ lpfc_nvmet_setup_io_context(struct lpfc_hba *phba)
 			idx = 0;
 	}
 
-	infop = phba->sli4_hba.nvmet_ctx_info;
-	for (j = 0; j < phba->cfg_nvmet_mrq; j++) {
-		for (i = 0; i < phba->sli4_hba.num_present_cpu; i++) {
+	for (i = 0; i < phba->sli4_hba.num_present_cpu; i++) {
+		for (j = 0; j < phba->cfg_nvmet_mrq; j++) {
+			infop = lpfc_get_ctx_list(phba, i, j);
 			lpfc_printf_log(phba, KERN_INFO, LOG_NVME | LOG_INIT,
 					"6408 TOTAL NVMET ctx for CPU %d "
 					"MRQ %d: cnt %d nextcpu %p\n",
 					i, j, infop->nvmet_ctx_list_cnt,
 					infop->nvmet_ctx_next_cpu);
-			infop++;
 		}
 	}
 	return 0;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 181/422] scsi: sym53c8xx: fix NULL pointer dereference panic in sym_int_sir()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (179 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 180/422] scsi: lpfc: Fix errors in log messages Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 182/422] ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" is set Greg Kroah-Hartman
                   ` (244 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Matthew Wilcox, George Kennedy,
	Mark Kanda, Martin K. Petersen, Sasha Levin

From: George Kennedy <george.kennedy@oracle.com>

[ Upstream commit 288315e95264b6355e26609e9dec5dc4563d4ab0 ]

sym_int_sir() in sym_hipd.c does not check the command pointer for NULL before
using it in debug message prints.

Suggested-by: Matthew Wilcox <matthew.wilcox@oracle.com>
Signed-off-by: George Kennedy <george.kennedy@oracle.com>
Reviewed-by: Mark Kanda <mark.kanda@oracle.com>
Acked-by: Matthew Wilcox <matthew.wilcox@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/sym53c8xx_2/sym_hipd.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/sym53c8xx_2/sym_hipd.c b/drivers/scsi/sym53c8xx_2/sym_hipd.c
index bd3f6e2d68344..0a2a54517b151 100644
--- a/drivers/scsi/sym53c8xx_2/sym_hipd.c
+++ b/drivers/scsi/sym53c8xx_2/sym_hipd.c
@@ -4370,6 +4370,13 @@ static void sym_nego_rejected(struct sym_hcb *np, struct sym_tcb *tp, struct sym
 	OUTB(np, HS_PRT, HS_BUSY);
 }
 
+#define sym_printk(lvl, tp, cp, fmt, v...) do { \
+	if (cp)							\
+		scmd_printk(lvl, cp->cmd, fmt, ##v);		\
+	else							\
+		starget_printk(lvl, tp->starget, fmt, ##v);	\
+} while (0)
+
 /*
  *  chip exception handler for programmed interrupts.
  */
@@ -4415,7 +4422,7 @@ static void sym_int_sir(struct sym_hcb *np)
 	 *  been selected with ATN.  We do not want to handle that.
 	 */
 	case SIR_SEL_ATN_NO_MSG_OUT:
-		scmd_printk(KERN_WARNING, cp->cmd,
+		sym_printk(KERN_WARNING, tp, cp,
 				"No MSG OUT phase after selection with ATN\n");
 		goto out_stuck;
 	/*
@@ -4423,7 +4430,7 @@ static void sym_int_sir(struct sym_hcb *np)
 	 *  having reselected the initiator.
 	 */
 	case SIR_RESEL_NO_MSG_IN:
-		scmd_printk(KERN_WARNING, cp->cmd,
+		sym_printk(KERN_WARNING, tp, cp,
 				"No MSG IN phase after reselection\n");
 		goto out_stuck;
 	/*
@@ -4431,7 +4438,7 @@ static void sym_int_sir(struct sym_hcb *np)
 	 *  an IDENTIFY.
 	 */
 	case SIR_RESEL_NO_IDENTIFY:
-		scmd_printk(KERN_WARNING, cp->cmd,
+		sym_printk(KERN_WARNING, tp, cp,
 				"No IDENTIFY after reselection\n");
 		goto out_stuck;
 	/*
@@ -4460,7 +4467,7 @@ static void sym_int_sir(struct sym_hcb *np)
 	case SIR_RESEL_ABORTED:
 		np->lastmsg = np->msgout[0];
 		np->msgout[0] = M_NOOP;
-		scmd_printk(KERN_WARNING, cp->cmd,
+		sym_printk(KERN_WARNING, tp, cp,
 			"message %x sent on bad reselection\n", np->lastmsg);
 		goto out;
 	/*
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 182/422] ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" is set
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (180 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 181/422] scsi: sym53c8xx: fix NULL pointer dereference panic in sym_int_sir() Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19 20:19   ` Pavel Machek
  2019-11-19  5:16 ` [PATCH 4.19 183/422] scsi: pm80xx: Corrected dma_unmap_sg() parameter Greg Kroah-Hartman
                   ` (243 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Oleksij Rempel, Shawn Guo, Sasha Levin

From: Oleksij Rempel <o.rempel@pengutronix.de>

[ Upstream commit 8148d2136002da2e2887caf6a07bbd9c033f14f3 ]

One of the Freescale recommended sequences for power off with external
PMIC is the following:
...
3.  SoC is programming PMIC for power off when standby is asserted.
4.  In CCM STOP mode, Standby is asserted, PMIC gates SoC supplies.

See:
http://www.nxp.com/assets/documents/data/en/reference-manuals/IMX6DQRM.pdf
page 5083

This patch implements step 4. of this sequence.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/mach-imx/pm-imx6.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/arch/arm/mach-imx/pm-imx6.c b/arch/arm/mach-imx/pm-imx6.c
index b08e407d8d96f..529f4b5bbd3a7 100644
--- a/arch/arm/mach-imx/pm-imx6.c
+++ b/arch/arm/mach-imx/pm-imx6.c
@@ -618,6 +618,28 @@ static void __init imx6_pm_common_init(const struct imx6_pm_socdata
 				   IMX6Q_GPR1_GINT);
 }
 
+static void imx6_pm_stby_poweroff(void)
+{
+	imx6_set_lpm(STOP_POWER_OFF);
+	imx6q_suspend_finish(0);
+
+	mdelay(1000);
+
+	pr_emerg("Unable to poweroff system\n");
+}
+
+static int imx6_pm_stby_poweroff_probe(void)
+{
+	if (pm_power_off) {
+		pr_warn("%s: pm_power_off already claimed  %p %pf!\n",
+			__func__, pm_power_off, pm_power_off);
+		return -EBUSY;
+	}
+
+	pm_power_off = imx6_pm_stby_poweroff;
+	return 0;
+}
+
 void __init imx6_pm_ccm_init(const char *ccm_compat)
 {
 	struct device_node *np;
@@ -634,6 +656,9 @@ void __init imx6_pm_ccm_init(const char *ccm_compat)
 	val = readl_relaxed(ccm_base + CLPCR);
 	val &= ~BM_CLPCR_LPM;
 	writel_relaxed(val, ccm_base + CLPCR);
+
+	if (of_property_read_bool(np, "fsl,pmic-stby-poweroff"))
+		imx6_pm_stby_poweroff_probe();
 }
 
 void __init imx6q_pm_init(void)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 183/422] scsi: pm80xx: Corrected dma_unmap_sg() parameter
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (181 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 182/422] ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" is set Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 184/422] scsi: pm80xx: Fixed system hang issue during kexec boot Greg Kroah-Hartman
                   ` (242 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Deepak Ukey, Viswas G, Jack Wang,
	Martin K. Petersen, Sasha Levin

From: Deepak Ukey <deepak.ukey@microchip.com>

[ Upstream commit 76cb25b058034d37244be6aca97a2ad52a5fbcad ]

For the function dma_unmap_sg(), the <nents> parameter should be number of
elements in the scatter list prior to the mapping, not after the mapping.

Signed-off-by: Deepak Ukey <deepak.ukey@microchip.com>
Signed-off-by: Viswas G <Viswas.G@microchip.com>
Acked-by: Jack Wang <jinpu.wang@profitbricks.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/pm8001/pm8001_sas.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c
index 947d6017d004c..576a0f091933b 100644
--- a/drivers/scsi/pm8001/pm8001_sas.c
+++ b/drivers/scsi/pm8001/pm8001_sas.c
@@ -466,7 +466,7 @@ err_out:
 	dev_printk(KERN_ERR, pm8001_ha->dev, "pm8001 exec failed[%d]!\n", rc);
 	if (!sas_protocol_ata(t->task_proto))
 		if (n_elem)
-			dma_unmap_sg(pm8001_ha->dev, t->scatter, n_elem,
+			dma_unmap_sg(pm8001_ha->dev, t->scatter, t->num_scatter,
 				t->data_dir);
 out_done:
 	spin_unlock_irqrestore(&pm8001_ha->lock, flags);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 184/422] scsi: pm80xx: Fixed system hang issue during kexec boot
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (182 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 183/422] scsi: pm80xx: Corrected dma_unmap_sg() parameter Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 185/422] kprobes: Dont call BUG_ON() if there is a kprobe in use on free list Greg Kroah-Hartman
                   ` (241 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Deepak Ukey, Viswas G, Jack Wang,
	Martin K. Petersen, Sasha Levin

From: Deepak Ukey <deepak.ukey@microchip.com>

[ Upstream commit 72349b62a571effd6faadd0600b8e657dd87afbf ]

When the firmware is not responding, execution of kexec boot causes a system
hang. When firmware assertion happened, driver get notified with interrupt
vector updated in MPI configuration table. Then, the driver will read
scratchpad register and set controller_fatal_error flag to true.

Signed-off-by: Deepak Ukey <deepak.ukey@microchip.com>
Signed-off-by: Viswas G <Viswas.G@microchip.com>
Acked-by: Jack Wang <jinpu.wang@profitbricks.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/pm8001/pm8001_hwi.c |  6 +++
 drivers/scsi/pm8001/pm8001_sas.c |  7 +++
 drivers/scsi/pm8001/pm8001_sas.h |  1 +
 drivers/scsi/pm8001/pm80xx_hwi.c | 80 +++++++++++++++++++++++++++++---
 drivers/scsi/pm8001/pm80xx_hwi.h |  3 ++
 5 files changed, 91 insertions(+), 6 deletions(-)

diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c
index 4dd6cad330e8e..3e814c0469fbd 100644
--- a/drivers/scsi/pm8001/pm8001_hwi.c
+++ b/drivers/scsi/pm8001/pm8001_hwi.c
@@ -1479,6 +1479,12 @@ u32 pm8001_mpi_msg_consume(struct pm8001_hba_info *pm8001_ha,
 		} else {
 			u32 producer_index;
 			void *pi_virt = circularQ->pi_virt;
+			/* spurious interrupt during setup if
+			 * kexec-ing and driver doing a doorbell access
+			 * with the pre-kexec oq interrupt setup
+			 */
+			if (!pi_virt)
+				break;
 			/* Update the producer index from SPC */
 			producer_index = pm8001_read_32(pi_virt);
 			circularQ->producer_index = cpu_to_le32(producer_index);
diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c
index 576a0f091933b..59feda261e088 100644
--- a/drivers/scsi/pm8001/pm8001_sas.c
+++ b/drivers/scsi/pm8001/pm8001_sas.c
@@ -374,6 +374,13 @@ static int pm8001_task_exec(struct sas_task *task,
 		return 0;
 	}
 	pm8001_ha = pm8001_find_ha_by_dev(task->dev);
+	if (pm8001_ha->controller_fatal_error) {
+		struct task_status_struct *ts = &t->task_status;
+
+		ts->resp = SAS_TASK_UNDELIVERED;
+		t->task_done(t);
+		return 0;
+	}
 	PM8001_IO_DBG(pm8001_ha, pm8001_printk("pm8001_task_exec device \n "));
 	spin_lock_irqsave(&pm8001_ha->lock, flags);
 	do {
diff --git a/drivers/scsi/pm8001/pm8001_sas.h b/drivers/scsi/pm8001/pm8001_sas.h
index 80b4dd6df0c25..1816e351071fa 100644
--- a/drivers/scsi/pm8001/pm8001_sas.h
+++ b/drivers/scsi/pm8001/pm8001_sas.h
@@ -538,6 +538,7 @@ struct pm8001_hba_info {
 	u32			logging_level;
 	u32			fw_status;
 	u32			smp_exp_mode;
+	bool			controller_fatal_error;
 	const struct firmware 	*fw_image;
 	struct isr_param irq_vector[PM8001_MAX_MSIX_VEC];
 	u32			reset_in_progress;
diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
index 42f0405601ad1..5021aed87f33a 100644
--- a/drivers/scsi/pm8001/pm80xx_hwi.c
+++ b/drivers/scsi/pm8001/pm80xx_hwi.c
@@ -577,6 +577,9 @@ static void update_main_config_table(struct pm8001_hba_info *pm8001_ha)
 		pm8001_ha->main_cfg_tbl.pm80xx_tbl.pcs_event_log_size);
 	pm8001_mw32(address, MAIN_PCS_EVENT_LOG_OPTION,
 		pm8001_ha->main_cfg_tbl.pm80xx_tbl.pcs_event_log_severity);
+	/* Update Fatal error interrupt vector */
+	pm8001_ha->main_cfg_tbl.pm80xx_tbl.fatal_err_interrupt |=
+					((pm8001_ha->number_of_intr - 1) << 8);
 	pm8001_mw32(address, MAIN_FATAL_ERROR_INTERRUPT,
 		pm8001_ha->main_cfg_tbl.pm80xx_tbl.fatal_err_interrupt);
 	pm8001_mw32(address, MAIN_EVENT_CRC_CHECK,
@@ -1110,6 +1113,9 @@ static int pm80xx_chip_init(struct pm8001_hba_info *pm8001_ha)
 		return -EBUSY;
 	}
 
+	/* Initialize the controller fatal error flag */
+	pm8001_ha->controller_fatal_error = false;
+
 	/* Initialize pci space address eg: mpi offset */
 	init_pci_device_addresses(pm8001_ha);
 	init_default_table_values(pm8001_ha);
@@ -1218,13 +1224,17 @@ pm80xx_chip_soft_rst(struct pm8001_hba_info *pm8001_ha)
 	u32 bootloader_state;
 	u32 ibutton0, ibutton1;
 
-	/* Check if MPI is in ready state to reset */
-	if (mpi_uninit_check(pm8001_ha) != 0) {
-		PM8001_FAIL_DBG(pm8001_ha,
-			pm8001_printk("MPI state is not ready\n"));
-		return -1;
+	/* Process MPI table uninitialization only if FW is ready */
+	if (!pm8001_ha->controller_fatal_error) {
+		/* Check if MPI is in ready state to reset */
+		if (mpi_uninit_check(pm8001_ha) != 0) {
+			regval = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1);
+			PM8001_FAIL_DBG(pm8001_ha, pm8001_printk(
+				"MPI state is not ready scratch1 :0x%x\n",
+				regval));
+			return -1;
+		}
 	}
-
 	/* checked for reset register normal state; 0x0 */
 	regval = pm8001_cr32(pm8001_ha, 0, SPC_REG_SOFT_RESET);
 	PM8001_INIT_DBG(pm8001_ha,
@@ -3752,6 +3762,46 @@ static void process_one_iomb(struct pm8001_hba_info *pm8001_ha, void *piomb)
 	}
 }
 
+static void print_scratchpad_registers(struct pm8001_hba_info *pm8001_ha)
+{
+	PM8001_FAIL_DBG(pm8001_ha,
+		pm8001_printk("MSGU_SCRATCH_PAD_0: 0x%x\n",
+			pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_0)));
+	PM8001_FAIL_DBG(pm8001_ha,
+		pm8001_printk("MSGU_SCRATCH_PAD_1:0x%x\n",
+			pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1)));
+	PM8001_FAIL_DBG(pm8001_ha,
+		pm8001_printk("MSGU_SCRATCH_PAD_2: 0x%x\n",
+			pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2)));
+	PM8001_FAIL_DBG(pm8001_ha,
+		pm8001_printk("MSGU_SCRATCH_PAD_3: 0x%x\n",
+			pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_3)));
+	PM8001_FAIL_DBG(pm8001_ha,
+		pm8001_printk("MSGU_HOST_SCRATCH_PAD_0: 0x%x\n",
+			pm8001_cr32(pm8001_ha, 0, MSGU_HOST_SCRATCH_PAD_0)));
+	PM8001_FAIL_DBG(pm8001_ha,
+		pm8001_printk("MSGU_HOST_SCRATCH_PAD_1: 0x%x\n",
+			pm8001_cr32(pm8001_ha, 0, MSGU_HOST_SCRATCH_PAD_1)));
+	PM8001_FAIL_DBG(pm8001_ha,
+		pm8001_printk("MSGU_HOST_SCRATCH_PAD_2: 0x%x\n",
+			pm8001_cr32(pm8001_ha, 0, MSGU_HOST_SCRATCH_PAD_2)));
+	PM8001_FAIL_DBG(pm8001_ha,
+		pm8001_printk("MSGU_HOST_SCRATCH_PAD_3: 0x%x\n",
+			pm8001_cr32(pm8001_ha, 0, MSGU_HOST_SCRATCH_PAD_3)));
+	PM8001_FAIL_DBG(pm8001_ha,
+		pm8001_printk("MSGU_HOST_SCRATCH_PAD_4: 0x%x\n",
+			pm8001_cr32(pm8001_ha, 0, MSGU_HOST_SCRATCH_PAD_4)));
+	PM8001_FAIL_DBG(pm8001_ha,
+		pm8001_printk("MSGU_HOST_SCRATCH_PAD_5: 0x%x\n",
+			pm8001_cr32(pm8001_ha, 0, MSGU_HOST_SCRATCH_PAD_5)));
+	PM8001_FAIL_DBG(pm8001_ha,
+		pm8001_printk("MSGU_RSVD_SCRATCH_PAD_0: 0x%x\n",
+			pm8001_cr32(pm8001_ha, 0, MSGU_HOST_SCRATCH_PAD_6)));
+	PM8001_FAIL_DBG(pm8001_ha,
+		pm8001_printk("MSGU_RSVD_SCRATCH_PAD_1: 0x%x\n",
+			pm8001_cr32(pm8001_ha, 0, MSGU_HOST_SCRATCH_PAD_7)));
+}
+
 static int process_oq(struct pm8001_hba_info *pm8001_ha, u8 vec)
 {
 	struct outbound_queue_table *circularQ;
@@ -3759,10 +3809,28 @@ static int process_oq(struct pm8001_hba_info *pm8001_ha, u8 vec)
 	u8 uninitialized_var(bc);
 	u32 ret = MPI_IO_STATUS_FAIL;
 	unsigned long flags;
+	u32 regval;
 
+	if (vec == (pm8001_ha->number_of_intr - 1)) {
+		regval = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1);
+		if ((regval & SCRATCH_PAD_MIPSALL_READY) !=
+					SCRATCH_PAD_MIPSALL_READY) {
+			pm8001_ha->controller_fatal_error = true;
+			PM8001_FAIL_DBG(pm8001_ha, pm8001_printk(
+				"Firmware Fatal error! Regval:0x%x\n", regval));
+			print_scratchpad_registers(pm8001_ha);
+			return ret;
+		}
+	}
 	spin_lock_irqsave(&pm8001_ha->lock, flags);
 	circularQ = &pm8001_ha->outbnd_q_tbl[vec];
 	do {
+		/* spurious interrupt during setup if kexec-ing and
+		 * driver doing a doorbell access w/ the pre-kexec oq
+		 * interrupt setup.
+		 */
+		if (!circularQ->pi_virt)
+			break;
 		ret = pm8001_mpi_msg_consume(pm8001_ha, circularQ, &pMsg1, &bc);
 		if (MPI_IO_STATUS_SUCCESS == ret) {
 			/* process the outbound message */
diff --git a/drivers/scsi/pm8001/pm80xx_hwi.h b/drivers/scsi/pm8001/pm80xx_hwi.h
index 889e69ce3689b..7dd2699d0efb5 100644
--- a/drivers/scsi/pm8001/pm80xx_hwi.h
+++ b/drivers/scsi/pm8001/pm80xx_hwi.h
@@ -1384,6 +1384,9 @@ typedef struct SASProtocolTimerConfig SASProtocolTimerConfig_t;
 #define SCRATCH_PAD_BOOT_LOAD_SUCCESS	0x0
 #define SCRATCH_PAD_IOP0_READY		0xC00
 #define SCRATCH_PAD_IOP1_READY		0x3000
+#define SCRATCH_PAD_MIPSALL_READY	(SCRATCH_PAD_IOP1_READY | \
+					SCRATCH_PAD_IOP0_READY | \
+					SCRATCH_PAD_RAAE_READY)
 
 /* boot loader state */
 #define SCRATCH_PAD1_BOOTSTATE_MASK		0x70	/* Bit 4-6 */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 185/422] kprobes: Dont call BUG_ON() if there is a kprobe in use on free list
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (183 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 184/422] scsi: pm80xx: Fixed system hang issue during kexec boot Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 186/422] net: aquantia: fix hw_atl_utils_fw_upload_dwords Greg Kroah-Hartman
                   ` (240 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Masami Hiramatsu,
	Anil S Keshavamurthy, David S . Miller, Linus Torvalds,
	Naveen N . Rao, Peter Zijlstra, Thomas Gleixner, Ingo Molnar,
	Sasha Levin

From: Masami Hiramatsu <mhiramat@kernel.org>

[ Upstream commit cbdd96f5586151e48317d90a403941ec23f12660 ]

Instead of calling BUG_ON(), if we find a kprobe in use on free kprobe
list, just remove it from the list and keep it on kprobe hash list
as same as other in-use kprobes.

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
Cc: David S . Miller <davem@davemloft.net>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Naveen N . Rao <naveen.n.rao@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/153666126882.21306.10738207224288507996.stgit@devbox
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 kernel/kprobes.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/kernel/kprobes.c b/kernel/kprobes.c
index b8efca9dc2cbb..aed90788db5c1 100644
--- a/kernel/kprobes.c
+++ b/kernel/kprobes.c
@@ -544,8 +544,14 @@ static void do_free_cleaned_kprobes(void)
 	struct optimized_kprobe *op, *tmp;
 
 	list_for_each_entry_safe(op, tmp, &freeing_list, list) {
-		BUG_ON(!kprobe_unused(&op->kp));
 		list_del_init(&op->list);
+		if (WARN_ON_ONCE(!kprobe_unused(&op->kp))) {
+			/*
+			 * This must not happen, but if there is a kprobe
+			 * still in use, keep it on kprobes hash list.
+			 */
+			continue;
+		}
 		free_aggr_kprobe(&op->kp);
 	}
 }
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 186/422] net: aquantia: fix hw_atl_utils_fw_upload_dwords
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (184 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 185/422] kprobes: Dont call BUG_ON() if there is a kprobe in use on free list Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 187/422] Drivers: hv: vmbus: Fix synic per-cpu context initialization Greg Kroah-Hartman
                   ` (239 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Yana Esina, Nikita Danilov,
	Igor Russkikh, David S. Miller, Sasha Levin

From: Yana Esina <yana.esina@aquantia.com>

[ Upstream commit 3ee5c8873fd369e2005dc93bf6d4b299b4976e68 ]

This patch fixes the upload function, which worked incorrectly with
some chips.

Signed-off-by: Yana Esina <yana.esina@aquantia.com>
Signed-off-by: Nikita Danilov <nikita.danilov@aquantia.com>
Tested-by: Nikita Danilov <nikita.danilov@aquantia.com>
Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../aquantia/atlantic/hw_atl/hw_atl_llh.c     |  8 +++++
 .../aquantia/atlantic/hw_atl/hw_atl_llh.h     |  3 ++
 .../atlantic/hw_atl/hw_atl_llh_internal.h     | 13 +++++++
 .../aquantia/atlantic/hw_atl/hw_atl_utils.c   | 36 +++++++++++++------
 .../aquantia/atlantic/hw_atl/hw_atl_utils.h   |  5 +++
 .../atlantic/hw_atl/hw_atl_utils_fw2x.c       |  5 +++
 6 files changed, 59 insertions(+), 11 deletions(-)

diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.c
index 10ec5dc88e243..5502ec5f0f699 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.c
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.c
@@ -1468,3 +1468,11 @@ void hw_atl_reg_glb_cpu_scratch_scp_set(struct aq_hw_s *aq_hw,
 	aq_hw_write_reg(aq_hw, HW_ATL_GLB_CPU_SCRATCH_SCP_ADR(scratch_scp),
 			glb_cpu_scratch_scp);
 }
+
+void hw_atl_mcp_up_force_intr_set(struct aq_hw_s *aq_hw, u32 up_force_intr)
+{
+	aq_hw_write_reg_bit(aq_hw, HW_ATL_MCP_UP_FORCE_INTERRUPT_ADR,
+			    HW_ATL_MCP_UP_FORCE_INTERRUPT_MSK,
+			    HW_ATL_MCP_UP_FORCE_INTERRUPT_SHIFT,
+			    up_force_intr);
+}
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.h b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.h
index b3bf64b48b93d..41f239928c157 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.h
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.h
@@ -701,4 +701,7 @@ void hw_atl_msm_reg_wr_strobe_set(struct aq_hw_s *aq_hw, u32 reg_wr_strobe);
 /* set pci register reset disable */
 void hw_atl_pci_pci_reg_res_dis_set(struct aq_hw_s *aq_hw, u32 pci_reg_res_dis);
 
+/* set uP Force Interrupt */
+void hw_atl_mcp_up_force_intr_set(struct aq_hw_s *aq_hw, u32 up_force_intr);
+
 #endif /* HW_ATL_LLH_H */
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh_internal.h b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh_internal.h
index e2ecdb1c5a5c4..a715fa317b1c8 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh_internal.h
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh_internal.h
@@ -2405,4 +2405,17 @@
 #define HW_ATL_GLB_CPU_SCRATCH_SCP_ADR(scratch_scp) \
 	(0x00000300u + (scratch_scp) * 0x4)
 
+/* register address for bitfield uP Force Interrupt */
+#define HW_ATL_MCP_UP_FORCE_INTERRUPT_ADR 0x00000404
+/* bitmask for bitfield uP Force Interrupt */
+#define HW_ATL_MCP_UP_FORCE_INTERRUPT_MSK 0x00000002
+/* inverted bitmask for bitfield uP Force Interrupt */
+#define HW_ATL_MCP_UP_FORCE_INTERRUPT_MSKN 0xFFFFFFFD
+/* lower bit position of bitfield uP Force Interrupt */
+#define HW_ATL_MCP_UP_FORCE_INTERRUPT_SHIFT 1
+/* width of bitfield uP Force Interrupt */
+#define HW_ATL_MCP_UP_FORCE_INTERRUPT_WIDTH 1
+/* default value of bitfield uP Force Interrupt */
+#define HW_ATL_MCP_UP_FORCE_INTERRUPT_DEFAULT 0x0
+
 #endif /* HW_ATL_LLH_INTERNAL_H */
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
index 9939ccaeb125b..096ec18e8f15a 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c
@@ -327,17 +327,31 @@ static int hw_atl_utils_fw_upload_dwords(struct aq_hw_s *self, u32 a, u32 *p,
 		err = -ETIME;
 		goto err_exit;
 	}
+	if (IS_CHIP_FEATURE(REVISION_B1)) {
+		u32 offset = 0;
+
+		for (; offset < cnt; ++offset) {
+			aq_hw_write_reg(self, 0x328, p[offset]);
+			aq_hw_write_reg(self, 0x32C,
+					(0x80000000 | (0xFFFF & (offset * 4))));
+			hw_atl_mcp_up_force_intr_set(self, 1);
+			/* 1000 times by 10us = 10ms */
+			AQ_HW_WAIT_FOR((aq_hw_read_reg(self,
+						       0x32C) & 0xF0000000) !=
+				       0x80000000,
+				       10, 1000);
+		}
+	} else {
+		u32 offset = 0;
 
-	aq_hw_write_reg(self, 0x00000208U, a);
-
-	for (++cnt; --cnt;) {
-		u32 i = 0U;
+		aq_hw_write_reg(self, 0x208, a);
 
-		aq_hw_write_reg(self, 0x0000020CU, *(p++));
-		aq_hw_write_reg(self, 0x00000200U, 0xC000U);
+		for (; offset < cnt; ++offset) {
+			aq_hw_write_reg(self, 0x20C, p[offset]);
+			aq_hw_write_reg(self, 0x200, 0xC000);
 
-		for (i = 1024U;
-			(0x100U & aq_hw_read_reg(self, 0x00000200U)) && --i;) {
+			AQ_HW_WAIT_FOR((aq_hw_read_reg(self, 0x200U) &
+					0x100) == 0, 10, 1000);
 		}
 	}
 
@@ -401,7 +415,7 @@ struct aq_hw_atl_utils_fw_rpc_tid_s {
 
 #define hw_atl_utils_fw_rpc_init(_H_) hw_atl_utils_fw_rpc_wait(_H_, NULL)
 
-static int hw_atl_utils_fw_rpc_call(struct aq_hw_s *self, unsigned int rpc_size)
+int hw_atl_utils_fw_rpc_call(struct aq_hw_s *self, unsigned int rpc_size)
 {
 	int err = 0;
 	struct aq_hw_atl_utils_fw_rpc_tid_s sw;
@@ -425,8 +439,8 @@ err_exit:
 	return err;
 }
 
-static int hw_atl_utils_fw_rpc_wait(struct aq_hw_s *self,
-				    struct hw_aq_atl_utils_fw_rpc **rpc)
+int hw_atl_utils_fw_rpc_wait(struct aq_hw_s *self,
+			     struct hw_aq_atl_utils_fw_rpc **rpc)
 {
 	int err = 0;
 	struct aq_hw_atl_utils_fw_rpc_tid_s sw;
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h
index b875590efcbdd..505c8a2abd9ca 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h
@@ -319,6 +319,11 @@ struct aq_stats_s *hw_atl_utils_get_hw_stats(struct aq_hw_s *self);
 int hw_atl_utils_fw_downld_dwords(struct aq_hw_s *self, u32 a,
 				  u32 *p, u32 cnt);
 
+int hw_atl_utils_fw_rpc_call(struct aq_hw_s *self, unsigned int rpc_size);
+
+int hw_atl_utils_fw_rpc_wait(struct aq_hw_s *self,
+			     struct hw_aq_atl_utils_fw_rpc **rpc);
+
 extern const struct aq_fw_ops aq_fw_1x_ops;
 extern const struct aq_fw_ops aq_fw_2x_ops;
 
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils_fw2x.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils_fw2x.c
index e37943760a58b..6300d94c9ff07 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils_fw2x.c
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils_fw2x.c
@@ -21,6 +21,7 @@
 
 #define HW_ATL_FW2X_MPI_EFUSE_ADDR	0x364
 #define HW_ATL_FW2X_MPI_MBOX_ADDR	0x360
+#define HW_ATL_FW2X_MPI_RPC_ADDR        0x334
 
 #define HW_ATL_FW2X_MPI_CONTROL_ADDR	0x368
 #define HW_ATL_FW2X_MPI_CONTROL2_ADDR	0x36C
@@ -40,6 +41,10 @@ static int aq_fw2x_init(struct aq_hw_s *self)
 	AQ_HW_WAIT_FOR(0U != (self->mbox_addr =
 			aq_hw_read_reg(self, HW_ATL_FW2X_MPI_MBOX_ADDR)),
 		       1000U, 10U);
+	AQ_HW_WAIT_FOR(0U != (self->rpc_addr =
+		       aq_hw_read_reg(self, HW_ATL_FW2X_MPI_RPC_ADDR)),
+		       1000U, 100U);
+
 	return err;
 }
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 187/422] Drivers: hv: vmbus: Fix synic per-cpu context initialization
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (185 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 186/422] net: aquantia: fix hw_atl_utils_fw_upload_dwords Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 188/422] nvmem: core: return error code instead of NULL from nvmem_device_get Greg Kroah-Hartman
                   ` (238 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Michael Kelley, Dan Carpenter,
	K. Y. Srinivasan, Sasha Levin

From: Michael Kelley <mikelley@microsoft.com>

[ Upstream commit f25a7ece08bdb1f2b3c4bbeae942682fc3a99dde ]

If hv_synic_alloc() errors out, the state of the per-cpu context
for some CPUs is unknown since the zero'ing is done as each
CPU is iterated over.  In such case, hv_synic_cleanup() may try to
free memory based on uninitialized values.  Fix this by zero'ing
the per-cpu context for all CPUs before doing any memory
allocations that might fail.

Signed-off-by: Michael Kelley <mikelley@microsoft.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/hv/hv.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c
index 8e923e70e5945..12bc9fa211117 100644
--- a/drivers/hv/hv.c
+++ b/drivers/hv/hv.c
@@ -189,6 +189,17 @@ static void hv_init_clockevent_device(struct clock_event_device *dev, int cpu)
 int hv_synic_alloc(void)
 {
 	int cpu;
+	struct hv_per_cpu_context *hv_cpu;
+
+	/*
+	 * First, zero all per-cpu memory areas so hv_synic_free() can
+	 * detect what memory has been allocated and cleanup properly
+	 * after any failures.
+	 */
+	for_each_present_cpu(cpu) {
+		hv_cpu = per_cpu_ptr(hv_context.cpu_context, cpu);
+		memset(hv_cpu, 0, sizeof(*hv_cpu));
+	}
 
 	hv_context.hv_numa_map = kcalloc(nr_node_ids, sizeof(struct cpumask),
 					 GFP_KERNEL);
@@ -198,10 +209,8 @@ int hv_synic_alloc(void)
 	}
 
 	for_each_present_cpu(cpu) {
-		struct hv_per_cpu_context *hv_cpu
-			= per_cpu_ptr(hv_context.cpu_context, cpu);
+		hv_cpu = per_cpu_ptr(hv_context.cpu_context, cpu);
 
-		memset(hv_cpu, 0, sizeof(*hv_cpu));
 		tasklet_init(&hv_cpu->msg_dpc,
 			     vmbus_on_msg_dpc, (unsigned long) hv_cpu);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 188/422] nvmem: core: return error code instead of NULL from nvmem_device_get
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (186 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 187/422] Drivers: hv: vmbus: Fix synic per-cpu context initialization Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 189/422] media: dt-bindings: adv748x: Fix decimal unit addresses Greg Kroah-Hartman
                   ` (237 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Niklas Cassel, Srinivas Kandagatla,
	Sasha Levin

From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

[ Upstream commit ca6ac25cecf0e740d7cc8e03e0ebbf8acbeca3df ]

nvmem_device_get() should return ERR_PTR() on error or valid pointer
on success, but one of the code path seems to return NULL, so fix it.

Reported-by: Niklas Cassel <niklas.cassel@linaro.org>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/nvmem/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index d32eba11c000f..30c040786fde2 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -692,7 +692,7 @@ static struct nvmem_device *nvmem_find(const char *name)
 	d = bus_find_device_by_name(&nvmem_bus_type, NULL, name);
 
 	if (!d)
-		return NULL;
+		return ERR_PTR(-ENOENT);
 
 	return to_nvmem_device(d);
 }
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 189/422] media: dt-bindings: adv748x: Fix decimal unit addresses
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (187 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 188/422] nvmem: core: return error code instead of NULL from nvmem_device_get Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 190/422] ALSA: hda: Fix implicit definition of pci_iomap() on SH Greg Kroah-Hartman
                   ` (236 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Geert Uytterhoeven, Rob Herring,
	Kieran Bingham, Mauro Carvalho Chehab, Sasha Levin

From: Geert Uytterhoeven <geert+renesas@glider.be>

[ Upstream commit 27582f0ea97fe3e4a38beb98ab36cce4b6f029d5 ]

With recent dtc and W=1:

    Warning (graph_port): video-receiver@70/port@10: graph node unit address error, expected "a"
    Warning (graph_port): video-receiver@70/port@11: graph node unit address error, expected "b"

Unit addresses are always hexadecimal (without prefix), while the bases
of reg property values depend on their prefixes.

Fixes: e69595170b1cad85 ("media: adv748x: Add adv7481, adv7482 bindings")

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Rob Herring <robh@kernel.org>
Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 Documentation/devicetree/bindings/media/i2c/adv748x.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/media/i2c/adv748x.txt b/Documentation/devicetree/bindings/media/i2c/adv748x.txt
index 21ffb5ed81830..54d1d3bc18694 100644
--- a/Documentation/devicetree/bindings/media/i2c/adv748x.txt
+++ b/Documentation/devicetree/bindings/media/i2c/adv748x.txt
@@ -73,7 +73,7 @@ Example:
 			};
 		};
 
-		port@10 {
+		port@a {
 			reg = <10>;
 
 			adv7482_txa: endpoint {
@@ -83,7 +83,7 @@ Example:
 			};
 		};
 
-		port@11 {
+		port@b {
 			reg = <11>;
 
 			adv7482_txb: endpoint {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 190/422] ALSA: hda: Fix implicit definition of pci_iomap() on SH
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (188 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 189/422] media: dt-bindings: adv748x: Fix decimal unit addresses Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 191/422] media: fix: media: pci: meye: validate offset to avoid arbitrary access Greg Kroah-Hartman
                   ` (235 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, kbuild test robot, Mark Brown, Sasha Levin

From: Mark Brown <broonie@kernel.org>

[ Upstream commit d9b84a15892c02334ac8a5c28865ae54168d9b22 ]

Include asm/io.h directly so we've got a definition of pci_iomap(), the
current set of includes do this implicitly on most architectures but not
on SH.

Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/pci/hda/patch_ca0132.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c
index 3e978b75be9ac..f2cabfdced05c 100644
--- a/sound/pci/hda/patch_ca0132.c
+++ b/sound/pci/hda/patch_ca0132.c
@@ -31,6 +31,7 @@
 #include <linux/types.h>
 #include <linux/io.h>
 #include <linux/pci.h>
+#include <asm/io.h>
 #include <sound/core.h>
 #include "hda_codec.h"
 #include "hda_local.h"
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 191/422] media: fix: media: pci: meye: validate offset to avoid arbitrary access
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (189 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 190/422] ALSA: hda: Fix implicit definition of pci_iomap() on SH Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 192/422] media: dvb: fix compat ioctl translation Greg Kroah-Hartman
                   ` (234 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Lao Wei, Mauro Carvalho Chehab, Sasha Levin

From: Lao Wei <zrlw@qq.com>

[ Upstream commit eac7230fdb4672c2cb56f6a01a1744f562c01f80 ]

Motion eye video4linux driver for Sony Vaio PictureBook desn't validate user-controlled parameter
'vma->vm_pgoff', a malicious process might access all of kernel memory from user space by trying
pass different arbitrary address.
Discussion: http://www.openwall.com/lists/oss-security/2018/07/06/1

Signed-off-by: Lao Wei <zrlw@qq.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/media/pci/meye/meye.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/pci/meye/meye.c b/drivers/media/pci/meye/meye.c
index 8001d3e9134e4..db2a7ad1e5231 100644
--- a/drivers/media/pci/meye/meye.c
+++ b/drivers/media/pci/meye/meye.c
@@ -1460,7 +1460,7 @@ static int meye_mmap(struct file *file, struct vm_area_struct *vma)
 	unsigned long page, pos;
 
 	mutex_lock(&meye.lock);
-	if (size > gbuffers * gbufsize) {
+	if (size > gbuffers * gbufsize || offset > gbuffers * gbufsize - size) {
 		mutex_unlock(&meye.lock);
 		return -EINVAL;
 	}
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 192/422] media: dvb: fix compat ioctl translation
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (190 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 191/422] media: fix: media: pci: meye: validate offset to avoid arbitrary access Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 193/422] net: bcmgenet: Fix speed selection for reverse MII Greg Kroah-Hartman
                   ` (233 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Arnd Bergmann, Mauro Carvalho Chehab,
	Sasha Levin

From: Arnd Bergmann <arnd@arndb.de>

[ Upstream commit 1ccbeeb888ac33627d91f1ccf0b84ef3bcadef24 ]

The VIDEO_GET_EVENT and VIDEO_STILLPICTURE was added back in 2005 but
it never worked because the command number is wrong.

Using the right command number means we have a better chance of them
actually doing the right thing, though clearly nobody has ever tried
it successfully.

I noticed these while auditing the remaining users of compat_time_t
for y2038 bugs. This one is fine in that regard, it just never did
anything.

Fixes: 6e87abd0b8cb ("[DVB]: Add compat ioctl handling.")

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/compat_ioctl.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
index 8f08095ee54e9..3a03f74a8cc4e 100644
--- a/fs/compat_ioctl.c
+++ b/fs/compat_ioctl.c
@@ -141,6 +141,7 @@ struct compat_video_event {
 		unsigned int frame_rate;
 	} u;
 };
+#define VIDEO_GET_EVENT32 _IOR('o', 28, struct compat_video_event)
 
 static int do_video_get_event(struct file *file,
 		unsigned int cmd, struct compat_video_event __user *up)
@@ -152,7 +153,7 @@ static int do_video_get_event(struct file *file,
 	if (kevent == NULL)
 		return -EFAULT;
 
-	err = do_ioctl(file, cmd, (unsigned long)kevent);
+	err = do_ioctl(file, VIDEO_GET_EVENT, (unsigned long)kevent);
 	if (!err) {
 		err  = convert_in_user(&kevent->type, &up->type);
 		err |= convert_in_user(&kevent->timestamp, &up->timestamp);
@@ -171,6 +172,7 @@ struct compat_video_still_picture {
         compat_uptr_t iFrame;
         int32_t size;
 };
+#define VIDEO_STILLPICTURE32 _IOW('o', 30, struct compat_video_still_picture)
 
 static int do_video_stillpicture(struct file *file,
 		unsigned int cmd, struct compat_video_still_picture __user *up)
@@ -193,7 +195,7 @@ static int do_video_stillpicture(struct file *file,
 	if (err)
 		return -EFAULT;
 
-	err = do_ioctl(file, cmd, (unsigned long) up_native);
+	err = do_ioctl(file, VIDEO_STILLPICTURE, (unsigned long) up_native);
 
 	return err;
 }
@@ -1302,9 +1304,9 @@ static long do_ioctl_trans(unsigned int cmd,
 		return rtc_ioctl(file, cmd, argp);
 
 	/* dvb */
-	case VIDEO_GET_EVENT:
+	case VIDEO_GET_EVENT32:
 		return do_video_get_event(file, cmd, argp);
-	case VIDEO_STILLPICTURE:
+	case VIDEO_STILLPICTURE32:
 		return do_video_stillpicture(file, cmd, argp);
 	}
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 193/422] net: bcmgenet: Fix speed selection for reverse MII
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (191 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 192/422] media: dvb: fix compat ioctl translation Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 194/422] arm64: dts: meson: libretech: update board model Greg Kroah-Hartman
                   ` (232 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andrew Lunn, Florian Fainelli,
	David S. Miller, Sasha Levin

From: Andrew Lunn <andrew@lunn.ch>

[ Upstream commit 00eb2243b933a496958f4ce1bcf59840fea8be16 ]

The phy supported speed is being used to determine if the MAC should
be configured to 100 or 1G. The masking logic is broken. Instead, look
at 1G supported speeds to enable 1G MAC support.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/broadcom/genet/bcmmii.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c
index 0d527fa5de610..b0592fd4135b3 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
@@ -226,11 +226,10 @@ int bcmgenet_mii_config(struct net_device *dev, bool init)
 		 * capabilities, use that knowledge to also configure the
 		 * Reverse MII interface correctly.
 		 */
-		if ((dev->phydev->supported & PHY_BASIC_FEATURES) ==
-				PHY_BASIC_FEATURES)
-			port_ctrl = PORT_MODE_EXT_RVMII_25;
-		else
+		if (dev->phydev->supported & PHY_1000BT_FEATURES)
 			port_ctrl = PORT_MODE_EXT_RVMII_50;
+		else
+			port_ctrl = PORT_MODE_EXT_RVMII_25;
 		bcmgenet_sys_writel(priv, port_ctrl, SYS_PORT_CTRL);
 		break;
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 194/422] arm64: dts: meson: libretech: update board model
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (192 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 193/422] net: bcmgenet: Fix speed selection for reverse MII Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 195/422] arm64: dts: meson-axg: use the proper compatible for ethmac Greg Kroah-Hartman
                   ` (231 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Da Xue, Jerome Brunet, Kevin Hilman,
	Sasha Levin

From: Jerome Brunet <jbrunet@baylibre.com>

[ Upstream commit b7eb0e26cc4a212fde09144cd49d4103170d2b9e ]

There is actually several different libretech board with the CC suffix
so the model name is not appropriate here. Update to something more
specific

Reported-by: Da Xue <da@lessconfused.com>
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
index f63bceb88caaf..90a56af967a7f 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
@@ -13,7 +13,7 @@
 
 / {
 	compatible = "libretech,cc", "amlogic,s905x", "amlogic,meson-gxl";
-	model = "Libre Technology CC";
+	model = "Libre Computer Board AML-S905X-CC";
 
 	aliases {
 		serial0 = &uart_AO;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 195/422] arm64: dts: meson-axg: use the proper compatible for ethmac
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (193 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 194/422] arm64: dts: meson: libretech: update board model Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 196/422] ALSA: intel8x0m: Register irq handler after register initializations Greg Kroah-Hartman
                   ` (230 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Neil Armstrong, Martin Blumenstingl,
	Kevin Hilman, Sasha Levin

From: Neil Armstrong <narmstrong@baylibre.com>

[ Upstream commit eaf8f57c0bf5451132932616ab62f9481adefb55 ]

Use the correct compatible for the AXG ethernet mac node.

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Acked-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/amlogic/meson-axg.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/amlogic/meson-axg.dtsi b/arch/arm64/boot/dts/amlogic/meson-axg.dtsi
index c518130e5ce73..3c34f14fa5086 100644
--- a/arch/arm64/boot/dts/amlogic/meson-axg.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-axg.dtsi
@@ -458,7 +458,7 @@
 		};
 
 		ethmac: ethernet@ff3f0000 {
-			compatible = "amlogic,meson-gxbb-dwmac", "snps,dwmac";
+			compatible = "amlogic,meson-axg-dwmac", "snps,dwmac";
 			reg = <0x0 0xff3f0000 0x0 0x10000
 				0x0 0xff634540 0x0 0x8>;
 			interrupts = <GIC_SPI 8 IRQ_TYPE_EDGE_RISING>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 196/422] ALSA: intel8x0m: Register irq handler after register initializations
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (194 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 195/422] arm64: dts: meson-axg: use the proper compatible for ethmac Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 197/422] arm64: dts: renesas: salvator-common: adv748x: Override secondary addresses Greg Kroah-Hartman
                   ` (229 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Takashi Iwai, Sasha Levin

From: Takashi Iwai <tiwai@suse.de>

[ Upstream commit 7064f376d4a10686f51c879401a569bb4babf9c6 ]

The interrupt handler has to be acquired after the other resource
initialization when allocated with IRQF_SHARED.  Otherwise it's
triggered before the resource gets ready, and may lead to unpleasant
behavior.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/pci/intel8x0m.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/sound/pci/intel8x0m.c b/sound/pci/intel8x0m.c
index 943a726b1c1b0..c84629190cbaf 100644
--- a/sound/pci/intel8x0m.c
+++ b/sound/pci/intel8x0m.c
@@ -1171,16 +1171,6 @@ static int snd_intel8x0m_create(struct snd_card *card,
 	}
 
  port_inited:
-	if (request_irq(pci->irq, snd_intel8x0m_interrupt, IRQF_SHARED,
-			KBUILD_MODNAME, chip)) {
-		dev_err(card->dev, "unable to grab IRQ %d\n", pci->irq);
-		snd_intel8x0m_free(chip);
-		return -EBUSY;
-	}
-	chip->irq = pci->irq;
-	pci_set_master(pci);
-	synchronize_irq(chip->irq);
-
 	/* initialize offsets */
 	chip->bdbars_count = 2;
 	tbl = intel_regs;
@@ -1224,11 +1214,21 @@ static int snd_intel8x0m_create(struct snd_card *card,
 	chip->int_sta_reg = ICH_REG_GLOB_STA;
 	chip->int_sta_mask = int_sta_masks;
 
+	pci_set_master(pci);
+
 	if ((err = snd_intel8x0m_chip_init(chip, 1)) < 0) {
 		snd_intel8x0m_free(chip);
 		return err;
 	}
 
+	if (request_irq(pci->irq, snd_intel8x0m_interrupt, IRQF_SHARED,
+			KBUILD_MODNAME, chip)) {
+		dev_err(card->dev, "unable to grab IRQ %d\n", pci->irq);
+		snd_intel8x0m_free(chip);
+		return -EBUSY;
+	}
+	chip->irq = pci->irq;
+
 	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) {
 		snd_intel8x0m_free(chip);
 		return err;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 197/422] arm64: dts: renesas: salvator-common: adv748x: Override secondary addresses
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (195 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 196/422] ALSA: intel8x0m: Register irq handler after register initializations Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 198/422] arm64: dts: renesas: r8a77965: Attach the SYS-DMAC to the IPMMU Greg Kroah-Hartman
                   ` (228 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Kieran Bingham, Simon Horman, Sasha Levin

From: Kieran Bingham <kieran.bingham@ideasonboard.com>

[ Upstream commit e3da41a6c28f9b61ea03df987f1c9ffffc8b8e60 ]

Ensure that the ADV748x device addresses do not conflict, and group them
together (visually in i2cdetect)

Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/renesas/salvator-common.dtsi | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/renesas/salvator-common.dtsi b/arch/arm64/boot/dts/renesas/salvator-common.dtsi
index 7d3d866a00635..3b90f816dfefc 100644
--- a/arch/arm64/boot/dts/renesas/salvator-common.dtsi
+++ b/arch/arm64/boot/dts/renesas/salvator-common.dtsi
@@ -420,7 +420,10 @@
 
 	video-receiver@70 {
 		compatible = "adi,adv7482";
-		reg = <0x70>;
+		reg = <0x70 0x71 0x72 0x73 0x74 0x75
+		       0x60 0x61 0x62 0x63 0x64 0x65>;
+		reg-names = "main", "dpll", "cp", "hdmi", "edid", "repeater",
+			    "infoframe", "cbus", "cec", "sdp", "txa", "txb" ;
 
 		#address-cells = <1>;
 		#size-cells = <0>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 198/422] arm64: dts: renesas: r8a77965: Attach the SYS-DMAC to the IPMMU
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (196 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 197/422] arm64: dts: renesas: salvator-common: adv748x: Override secondary addresses Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 199/422] arm64: dts: renesas: r8a77965: Fix HS-USB compatible Greg Kroah-Hartman
                   ` (227 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Magnus Damm, Simon Horman, Sasha Levin

From: Magnus Damm <damm+renesas@opensource.se>

[ Upstream commit 4d76ad7d9de05506f1ee9a7b22416440468be090 ]

For R-Car M3-N hook up SYS-DMAC0, SYS-DMAC1 and SYS-DMAC2 to
IPMMU-DS0 and IPMMU-DS1 in same way as for R-Car M3-W.
This follows the R-Car Gen3 Rev.1.00 (April 2018) datasheet.

Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/renesas/r8a77965.dtsi | 24 +++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/arch/arm64/boot/dts/renesas/r8a77965.dtsi b/arch/arm64/boot/dts/renesas/r8a77965.dtsi
index f60f08ba1a6f9..0da4841162610 100644
--- a/arch/arm64/boot/dts/renesas/r8a77965.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a77965.dtsi
@@ -634,6 +634,14 @@
 			resets = <&cpg 219>;
 			#dma-cells = <1>;
 			dma-channels = <16>;
+			iommus = <&ipmmu_ds0 0>, <&ipmmu_ds0 1>,
+			       <&ipmmu_ds0 2>, <&ipmmu_ds0 3>,
+			       <&ipmmu_ds0 4>, <&ipmmu_ds0 5>,
+			       <&ipmmu_ds0 6>, <&ipmmu_ds0 7>,
+			       <&ipmmu_ds0 8>, <&ipmmu_ds0 9>,
+			       <&ipmmu_ds0 10>, <&ipmmu_ds0 11>,
+			       <&ipmmu_ds0 12>, <&ipmmu_ds0 13>,
+			       <&ipmmu_ds0 14>, <&ipmmu_ds0 15>;
 		};
 
 		dmac1: dma-controller@e7300000 {
@@ -668,6 +676,14 @@
 			resets = <&cpg 218>;
 			#dma-cells = <1>;
 			dma-channels = <16>;
+			iommus = <&ipmmu_ds1 0>, <&ipmmu_ds1 1>,
+			       <&ipmmu_ds1 2>, <&ipmmu_ds1 3>,
+			       <&ipmmu_ds1 4>, <&ipmmu_ds1 5>,
+			       <&ipmmu_ds1 6>, <&ipmmu_ds1 7>,
+			       <&ipmmu_ds1 8>, <&ipmmu_ds1 9>,
+			       <&ipmmu_ds1 10>, <&ipmmu_ds1 11>,
+			       <&ipmmu_ds1 12>, <&ipmmu_ds1 13>,
+			       <&ipmmu_ds1 14>, <&ipmmu_ds1 15>;
 		};
 
 		dmac2: dma-controller@e7310000 {
@@ -702,6 +718,14 @@
 			resets = <&cpg 217>;
 			#dma-cells = <1>;
 			dma-channels = <16>;
+			iommus = <&ipmmu_ds1 16>, <&ipmmu_ds1 17>,
+			       <&ipmmu_ds1 18>, <&ipmmu_ds1 19>,
+			       <&ipmmu_ds1 20>, <&ipmmu_ds1 21>,
+			       <&ipmmu_ds1 22>, <&ipmmu_ds1 23>,
+			       <&ipmmu_ds1 24>, <&ipmmu_ds1 25>,
+			       <&ipmmu_ds1 26>, <&ipmmu_ds1 27>,
+			       <&ipmmu_ds1 28>, <&ipmmu_ds1 29>,
+			       <&ipmmu_ds1 30>, <&ipmmu_ds1 31>;
 		};
 
 		ipmmu_ds0: mmu@e6740000 {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 199/422] arm64: dts: renesas: r8a77965: Fix HS-USB compatible
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (197 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 198/422] arm64: dts: renesas: r8a77965: Attach the SYS-DMAC to the IPMMU Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 200/422] arm64: dts: renesas: r8a77965: Fix clock/reset for usb2_phy1 Greg Kroah-Hartman
                   ` (226 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Geert Uytterhoeven,
	Yoshihiro Shimoda, Simon Horman, Sasha Levin

From: Geert Uytterhoeven <geert+renesas@glider.be>

[ Upstream commit 99584d93e301d820d817bba2eb77b9152e13009c ]

Should be "renesas,usbhs-r8a77965", not "renesas,usbhs-r8a7796".

Fixes: a06e8af801760a98 ("arm64: dts: renesas: r8a77965: add HS-USB node")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/renesas/r8a77965.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/renesas/r8a77965.dtsi b/arch/arm64/boot/dts/renesas/r8a77965.dtsi
index 0da4841162610..2ccb1138cdf0c 100644
--- a/arch/arm64/boot/dts/renesas/r8a77965.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a77965.dtsi
@@ -545,7 +545,7 @@
 		};
 
 		hsusb: usb@e6590000 {
-			compatible = "renesas,usbhs-r8a7796",
+			compatible = "renesas,usbhs-r8a77965",
 				     "renesas,rcar-gen3-usbhs";
 			reg = <0 0xe6590000 0 0x100>;
 			interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 200/422] arm64: dts: renesas: r8a77965: Fix clock/reset for usb2_phy1
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (198 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 199/422] arm64: dts: renesas: r8a77965: Fix HS-USB compatible Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 201/422] pinctrl: at91-pio4: fix has_config check in atmel_pctl_dt_subnode_to_map() Greg Kroah-Hartman
                   ` (225 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Geert Uytterhoeven,
	Yoshihiro Shimoda, Simon Horman, Sasha Levin

From: Geert Uytterhoeven <geert+renesas@glider.be>

[ Upstream commit 7a590fe317488783a229e5a80e91868942e8463f ]

usb2_phy1 accidentally uses the same clock/reset as usb2_phy0.

Fixes: b5857630a829a8d5 ("arm64: dts: renesas: r8a77965: add usb2_phy nodes")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/renesas/r8a77965.dtsi | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/boot/dts/renesas/r8a77965.dtsi b/arch/arm64/boot/dts/renesas/r8a77965.dtsi
index 2ccb1138cdf0c..f1dfd17413b9e 100644
--- a/arch/arm64/boot/dts/renesas/r8a77965.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a77965.dtsi
@@ -1479,9 +1479,9 @@
 			compatible = "renesas,usb2-phy-r8a77965",
 				     "renesas,rcar-gen3-usb2-phy";
 			reg = <0 0xee0a0200 0 0x700>;
-			clocks = <&cpg CPG_MOD 703>;
+			clocks = <&cpg CPG_MOD 702>;
 			power-domains = <&sysc R8A77965_PD_ALWAYS_ON>;
-			resets = <&cpg 703>;
+			resets = <&cpg 702>;
 			#phy-cells = <0>;
 			status = "disabled";
 		};
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 201/422] pinctrl: at91-pio4: fix has_config check in atmel_pctl_dt_subnode_to_map()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (199 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 200/422] arm64: dts: renesas: r8a77965: Fix clock/reset for usb2_phy1 Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 202/422] llc: avoid blocking in llc_sap_close() Greg Kroah-Hartman
                   ` (224 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dan Carpenter, Ludovic Desroches,
	Linus Walleij, Sasha Levin

From: Dan Carpenter <dan.carpenter@oracle.com>

[ Upstream commit b97760ae8e3dc8bb91881c13425a0bff55f2bd85 ]

Smatch complains about this condition:

	if (has_config && num_pins >= 1)

The "has_config" variable is either uninitialized or true.  The
"num_pins" variable is unsigned and we verified that it is non-zero on
the lines before so we know "num_pines >= 1" is true.  Really, we could
just check "num_configs" directly and remove the "has_config" variable.

Fixes: 776180848b57 ("pinctrl: introduce driver for Atmel PIO4 controller")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/pinctrl/pinctrl-at91-pio4.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-at91-pio4.c b/drivers/pinctrl/pinctrl-at91-pio4.c
index ef7ab208b951e..9e2f3738bf3ec 100644
--- a/drivers/pinctrl/pinctrl-at91-pio4.c
+++ b/drivers/pinctrl/pinctrl-at91-pio4.c
@@ -493,7 +493,6 @@ static int atmel_pctl_dt_subnode_to_map(struct pinctrl_dev *pctldev,
 	unsigned num_pins, num_configs, reserve;
 	unsigned long *configs;
 	struct property	*pins;
-	bool has_config;
 	u32 pinfunc;
 	int ret, i;
 
@@ -509,9 +508,6 @@ static int atmel_pctl_dt_subnode_to_map(struct pinctrl_dev *pctldev,
 		return ret;
 	}
 
-	if (num_configs)
-		has_config = true;
-
 	num_pins = pins->length / sizeof(u32);
 	if (!num_pins) {
 		dev_err(pctldev->dev, "no pins found in node %pOF\n", np);
@@ -524,7 +520,7 @@ static int atmel_pctl_dt_subnode_to_map(struct pinctrl_dev *pctldev,
 	 * map for each pin.
 	 */
 	reserve = 1;
-	if (has_config && num_pins >= 1)
+	if (num_configs)
 		reserve++;
 	reserve *= num_pins;
 	ret = pinctrl_utils_reserve_map(pctldev, map, reserved_maps, num_maps,
@@ -547,7 +543,7 @@ static int atmel_pctl_dt_subnode_to_map(struct pinctrl_dev *pctldev,
 		pinctrl_utils_add_map_mux(pctldev, map, reserved_maps, num_maps,
 					  group, func);
 
-		if (has_config) {
+		if (num_configs) {
 			ret = pinctrl_utils_add_map_configs(pctldev, map,
 					reserved_maps, num_maps, group,
 					configs, num_configs,
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 202/422] llc: avoid blocking in llc_sap_close()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (200 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 201/422] pinctrl: at91-pio4: fix has_config check in atmel_pctl_dt_subnode_to_map() Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 203/422] ARM: dts: qcom: ipq4019: fix cpu0s qcom,saw2 reg value Greg Kroah-Hartman
                   ` (223 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Cong Wang, David S. Miller, Sasha Levin

From: Cong Wang <xiyou.wangcong@gmail.com>

[ Upstream commit 9708d2b5b7c648e8e0a40d11e8cea12f6277f33c ]

llc_sap_close() is called by llc_sap_put() which
could be called in BH context in llc_rcv(). We can't
block in BH.

There is no reason to block it here, kfree_rcu() should
be sufficient.

Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/net/llc.h  | 1 +
 net/llc/llc_core.c | 4 +---
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/include/net/llc.h b/include/net/llc.h
index 890a87318014d..df282d9b40170 100644
--- a/include/net/llc.h
+++ b/include/net/llc.h
@@ -66,6 +66,7 @@ struct llc_sap {
 	int sk_count;
 	struct hlist_nulls_head sk_laddr_hash[LLC_SK_LADDR_HASH_ENTRIES];
 	struct hlist_head sk_dev_hash[LLC_SK_DEV_HASH_ENTRIES];
+	struct rcu_head rcu;
 };
 
 static inline
diff --git a/net/llc/llc_core.c b/net/llc/llc_core.c
index 260b3dc1b4a2a..64d4bef04e730 100644
--- a/net/llc/llc_core.c
+++ b/net/llc/llc_core.c
@@ -127,9 +127,7 @@ void llc_sap_close(struct llc_sap *sap)
 	list_del_rcu(&sap->node);
 	spin_unlock_bh(&llc_sap_list_lock);
 
-	synchronize_rcu();
-
-	kfree(sap);
+	kfree_rcu(sap, rcu);
 }
 
 static struct packet_type llc_packet_type __read_mostly = {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 203/422] ARM: dts: qcom: ipq4019: fix cpu0s qcom,saw2 reg value
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (201 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 202/422] llc: avoid blocking in llc_sap_close() Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 204/422] soc: qcom: geni: Dont ignore clk_round_rate() errors in geni_se_clk_tbl_get() Greg Kroah-Hartman
                   ` (222 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Christian Lamparter, John Crispin,
	Andy Gross, Sasha Levin

From: Christian Lamparter <chunkeey@gmail.com>

[ Upstream commit bd73a3dd257fb838bd456a18eeee0ef0224b7a40 ]

while compiling an ipq4019 target, dtc will complain:
regulator@b089000 unit address format error, expected "2089000"

The saw0 regulator reg value seems to be
copied and pasted from qcom-ipq8064.dtsi.

This patch fixes the reg value to match that of the
unit address which in turn silences the warning.
(There is no driver for qcom,saw2 right now.
So this went unnoticed)

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
Signed-off-by: John Crispin <john@phrozen.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/qcom-ipq4019.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/qcom-ipq4019.dtsi b/arch/arm/boot/dts/qcom-ipq4019.dtsi
index 54d056b01bb51..8328ad589e2ba 100644
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
@@ -313,7 +313,7 @@
 
                 saw0: regulator@b089000 {
                         compatible = "qcom,saw2";
-                        reg = <0x02089000 0x1000>, <0x0b009000 0x1000>;
+			reg = <0x0b089000 0x1000>, <0x0b009000 0x1000>;
                         regulator;
                 };
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 204/422] soc: qcom: geni: Dont ignore clk_round_rate() errors in geni_se_clk_tbl_get()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (202 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 203/422] ARM: dts: qcom: ipq4019: fix cpu0s qcom,saw2 reg value Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 205/422] soc: qcom: geni: geni_se_clk_freq_match() should always accept multiples Greg Kroah-Hartman
                   ` (221 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Douglas Anderson, Matthias Kaehlcke,
	Andy Gross, Sasha Levin

From: Douglas Anderson <dianders@chromium.org>

[ Upstream commit e11bbcedecae85ce60a5d99ea03528c2d6f867e0 ]

The function clk_round_rate() is defined to return a "long", not an
"unsigned long".  That's because it might return a negative error
code.  Change the call in geni_se_clk_tbl_get() to check for errors.

While we're at it, get rid of a useless init of "freq".

NOTE: overall the idea that we should iterate over clk_round_rate() to
try to reconstruct a table already present in the clock driver is
questionable.  Specifically:
- This method relies on "clk_round_rate()" rounding up.
- This method only works if the table is sorted and has no duplicates.
...this patch doesn't try to fix those problems, it just makes the
error handling more correct.

Fixes: eddac5af0654 ("soc: qcom: Add GENI based QUP Wrapper driver")
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/soc/qcom/qcom-geni-se.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-se.c
index feed3db21c108..1b19b8428c4ac 100644
--- a/drivers/soc/qcom/qcom-geni-se.c
+++ b/drivers/soc/qcom/qcom-geni-se.c
@@ -513,7 +513,7 @@ EXPORT_SYMBOL(geni_se_resources_on);
  */
 int geni_se_clk_tbl_get(struct geni_se *se, unsigned long **tbl)
 {
-	unsigned long freq = 0;
+	long freq = 0;
 	int i;
 
 	if (se->clk_perf_tbl) {
@@ -529,7 +529,7 @@ int geni_se_clk_tbl_get(struct geni_se *se, unsigned long **tbl)
 
 	for (i = 0; i < MAX_CLK_PERF_LEVEL; i++) {
 		freq = clk_round_rate(se->clk, freq + 1);
-		if (!freq || freq == se->clk_perf_tbl[i - 1])
+		if (freq <= 0 || freq == se->clk_perf_tbl[i - 1])
 			break;
 		se->clk_perf_tbl[i] = freq;
 	}
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 205/422] soc: qcom: geni: geni_se_clk_freq_match() should always accept multiples
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (203 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 204/422] soc: qcom: geni: Dont ignore clk_round_rate() errors in geni_se_clk_tbl_get() Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 206/422] soc: qcom: wcnss_ctrl: Avoid string overflow Greg Kroah-Hartman
                   ` (220 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Douglas Anderson, Matthias Kaehlcke,
	Andy Gross, Sasha Levin

From: Douglas Anderson <dianders@chromium.org>

[ Upstream commit 867d4aa7013fdee8b962cde1711f96c8dd86d926 ]

The geni_se_clk_freq_match() has some strange semantics.  Specifically
it is defined with two modes:
1. It can find a clock that's an exact multiple of the requested rate
2. It can find a non-exact match but it can't handle multiples then

...but callers should always be able to handle a clock that is a
multiple of the requested clock so mode #2 doesn't really make sense.
Let's change the semantics so that the non-exact match can also accept
multiples and then change the code to handle that.

The only caller of this code is the unlanded SPI driver [1] which
currently passes "exact = True", thus it should be safe to change the
semantics in this way.  ...and, in fact, the SPI driver should likely
be modified to pass "exact = False" (with the new semantics) since
that will allow it to work with SPI devices that request a clock rate
that doesn't exactly match a rate we can make.

[1] https://lkml.kernel.org/r/1535107336-2214-1-git-send-email-dkota@codeaurora.org

Fixes: eddac5af0654 ("soc: qcom: Add GENI based QUP Wrapper driver")
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/soc/qcom/qcom-geni-se.c | 37 ++++++++++++++++++++-------------
 1 file changed, 22 insertions(+), 15 deletions(-)

diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-se.c
index 1b19b8428c4ac..ee89ffb6dde84 100644
--- a/drivers/soc/qcom/qcom-geni-se.c
+++ b/drivers/soc/qcom/qcom-geni-se.c
@@ -544,16 +544,17 @@ EXPORT_SYMBOL(geni_se_clk_tbl_get);
  * @se:		Pointer to the concerned serial engine.
  * @req_freq:	Requested clock frequency.
  * @index:	Index of the resultant frequency in the table.
- * @res_freq:	Resultant frequency which matches or is closer to the
- *		requested frequency.
+ * @res_freq:	Resultant frequency of the source clock.
  * @exact:	Flag to indicate exact multiple requirement of the requested
  *		frequency.
  *
- * This function is called by the protocol drivers to determine the matching
- * or exact multiple of the requested frequency, as provided by the serial
- * engine clock in order to meet the performance requirements. If there is
- * no matching or exact multiple of the requested frequency found, then it
- * selects the closest floor frequency, if exact flag is not set.
+ * This function is called by the protocol drivers to determine the best match
+ * of the requested frequency as provided by the serial engine clock in order
+ * to meet the performance requirements.
+ *
+ * If we return success:
+ * - if @exact is true  then @res_freq / <an_integer> == @req_freq
+ * - if @exact is false then @res_freq / <an_integer> <= @req_freq
  *
  * Return: 0 on success, standard Linux error codes on failure.
  */
@@ -564,6 +565,9 @@ int geni_se_clk_freq_match(struct geni_se *se, unsigned long req_freq,
 	unsigned long *tbl;
 	int num_clk_levels;
 	int i;
+	unsigned long best_delta;
+	unsigned long new_delta;
+	unsigned int divider;
 
 	num_clk_levels = geni_se_clk_tbl_get(se, &tbl);
 	if (num_clk_levels < 0)
@@ -572,18 +576,21 @@ int geni_se_clk_freq_match(struct geni_se *se, unsigned long req_freq,
 	if (num_clk_levels == 0)
 		return -EINVAL;
 
-	*res_freq = 0;
+	best_delta = ULONG_MAX;
 	for (i = 0; i < num_clk_levels; i++) {
-		if (!(tbl[i] % req_freq)) {
+		divider = DIV_ROUND_UP(tbl[i], req_freq);
+		new_delta = req_freq - tbl[i] / divider;
+		if (new_delta < best_delta) {
+			/* We have a new best! */
 			*index = i;
 			*res_freq = tbl[i];
-			return 0;
-		}
 
-		if (!(*res_freq) || ((tbl[i] > *res_freq) &&
-				     (tbl[i] < req_freq))) {
-			*index = i;
-			*res_freq = tbl[i];
+			/* If the new best is exact then we're done */
+			if (new_delta == 0)
+				return 0;
+
+			/* Record how close we got */
+			best_delta = new_delta;
 		}
 	}
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 206/422] soc: qcom: wcnss_ctrl: Avoid string overflow
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (204 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 205/422] soc: qcom: geni: geni_se_clk_freq_match() should always accept multiples Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 207/422] soc: qcom: apr: " Greg Kroah-Hartman
                   ` (219 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Niklas Cassel, Bjorn Andersson,
	Andy Gross, Sasha Levin

From: Niklas Cassel <niklas.cassel@linaro.org>

[ Upstream commit 4c96ed170d658d8826d94edec8ac93ee777981a2 ]

'chinfo.name' is used as a NUL-terminated string, but using strncpy() with
the length equal to the buffer size may result in lack of the termination:

drivers//soc/qcom/wcnss_ctrl.c: In function 'qcom_wcnss_open_channel':
drivers//soc/qcom/wcnss_ctrl.c:284:2: warning: 'strncpy' specified bound 32 equals destination size [-Wstringop-truncation]
  strncpy(chinfo.name, name, sizeof(chinfo.name));
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This changes it to use the safer strscpy() instead.

Signed-off-by: Niklas Cassel <niklas.cassel@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/soc/qcom/wcnss_ctrl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/soc/qcom/wcnss_ctrl.c b/drivers/soc/qcom/wcnss_ctrl.c
index df3ccb30bc2dd..373400dd816d6 100644
--- a/drivers/soc/qcom/wcnss_ctrl.c
+++ b/drivers/soc/qcom/wcnss_ctrl.c
@@ -281,7 +281,7 @@ struct rpmsg_endpoint *qcom_wcnss_open_channel(void *wcnss, const char *name, rp
 	struct rpmsg_channel_info chinfo;
 	struct wcnss_ctrl *_wcnss = wcnss;
 
-	strncpy(chinfo.name, name, sizeof(chinfo.name));
+	strscpy(chinfo.name, name, sizeof(chinfo.name));
 	chinfo.src = RPMSG_ADDR_ANY;
 	chinfo.dst = RPMSG_ADDR_ANY;
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 207/422] soc: qcom: apr: Avoid string overflow
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (205 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 206/422] soc: qcom: wcnss_ctrl: Avoid string overflow Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 208/422] drivers: qcom: rpmh-rsc: clear wait_for_compl after use Greg Kroah-Hartman
                   ` (218 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Niklas Cassel, Bjorn Andersson,
	Andy Gross, Sasha Levin

From: Niklas Cassel <niklas.cassel@linaro.org>

[ Upstream commit 4fadb26574cb74e5de079dd384f25f44f4fb3ec3 ]

'adev->name' is used as a NUL-terminated string, but using strncpy() with the
length equal to the buffer size may result in lack of the termination:

In function 'apr_add_device',
    inlined from 'of_register_apr_devices' at drivers//soc/qcom/apr.c:264:7,
    inlined from 'apr_probe' at drivers//soc/qcom/apr.c:290:2:
drivers//soc/qcom/apr.c:222:3: warning: 'strncpy' specified bound 32 equals destination size [-Wstringop-truncation]
   strncpy(adev->name, np->name, APR_NAME_SIZE);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This changes it to use the safer strscpy() instead.

Signed-off-by: Niklas Cassel <niklas.cassel@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/soc/qcom/apr.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/soc/qcom/apr.c b/drivers/soc/qcom/apr.c
index 57af8a5373325..ee9197f5aae96 100644
--- a/drivers/soc/qcom/apr.c
+++ b/drivers/soc/qcom/apr.c
@@ -219,9 +219,9 @@ static int apr_add_device(struct device *dev, struct device_node *np,
 	adev->domain_id = id->domain_id;
 	adev->version = id->svc_version;
 	if (np)
-		strncpy(adev->name, np->name, APR_NAME_SIZE);
+		strscpy(adev->name, np->name, APR_NAME_SIZE);
 	else
-		strncpy(adev->name, id->name, APR_NAME_SIZE);
+		strscpy(adev->name, id->name, APR_NAME_SIZE);
 
 	dev_set_name(&adev->dev, "aprsvc:%s:%x:%x", adev->name,
 		     id->domain_id, id->svc_id);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 208/422] drivers: qcom: rpmh-rsc: clear wait_for_compl after use
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (206 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 207/422] soc: qcom: apr: " Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 209/422] arm64: dts: broadcom: Fix I2C and SPI bus warnings Greg Kroah-Hartman
                   ` (217 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Raju P.L.S.S.S.N, Lina Iyer,
	Andy Gross, Sasha Levin

From: Lina Iyer <ilina@codeaurora.org>

[ Upstream commit 09e97b6c8754c91470455e69ebd827b741f80af5 ]

The wait_for_compl register ensures the request sequence is maintained
when sending requests from the TCS. Clear the register after sending
active request and during invalidate of the sleep and wake TCS.

Reported-by: Raju P.L.S.S.S.N <rplsssn@codeaurora.org>
Signed-off-by: Lina Iyer <ilina@codeaurora.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/soc/qcom/rpmh-rsc.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/soc/qcom/rpmh-rsc.c b/drivers/soc/qcom/rpmh-rsc.c
index ee75da66d64bf..75bd9a83aef00 100644
--- a/drivers/soc/qcom/rpmh-rsc.c
+++ b/drivers/soc/qcom/rpmh-rsc.c
@@ -121,6 +121,7 @@ static int tcs_invalidate(struct rsc_drv *drv, int type)
 			return -EAGAIN;
 		}
 		write_tcs_reg_sync(drv, RSC_DRV_CMD_ENABLE, m, 0);
+		write_tcs_reg_sync(drv, RSC_DRV_CMD_WAIT_FOR_CMPL, m, 0);
 	}
 	bitmap_zero(tcs->slots, MAX_TCS_SLOTS);
 	spin_unlock(&tcs->lock);
@@ -239,6 +240,7 @@ static irqreturn_t tcs_tx_done(int irq, void *p)
 skip:
 		/* Reclaim the TCS */
 		write_tcs_reg(drv, RSC_DRV_CMD_ENABLE, i, 0);
+		write_tcs_reg(drv, RSC_DRV_CMD_WAIT_FOR_CMPL, i, 0);
 		write_tcs_reg(drv, RSC_DRV_IRQ_CLEAR, 0, BIT(i));
 		spin_lock(&drv->lock);
 		clear_bit(i, drv->tcs_in_use);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 209/422] arm64: dts: broadcom: Fix I2C and SPI bus warnings
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (207 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 208/422] drivers: qcom: rpmh-rsc: clear wait_for_compl after use Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 210/422] ARM: dts: bcm: Fix " Greg Kroah-Hartman
                   ` (216 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ray Jui, Scott Branden, Jon Mason,
	bcm-kernel-feedback-list, Rob Herring, Florian Fainelli,
	Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit 7cdbe45da1a189e744e6801aebb462ee47235580 ]

dtc has new checks for I2C and SPI buses. Fix the warnings in node names
and unit-addresses.

arch/arm64/boot/dts/broadcom/stingray/bcm958742k.dtb: Warning (i2c_bus_reg): /hsls/i2c@e0000/pcf8574@20: I2C bus unit address format error, expected "27"
arch/arm64/boot/dts/broadcom/stingray/bcm958742t.dtb: Warning (i2c_bus_reg): /hsls/i2c@e0000/pcf8574@20: I2C bus unit address format error, expected "27"
arch/arm64/boot/dts/broadcom/stingray/bcm958742k.dtb: Warning (spi_bus_bridge): /hsls/ssp@180000: node name for SPI buses should be 'spi'
arch/arm64/boot/dts/broadcom/stingray/bcm958742k.dtb: Warning (spi_bus_bridge): /hsls/ssp@190000: node name for SPI buses should be 'spi'

Cc: Ray Jui <rjui@broadcom.com>
Cc: Scott Branden <sbranden@broadcom.com>
Cc: Jon Mason <jonmason@broadcom.com>
Cc: bcm-kernel-feedback-list@broadcom.com
Signed-off-by: Rob Herring <robh@kernel.org>
Acked-by: Scott Branden <sbranden@broadcom.com>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/broadcom/northstar2/ns2.dtsi          | 4 ++--
 arch/arm64/boot/dts/broadcom/stingray/bcm958742-base.dtsi | 2 +-
 arch/arm64/boot/dts/broadcom/stingray/stingray.dtsi       | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/arm64/boot/dts/broadcom/northstar2/ns2.dtsi b/arch/arm64/boot/dts/broadcom/northstar2/ns2.dtsi
index 1a406a76c86a2..ea854f689fda8 100644
--- a/arch/arm64/boot/dts/broadcom/northstar2/ns2.dtsi
+++ b/arch/arm64/boot/dts/broadcom/northstar2/ns2.dtsi
@@ -639,7 +639,7 @@
 			status = "disabled";
 		};
 
-		ssp0: ssp@66180000 {
+		ssp0: spi@66180000 {
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0x66180000 0x1000>;
 			interrupts = <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>;
@@ -650,7 +650,7 @@
 			status = "disabled";
 		};
 
-		ssp1: ssp@66190000 {
+		ssp1: spi@66190000 {
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0x66190000 0x1000>;
 			interrupts = <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>;
diff --git a/arch/arm64/boot/dts/broadcom/stingray/bcm958742-base.dtsi b/arch/arm64/boot/dts/broadcom/stingray/bcm958742-base.dtsi
index bc299c3d90683..a9b92e52d50e8 100644
--- a/arch/arm64/boot/dts/broadcom/stingray/bcm958742-base.dtsi
+++ b/arch/arm64/boot/dts/broadcom/stingray/bcm958742-base.dtsi
@@ -138,7 +138,7 @@
 &i2c1 {
 	status = "okay";
 
-	pcf8574: pcf8574@20 {
+	pcf8574: pcf8574@27 {
 		compatible = "nxp,pcf8574a";
 		gpio-controller;
 		#gpio-cells = <2>;
diff --git a/arch/arm64/boot/dts/broadcom/stingray/stingray.dtsi b/arch/arm64/boot/dts/broadcom/stingray/stingray.dtsi
index 84101ea1fd2cb..ff714fcbac68d 100644
--- a/arch/arm64/boot/dts/broadcom/stingray/stingray.dtsi
+++ b/arch/arm64/boot/dts/broadcom/stingray/stingray.dtsi
@@ -520,7 +520,7 @@
 			status = "disabled";
 		};
 
-		ssp0: ssp@180000 {
+		ssp0: spi@180000 {
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0x00180000 0x1000>;
 			interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>;
@@ -532,7 +532,7 @@
 			status = "disabled";
 		};
 
-		ssp1: ssp@190000 {
+		ssp1: spi@190000 {
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0x00190000 0x1000>;
 			interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 210/422] ARM: dts: bcm: Fix SPI bus warnings
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (208 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 209/422] arm64: dts: broadcom: Fix I2C and SPI bus warnings Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 211/422] ARM: dts: aspeed: Fix I2C " Greg Kroah-Hartman
                   ` (215 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ray Jui, Scott Branden, Jon Mason,
	bcm-kernel-feedback-list, Rob Herring, Florian Fainelli,
	Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit ab0b47d2eff413d60b0a1fc0c1f87f87f0d7f375 ]

dtc has new checks for SPI buses. Fix the warnings in node names.

arch/arm/boot/dts/bcm53340-ubnt-unifi-switch8.dtb: Warning (spi_bus_bridge): /axi@18000000/qspi@27200: node name for SPI buses should be 'spi'
arch/arm/boot/dts/bcm958525er.dtb: Warning (spi_bus_bridge): /axi/qspi@27200: node name for SPI buses should be 'spi'
arch/arm/boot/dts/bcm958525xmc.dtb: Warning (spi_bus_bridge): /axi/qspi@27200: node name for SPI buses should be 'spi'
arch/arm/boot/dts/bcm958622hr.dtb: Warning (spi_bus_bridge): /axi/qspi@27200: node name for SPI buses should be 'spi'
arch/arm/boot/dts/bcm958625hr.dtb: Warning (spi_bus_bridge): /axi/qspi@27200: node name for SPI buses should be 'spi'
arch/arm/boot/dts/bcm988312hr.dtb: Warning (spi_bus_bridge): /axi/qspi@27200: node name for SPI buses should be 'spi'

Cc: Ray Jui <rjui@broadcom.com>
Cc: Scott Branden <sbranden@broadcom.com>
Cc: Jon Mason <jonmason@broadcom.com>
Cc: bcm-kernel-feedback-list@broadcom.com
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/bcm-hr2.dtsi | 2 +-
 arch/arm/boot/dts/bcm-nsp.dtsi | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/bcm-hr2.dtsi b/arch/arm/boot/dts/bcm-hr2.dtsi
index 3084a7c957339..e4d49731287f6 100644
--- a/arch/arm/boot/dts/bcm-hr2.dtsi
+++ b/arch/arm/boot/dts/bcm-hr2.dtsi
@@ -216,7 +216,7 @@
 			reg = <0x33000 0x14>;
 		};
 
-		qspi: qspi@27200 {
+		qspi: spi@27200 {
 			compatible = "brcm,spi-bcm-qspi", "brcm,spi-nsp-qspi";
 			reg = <0x027200 0x184>,
 			      <0x027000 0x124>,
diff --git a/arch/arm/boot/dts/bcm-nsp.dtsi b/arch/arm/boot/dts/bcm-nsp.dtsi
index 09ba850463228..2b219addeb449 100644
--- a/arch/arm/boot/dts/bcm-nsp.dtsi
+++ b/arch/arm/boot/dts/bcm-nsp.dtsi
@@ -273,7 +273,7 @@
 			brcm,nand-has-wp;
 		};
 
-		qspi: qspi@27200 {
+		qspi: spi@27200 {
 			compatible = "brcm,spi-bcm-qspi", "brcm,spi-nsp-qspi";
 			reg = <0x027200 0x184>,
 			      <0x027000 0x124>,
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 211/422] ARM: dts: aspeed: Fix I2C bus warnings
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (209 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 210/422] ARM: dts: bcm: Fix " Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 212/422] powerpc/vdso: Correct call frame information Greg Kroah-Hartman
                   ` (214 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Joel Stanley, Andrew Jeffery,
	linux-aspeed, Rob Herring, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit 1426d40e11f730e0c0fd3700a7048082f87b0e6e ]

dtc has new checks for I2C buses. The ASpeed dts files have a node named
'i2c' which causes a false positive warning. As the node is a 'simple-bus',
correct the node name to be 'bus' to fix the warnings.

arch/arm/boot/dts/aspeed-bmc-opp-lanyang.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
arch/arm/boot/dts/aspeed-bmc-opp-romulus.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
arch/arm/boot/dts/aspeed-ast2500-evb.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
arch/arm/boot/dts/aspeed-bmc-intel-s2600wf.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
arch/arm/boot/dts/aspeed-bmc-opp-palmetto.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
arch/arm/boot/dts/aspeed-bmc-opp-zaius.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
arch/arm/boot/dts/aspeed-bmc-portwell-neptune.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
arch/arm/boot/dts/aspeed-bmc-quanta-q71l.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus

Cc: Joel Stanley <joel@jms.id.au>
Cc: Andrew Jeffery <andrew@aj.id.au>
Cc: linux-aspeed@lists.ozlabs.org
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/aspeed-g4.dtsi | 2 +-
 arch/arm/boot/dts/aspeed-g5.dtsi | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/aspeed-g4.dtsi b/arch/arm/boot/dts/aspeed-g4.dtsi
index b23a983f95a53..69f6b9d2e7e7d 100644
--- a/arch/arm/boot/dts/aspeed-g4.dtsi
+++ b/arch/arm/boot/dts/aspeed-g4.dtsi
@@ -350,7 +350,7 @@
 				status = "disabled";
 			};
 
-			i2c: i2c@1e78a000 {
+			i2c: bus@1e78a000 {
 				compatible = "simple-bus";
 				#address-cells = <1>;
 				#size-cells = <1>;
diff --git a/arch/arm/boot/dts/aspeed-g5.dtsi b/arch/arm/boot/dts/aspeed-g5.dtsi
index 87fdc146ff525..d107459fc0f89 100644
--- a/arch/arm/boot/dts/aspeed-g5.dtsi
+++ b/arch/arm/boot/dts/aspeed-g5.dtsi
@@ -410,7 +410,7 @@
 				status = "disabled";
 			};
 
-			i2c: i2c@1e78a000 {
+			i2c: bus@1e78a000 {
 				compatible = "simple-bus";
 				#address-cells = <1>;
 				#size-cells = <1>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 212/422] powerpc/vdso: Correct call frame information
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (210 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 211/422] ARM: dts: aspeed: Fix I2C " Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 213/422] ARM: dts: socfpga: Fix I2C bus unit-address error Greg Kroah-Hartman
                   ` (213 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Alan Modra, Reza Arbab,
	Paul Mackerras, Sasha Levin

From: Alan Modra <amodra@gmail.com>

[ Upstream commit 56d20861c027498b5a1112b4f9f05b56d906fdda ]

Call Frame Information is used by gdb for back-traces and inserting
breakpoints on function return for the "finish" command.  This failed
when inside __kernel_clock_gettime.  More concerning than difficulty
debugging is that CFI is also used by stack frame unwinding code to
implement exceptions.  If you have an app that needs to handle
asynchronous exceptions for some reason, and you are unlucky enough to
get one inside the VDSO time functions, your app will crash.

What's wrong:  There is control flow in __kernel_clock_gettime that
reaches label 99 without saving lr in r12.  CFI info however is
interpreted by the unwinder without reference to control flow: It's a
simple matter of "Execute all the CFI opcodes up to the current
address".  That means the unwinder thinks r12 contains the return
address at label 99.  Disabuse it of that notion by resetting CFI for
the return address at label 99.

Note that the ".cfi_restore lr" could have gone anywhere from the
"mtlr r12" a few instructions earlier to the instruction at label 99.
I put the CFI as late as possible, because in general that's best
practice (and if possible grouped with other CFI in order to reduce
the number of CFI opcodes executed when unwinding).  Using r12 as the
return address is perfectly fine after the "mtlr r12" since r12 on
that code path still contains the return address.

__get_datapage also has a CFI error.  That function temporarily saves
lr in r0, and reflects that fact with ".cfi_register lr,r0".  A later
use of r0 means the CFI at that point isn't correct, as r0 no longer
contains the return address.  Fix that too.

Signed-off-by: Alan Modra <amodra@gmail.com>
Tested-by: Reza Arbab <arbab@linux.ibm.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/powerpc/kernel/vdso32/datapage.S     | 1 +
 arch/powerpc/kernel/vdso32/gettimeofday.S | 1 +
 arch/powerpc/kernel/vdso64/datapage.S     | 1 +
 arch/powerpc/kernel/vdso64/gettimeofday.S | 1 +
 4 files changed, 4 insertions(+)

diff --git a/arch/powerpc/kernel/vdso32/datapage.S b/arch/powerpc/kernel/vdso32/datapage.S
index 3745113fcc652..2a7eb5452aba7 100644
--- a/arch/powerpc/kernel/vdso32/datapage.S
+++ b/arch/powerpc/kernel/vdso32/datapage.S
@@ -37,6 +37,7 @@ data_page_branch:
 	mtlr	r0
 	addi	r3, r3, __kernel_datapage_offset-data_page_branch
 	lwz	r0,0(r3)
+  .cfi_restore lr
 	add	r3,r0,r3
 	blr
   .cfi_endproc
diff --git a/arch/powerpc/kernel/vdso32/gettimeofday.S b/arch/powerpc/kernel/vdso32/gettimeofday.S
index 75cff3f336b3a..afd516b572f86 100644
--- a/arch/powerpc/kernel/vdso32/gettimeofday.S
+++ b/arch/powerpc/kernel/vdso32/gettimeofday.S
@@ -139,6 +139,7 @@ V_FUNCTION_BEGIN(__kernel_clock_gettime)
 	 */
 99:
 	li	r0,__NR_clock_gettime
+  .cfi_restore lr
 	sc
 	blr
   .cfi_endproc
diff --git a/arch/powerpc/kernel/vdso64/datapage.S b/arch/powerpc/kernel/vdso64/datapage.S
index abf17feffe404..bf96686915116 100644
--- a/arch/powerpc/kernel/vdso64/datapage.S
+++ b/arch/powerpc/kernel/vdso64/datapage.S
@@ -37,6 +37,7 @@ data_page_branch:
 	mtlr	r0
 	addi	r3, r3, __kernel_datapage_offset-data_page_branch
 	lwz	r0,0(r3)
+  .cfi_restore lr
 	add	r3,r0,r3
 	blr
   .cfi_endproc
diff --git a/arch/powerpc/kernel/vdso64/gettimeofday.S b/arch/powerpc/kernel/vdso64/gettimeofday.S
index afbad2ac31472..1f324c28705bc 100644
--- a/arch/powerpc/kernel/vdso64/gettimeofday.S
+++ b/arch/powerpc/kernel/vdso64/gettimeofday.S
@@ -169,6 +169,7 @@ V_FUNCTION_BEGIN(__kernel_clock_gettime)
 	 */
 99:
 	li	r0,__NR_clock_gettime
+  .cfi_restore lr
 	sc
 	blr
   .cfi_endproc
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 213/422] ARM: dts: socfpga: Fix I2C bus unit-address error
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (211 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 212/422] powerpc/vdso: Correct call frame information Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 214/422] ARM: dts: sunxi: Fix I2C bus warnings Greg Kroah-Hartman
                   ` (212 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Rob Herring, Dinh Nguyen, Sasha Levin

From: Dinh Nguyen <dinguyen@kernel.org>

[ Upstream commit cbbc488ed85061a765cf370c3e41f383c1e0add6 ]

dtc has new checks for I2C buses. Fix the warnings in unit-addresses.

arch/arm/boot/dts/socfpga_cyclone5_de0_sockit.dtb: Warning (i2c_bus_reg): /soc/i2c@ffc04000/adxl345@0: I2C bus unit address format error, expected "53"

Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/socfpga_cyclone5_de0_sockit.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/socfpga_cyclone5_de0_sockit.dts b/arch/arm/boot/dts/socfpga_cyclone5_de0_sockit.dts
index b280e64941938..31b01a998b2ed 100644
--- a/arch/arm/boot/dts/socfpga_cyclone5_de0_sockit.dts
+++ b/arch/arm/boot/dts/socfpga_cyclone5_de0_sockit.dts
@@ -88,7 +88,7 @@
 	status = "okay";
 	clock-frequency = <100000>;
 
-	adxl345: adxl345@0 {
+	adxl345: adxl345@53 {
 		compatible = "adi,adxl345";
 		reg = <0x53>;
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 214/422] ARM: dts: sunxi: Fix I2C bus warnings
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (212 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 213/422] ARM: dts: socfpga: Fix I2C bus unit-address error Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 215/422] pinctrl: at91: dont use the same irqchip with multiple gpiochips Greg Kroah-Hartman
                   ` (211 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Maxime Ripard, Chen-Yu Tsai,
	Rob Herring, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit 0729b4af5753b65aa031f58c435da53dbbf56d19 ]

dtc has new checks for I2C buses. Fix the warnings in unit-addresses.

arch/arm/boot/dts/sun8i-a23-gt90h-v4.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2ac00/touchscreen@0: I2C bus unit address format error, expected "40"
arch/arm/boot/dts/sun8i-a23-inet86dz.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2ac00/touchscreen@0: I2C bus unit address format error, expected "40"
arch/arm/boot/dts/sun8i-a23-polaroid-mid2407pxe03.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2ac00/touchscreen@0: I2C bus unit address format error, expected "40"
arch/arm/boot/dts/sun8i-a23-polaroid-mid2809pxe04.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2ac00/touchscreen@0: I2C bus unit address format error, expected "40"
arch/arm/boot/dts/sun8i-a33-ga10h-v1.1.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2ac00/touchscreen@0: I2C bus unit address format error, expected "40"
arch/arm/boot/dts/sun8i-a33-inet-d978-rev2.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2ac00/touchscreen@0: missing or empty reg property
arch/arm/boot/dts/sun8i-a33-ippo-q8h-v1.2.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2ac00/touchscreen@0: missing or empty reg property
arch/arm/boot/dts/sun8i-a33-q8-tablet.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2ac00/touchscreen@0: missing or empty reg property
arch/arm/boot/dts/sun5i-a13-utoo-p66.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2b000/touchscreen: I2C bus unit address format error, expected "40"
arch/arm/boot/dts/sun5i-a13-difrnce-dit4350.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2b000/touchscreen: missing or empty reg property
arch/arm/boot/dts/sun5i-a13-empire-electronix-m712.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2b000/touchscreen: missing or empty reg property
arch/arm/boot/dts/sun5i-a13-inet-98v-rev2.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2b000/touchscreen: missing or empty reg property
arch/arm/boot/dts/sun5i-a13-q8-tablet.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2b000/touchscreen: missing or empty reg property

Cc: Maxime Ripard <maxime.ripard@bootlin.com>
Cc: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/sun5i-reference-design-tablet.dtsi | 3 ++-
 arch/arm/boot/dts/sun8i-reference-design-tablet.dtsi | 3 ++-
 arch/arm/boot/dts/sun8i-v40-bananapi-m2-berry.dts    | 2 +-
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/arch/arm/boot/dts/sun5i-reference-design-tablet.dtsi b/arch/arm/boot/dts/sun5i-reference-design-tablet.dtsi
index 8acbaab14fe51..d2a2eb8b3f262 100644
--- a/arch/arm/boot/dts/sun5i-reference-design-tablet.dtsi
+++ b/arch/arm/boot/dts/sun5i-reference-design-tablet.dtsi
@@ -92,7 +92,8 @@
 	 */
 	clock-frequency = <400000>;
 
-	touchscreen: touchscreen {
+	touchscreen: touchscreen@40 {
+		reg = <0x40>;
 		interrupt-parent = <&pio>;
 		interrupts = <6 11 IRQ_TYPE_EDGE_FALLING>; /* EINT11 (PG11) */
 		pinctrl-names = "default";
diff --git a/arch/arm/boot/dts/sun8i-reference-design-tablet.dtsi b/arch/arm/boot/dts/sun8i-reference-design-tablet.dtsi
index 880096c7e2523..5e8a95af89b8c 100644
--- a/arch/arm/boot/dts/sun8i-reference-design-tablet.dtsi
+++ b/arch/arm/boot/dts/sun8i-reference-design-tablet.dtsi
@@ -69,7 +69,8 @@
 	 */
 	clock-frequency = <400000>;
 
-	touchscreen: touchscreen@0 {
+	touchscreen: touchscreen@40 {
+		reg = <0x40>;
 		interrupt-parent = <&pio>;
 		interrupts = <1 5 IRQ_TYPE_EDGE_FALLING>; /* PB5 */
 		pinctrl-names = "default";
diff --git a/arch/arm/boot/dts/sun8i-v40-bananapi-m2-berry.dts b/arch/arm/boot/dts/sun8i-v40-bananapi-m2-berry.dts
index 35859d8f3267f..bf97f6244c233 100644
--- a/arch/arm/boot/dts/sun8i-v40-bananapi-m2-berry.dts
+++ b/arch/arm/boot/dts/sun8i-v40-bananapi-m2-berry.dts
@@ -95,7 +95,7 @@
 &i2c0 {
 	status = "okay";
 
-	axp22x: pmic@68 {
+	axp22x: pmic@34 {
 		compatible = "x-powers,axp221";
 		reg = <0x34>;
 		interrupt-parent = <&nmi_intc>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 215/422] pinctrl: at91: dont use the same irqchip with multiple gpiochips
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (213 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 214/422] ARM: dts: sunxi: Fix I2C bus warnings Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 216/422] ARM: dts: sun9i: Fix I2C bus warnings Greg Kroah-Hartman
                   ` (210 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ludovic Desroches, Linus Walleij,
	Sasha Levin

From: Ludovic Desroches <ludovic.desroches@microchip.com>

[ Upstream commit 0c3dfa176912b5f87732545598200fb55e9c1978 ]

Sharing the same irqchip with multiple gpiochips is not a good
practice. For instance, when installing hooks, we change the state
of the irqchip. The initial state of the irqchip for the second
gpiochip to register is then disrupted.

Signed-off-by: Ludovic Desroches <ludovic.desroches@microchip.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/pinctrl/pinctrl-at91.c | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c
index 50f0ec42c6372..fad0e132ead84 100644
--- a/drivers/pinctrl/pinctrl-at91.c
+++ b/drivers/pinctrl/pinctrl-at91.c
@@ -1574,16 +1574,6 @@ void at91_pinctrl_gpio_resume(void)
 #define gpio_irq_set_wake	NULL
 #endif /* CONFIG_PM */
 
-static struct irq_chip gpio_irqchip = {
-	.name		= "GPIO",
-	.irq_ack	= gpio_irq_ack,
-	.irq_disable	= gpio_irq_mask,
-	.irq_mask	= gpio_irq_mask,
-	.irq_unmask	= gpio_irq_unmask,
-	/* .irq_set_type is set dynamically */
-	.irq_set_wake	= gpio_irq_set_wake,
-};
-
 static void gpio_irq_handler(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
@@ -1624,12 +1614,22 @@ static int at91_gpio_of_irq_setup(struct platform_device *pdev,
 	struct gpio_chip	*gpiochip_prev = NULL;
 	struct at91_gpio_chip   *prev = NULL;
 	struct irq_data		*d = irq_get_irq_data(at91_gpio->pioc_virq);
+	struct irq_chip		*gpio_irqchip;
 	int ret, i;
 
+	gpio_irqchip = devm_kzalloc(&pdev->dev, sizeof(*gpio_irqchip), GFP_KERNEL);
+	if (!gpio_irqchip)
+		return -ENOMEM;
+
 	at91_gpio->pioc_hwirq = irqd_to_hwirq(d);
 
-	/* Setup proper .irq_set_type function */
-	gpio_irqchip.irq_set_type = at91_gpio->ops->irq_type;
+	gpio_irqchip->name = "GPIO";
+	gpio_irqchip->irq_ack = gpio_irq_ack;
+	gpio_irqchip->irq_disable = gpio_irq_mask;
+	gpio_irqchip->irq_mask = gpio_irq_mask;
+	gpio_irqchip->irq_unmask = gpio_irq_unmask;
+	gpio_irqchip->irq_set_wake = gpio_irq_set_wake,
+	gpio_irqchip->irq_set_type = at91_gpio->ops->irq_type;
 
 	/* Disable irqs of this PIO controller */
 	writel_relaxed(~0, at91_gpio->regbase + PIO_IDR);
@@ -1640,7 +1640,7 @@ static int at91_gpio_of_irq_setup(struct platform_device *pdev,
 	 * interrupt.
 	 */
 	ret = gpiochip_irqchip_add(&at91_gpio->chip,
-				   &gpio_irqchip,
+				   gpio_irqchip,
 				   0,
 				   handle_edge_irq,
 				   IRQ_TYPE_NONE);
@@ -1658,7 +1658,7 @@ static int at91_gpio_of_irq_setup(struct platform_device *pdev,
 	if (!gpiochip_prev) {
 		/* Then register the chain on the parent IRQ */
 		gpiochip_set_chained_irqchip(&at91_gpio->chip,
-					     &gpio_irqchip,
+					     gpio_irqchip,
 					     at91_gpio->pioc_virq,
 					     gpio_irq_handler);
 		return 0;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 216/422] ARM: dts: sun9i: Fix I2C bus warnings
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (214 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 215/422] pinctrl: at91: dont use the same irqchip with multiple gpiochips Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 217/422] android: binder: no outgoing transaction when thread todo has transaction Greg Kroah-Hartman
                   ` (209 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Maxime Ripard, Chen-Yu Tsai,
	Rob Herring, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit 57a83c5222c1b5e7b3acc72c6e60fce00a38991a ]

dtc has new checks for I2C buses. The sun9i-a80 dts file has a node named
'i2c' which causes a false positive warning. As the node is a RSB bus,
correct the node name to be 'rsb' to fix the warnings.

arch/arm/boot/dts/sun9i-a80-cubieboard4.dtb: Warning (i2c_bus_reg): /soc/i2c@8003400/codec@e89:reg: I2C address must be less than 10-bits, got "0xe89"
arch/arm/boot/dts/sun9i-a80-cubieboard4.dtb: Warning (i2c_bus_reg): /soc/i2c@8003400/pmic@745:reg: I2C address must be less than 10-bits, got "0x745"
arch/arm/boot/dts/sun9i-a80-optimus.dtb: Warning (i2c_bus_reg): /soc/i2c@8003400/codec@e89:reg: I2C address must be less than 10-bits, got "0xe89"
arch/arm/boot/dts/sun9i-a80-optimus.dtb: Warning (i2c_bus_reg): /soc/i2c@8003400/pmic@745:reg: I2C address must be less than 10-bits, got "0x745"

Cc: Maxime Ripard <maxime.ripard@bootlin.com>
Cc: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/sun9i-a80.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/sun9i-a80.dtsi b/arch/arm/boot/dts/sun9i-a80.dtsi
index 25591d6883ef2..d9532fb1ef650 100644
--- a/arch/arm/boot/dts/sun9i-a80.dtsi
+++ b/arch/arm/boot/dts/sun9i-a80.dtsi
@@ -1196,7 +1196,7 @@
 			};
 		};
 
-		r_rsb: i2c@8003400 {
+		r_rsb: rsb@8003400 {
 			compatible = "allwinner,sun8i-a23-rsb";
 			reg = <0x08003400 0x400>;
 			interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 217/422] android: binder: no outgoing transaction when thread todo has transaction
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (215 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 216/422] ARM: dts: sun9i: Fix I2C bus warnings Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 218/422] cxgb4: Fix endianness issue in t4_fwcache() Greg Kroah-Hartman
                   ` (208 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Arve Hjønnevåg,
	Sherry Yang, Martijn Coenen, Sasha Levin

From: Sherry Yang <sherryy@android.com>

[ Upstream commit 44b73962cb25f1c8170ea695c4564b05a75e1fd4 ]

When a process dies, failed reply is sent to the sender of any transaction
queued on a dead thread's todo list. The sender asserts that the
received failed reply corresponds to the head of the transaction stack.
This assert can fail if the dead thread is allowed to send outgoing
transactions when there is already a transaction on its todo list,
because this new transaction can end up on the transaction stack of the
original sender. The following steps illustrate how this assertion can
fail.

1. Thread1 sends txn19 to Thread2
   (T1->transaction_stack=txn19, T2->todo+=txn19)
2. Without processing todo list, Thread2 sends txn20 to Thread1
   (T1->todo+=txn20, T2->transaction_stack=txn20)
3. T1 processes txn20 on its todo list
   (T1->transaction_stack=txn20->txn19, T1->todo=<empty>)
4. T2 dies, T2->todo cleanup attempts to send failed reply for txn19, but
   T1->transaction_stack points to txn20 -- assertion failes

Step 2. is the incorrect behavior. When there is a transaction on a
thread's todo list, this thread should not be able to send any outgoing
synchronous transactions. Only the head of the todo list needs to be
checked because only threads that are waiting for proc work can directly
receive work from another thread, and no work is allowed to be queued
on such a thread without waking up the thread. This patch also enforces
that a thread is not waiting for proc work when a work is directly
enqueued to its todo list.

Acked-by: Arve Hjønnevåg <arve@android.com>
Signed-off-by: Sherry Yang <sherryy@android.com>
Reviewed-by: Martijn Coenen <maco@android.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/android/binder.c | 44 +++++++++++++++++++++++++++++-----------
 1 file changed, 32 insertions(+), 12 deletions(-)

diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index 6e04e7a707a12..cf4367135a00b 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -822,6 +822,7 @@ static void
 binder_enqueue_deferred_thread_work_ilocked(struct binder_thread *thread,
 					    struct binder_work *work)
 {
+	WARN_ON(!list_empty(&thread->waiting_thread_node));
 	binder_enqueue_work_ilocked(work, &thread->todo);
 }
 
@@ -839,6 +840,7 @@ static void
 binder_enqueue_thread_work_ilocked(struct binder_thread *thread,
 				   struct binder_work *work)
 {
+	WARN_ON(!list_empty(&thread->waiting_thread_node));
 	binder_enqueue_work_ilocked(work, &thread->todo);
 	thread->process_todo = true;
 }
@@ -1270,19 +1272,12 @@ static int binder_inc_node_nilocked(struct binder_node *node, int strong,
 		} else
 			node->local_strong_refs++;
 		if (!node->has_strong_ref && target_list) {
+			struct binder_thread *thread = container_of(target_list,
+						    struct binder_thread, todo);
 			binder_dequeue_work_ilocked(&node->work);
-			/*
-			 * Note: this function is the only place where we queue
-			 * directly to a thread->todo without using the
-			 * corresponding binder_enqueue_thread_work() helper
-			 * functions; in this case it's ok to not set the
-			 * process_todo flag, since we know this node work will
-			 * always be followed by other work that starts queue
-			 * processing: in case of synchronous transactions, a
-			 * BR_REPLY or BR_ERROR; in case of oneway
-			 * transactions, a BR_TRANSACTION_COMPLETE.
-			 */
-			binder_enqueue_work_ilocked(&node->work, target_list);
+			BUG_ON(&thread->todo != target_list);
+			binder_enqueue_deferred_thread_work_ilocked(thread,
+								   &node->work);
 		}
 	} else {
 		if (!internal)
@@ -2733,6 +2728,7 @@ static void binder_transaction(struct binder_proc *proc,
 {
 	int ret;
 	struct binder_transaction *t;
+	struct binder_work *w;
 	struct binder_work *tcomplete;
 	binder_size_t *offp, *off_end, *off_start;
 	binder_size_t off_min;
@@ -2874,6 +2870,29 @@ static void binder_transaction(struct binder_proc *proc,
 			goto err_invalid_target_handle;
 		}
 		binder_inner_proc_lock(proc);
+
+		w = list_first_entry_or_null(&thread->todo,
+					     struct binder_work, entry);
+		if (!(tr->flags & TF_ONE_WAY) && w &&
+		    w->type == BINDER_WORK_TRANSACTION) {
+			/*
+			 * Do not allow new outgoing transaction from a
+			 * thread that has a transaction at the head of
+			 * its todo list. Only need to check the head
+			 * because binder_select_thread_ilocked picks a
+			 * thread from proc->waiting_threads to enqueue
+			 * the transaction, and nothing is queued to the
+			 * todo list while the thread is on waiting_threads.
+			 */
+			binder_user_error("%d:%d new transaction not allowed when there is a transaction on thread todo\n",
+					  proc->pid, thread->pid);
+			binder_inner_proc_unlock(proc);
+			return_error = BR_FAILED_REPLY;
+			return_error_param = -EPROTO;
+			return_error_line = __LINE__;
+			goto err_bad_todo_list;
+		}
+
 		if (!(tr->flags & TF_ONE_WAY) && thread->transaction_stack) {
 			struct binder_transaction *tmp;
 
@@ -3256,6 +3275,7 @@ err_alloc_tcomplete_failed:
 	kfree(t);
 	binder_stats_deleted(BINDER_STAT_TRANSACTION);
 err_alloc_t_failed:
+err_bad_todo_list:
 err_bad_call_stack:
 err_empty_call_stack:
 err_dead_binder:
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 218/422] cxgb4: Fix endianness issue in t4_fwcache()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (216 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 217/422] android: binder: no outgoing transaction when thread todo has transaction Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 219/422] arm64: fix for bad_mode() handler to always result in panic Greg Kroah-Hartman
                   ` (207 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Al Viro, Ganesh Goudar,
	David S. Miller, Sasha Levin

From: Ganesh Goudar <ganeshgr@chelsio.com>

[ Upstream commit 0dc235afc59a226d951352b0adf4a89b532a9d13 ]

Do not put host-endian 0 or 1 into big endian feild.

Reported-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
index 5fe5d16dee724..8350c0c9b89d1 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
@@ -3889,7 +3889,7 @@ int t4_fwcache(struct adapter *adap, enum fw_params_param_dev_fwcache op)
 	c.param[0].mnem =
 		cpu_to_be32(FW_PARAMS_MNEM_V(FW_PARAMS_MNEM_DEV) |
 			    FW_PARAMS_PARAM_X_V(FW_PARAMS_PARAM_DEV_FWCACHE));
-	c.param[0].val = (__force __be32)op;
+	c.param[0].val = cpu_to_be32(op);
 
 	return t4_wr_mbox(adap, adap->mbox, &c, sizeof(c), NULL);
 }
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 219/422] arm64: fix for bad_mode() handler to always result in panic
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (217 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 218/422] cxgb4: Fix endianness issue in t4_fwcache() Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 220/422] block, bfq: inject other-queue I/O into seeky idle queues on NCQ flash Greg Kroah-Hartman
                   ` (206 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Hari Vyas, Will Deacon,
	Catalin Marinas, Sasha Levin

From: Hari Vyas <hari.vyas@broadcom.com>

[ Upstream commit e4ba15debcfd27f60d43da940a58108783bff2a6 ]

The bad_mode() handler is called if we encounter an uunknown exception,
with the expectation that the subsequent call to panic() will halt the
system. Unfortunately, if the exception calling bad_mode() is taken from
EL0, then the call to die() can end up killing the current user task and
calling schedule() instead of falling through to panic().

Remove the die() call altogether, since we really want to bring down the
machine in this "impossible" case.

Signed-off-by: Hari Vyas <hari.vyas@broadcom.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/kernel/traps.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
index a0099be4311ae..c8dc3a3640e7e 100644
--- a/arch/arm64/kernel/traps.c
+++ b/arch/arm64/kernel/traps.c
@@ -611,7 +611,6 @@ asmlinkage void bad_mode(struct pt_regs *regs, int reason, unsigned int esr)
 		handler[reason], smp_processor_id(), esr,
 		esr_get_class_string(esr));
 
-	die("Oops - bad mode", regs, 0);
 	local_daif_mask();
 	panic("bad mode");
 }
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 220/422] block, bfq: inject other-queue I/O into seeky idle queues on NCQ flash
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (218 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 219/422] arm64: fix for bad_mode() handler to always result in panic Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 221/422] blok, bfq: do not plug I/O if all queues are weight-raised Greg Kroah-Hartman
                   ` (205 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Paolo Valente, Jens Axboe, Sasha Levin

From: Paolo Valente <paolo.valente@linaro.org>

[ Upstream commit d0edc2473be9d70f999282e1ca7863ad6ae704dc ]

The Achilles' heel of BFQ is its failing to reach a high throughput
with sync random I/O on flash storage with internal queueing, in case
the processes doing I/O have differentiated weights.

The cause of this failure is as follows. If at least two processes do
sync I/O, and have a different weight from each other, then BFQ plugs
I/O dispatching every time one of these processes, while it is being
served, remains temporarily without pending I/O requests. This
plugging is necessary to guarantee that every process enjoys a
bandwidth proportional to its weight; but it empties the internal
queue(s) of the drive. And this kills throughput with random I/O. So,
if some processes have differentiated weights and do both sync and
random I/O, the end result is a throughput collapse.

This commit tries to counter this problem by injecting the service of
other processes, in a controlled way, while the process in service
happens to have no I/O. This injection is performed only if the medium
is non rotational and performs internal queueing, and the process in
service does random I/O (service injection might be beneficial for
sequential I/O too, we'll work on that).

As an example of the benefits of this commit, on a PLEXTOR PX-256M5S
SSD, and with five processes having differentiated weights and doing
sync random 4KB I/O, this commit makes the throughput with bfq grow by
400%, from 25 to 100MB/s. This higher throughput is 10MB/s lower than
that reached with none. As some less random I/O is added to the mix,
the throughput becomes equal to or higher than that with none.

This commit is a very first attempt to recover throughput without
losing control, and certainly has many limitations. One is, e.g., that
the processes whose service is injected are not chosen so as to
distribute the extra bandwidth they receive in accordance to their
weights. Thus there might be loss of weighted fairness in some
cases. Anyway, this loss concerns extra service, which would not have
been received at all without this commit. Other limitations and issues
will probably show up with usage.

Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 block/bfq-iosched.c | 68 +++++++++++++++++++++++++++++++++++++++++----
 block/bfq-iosched.h | 26 +++++++++++++++++
 2 files changed, 88 insertions(+), 6 deletions(-)

diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index d8d2ac294b0c0..35ddaa820737c 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -3195,6 +3195,13 @@ static unsigned long bfq_bfqq_softrt_next_start(struct bfq_data *bfqd,
 		    jiffies + nsecs_to_jiffies(bfqq->bfqd->bfq_slice_idle) + 4);
 }
 
+static bool bfq_bfqq_injectable(struct bfq_queue *bfqq)
+{
+	return BFQQ_SEEKY(bfqq) && bfqq->wr_coeff == 1 &&
+		blk_queue_nonrot(bfqq->bfqd->queue) &&
+		bfqq->bfqd->hw_tag;
+}
+
 /**
  * bfq_bfqq_expire - expire a queue.
  * @bfqd: device owning the queue.
@@ -3304,6 +3311,8 @@ void bfq_bfqq_expire(struct bfq_data *bfqd,
 	if (ref == 1) /* bfqq is gone, no more actions on it */
 		return;
 
+	bfqq->injected_service = 0;
+
 	/* mark bfqq as waiting a request only if a bic still points to it */
 	if (!bfq_bfqq_busy(bfqq) &&
 	    reason != BFQQE_BUDGET_TIMEOUT &&
@@ -3642,6 +3651,30 @@ static bool bfq_bfqq_must_idle(struct bfq_queue *bfqq)
 	return RB_EMPTY_ROOT(&bfqq->sort_list) && bfq_better_to_idle(bfqq);
 }
 
+static struct bfq_queue *bfq_choose_bfqq_for_injection(struct bfq_data *bfqd)
+{
+	struct bfq_queue *bfqq;
+
+	/*
+	 * A linear search; but, with a high probability, very few
+	 * steps are needed to find a candidate queue, i.e., a queue
+	 * with enough budget left for its next request. In fact:
+	 * - BFQ dynamically updates the budget of every queue so as
+	 *   to accommodate the expected backlog of the queue;
+	 * - if a queue gets all its requests dispatched as injected
+	 *   service, then the queue is removed from the active list
+	 *   (and re-added only if it gets new requests, but with
+	 *   enough budget for its new backlog).
+	 */
+	list_for_each_entry(bfqq, &bfqd->active_list, bfqq_list)
+		if (!RB_EMPTY_ROOT(&bfqq->sort_list) &&
+		    bfq_serv_to_charge(bfqq->next_rq, bfqq) <=
+		    bfq_bfqq_budget_left(bfqq))
+			return bfqq;
+
+	return NULL;
+}
+
 /*
  * Select a queue for service.  If we have a current queue in service,
  * check whether to continue servicing it, or retrieve and set a new one.
@@ -3723,10 +3756,19 @@ check_queue:
 	 * No requests pending. However, if the in-service queue is idling
 	 * for a new request, or has requests waiting for a completion and
 	 * may idle after their completion, then keep it anyway.
+	 *
+	 * Yet, to boost throughput, inject service from other queues if
+	 * possible.
 	 */
 	if (bfq_bfqq_wait_request(bfqq) ||
 	    (bfqq->dispatched != 0 && bfq_better_to_idle(bfqq))) {
-		bfqq = NULL;
+		if (bfq_bfqq_injectable(bfqq) &&
+		    bfqq->injected_service * bfqq->inject_coeff <
+		    bfqq->entity.service * 10)
+			bfqq = bfq_choose_bfqq_for_injection(bfqd);
+		else
+			bfqq = NULL;
+
 		goto keep_queue;
 	}
 
@@ -3816,6 +3858,14 @@ static struct request *bfq_dispatch_rq_from_bfqq(struct bfq_data *bfqd,
 
 	bfq_dispatch_remove(bfqd->queue, rq);
 
+	if (bfqq != bfqd->in_service_queue) {
+		if (likely(bfqd->in_service_queue))
+			bfqd->in_service_queue->injected_service +=
+				bfq_serv_to_charge(rq, bfqq);
+
+		goto return_rq;
+	}
+
 	/*
 	 * If weight raising has to terminate for bfqq, then next
 	 * function causes an immediate update of bfqq's weight,
@@ -3834,13 +3884,12 @@ static struct request *bfq_dispatch_rq_from_bfqq(struct bfq_data *bfqd,
 	 * belongs to CLASS_IDLE and other queues are waiting for
 	 * service.
 	 */
-	if (bfqd->busy_queues > 1 && bfq_class_idle(bfqq))
-		goto expire;
-
-	return rq;
+	if (!(bfqd->busy_queues > 1 && bfq_class_idle(bfqq)))
+		goto return_rq;
 
-expire:
 	bfq_bfqq_expire(bfqd, bfqq, false, BFQQE_BUDGET_EXHAUSTED);
+
+return_rq:
 	return rq;
 }
 
@@ -4246,6 +4295,13 @@ static void bfq_init_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq,
 			bfq_mark_bfqq_has_short_ttime(bfqq);
 		bfq_mark_bfqq_sync(bfqq);
 		bfq_mark_bfqq_just_created(bfqq);
+		/*
+		 * Aggressively inject a lot of service: up to 90%.
+		 * This coefficient remains constant during bfqq life,
+		 * but this behavior might be changed, after enough
+		 * testing and tuning.
+		 */
+		bfqq->inject_coeff = 1;
 	} else
 		bfq_clear_bfqq_sync(bfqq);
 
diff --git a/block/bfq-iosched.h b/block/bfq-iosched.h
index d5e9e60cb1a5f..a41e9884f2dd2 100644
--- a/block/bfq-iosched.h
+++ b/block/bfq-iosched.h
@@ -351,6 +351,32 @@ struct bfq_queue {
 	unsigned long split_time; /* time of last split */
 
 	unsigned long first_IO_time; /* time of first I/O for this queue */
+
+	/* max service rate measured so far */
+	u32 max_service_rate;
+	/*
+	 * Ratio between the service received by bfqq while it is in
+	 * service, and the cumulative service (of requests of other
+	 * queues) that may be injected while bfqq is empty but still
+	 * in service. To increase precision, the coefficient is
+	 * measured in tenths of unit. Here are some example of (1)
+	 * ratios, (2) resulting percentages of service injected
+	 * w.r.t. to the total service dispatched while bfqq is in
+	 * service, and (3) corresponding values of the coefficient:
+	 * 1 (50%) -> 10
+	 * 2 (33%) -> 20
+	 * 10 (9%) -> 100
+	 * 9.9 (9%) -> 99
+	 * 1.5 (40%) -> 15
+	 * 0.5 (66%) -> 5
+	 * 0.1 (90%) -> 1
+	 *
+	 * So, if the coefficient is lower than 10, then
+	 * injected service is more than bfqq service.
+	 */
+	unsigned int inject_coeff;
+	/* amount of service injected in current service slot */
+	unsigned int injected_service;
 };
 
 /**
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 221/422] blok, bfq: do not plug I/O if all queues are weight-raised
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (219 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 220/422] block, bfq: inject other-queue I/O into seeky idle queues on NCQ flash Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:16 ` [PATCH 4.19 222/422] arm64: dts: meson: Fix erroneous SPI bus warnings Greg Kroah-Hartman
                   ` (204 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Paolo Valente, Jens Axboe, Sasha Levin

From: Paolo Valente <paolo.valente@linaro.org>

[ Upstream commit c8765de0adfcaaf4ffb2d951e07444f00ffa9453 ]

To reduce latency for interactive and soft real-time applications, bfq
privileges the bfq_queues containing the I/O of these
applications. These privileged queues, referred-to as weight-raised
queues, get a much higher share of the device throughput
w.r.t. non-privileged queues. To preserve this higher share, the I/O
of any non-weight-raised queue must be plugged whenever a sync
weight-raised queue, while being served, remains temporarily empty. To
attain this goal, bfq simply plugs any I/O (from any queue), if a sync
weight-raised queue remains empty while in service.

Unfortunately, this plugging typically lowers throughput with random
I/O, on devices with internal queueing (because it reduces the filling
level of the internal queues of the device).

This commit addresses this issue by restricting the cases where
plugging is performed: if a sync weight-raised queue remains empty
while in service, then I/O plugging is performed only if some of the
active bfq_queues are *not* weight-raised (which is actually the only
circumstance where plugging is needed to preserve the higher share of
the throughput of weight-raised queues). This restriction proved able
to boost throughput in really many use cases needing only maximum
throughput.

Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 block/bfq-iosched.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 35ddaa820737c..66b1ebc21ce4f 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -3593,7 +3593,12 @@ static bool bfq_better_to_idle(struct bfq_queue *bfqq)
 	 * whether bfqq is being weight-raised, because
 	 * bfq_symmetric_scenario() does not take into account also
 	 * weight-raised queues (see comments on
-	 * bfq_weights_tree_add()).
+	 * bfq_weights_tree_add()). In particular, if bfqq is being
+	 * weight-raised, it is important to idle only if there are
+	 * other, non-weight-raised queues that may steal throughput
+	 * to bfqq. Actually, we should be even more precise, and
+	 * differentiate between interactive weight raising and
+	 * soft real-time weight raising.
 	 *
 	 * As a side note, it is worth considering that the above
 	 * device-idling countermeasures may however fail in the
@@ -3605,7 +3610,8 @@ static bool bfq_better_to_idle(struct bfq_queue *bfqq)
 	 * to let requests be served in the desired order until all
 	 * the requests already queued in the device have been served.
 	 */
-	asymmetric_scenario = bfqq->wr_coeff > 1 ||
+	asymmetric_scenario = (bfqq->wr_coeff > 1 &&
+			       bfqd->wr_busy_queues < bfqd->busy_queues) ||
 		!bfq_symmetric_scenario(bfqd);
 
 	/*
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 222/422] arm64: dts: meson: Fix erroneous SPI bus warnings
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (220 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 221/422] blok, bfq: do not plug I/O if all queues are weight-raised Greg Kroah-Hartman
@ 2019-11-19  5:16 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 223/422] power: supply: ab8500_fg: silence uninitialized variable warnings Greg Kroah-Hartman
                   ` (203 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Carlo Caione, Kevin Hilman,
	linux-amlogic, Rob Herring, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit 68ecb5c1920c5b98b1e717fd2349fba2ee5d4031 ]

dtc has new checks for SPI buses. The meson dts files have a node named
spi' which causes false positive warnings. As the node is a pinctrl child
node, change the node name to be 'spi-pins' to fix the warnings.

arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dtb: Warning (spi_bus_bridge): /soc/periphs@c8834000/pinctrl@4b0/spi: incorrect #address-cells for SPI bus

Cc: Carlo Caione <carlo@caione.org>
Cc: Kevin Hilman <khilman@baylibre.com>
Cc: linux-amlogic@lists.infradead.org
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi | 2 +-
 arch/arm64/boot/dts/amlogic/meson-gxl.dtsi  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi
index 98cbba6809caa..1ade7e486828c 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi
@@ -390,7 +390,7 @@
 			};
 		};
 
-		spi_pins: spi {
+		spi_pins: spi-pins {
 			mux {
 				groups = "spi_miso",
 					"spi_mosi",
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
index c87a80e9bcc6a..8f0bb3c44bd6d 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
@@ -337,7 +337,7 @@
 			};
 		};
 
-		spi_pins: spi {
+		spi_pins: spi-pins {
 			mux {
 				groups = "spi_miso",
 					"spi_mosi",
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 223/422] power: supply: ab8500_fg: silence uninitialized variable warnings
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (221 preceding siblings ...)
  2019-11-19  5:16 ` [PATCH 4.19 222/422] arm64: dts: meson: Fix erroneous SPI bus warnings Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 224/422] power: reset: at91-poweroff: do not procede if at91_shdwc is allocated Greg Kroah-Hartman
                   ` (202 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dan Carpenter, Sebastian Reichel,
	Sasha Levin

From: Dan Carpenter <dan.carpenter@oracle.com>

[ Upstream commit 54baff8d4e5dce2cef61953b1dc22079cda1ddb1 ]

If kstrtoul() fails then we print "charge_full" when it's uninitialized.
The debug printk doesn't add anything so I deleted it and cleaned these
two functions up a bit.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/power/supply/ab8500_fg.c | 31 ++++++++++++-------------------
 1 file changed, 12 insertions(+), 19 deletions(-)

diff --git a/drivers/power/supply/ab8500_fg.c b/drivers/power/supply/ab8500_fg.c
index 02356f9b5f22a..8bb89c697c1eb 100644
--- a/drivers/power/supply/ab8500_fg.c
+++ b/drivers/power/supply/ab8500_fg.c
@@ -2433,17 +2433,14 @@ static ssize_t charge_full_store(struct ab8500_fg *di, const char *buf,
 				 size_t count)
 {
 	unsigned long charge_full;
-	ssize_t ret;
+	int ret;
 
 	ret = kstrtoul(buf, 10, &charge_full);
+	if (ret)
+		return ret;
 
-	dev_dbg(di->dev, "Ret %zd charge_full %lu", ret, charge_full);
-
-	if (!ret) {
-		di->bat_cap.max_mah = (int) charge_full;
-		ret = count;
-	}
-	return ret;
+	di->bat_cap.max_mah = (int) charge_full;
+	return count;
 }
 
 static ssize_t charge_now_show(struct ab8500_fg *di, char *buf)
@@ -2455,20 +2452,16 @@ static ssize_t charge_now_store(struct ab8500_fg *di, const char *buf,
 				 size_t count)
 {
 	unsigned long charge_now;
-	ssize_t ret;
+	int ret;
 
 	ret = kstrtoul(buf, 10, &charge_now);
+	if (ret)
+		return ret;
 
-	dev_dbg(di->dev, "Ret %zd charge_now %lu was %d",
-		ret, charge_now, di->bat_cap.prev_mah);
-
-	if (!ret) {
-		di->bat_cap.user_mah = (int) charge_now;
-		di->flags.user_cap = true;
-		ret = count;
-		queue_delayed_work(di->fg_wq, &di->fg_periodic_work, 0);
-	}
-	return ret;
+	di->bat_cap.user_mah = (int) charge_now;
+	di->flags.user_cap = true;
+	queue_delayed_work(di->fg_wq, &di->fg_periodic_work, 0);
+	return count;
 }
 
 static struct ab8500_fg_sysfs_entry charge_full_attr =
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 224/422] power: reset: at91-poweroff: do not procede if at91_shdwc is allocated
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (222 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 223/422] power: supply: ab8500_fg: silence uninitialized variable warnings Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 225/422] power: supply: max8998-charger: Fix platform data retrieval Greg Kroah-Hartman
                   ` (201 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Claudiu Beznea, Nicolas Ferre,
	Sebastian Reichel, Sasha Levin

From: Claudiu Beznea <claudiu.beznea@microchip.com>

[ Upstream commit 9f1e44774be578fb92776add95f1fcaf8284d692 ]

There should be only one instance of struct shdwc in the system. This is
referenced through at91_shdwc. Return in probe if at91_shdwc is already
allocated.

Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/power/reset/at91-sama5d2_shdwc.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/power/reset/at91-sama5d2_shdwc.c b/drivers/power/reset/at91-sama5d2_shdwc.c
index 0206cce328b3d..d9493e893d64e 100644
--- a/drivers/power/reset/at91-sama5d2_shdwc.c
+++ b/drivers/power/reset/at91-sama5d2_shdwc.c
@@ -246,6 +246,9 @@ static int __init at91_shdwc_probe(struct platform_device *pdev)
 	if (!pdev->dev.of_node)
 		return -ENODEV;
 
+	if (at91_shdwc)
+		return -EBUSY;
+
 	at91_shdwc = devm_kzalloc(&pdev->dev, sizeof(*at91_shdwc), GFP_KERNEL);
 	if (!at91_shdwc)
 		return -ENOMEM;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 225/422] power: supply: max8998-charger: Fix platform data retrieval
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (223 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 224/422] power: reset: at91-poweroff: do not procede if at91_shdwc is allocated Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 226/422] component: fix loop condition to call unbind() if bind() fails Greg Kroah-Hartman
                   ` (200 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Tomasz Figa, Paweł Chmiel,
	Sebastian Reichel, Sasha Levin

From: Tomasz Figa <tomasz.figa@gmail.com>

[ Upstream commit cb90a2c6f77fe9b43d1e3f759bb2f13fe7fa1811 ]

Since the max8998 MFD driver supports instantiation by DT, platform data
retrieval is handled in MFD probe and cell drivers should get use
the pdata field of max8998_dev struct to obtain them.

Fixes: ee999fb3f17f ("mfd: max8998: Add support for Device Tree")
Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/power/supply/max8998_charger.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/power/supply/max8998_charger.c b/drivers/power/supply/max8998_charger.c
index cad7d1a8feec7..aa65e6c36c55e 100644
--- a/drivers/power/supply/max8998_charger.c
+++ b/drivers/power/supply/max8998_charger.c
@@ -86,7 +86,7 @@ static const struct power_supply_desc max8998_battery_desc = {
 static int max8998_battery_probe(struct platform_device *pdev)
 {
 	struct max8998_dev *iodev = dev_get_drvdata(pdev->dev.parent);
-	struct max8998_platform_data *pdata = dev_get_platdata(iodev->dev);
+	struct max8998_platform_data *pdata = iodev->pdata;
 	struct power_supply_config psy_cfg = {};
 	struct max8998_battery_data *max8998;
 	struct i2c_client *i2c;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 226/422] component: fix loop condition to call unbind() if bind() fails
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (224 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 225/422] power: supply: max8998-charger: Fix platform data retrieval Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 227/422] kernfs: Fix range checks in kernfs_get_target_path Greg Kroah-Hartman
                   ` (199 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Banajit Goswami, Sasha Levin

From: Banajit Goswami <bgoswami@codeaurora.org>

[ Upstream commit bdae566d5d9733b6e32b378668b84eadf28a94d4 ]

During component_bind_all(), if bind() fails for any
particular component associated with a master, unbind()
should be called for all previous components in that
master's match array, whose bind() might have completed
successfully. As per the current logic, if bind() fails
for the component at position 'n' in the master's match
array, it would start calling unbind() from component in
'n'th position itself and work backwards, and will always
skip calling unbind() for component in 0th position in the
master's match array.
Fix this by updating the loop condition, and the logic to
refer to the components in master's match array, so that
unbind() is called for all components starting from 'n-1'st
position in the array, until (and including) component in
0th position.

Signed-off-by: Banajit Goswami <bgoswami@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/base/component.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/base/component.c b/drivers/base/component.c
index 8946dfee4768e..e8d676fad0c95 100644
--- a/drivers/base/component.c
+++ b/drivers/base/component.c
@@ -536,9 +536,9 @@ int component_bind_all(struct device *master_dev, void *data)
 		}
 
 	if (ret != 0) {
-		for (; i--; )
-			if (!master->match->compare[i].duplicate) {
-				c = master->match->compare[i].component;
+		for (; i > 0; i--)
+			if (!master->match->compare[i - 1].duplicate) {
+				c = master->match->compare[i - 1].component;
 				component_unbind(c, master, data);
 			}
 	}
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 227/422] kernfs: Fix range checks in kernfs_get_target_path
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (225 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 226/422] component: fix loop condition to call unbind() if bind() fails Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 228/422] ip_gre: fix parsing gre header in ipgre_err Greg Kroah-Hartman
                   ` (198 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Bernd Edlinger, Tejun Heo, Sasha Levin

From: Bernd Edlinger <bernd.edlinger@hotmail.de>

[ Upstream commit a75e78f21f9ad4b810868c89dbbabcc3931591ca ]

The terminating NUL byte is only there because the buffer is
allocated with kzalloc(PAGE_SIZE, GFP_KERNEL), but since the
range-check is off-by-one, and PAGE_SIZE==PATH_MAX, the
returned string may not be zero-terminated if it is exactly
PATH_MAX characters long.  Furthermore also the initial loop
may theoretically exceed PATH_MAX and cause a fault.

Signed-off-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/kernfs/symlink.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/fs/kernfs/symlink.c b/fs/kernfs/symlink.c
index 305b220af45d3..162f43b80c84c 100644
--- a/fs/kernfs/symlink.c
+++ b/fs/kernfs/symlink.c
@@ -72,6 +72,9 @@ static int kernfs_get_target_path(struct kernfs_node *parent,
 		if (base == kn)
 			break;
 
+		if ((s - path) + 3 >= PATH_MAX)
+			return -ENAMETOOLONG;
+
 		strcpy(s, "../");
 		s += 3;
 		base = base->parent;
@@ -88,7 +91,7 @@ static int kernfs_get_target_path(struct kernfs_node *parent,
 	if (len < 2)
 		return -EINVAL;
 	len--;
-	if ((s - path) + len > PATH_MAX)
+	if ((s - path) + len >= PATH_MAX)
 		return -ENAMETOOLONG;
 
 	/* reverse fillup of target string from target to base */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 228/422] ip_gre: fix parsing gre header in ipgre_err
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (226 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 227/422] kernfs: Fix range checks in kernfs_get_target_path Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 229/422] scsi: ufshcd: Fix NULL pointer dereference for in ufshcd_init Greg Kroah-Hartman
                   ` (197 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jiri Benc, Haishuang Yan,
	David S. Miller, Sasha Levin

From: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>

[ Upstream commit b0350d51f001e6edc13ee4f253b98b50b05dd401 ]

gre_parse_header stops parsing when csum_err is encountered, which means
tpi->key is undefined and ip_tunnel_lookup will return NULL improperly.

This patch introduce a NULL pointer as csum_err parameter. Even when
csum_err is encountered, it won't return error and continue parsing gre
header as expected.

Fixes: 9f57c67c379d ("gre: Remove support for sharing GRE protocol hook.")
Reported-by: Jiri Benc <jbenc@redhat.com>
Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/ipv4/gre_demux.c | 7 ++++---
 net/ipv4/ip_gre.c    | 9 +++------
 2 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/net/ipv4/gre_demux.c b/net/ipv4/gre_demux.c
index f21ea6125fc2d..511b32ea25331 100644
--- a/net/ipv4/gre_demux.c
+++ b/net/ipv4/gre_demux.c
@@ -87,13 +87,14 @@ int gre_parse_header(struct sk_buff *skb, struct tnl_ptk_info *tpi,
 
 	options = (__be32 *)(greh + 1);
 	if (greh->flags & GRE_CSUM) {
-		if (skb_checksum_simple_validate(skb)) {
+		if (!skb_checksum_simple_validate(skb)) {
+			skb_checksum_try_convert(skb, IPPROTO_GRE, 0,
+						 null_compute_pseudo);
+		} else if (csum_err) {
 			*csum_err = true;
 			return -EINVAL;
 		}
 
-		skb_checksum_try_convert(skb, IPPROTO_GRE, 0,
-					 null_compute_pseudo);
 		options++;
 	}
 
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
index 758a0f86d499f..681276111310b 100644
--- a/net/ipv4/ip_gre.c
+++ b/net/ipv4/ip_gre.c
@@ -232,13 +232,10 @@ static void gre_err(struct sk_buff *skb, u32 info)
 	const int type = icmp_hdr(skb)->type;
 	const int code = icmp_hdr(skb)->code;
 	struct tnl_ptk_info tpi;
-	bool csum_err = false;
 
-	if (gre_parse_header(skb, &tpi, &csum_err, htons(ETH_P_IP),
-			     iph->ihl * 4) < 0) {
-		if (!csum_err)		/* ignore csum errors. */
-			return;
-	}
+	if (gre_parse_header(skb, &tpi, NULL, htons(ETH_P_IP),
+			     iph->ihl * 4) < 0)
+		return;
 
 	if (type == ICMP_DEST_UNREACH && code == ICMP_FRAG_NEEDED) {
 		ipv4_update_pmtu(skb, dev_net(skb->dev), info,
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 229/422] scsi: ufshcd: Fix NULL pointer dereference for in ufshcd_init
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (227 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 228/422] ip_gre: fix parsing gre header in ipgre_err Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 230/422] ARM: dts: rockchip: Fix erroneous SPI bus dtc warnings on rk3036 Greg Kroah-Hartman
                   ` (196 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Vivek Gautam, Bjorn Andersson,
	Subhash Jadavani, Matthias Kaehlcke, Evan Green,
	Martin K. Petersen, Sasha Levin

From: Vivek Gautam <vivek.gautam@codeaurora.org>

[ Upstream commit eebcc19646489b68399ce7b35d9c38eb9f4ec40f ]

Error paths in ufshcd_init() ufshcd_hba_exit() killed clk_scaling workqueue
when the workqueue is actually created quite late in ufshcd_init().  So, we
end up getting NULL pointer dereference in such error paths.  Fix this by
moving clk_scaling initialization and kill codes to two separate methods, and
call them at required places.

Fixes: 401f1e4490ee ("scsi: ufs: don't suspend clock scaling during clock
gating")

Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org>
Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
Cc: Subhash Jadavani <subhashj@codeaurora.org>
Cc: Matthias Kaehlcke <mka@chromium.org>
Cc: Evan Green <evgreen@chromium.org>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Evan Green <evgreen@chromium.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/ufs/ufshcd.c | 53 +++++++++++++++++++++++++--------------
 1 file changed, 34 insertions(+), 19 deletions(-)

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 4aaba3e030554..8bce755e0f5bc 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -1772,6 +1772,34 @@ out:
 	return count;
 }
 
+static void ufshcd_init_clk_scaling(struct ufs_hba *hba)
+{
+	char wq_name[sizeof("ufs_clkscaling_00")];
+
+	if (!ufshcd_is_clkscaling_supported(hba))
+		return;
+
+	INIT_WORK(&hba->clk_scaling.suspend_work,
+		  ufshcd_clk_scaling_suspend_work);
+	INIT_WORK(&hba->clk_scaling.resume_work,
+		  ufshcd_clk_scaling_resume_work);
+
+	snprintf(wq_name, sizeof(wq_name), "ufs_clkscaling_%d",
+		 hba->host->host_no);
+	hba->clk_scaling.workq = create_singlethread_workqueue(wq_name);
+
+	ufshcd_clkscaling_init_sysfs(hba);
+}
+
+static void ufshcd_exit_clk_scaling(struct ufs_hba *hba)
+{
+	if (!ufshcd_is_clkscaling_supported(hba))
+		return;
+
+	destroy_workqueue(hba->clk_scaling.workq);
+	ufshcd_devfreq_remove(hba);
+}
+
 static void ufshcd_init_clk_gating(struct ufs_hba *hba)
 {
 	char wq_name[sizeof("ufs_clk_gating_00")];
@@ -6676,6 +6704,7 @@ out:
 	 */
 	if (ret && !ufshcd_eh_in_progress(hba) && !hba->pm_op_in_progress) {
 		pm_runtime_put_sync(hba->dev);
+		ufshcd_exit_clk_scaling(hba);
 		ufshcd_hba_exit(hba);
 	}
 
@@ -7223,12 +7252,9 @@ static void ufshcd_hba_exit(struct ufs_hba *hba)
 		ufshcd_variant_hba_exit(hba);
 		ufshcd_setup_vreg(hba, false);
 		ufshcd_suspend_clkscaling(hba);
-		if (ufshcd_is_clkscaling_supported(hba)) {
+		if (ufshcd_is_clkscaling_supported(hba))
 			if (hba->devfreq)
 				ufshcd_suspend_clkscaling(hba);
-			destroy_workqueue(hba->clk_scaling.workq);
-			ufshcd_devfreq_remove(hba);
-		}
 		ufshcd_setup_clocks(hba, false);
 		ufshcd_setup_hba_vreg(hba, false);
 		hba->is_powered = false;
@@ -7908,6 +7934,7 @@ void ufshcd_remove(struct ufs_hba *hba)
 	ufshcd_disable_intr(hba, hba->intr_mask);
 	ufshcd_hba_stop(hba, true);
 
+	ufshcd_exit_clk_scaling(hba);
 	ufshcd_exit_clk_gating(hba);
 	if (ufshcd_is_clkscaling_supported(hba))
 		device_remove_file(hba->dev, &hba->clk_scaling.enable_attr);
@@ -8079,6 +8106,8 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
 
 	ufshcd_init_clk_gating(hba);
 
+	ufshcd_init_clk_scaling(hba);
+
 	/*
 	 * In order to avoid any spurious interrupt immediately after
 	 * registering UFS controller interrupt handler, clear any pending UFS
@@ -8117,21 +8146,6 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
 		goto out_remove_scsi_host;
 	}
 
-	if (ufshcd_is_clkscaling_supported(hba)) {
-		char wq_name[sizeof("ufs_clkscaling_00")];
-
-		INIT_WORK(&hba->clk_scaling.suspend_work,
-			  ufshcd_clk_scaling_suspend_work);
-		INIT_WORK(&hba->clk_scaling.resume_work,
-			  ufshcd_clk_scaling_resume_work);
-
-		snprintf(wq_name, sizeof(wq_name), "ufs_clkscaling_%d",
-			 host->host_no);
-		hba->clk_scaling.workq = create_singlethread_workqueue(wq_name);
-
-		ufshcd_clkscaling_init_sysfs(hba);
-	}
-
 	/*
 	 * Set the default power management level for runtime and system PM.
 	 * Default power saving mode is to keep UFS link in Hibern8 state
@@ -8169,6 +8183,7 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
 out_remove_scsi_host:
 	scsi_remove_host(hba->host);
 exit_gating:
+	ufshcd_exit_clk_scaling(hba);
 	ufshcd_exit_clk_gating(hba);
 out_disable:
 	hba->is_irq_enabled = false;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 230/422] ARM: dts: rockchip: Fix erroneous SPI bus dtc warnings on rk3036
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (228 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 229/422] scsi: ufshcd: Fix NULL pointer dereference for in ufshcd_init Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 231/422] arm64: dts: rockchip: Fix I2C bus unit-address error on rk3399-puma-haikou Greg Kroah-Hartman
                   ` (195 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Heiko Stuebner, linux-rockchip,
	Rob Herring, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit 131c3eb428ccd5f0c784b9edb4f72ec296a045d2 ]

dtc has new checks for SPI buses. The rk3036 dts file has a node named
spi' which causes false positive warnings. As the node is a pinctrl child
node, change the node name to be 'spi-pins' to fix the warnings.

arch/arm/boot/dts/rk3036-evb.dtb: Warning (spi_bus_bridge): /pinctrl/spi: incorrect #address-cells for SPI bus
arch/arm/boot/dts/rk3036-kylin.dtb: Warning (spi_bus_bridge): /pinctrl/spi: incorrect #address-cells for SPI bus
arch/arm/boot/dts/rk3036-evb.dtb: Warning (spi_bus_bridge): /pinctrl/spi: incorrect #size-cells for SPI bus
arch/arm/boot/dts/rk3036-kylin.dtb: Warning (spi_bus_bridge): /pinctrl/spi: incorrect #size-cells for SPI bus

Cc: Heiko Stuebner <heiko@sntech.de>
Cc: linux-rockchip@lists.infradead.org
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/rk3036.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/rk3036.dtsi b/arch/arm/boot/dts/rk3036.dtsi
index 67f57200d9a06..d560fc4051c5f 100644
--- a/arch/arm/boot/dts/rk3036.dtsi
+++ b/arch/arm/boot/dts/rk3036.dtsi
@@ -733,7 +733,7 @@
 			/* no rts / cts for uart2 */
 		};
 
-		spi {
+		spi-pins {
 			spi_txd:spi-txd {
 				rockchip,pins = <1 29 RK_FUNC_3 &pcfg_pull_default>;
 			};
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 231/422] arm64: dts: rockchip: Fix I2C bus unit-address error on rk3399-puma-haikou
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (229 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 230/422] ARM: dts: rockchip: Fix erroneous SPI bus dtc warnings on rk3036 Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 232/422] ACPI / LPSS: Exclude I2C busses shared with PUNIT from pmc_atom_d3_mask Greg Kroah-Hartman
                   ` (194 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Heiko Stuebner, linux-rockchip,
	Rob Herring, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit 501500e65fa96f899230d66153fefd780f08dd34 ]

dtc has new checks for I2C buses. Fix the warnings in unit-addresses.

arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dtb: Warning (i2c_bus_reg): /i2c@ff3d0000/codec@0a: I2C bus unit address format error, expected "a"

Cc: Heiko Stuebner <heiko@sntech.de>
Cc: linux-rockchip@lists.infradead.org
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts b/arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts
index 8ce4a79d9360f..1e6a71066c163 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts
@@ -131,7 +131,7 @@
 	status = "okay";
 	clock-frequency = <400000>;
 
-	sgtl5000: codec@0a {
+	sgtl5000: codec@a {
 		compatible = "fsl,sgtl5000";
 		reg = <0x0a>;
 		clocks = <&sgtl5000_clk>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 232/422] ACPI / LPSS: Exclude I2C busses shared with PUNIT from pmc_atom_d3_mask
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (230 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 231/422] arm64: dts: rockchip: Fix I2C bus unit-address error on rk3399-puma-haikou Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 233/422] netfilter: nf_tables: avoid BUG_ON usage Greg Kroah-Hartman
                   ` (193 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Hans de Goede, Mika Westerberg,
	Rafael J. Wysocki, Sasha Levin

From: Hans de Goede <hdegoede@redhat.com>

[ Upstream commit 86b62e5cd8965d3056f9e9ccdec51631c37add81 ]

lpss_iosf_enter_d3_state() checks if all hw-blocks using the DMA
controllers are in d3 before powering down the DMA controllers.

But on devices, where the I2C bus connected to the PMIC is shared by
the PUNIT, the controller for that bus will never reach d3 since it has
an effectively empty _PS3 method. Instead it appears to automatically
power-down during S0i3 and we never see it as being in d3.

This causes the DMA controllers to never be powered-down on these devices,
causing them to never reach S0i3. This commit uses the ACPI _SEM method
to detect if an I2C bus is shared with the PUNIT and if it is, it removes
it from the mask of devices which lpss_iosf_enter_d3_state() checks for.

This fixes these devices never reaching any S0ix states.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/acpi/acpi_lpss.c | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
index c651e206d7960..7eda27d43b482 100644
--- a/drivers/acpi/acpi_lpss.c
+++ b/drivers/acpi/acpi_lpss.c
@@ -99,6 +99,9 @@ struct lpss_private_data {
 	u32 prv_reg_ctx[LPSS_PRV_REG_COUNT];
 };
 
+/* Devices which need to be in D3 before lpss_iosf_enter_d3_state() proceeds */
+static u32 pmc_atom_d3_mask = 0xfe000ffe;
+
 /* LPSS run time quirks */
 static unsigned int lpss_quirks;
 
@@ -175,6 +178,21 @@ static void byt_pwm_setup(struct lpss_private_data *pdata)
 
 static void byt_i2c_setup(struct lpss_private_data *pdata)
 {
+	const char *uid_str = acpi_device_uid(pdata->adev);
+	acpi_handle handle = pdata->adev->handle;
+	unsigned long long shared_host = 0;
+	acpi_status status;
+	long uid = 0;
+
+	/* Expected to always be true, but better safe then sorry */
+	if (uid_str)
+		uid = simple_strtol(uid_str, NULL, 10);
+
+	/* Detect I2C bus shared with PUNIT and ignore its d3 status */
+	status = acpi_evaluate_integer(handle, "_SEM", NULL, &shared_host);
+	if (ACPI_SUCCESS(status) && shared_host && uid)
+		pmc_atom_d3_mask &= ~(BIT_LPSS2_F1_I2C1 << (uid - 1));
+
 	lpss_deassert_reset(pdata);
 
 	if (readl(pdata->mmio_base + pdata->dev_desc->prv_offset))
@@ -894,7 +912,7 @@ static void lpss_iosf_enter_d3_state(void)
 	 * Here we read the values related to LPSS power island, i.e. LPSS
 	 * devices, excluding both LPSS DMA controllers, along with SCC domain.
 	 */
-	u32 func_dis, d3_sts_0, pmc_status, pmc_mask = 0xfe000ffe;
+	u32 func_dis, d3_sts_0, pmc_status;
 	int ret;
 
 	ret = pmc_atom_read(PMC_FUNC_DIS, &func_dis);
@@ -912,7 +930,7 @@ static void lpss_iosf_enter_d3_state(void)
 	 * Shutdown both LPSS DMA controllers if and only if all other devices
 	 * are already in D3hot.
 	 */
-	pmc_status = (~(d3_sts_0 | func_dis)) & pmc_mask;
+	pmc_status = (~(d3_sts_0 | func_dis)) & pmc_atom_d3_mask;
 	if (pmc_status)
 		goto exit;
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 233/422] netfilter: nf_tables: avoid BUG_ON usage
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (231 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 232/422] ACPI / LPSS: Exclude I2C busses shared with PUNIT from pmc_atom_d3_mask Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-21 20:16   ` Pavel Machek
  2019-11-19  5:17 ` [PATCH 4.19 234/422] ath9k: Fix a locking bug in ath9k_add_interface() Greg Kroah-Hartman
                   ` (192 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Florian Westphal, Pablo Neira Ayuso,
	Sasha Levin

From: Florian Westphal <fw@strlen.de>

[ Upstream commit fa5950e498e7face21a1761f327e6c1152f778c3 ]

None of these spots really needs to crash the kernel.
In one two cases we can jsut report error to userspace, in the other
cases we can just use WARN_ON (and leak memory instead).

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/netfilter/nf_tables_api.c | 9 ++++++---
 net/netfilter/nft_cmp.c       | 6 ++++--
 net/netfilter/nft_reject.c    | 6 ++++--
 3 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index 24fddf0322790..289d079008ee8 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -1031,7 +1031,8 @@ static int nf_tables_deltable(struct net *net, struct sock *nlsk,
 
 static void nf_tables_table_destroy(struct nft_ctx *ctx)
 {
-	BUG_ON(ctx->table->use > 0);
+	if (WARN_ON(ctx->table->use > 0))
+		return;
 
 	rhltable_destroy(&ctx->table->chains_ht);
 	kfree(ctx->table->name);
@@ -1446,7 +1447,8 @@ static void nf_tables_chain_destroy(struct nft_ctx *ctx)
 {
 	struct nft_chain *chain = ctx->chain;
 
-	BUG_ON(chain->use > 0);
+	if (WARN_ON(chain->use > 0))
+		return;
 
 	/* no concurrent access possible anymore */
 	nf_tables_chain_free_chain_rules(chain);
@@ -7253,7 +7255,8 @@ int __nft_release_basechain(struct nft_ctx *ctx)
 {
 	struct nft_rule *rule, *nr;
 
-	BUG_ON(!nft_is_base_chain(ctx->chain));
+	if (WARN_ON(!nft_is_base_chain(ctx->chain)))
+		return 0;
 
 	nf_tables_unregister_hook(ctx->net, ctx->chain->table, ctx->chain);
 	list_for_each_entry_safe(rule, nr, &ctx->chain->rules, list) {
diff --git a/net/netfilter/nft_cmp.c b/net/netfilter/nft_cmp.c
index fa90a8402845d..79d48c1d06f4d 100644
--- a/net/netfilter/nft_cmp.c
+++ b/net/netfilter/nft_cmp.c
@@ -79,7 +79,8 @@ static int nft_cmp_init(const struct nft_ctx *ctx, const struct nft_expr *expr,
 
 	err = nft_data_init(NULL, &priv->data, sizeof(priv->data), &desc,
 			    tb[NFTA_CMP_DATA]);
-	BUG_ON(err < 0);
+	if (err < 0)
+		return err;
 
 	priv->sreg = nft_parse_register(tb[NFTA_CMP_SREG]);
 	err = nft_validate_register_load(priv->sreg, desc.len);
@@ -129,7 +130,8 @@ static int nft_cmp_fast_init(const struct nft_ctx *ctx,
 
 	err = nft_data_init(NULL, &data, sizeof(data), &desc,
 			    tb[NFTA_CMP_DATA]);
-	BUG_ON(err < 0);
+	if (err < 0)
+		return err;
 
 	priv->sreg = nft_parse_register(tb[NFTA_CMP_SREG]);
 	err = nft_validate_register_load(priv->sreg, desc.len);
diff --git a/net/netfilter/nft_reject.c b/net/netfilter/nft_reject.c
index 29f5bd2377b0d..b48e58cceeb72 100644
--- a/net/netfilter/nft_reject.c
+++ b/net/netfilter/nft_reject.c
@@ -94,7 +94,8 @@ static u8 icmp_code_v4[NFT_REJECT_ICMPX_MAX + 1] = {
 
 int nft_reject_icmp_code(u8 code)
 {
-	BUG_ON(code > NFT_REJECT_ICMPX_MAX);
+	if (WARN_ON_ONCE(code > NFT_REJECT_ICMPX_MAX))
+		return ICMP_NET_UNREACH;
 
 	return icmp_code_v4[code];
 }
@@ -111,7 +112,8 @@ static u8 icmp_code_v6[NFT_REJECT_ICMPX_MAX + 1] = {
 
 int nft_reject_icmpv6_code(u8 code)
 {
-	BUG_ON(code > NFT_REJECT_ICMPX_MAX);
+	if (WARN_ON_ONCE(code > NFT_REJECT_ICMPX_MAX))
+		return ICMPV6_NOROUTE;
 
 	return icmp_code_v6[code];
 }
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 234/422] ath9k: Fix a locking bug in ath9k_add_interface()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (232 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 233/422] netfilter: nf_tables: avoid BUG_ON usage Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 235/422] s390/qeth: uninstall IRQ handler on device removal Greg Kroah-Hartman
                   ` (191 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dan Carpenter, Kalle Valo, Sasha Levin

From: Dan Carpenter <dan.carpenter@oracle.com>

[ Upstream commit 461cf036057477805a8a391e5fd0f5264a5e56a8 ]

We tried to revert commit d9c52fd17cb4 ("ath9k: fix tx99 with monitor
mode interface") but accidentally missed part of the locking change.

The lock has to be held earlier so that we're holding it when we do
"sc->tx99_vif = vif;" and also there in the current code there is a
stray unlock before we have taken the lock.

Fixes: 6df0580be8bc ("ath9k: add back support for using active monitor interfaces for tx99")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/ath/ath9k/main.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index c85f613e8ceb5..74f98bbaea889 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1251,6 +1251,7 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
 	struct ath_vif *avp = (void *)vif->drv_priv;
 	struct ath_node *an = &avp->mcast_node;
 
+	mutex_lock(&sc->mutex);
 	if (IS_ENABLED(CONFIG_ATH9K_TX99)) {
 		if (sc->cur_chan->nvifs >= 1) {
 			mutex_unlock(&sc->mutex);
@@ -1259,8 +1260,6 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
 		sc->tx99_vif = vif;
 	}
 
-	mutex_lock(&sc->mutex);
-
 	ath_dbg(common, CONFIG, "Attach a VIF of type: %d\n", vif->type);
 	sc->cur_chan->nvifs++;
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 235/422] s390/qeth: uninstall IRQ handler on device removal
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (233 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 234/422] ath9k: Fix a locking bug in ath9k_add_interface() Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 236/422] s390/qeth: invoke softirqs after napi_schedule() Greg Kroah-Hartman
                   ` (190 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Julian Wiedmann, David S. Miller,
	Sasha Levin

From: Julian Wiedmann <jwi@linux.ibm.com>

[ Upstream commit 121ca39aa5585def682a2c8592983442438b84dc ]

When setting up, qeth installs its IRQ handler on the ccw devices. But
the IRQ handler is not cleared on removal - so even after qeth yields
control of the ccw devices, spurious interrupts would still be presented
to us.

Make (de-)installation of the IRQ handler part of the ccw channel
setup/removal helpers, and while at it also add the appropriate locking.
Shift around qeth_setup_channel() to avoid a forward declaration for
qeth_irq().

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/s390/net/qeth_core_main.c | 102 ++++++++++++++++--------------
 1 file changed, 54 insertions(+), 48 deletions(-)

diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c
index 461afc276db72..81e2c591acb0b 100644
--- a/drivers/s390/net/qeth_core_main.c
+++ b/drivers/s390/net/qeth_core_main.c
@@ -901,44 +901,6 @@ out:
 	qeth_release_buffer(channel, iob);
 }
 
-static int qeth_setup_channel(struct qeth_channel *channel, bool alloc_buffers)
-{
-	int cnt;
-
-	QETH_DBF_TEXT(SETUP, 2, "setupch");
-
-	channel->ccw = kmalloc(sizeof(struct ccw1), GFP_KERNEL | GFP_DMA);
-	if (!channel->ccw)
-		return -ENOMEM;
-	channel->state = CH_STATE_DOWN;
-	atomic_set(&channel->irq_pending, 0);
-	init_waitqueue_head(&channel->wait_q);
-
-	if (!alloc_buffers)
-		return 0;
-
-	for (cnt = 0; cnt < QETH_CMD_BUFFER_NO; cnt++) {
-		channel->iob[cnt].data =
-			kzalloc(QETH_BUFSIZE, GFP_DMA|GFP_KERNEL);
-		if (channel->iob[cnt].data == NULL)
-			break;
-		channel->iob[cnt].state = BUF_STATE_FREE;
-		channel->iob[cnt].channel = channel;
-		channel->iob[cnt].callback = qeth_send_control_data_cb;
-		channel->iob[cnt].rc = 0;
-	}
-	if (cnt < QETH_CMD_BUFFER_NO) {
-		kfree(channel->ccw);
-		while (cnt-- > 0)
-			kfree(channel->iob[cnt].data);
-		return -ENOMEM;
-	}
-	channel->io_buf_no = 0;
-	spin_lock_init(&channel->iob_lock);
-
-	return 0;
-}
-
 static int qeth_set_thread_start_bit(struct qeth_card *card,
 		unsigned long thread)
 {
@@ -1339,14 +1301,61 @@ static void qeth_free_buffer_pool(struct qeth_card *card)
 
 static void qeth_clean_channel(struct qeth_channel *channel)
 {
+	struct ccw_device *cdev = channel->ccwdev;
 	int cnt;
 
 	QETH_DBF_TEXT(SETUP, 2, "freech");
+
+	spin_lock_irq(get_ccwdev_lock(cdev));
+	cdev->handler = NULL;
+	spin_unlock_irq(get_ccwdev_lock(cdev));
+
 	for (cnt = 0; cnt < QETH_CMD_BUFFER_NO; cnt++)
 		kfree(channel->iob[cnt].data);
 	kfree(channel->ccw);
 }
 
+static int qeth_setup_channel(struct qeth_channel *channel, bool alloc_buffers)
+{
+	struct ccw_device *cdev = channel->ccwdev;
+	int cnt;
+
+	QETH_DBF_TEXT(SETUP, 2, "setupch");
+
+	channel->ccw = kmalloc(sizeof(struct ccw1), GFP_KERNEL | GFP_DMA);
+	if (!channel->ccw)
+		return -ENOMEM;
+	channel->state = CH_STATE_DOWN;
+	atomic_set(&channel->irq_pending, 0);
+	init_waitqueue_head(&channel->wait_q);
+
+	spin_lock_irq(get_ccwdev_lock(cdev));
+	cdev->handler = qeth_irq;
+	spin_unlock_irq(get_ccwdev_lock(cdev));
+
+	if (!alloc_buffers)
+		return 0;
+
+	for (cnt = 0; cnt < QETH_CMD_BUFFER_NO; cnt++) {
+		channel->iob[cnt].data =
+			kzalloc(QETH_BUFSIZE, GFP_DMA|GFP_KERNEL);
+		if (channel->iob[cnt].data == NULL)
+			break;
+		channel->iob[cnt].state = BUF_STATE_FREE;
+		channel->iob[cnt].channel = channel;
+		channel->iob[cnt].callback = qeth_send_control_data_cb;
+		channel->iob[cnt].rc = 0;
+	}
+	if (cnt < QETH_CMD_BUFFER_NO) {
+		qeth_clean_channel(channel);
+		return -ENOMEM;
+	}
+	channel->io_buf_no = 0;
+	spin_lock_init(&channel->iob_lock);
+
+	return 0;
+}
+
 static void qeth_set_single_write_queues(struct qeth_card *card)
 {
 	if ((atomic_read(&card->qdio.state) != QETH_QDIO_UNINITIALIZED) &&
@@ -1498,7 +1507,7 @@ static void qeth_core_sl_print(struct seq_file *m, struct service_level *slr)
 			CARD_BUS_ID(card), card->info.mcl_level);
 }
 
-static struct qeth_card *qeth_alloc_card(void)
+static struct qeth_card *qeth_alloc_card(struct ccwgroup_device *gdev)
 {
 	struct qeth_card *card;
 
@@ -1507,6 +1516,11 @@ static struct qeth_card *qeth_alloc_card(void)
 	if (!card)
 		goto out;
 	QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *));
+
+	card->gdev = gdev;
+	CARD_RDEV(card) = gdev->cdev[0];
+	CARD_WDEV(card) = gdev->cdev[1];
+	CARD_DDEV(card) = gdev->cdev[2];
 	if (qeth_setup_channel(&card->read, true))
 		goto out_ip;
 	if (qeth_setup_channel(&card->write, true))
@@ -5745,7 +5759,7 @@ static int qeth_core_probe_device(struct ccwgroup_device *gdev)
 
 	QETH_DBF_TEXT_(SETUP, 2, "%s", dev_name(&gdev->dev));
 
-	card = qeth_alloc_card();
+	card = qeth_alloc_card(gdev);
 	if (!card) {
 		QETH_DBF_TEXT_(SETUP, 2, "1err%d", -ENOMEM);
 		rc = -ENOMEM;
@@ -5761,15 +5775,7 @@ static int qeth_core_probe_device(struct ccwgroup_device *gdev)
 			goto err_card;
 	}
 
-	card->read.ccwdev  = gdev->cdev[0];
-	card->write.ccwdev = gdev->cdev[1];
-	card->data.ccwdev  = gdev->cdev[2];
 	dev_set_drvdata(&gdev->dev, card);
-	card->gdev = gdev;
-	gdev->cdev[0]->handler = qeth_irq;
-	gdev->cdev[1]->handler = qeth_irq;
-	gdev->cdev[2]->handler = qeth_irq;
-
 	qeth_setup_card(card);
 	rc = qeth_update_from_chp_desc(card);
 	if (rc)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 236/422] s390/qeth: invoke softirqs after napi_schedule()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (234 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 235/422] s390/qeth: uninstall IRQ handler on device removal Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 237/422] media: vsp1: Fix vsp1_regs.h license header Greg Kroah-Hartman
                   ` (189 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Julian Wiedmann, David S. Miller,
	Sasha Levin

From: Julian Wiedmann <jwi@linux.ibm.com>

[ Upstream commit 4d19db777a2f32c9b76f6fd517ed8960576cb43e ]

Calling napi_schedule() from process context does not ensure that the
NET_RX softirq is run in a timely fashion. So trigger it manually.

This is no big issue with current code. A call to ndo_open() is usually
followed by a ndo_set_rx_mode() call, and for qeth this contains a
spin_unlock_bh(). Except for OSN, where qeth_l2_set_rx_mode() bails out
early.
Nevertheless it's best to not depend on this behaviour, and just fix
the issue at its source like all other drivers do. For instance see
commit 83a0c6e58901 ("i40e: Invoke softirqs after napi_reschedule").

Fixes: a1c3ed4c9ca0 ("qeth: NAPI support for l2 and l3 discipline")
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/s390/net/qeth_l2_main.c | 3 +++
 drivers/s390/net/qeth_l3_main.c | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c
index c1c35eccd5b65..95669d47c389e 100644
--- a/drivers/s390/net/qeth_l2_main.c
+++ b/drivers/s390/net/qeth_l2_main.c
@@ -789,7 +789,10 @@ static int __qeth_l2_open(struct net_device *dev)
 
 	if (qdio_stop_irq(card->data.ccwdev, 0) >= 0) {
 		napi_enable(&card->napi);
+		local_bh_disable();
 		napi_schedule(&card->napi);
+		/* kick-start the NAPI softirq: */
+		local_bh_enable();
 	} else
 		rc = -EIO;
 	return rc;
diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c
index 9c5e801b3f6cb..52e0ae4dc7241 100644
--- a/drivers/s390/net/qeth_l3_main.c
+++ b/drivers/s390/net/qeth_l3_main.c
@@ -2414,7 +2414,10 @@ static int __qeth_l3_open(struct net_device *dev)
 
 	if (qdio_stop_irq(card->data.ccwdev, 0) >= 0) {
 		napi_enable(&card->napi);
+		local_bh_disable();
 		napi_schedule(&card->napi);
+		/* kick-start the NAPI softirq: */
+		local_bh_enable();
 	} else
 		rc = -EIO;
 	return rc;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 237/422] media: vsp1: Fix vsp1_regs.h license header
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (235 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 236/422] s390/qeth: invoke softirqs after napi_schedule() Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 238/422] media: vsp1: Fix YCbCr planar formats pitch calculation Greg Kroah-Hartman
                   ` (188 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Kieran Bingham, Sergei Shtylyov,
	Niklas Söderlund, Wolfram Sang, Nobuhiro Iwamatsu,
	Laurent Pinchart, Mauro Carvalho Chehab, Sasha Levin

From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>

[ Upstream commit 5eea860a6fec1e60709d19832015ee0991d3e80c ]

All source files of the vsp1 driver are licensed under the GPLv2+ except
for vsp1_regs.h which is licensed under GPLv2. This is caused by a bad
copy&paste that dates back from the initial version of the driver. Fix
it.

Acked-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Acked-by: Sergei Shtylyov<sergei.shtylyov@cogentembedded.com>
Acked-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Acked-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Acked-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/media/platform/vsp1/vsp1_regs.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/platform/vsp1/vsp1_regs.h b/drivers/media/platform/vsp1/vsp1_regs.h
index 3738ff2f7b850..f6e4157095cc0 100644
--- a/drivers/media/platform/vsp1/vsp1_regs.h
+++ b/drivers/media/platform/vsp1/vsp1_regs.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0+ */
 /*
  * vsp1_regs.h  --  R-Car VSP1 Registers Definitions
  *
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 238/422] media: vsp1: Fix YCbCr planar formats pitch calculation
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (236 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 237/422] media: vsp1: Fix vsp1_regs.h license header Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 239/422] media: ov2680: dont register the v4l2 subdevice before checking chip ID Greg Kroah-Hartman
                   ` (187 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Koji Matsuoka, Laurent Pinchart,
	Kieran Bingham, Mauro Carvalho Chehab, Sasha Levin

From: Koji Matsuoka <koji.matsuoka.xm@renesas.com>

[ Upstream commit 9b2798d5b71c50f64c41a40f0cbcae47c3fbd067 ]

YCbCr planar formats can have different pitch values for the luma and
chroma planes. This isn't taken into account in the driver. Fix it.

Based on a BSP patch from Koji Matsuoka <koji.matsuoka.xm@renesas.com>.

Fixes: 7863ac504bc5 ("drm: rcar-du: Add tri-planar memory formats support")
[Updated documentation of the struct vsp1_du_atomic_config pitch field]

Signed-off-by: Koji Matsuoka <koji.matsuoka.xm@renesas.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/media/platform/vsp1/vsp1_drm.c | 11 ++++++++++-
 include/media/vsp1.h                   |  2 +-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/vsp1/vsp1_drm.c b/drivers/media/platform/vsp1/vsp1_drm.c
index b9c0f695d002b..8d86f618ec776 100644
--- a/drivers/media/platform/vsp1/vsp1_drm.c
+++ b/drivers/media/platform/vsp1/vsp1_drm.c
@@ -770,6 +770,7 @@ int vsp1_du_atomic_update(struct device *dev, unsigned int pipe_index,
 	struct vsp1_device *vsp1 = dev_get_drvdata(dev);
 	struct vsp1_drm_pipeline *drm_pipe = &vsp1->drm->pipe[pipe_index];
 	const struct vsp1_format_info *fmtinfo;
+	unsigned int chroma_hsub;
 	struct vsp1_rwpf *rpf;
 
 	if (rpf_index >= vsp1->info->rpf_count)
@@ -810,10 +811,18 @@ int vsp1_du_atomic_update(struct device *dev, unsigned int pipe_index,
 		return -EINVAL;
 	}
 
+	/*
+	 * Only formats with three planes can affect the chroma planes pitch.
+	 * All formats with two planes have a horizontal subsampling value of 2,
+	 * but combine U and V in a single chroma plane, which thus results in
+	 * the luma plane and chroma plane having the same pitch.
+	 */
+	chroma_hsub = (fmtinfo->planes == 3) ? fmtinfo->hsub : 1;
+
 	rpf->fmtinfo = fmtinfo;
 	rpf->format.num_planes = fmtinfo->planes;
 	rpf->format.plane_fmt[0].bytesperline = cfg->pitch;
-	rpf->format.plane_fmt[1].bytesperline = cfg->pitch;
+	rpf->format.plane_fmt[1].bytesperline = cfg->pitch / chroma_hsub;
 	rpf->alpha = cfg->alpha;
 
 	rpf->mem.addr[0] = cfg->mem[0];
diff --git a/include/media/vsp1.h b/include/media/vsp1.h
index 3093b9cb9067e..5b383d01c84a0 100644
--- a/include/media/vsp1.h
+++ b/include/media/vsp1.h
@@ -46,7 +46,7 @@ int vsp1_du_setup_lif(struct device *dev, unsigned int pipe_index,
 /**
  * struct vsp1_du_atomic_config - VSP atomic configuration parameters
  * @pixelformat: plane pixel format (V4L2 4CC)
- * @pitch: line pitch in bytes, for all planes
+ * @pitch: line pitch in bytes for the first plane
  * @mem: DMA memory address for each plane of the frame buffer
  * @src: source rectangle in the frame buffer (integer coordinates)
  * @dst: destination rectangle on the display (integer coordinates)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 239/422] media: ov2680: dont register the v4l2 subdevice before checking chip ID
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (237 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 238/422] media: vsp1: Fix YCbCr planar formats pitch calculation Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 240/422] PCI/ACPI: Correct error message for ASPM disabling Greg Kroah-Hartman
                   ` (186 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Javier Martinez Canillas,
	Sakari Ailus, Mauro Carvalho Chehab, Sasha Levin

From: Javier Martinez Canillas <javierm@redhat.com>

[ Upstream commit b7a417628abf49dae98cb80a272dc133b0e4d1a3 ]

The driver registers the v4l2 subdevice before attempting to power on the
chip and checking its ID. This means that a media device driver that it's
waiting for this subdevice to be bound, will prematurely expose its media
device node to userspace because if something goes wrong the media entity
will be cleaned up again on the ov2680 probe function.

This also simplifies the probe function error path since no initialization
is made before attempting to enable the resources or checking the chip ID.

Fixes: 3ee47cad3e69 ("media: ov2680: Add Omnivision OV2680 sensor driver")

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/media/i2c/ov2680.c | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/drivers/media/i2c/ov2680.c b/drivers/media/i2c/ov2680.c
index f753a1c333ef9..3ccd584568fb5 100644
--- a/drivers/media/i2c/ov2680.c
+++ b/drivers/media/i2c/ov2680.c
@@ -1088,26 +1088,20 @@ static int ov2680_probe(struct i2c_client *client)
 
 	mutex_init(&sensor->lock);
 
-	ret = ov2680_v4l2_init(sensor);
+	ret = ov2680_check_id(sensor);
 	if (ret < 0)
 		goto lock_destroy;
 
-	ret = ov2680_check_id(sensor);
+	ret = ov2680_v4l2_init(sensor);
 	if (ret < 0)
-		goto error_cleanup;
+		goto lock_destroy;
 
 	dev_info(dev, "ov2680 init correctly\n");
 
 	return 0;
 
-error_cleanup:
-	dev_err(dev, "ov2680 init fail: %d\n", ret);
-
-	media_entity_cleanup(&sensor->sd.entity);
-	v4l2_async_unregister_subdev(&sensor->sd);
-	v4l2_ctrl_handler_free(&sensor->ctrls.handler);
-
 lock_destroy:
+	dev_err(dev, "ov2680 init fail: %d\n", ret);
 	mutex_destroy(&sensor->lock);
 
 	return ret;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 240/422] PCI/ACPI: Correct error message for ASPM disabling
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (238 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 239/422] media: ov2680: dont register the v4l2 subdevice before checking chip ID Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 241/422] net: socionext: Fix two sleep-in-atomic-context bugs in ave_rxfifo_reset() Greg Kroah-Hartman
                   ` (185 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Michael Kelley, Sinan Kaya,
	Bjorn Helgaas, Sasha Levin

From: Sinan Kaya <okaya@kernel.org>

[ Upstream commit 1ad61b612b95980a4d970c52022aa01dfc0f6068 ]

If _OSC execution fails today for platforms without an _OSC entry, code is
printing a misleading message saying disabling ASPM as follows:

  acpi PNP0A03:00: _OSC failed (AE_NOT_FOUND); disabling ASPM

We need to ensure that platform supports ASPM to begin with.

Reported-by: Michael Kelley <mikelley@microsoft.com>
Signed-off-by: Sinan Kaya <okaya@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/acpi/pci_root.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
index 7433035ded955..e465e720eab20 100644
--- a/drivers/acpi/pci_root.c
+++ b/drivers/acpi/pci_root.c
@@ -455,8 +455,9 @@ static void negotiate_os_control(struct acpi_pci_root *root, int *no_aspm)
 	decode_osc_support(root, "OS supports", support);
 	status = acpi_pci_osc_support(root, support);
 	if (ACPI_FAILURE(status)) {
-		dev_info(&device->dev, "_OSC failed (%s); disabling ASPM\n",
-			 acpi_format_exception(status));
+		dev_info(&device->dev, "_OSC failed (%s)%s\n",
+			 acpi_format_exception(status),
+			 pcie_aspm_support_enabled() ? "; disabling ASPM" : "");
 		*no_aspm = 1;
 		return;
 	}
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 241/422] net: socionext: Fix two sleep-in-atomic-context bugs in ave_rxfifo_reset()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (239 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 240/422] PCI/ACPI: Correct error message for ASPM disabling Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-21 20:21   ` Pavel Machek
  2019-11-19  5:17 ` [PATCH 4.19 242/422] PCI: mediatek: Fix unchecked return value Greg Kroah-Hartman
                   ` (184 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jia-Ju Bai, David S. Miller, Sasha Levin

From: Jia-Ju Bai <baijiaju1990@gmail.com>

[ Upstream commit 0020f5c807ef67954d9210eea0ba17a6134cdf7d ]

The driver may sleep with holding a spinlock.
The function call paths (from bottom to top) in Linux-4.17 are:

[FUNC] usleep_range
drivers/net/ethernet/socionext/sni_ave.c, 892:
	usleep_range in ave_rxfifo_reset
drivers/net/ethernet/socionext/sni_ave.c, 932:
	ave_rxfifo_reset in ave_irq_handler

[FUNC] usleep_range
drivers/net/ethernet/socionext/sni_ave.c, 888:
	usleep_range in ave_rxfifo_reset
drivers/net/ethernet/socionext/sni_ave.c, 932:
	ave_rxfifo_reset in ave_irq_handler

To fix these bugs, usleep_range() is replaced with udelay().

These bugs are found by my static analysis tool DSAC.

Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/socionext/sni_ave.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/socionext/sni_ave.c b/drivers/net/ethernet/socionext/sni_ave.c
index f27d67a4d3045..09d25b87cf7c0 100644
--- a/drivers/net/ethernet/socionext/sni_ave.c
+++ b/drivers/net/ethernet/socionext/sni_ave.c
@@ -906,11 +906,11 @@ static void ave_rxfifo_reset(struct net_device *ndev)
 
 	/* assert reset */
 	writel(AVE_GRR_RXFFR, priv->base + AVE_GRR);
-	usleep_range(40, 50);
+	udelay(50);
 
 	/* negate reset */
 	writel(0, priv->base + AVE_GRR);
-	usleep_range(10, 20);
+	udelay(20);
 
 	/* negate interrupt status */
 	writel(AVE_GI_RXOVF, priv->base + AVE_GISR);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 242/422] PCI: mediatek: Fix unchecked return value
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (240 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 241/422] net: socionext: Fix two sleep-in-atomic-context bugs in ave_rxfifo_reset() Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19 21:58   ` Pavel Machek
  2019-11-19  5:17 ` [PATCH 4.19 243/422] ARM: dts: xilinx: Fix I2C and SPI bus warnings Greg Kroah-Hartman
                   ` (183 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Gustavo A. R. Silva,
	Lorenzo Pieralisi, Honghui Zhang, Sasha Levin

From: Gustavo A. R. Silva <gustavo@embeddedor.com>

[ Upstream commit 17a0a1e5f6c4bd6df17834312ff577c1373d87b8 ]

Check return value of devm_pci_remap_iospace().

Addresses-Coverity-ID: 1471965 ("Unchecked return value")
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Honghui Zhang <honghui.zhang@mediatek.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/pci/controller/pcie-mediatek.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/controller/pcie-mediatek.c b/drivers/pci/controller/pcie-mediatek.c
index c5ff6ca65eab2..0d100f56cb884 100644
--- a/drivers/pci/controller/pcie-mediatek.c
+++ b/drivers/pci/controller/pcie-mediatek.c
@@ -1120,7 +1120,9 @@ static int mtk_pcie_request_resources(struct mtk_pcie *pcie)
 	if (err < 0)
 		return err;
 
-	devm_pci_remap_iospace(dev, &pcie->pio, pcie->io.start);
+	err = devm_pci_remap_iospace(dev, &pcie->pio, pcie->io.start);
+	if (err)
+		return err;
 
 	return 0;
 }
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 243/422] ARM: dts: xilinx: Fix I2C and SPI bus warnings
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (241 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 242/422] PCI: mediatek: Fix unchecked return value Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 244/422] serial: uartps: Fix suspend functionality Greg Kroah-Hartman
                   ` (182 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Michal Simek, Rob Herring, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit f5054ceed420b1f38d37920a4c65446fcc5d6b90 ]

dtc has new checks for I2C and SPI buses. Fix the warnings in node names
and unit-addresses.

arch/arm/boot/dts/zynq-zc702.dtb: Warning (i2c_bus_reg): /amba/i2c@e0004000/i2c-mux@74/i2c@7/hwmon@52: I2C bus unit address format error, expected "34"
arch/arm/boot/dts/zynq-zc702.dtb: Warning (i2c_bus_reg): /amba/i2c@e0004000/i2c-mux@74/i2c@7/hwmon@53: I2C bus unit address format error, expected "35"
arch/arm/boot/dts/zynq-zc702.dtb: Warning (i2c_bus_reg): /amba/i2c@e0004000/i2c-mux@74/i2c@7/hwmon@54: I2C bus unit address format error, expected "36"
arch/arm/boot/dts/zynq-zc770-xm013.dtb: Warning (spi_bus_reg): /amba/spi@e0006000/eeprom@0: SPI bus unit address format error, expected "2"
arch/arm/boot/dts/zynq-zc770-xm010.dtb: Warning (spi_bus_reg): /amba/spi@e0007000/flash@0: SPI bus unit address format error, expected "1"

Cc: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/zynq-zc702.dts       | 12 ++++++------
 arch/arm/boot/dts/zynq-zc770-xm010.dts |  2 +-
 arch/arm/boot/dts/zynq-zc770-xm013.dts |  2 +-
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/arch/arm/boot/dts/zynq-zc702.dts b/arch/arm/boot/dts/zynq-zc702.dts
index cc5a3dc2b4a08..27cd6cb52f1ba 100644
--- a/arch/arm/boot/dts/zynq-zc702.dts
+++ b/arch/arm/boot/dts/zynq-zc702.dts
@@ -174,17 +174,17 @@
 			#address-cells = <1>;
 			#size-cells = <0>;
 			reg = <7>;
-			hwmon@52 {
+			hwmon@34 {
 				compatible = "ti,ucd9248";
-				reg = <52>;
+				reg = <0x34>;
 			};
-			hwmon@53 {
+			hwmon@35 {
 				compatible = "ti,ucd9248";
-				reg = <53>;
+				reg = <0x35>;
 			};
-			hwmon@54 {
+			hwmon@36 {
 				compatible = "ti,ucd9248";
-				reg = <54>;
+				reg = <0x36>;
 			};
 		};
 	};
diff --git a/arch/arm/boot/dts/zynq-zc770-xm010.dts b/arch/arm/boot/dts/zynq-zc770-xm010.dts
index 0e1bfdd3421ff..0dd352289a45e 100644
--- a/arch/arm/boot/dts/zynq-zc770-xm010.dts
+++ b/arch/arm/boot/dts/zynq-zc770-xm010.dts
@@ -68,7 +68,7 @@
 	status = "okay";
 	num-cs = <4>;
 	is-decoded-cs = <0>;
-	flash@0 {
+	flash@1 {
 		compatible = "sst25wf080", "jedec,spi-nor";
 		reg = <1>;
 		spi-max-frequency = <1000000>;
diff --git a/arch/arm/boot/dts/zynq-zc770-xm013.dts b/arch/arm/boot/dts/zynq-zc770-xm013.dts
index 651913f1afa2a..4ae2c85df3a00 100644
--- a/arch/arm/boot/dts/zynq-zc770-xm013.dts
+++ b/arch/arm/boot/dts/zynq-zc770-xm013.dts
@@ -62,7 +62,7 @@
 	status = "okay";
 	num-cs = <4>;
 	is-decoded-cs = <0>;
-	eeprom: eeprom@0 {
+	eeprom: eeprom@2 {
 		at25,byte-len = <8192>;
 		at25,addr-mode = <2>;
 		at25,page-size = <32>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 244/422] serial: uartps: Fix suspend functionality
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (242 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 243/422] ARM: dts: xilinx: Fix I2C and SPI bus warnings Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 245/422] serial: samsung: Enable baud clock for UART reset procedure in resume Greg Kroah-Hartman
                   ` (181 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Nava kishore Manne, Michal Simek,
	Sasha Levin

From: Nava kishore Manne <nava.manne@xilinx.com>

[ Upstream commit 4b9d33c6a30688344a3e95179654ea31b07f59b7 ]

The driver's suspend/resume functions were buggy.
If UART node contains any child node in the DT and
the child is established a communication path with
the parent UART. The relevant /dev/ttyPS* node will
be not available for other operations.
If the driver is trying to do any operations like
suspend/resume without checking the tty->dev status
it leads to the kernel crash/hang.

This patch fix this issue by call the device_may_wake()
with the generic parameter of type struct device.
in the uart suspend and resume paths.

It also fixes a race condition in the uart suspend
path(i.e uart_suspend_port() should be called at the
end of cdns_uart_suspend API this path updates the same)

Signed-off-by: Nava kishore Manne <navam@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/tty/serial/xilinx_uartps.c | 41 +++++++++---------------------
 1 file changed, 12 insertions(+), 29 deletions(-)

diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c
index 77efa0a43fe76..66d49d5118853 100644
--- a/drivers/tty/serial/xilinx_uartps.c
+++ b/drivers/tty/serial/xilinx_uartps.c
@@ -1279,24 +1279,11 @@ static struct uart_driver cdns_uart_uart_driver = {
 static int cdns_uart_suspend(struct device *device)
 {
 	struct uart_port *port = dev_get_drvdata(device);
-	struct tty_struct *tty;
-	struct device *tty_dev;
-	int may_wake = 0;
-
-	/* Get the tty which could be NULL so don't assume it's valid */
-	tty = tty_port_tty_get(&port->state->port);
-	if (tty) {
-		tty_dev = tty->dev;
-		may_wake = device_may_wakeup(tty_dev);
-		tty_kref_put(tty);
-	}
+	int may_wake;
 
-	/*
-	 * Call the API provided in serial_core.c file which handles
-	 * the suspend.
-	 */
-	uart_suspend_port(&cdns_uart_uart_driver, port);
-	if (!(console_suspend_enabled && !may_wake)) {
+	may_wake = device_may_wakeup(device);
+
+	if (console_suspend_enabled && may_wake) {
 		unsigned long flags = 0;
 
 		spin_lock_irqsave(&port->lock, flags);
@@ -1311,7 +1298,11 @@ static int cdns_uart_suspend(struct device *device)
 		spin_unlock_irqrestore(&port->lock, flags);
 	}
 
-	return 0;
+	/*
+	 * Call the API provided in serial_core.c file which handles
+	 * the suspend.
+	 */
+	return uart_suspend_port(&cdns_uart_uart_driver, port);
 }
 
 /**
@@ -1325,17 +1316,9 @@ static int cdns_uart_resume(struct device *device)
 	struct uart_port *port = dev_get_drvdata(device);
 	unsigned long flags = 0;
 	u32 ctrl_reg;
-	struct tty_struct *tty;
-	struct device *tty_dev;
-	int may_wake = 0;
-
-	/* Get the tty which could be NULL so don't assume it's valid */
-	tty = tty_port_tty_get(&port->state->port);
-	if (tty) {
-		tty_dev = tty->dev;
-		may_wake = device_may_wakeup(tty_dev);
-		tty_kref_put(tty);
-	}
+	int may_wake;
+
+	may_wake = device_may_wakeup(device);
 
 	if (console_suspend_enabled && !may_wake) {
 		struct cdns_uart *cdns_uart = port->private_data;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 245/422] serial: samsung: Enable baud clock for UART reset procedure in resume
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (243 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 244/422] serial: uartps: Fix suspend functionality Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 246/422] serial: mxs-auart: Fix potential infinite loop Greg Kroah-Hartman
                   ` (180 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Marek Szyprowski,
	Krzysztof Kozlowski, Sasha Levin

From: Marek Szyprowski <m.szyprowski@samsung.com>

[ Upstream commit 1ff3652bc7111df26b5807037f624be294cf69d5 ]

Ensure that the baud clock is also enabled for UART register writes in
driver resume. On Exynos5433 SoC this is needed to avoid external abort
issue.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/tty/serial/samsung.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c
index c6058b52d5d59..2a49b6d876b87 100644
--- a/drivers/tty/serial/samsung.c
+++ b/drivers/tty/serial/samsung.c
@@ -1944,7 +1944,11 @@ static int s3c24xx_serial_resume(struct device *dev)
 
 	if (port) {
 		clk_prepare_enable(ourport->clk);
+		if (!IS_ERR(ourport->baudclk))
+			clk_prepare_enable(ourport->baudclk);
 		s3c24xx_serial_resetport(port, s3c24xx_port_to_cfg(port));
+		if (!IS_ERR(ourport->baudclk))
+			clk_disable_unprepare(ourport->baudclk);
 		clk_disable_unprepare(ourport->clk);
 
 		uart_resume_port(&s3c24xx_uart_drv, port);
@@ -1967,7 +1971,11 @@ static int s3c24xx_serial_resume_noirq(struct device *dev)
 			if (rx_enabled(port))
 				uintm &= ~S3C64XX_UINTM_RXD_MSK;
 			clk_prepare_enable(ourport->clk);
+			if (!IS_ERR(ourport->baudclk))
+				clk_prepare_enable(ourport->baudclk);
 			wr_regl(port, S3C64XX_UINTM, uintm);
+			if (!IS_ERR(ourport->baudclk))
+				clk_disable_unprepare(ourport->baudclk);
 			clk_disable_unprepare(ourport->clk);
 		}
 	}
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 246/422] serial: mxs-auart: Fix potential infinite loop
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (244 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 245/422] serial: samsung: Enable baud clock for UART reset procedure in resume Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 247/422] tty: serial: qcom_geni_serial: Fix serial when not used as console Greg Kroah-Hartman
                   ` (179 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Anton Vasilyev,
	Uwe Kleine-König, Sasha Levin

From: Anton Vasilyev <vasilyev@ispras.ru>

[ Upstream commit 5963e8a3122471cadfe0eba41c4ceaeaa5c8bb4d ]

On the error path of mxs_auart_request_gpio_irq() is performed
backward iterating with index i of enum type. Underline enum type
may be unsigned char. In this case check (--i >= 0) will be always
true and error handling goes into infinite loop.

The patch changes the check so that it is valid for signed and unsigned
types.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Anton Vasilyev <vasilyev@ispras.ru>
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/tty/serial/mxs-auart.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
index 34acdf29713d7..4c188f4079b3e 100644
--- a/drivers/tty/serial/mxs-auart.c
+++ b/drivers/tty/serial/mxs-auart.c
@@ -1634,8 +1634,9 @@ static int mxs_auart_request_gpio_irq(struct mxs_auart_port *s)
 
 	/*
 	 * If something went wrong, rollback.
+	 * Be careful: i may be unsigned.
 	 */
-	while (err && (--i >= 0))
+	while (err && (i-- > 0))
 		if (irq[i] >= 0)
 			free_irq(irq[i], s);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 247/422] tty: serial: qcom_geni_serial: Fix serial when not used as console
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (245 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 246/422] serial: mxs-auart: Fix potential infinite loop Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 248/422] arm64: dts: ti: k3-am65: Change #address-cells and #size-cells of interconnect to 2 Greg Kroah-Hartman
                   ` (178 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Douglas Anderson, Matthias Kaehlcke,
	Sasha Levin

From: Douglas Anderson <dianders@chromium.org>

[ Upstream commit c362272bdea32bf048d6916b0a2dc485eb9cf787 ]

If you've got the "console" serial port setup to use just as a UART
(AKA there is no "console=ttyMSMX" on the kernel command line) then
certain initialization is skipped.  When userspace later tries to do
something with the port then things go boom (specifically, on my
system, some sort of exception hit that caused the system to reboot
itself w/ no error messages).

Let's cleanup / refactor the init so that we always run the same init
code regardless of whether we're using the console.

To make this work, we make rely on qcom_geni_serial_pm doing its job
to turn resources on.

For the record, here is a trace of the order of things (after this
patch) when console= is specified on the command line and we have an
agetty on the port:
  qcom_geni_serial_pm: 4 (undefined) => 0 (on)
  qcom_geni_console_setup
  qcom_geni_serial_port_setup
  qcom_geni_serial_console_write
  qcom_geni_serial_startup
  qcom_geni_serial_start_tx

...and here is the order of things (after this patch) when console= is
_NOT_ specified on the command line and we have an agetty port:
  qcom_geni_serial_pm: 4 => 0
  qcom_geni_serial_pm: 0 => 3
  qcom_geni_serial_pm: 3 => 0
  qcom_geni_serial_startup
  qcom_geni_serial_port_setup
  qcom_geni_serial_pm: 0 => 3
  qcom_geni_serial_pm: 3 => 0
  qcom_geni_serial_startup
  qcom_geni_serial_start_tx

Fixes: c4f528795d1a ("tty: serial: msm_geni_serial: Add serial driver support for GENI based QUP")
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/tty/serial/qcom_geni_serial.c | 55 +++++++++++++--------------
 1 file changed, 26 insertions(+), 29 deletions(-)

diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c
index 5b96df4ad5b30..69b980bb8ac29 100644
--- a/drivers/tty/serial/qcom_geni_serial.c
+++ b/drivers/tty/serial/qcom_geni_serial.c
@@ -851,6 +851,23 @@ static int qcom_geni_serial_port_setup(struct uart_port *uport)
 {
 	struct qcom_geni_serial_port *port = to_dev_port(uport, uport);
 	unsigned int rxstale = DEFAULT_BITS_PER_CHAR * STALE_TIMEOUT;
+	u32 proto;
+
+	if (uart_console(uport))
+		port->tx_bytes_pw = 1;
+	else
+		port->tx_bytes_pw = 4;
+	port->rx_bytes_pw = RX_BYTES_PW;
+
+	proto = geni_se_read_proto(&port->se);
+	if (proto != GENI_SE_UART) {
+		dev_err(uport->dev, "Invalid FW loaded, proto: %d\n", proto);
+		return -ENXIO;
+	}
+
+	qcom_geni_serial_stop_rx(uport);
+
+	get_tx_fifo_size(port);
 
 	set_rfr_wm(port);
 	writel_relaxed(rxstale, uport->membase + SE_UART_RX_STALE_CNT);
@@ -874,30 +891,19 @@ static int qcom_geni_serial_port_setup(struct uart_port *uport)
 			return -ENOMEM;
 	}
 	port->setup = true;
+
 	return 0;
 }
 
 static int qcom_geni_serial_startup(struct uart_port *uport)
 {
 	int ret;
-	u32 proto;
 	struct qcom_geni_serial_port *port = to_dev_port(uport, uport);
 
 	scnprintf(port->name, sizeof(port->name),
 		  "qcom_serial_%s%d",
 		(uart_console(uport) ? "console" : "uart"), uport->line);
 
-	if (!uart_console(uport)) {
-		port->tx_bytes_pw = 4;
-		port->rx_bytes_pw = RX_BYTES_PW;
-	}
-	proto = geni_se_read_proto(&port->se);
-	if (proto != GENI_SE_UART) {
-		dev_err(uport->dev, "Invalid FW loaded, proto: %d\n", proto);
-		return -ENXIO;
-	}
-
-	get_tx_fifo_size(port);
 	if (!port->setup) {
 		ret = qcom_geni_serial_port_setup(uport);
 		if (ret)
@@ -1056,6 +1062,7 @@ static int __init qcom_geni_console_setup(struct console *co, char *options)
 	int bits = 8;
 	int parity = 'n';
 	int flow = 'n';
+	int ret;
 
 	if (co->index >= GENI_UART_CONS_PORTS  || co->index < 0)
 		return -ENXIO;
@@ -1071,21 +1078,10 @@ static int __init qcom_geni_console_setup(struct console *co, char *options)
 	if (unlikely(!uport->membase))
 		return -ENXIO;
 
-	if (geni_se_resources_on(&port->se)) {
-		dev_err(port->se.dev, "Error turning on resources\n");
-		return -ENXIO;
-	}
-
-	if (unlikely(geni_se_read_proto(&port->se) != GENI_SE_UART)) {
-		geni_se_resources_off(&port->se);
-		return -ENXIO;
-	}
-
 	if (!port->setup) {
-		port->tx_bytes_pw = 1;
-		port->rx_bytes_pw = RX_BYTES_PW;
-		qcom_geni_serial_stop_rx(uport);
-		qcom_geni_serial_port_setup(uport);
+		ret = qcom_geni_serial_port_setup(uport);
+		if (ret)
+			return ret;
 	}
 
 	if (options)
@@ -1203,11 +1199,12 @@ static void qcom_geni_serial_pm(struct uart_port *uport,
 {
 	struct qcom_geni_serial_port *port = to_dev_port(uport, uport);
 
+	/* If we've never been called, treat it as off */
+	if (old_state == UART_PM_STATE_UNDEFINED)
+		old_state = UART_PM_STATE_OFF;
+
 	if (new_state == UART_PM_STATE_ON && old_state == UART_PM_STATE_OFF)
 		geni_se_resources_on(&port->se);
-	else if (!uart_console(uport) && (new_state == UART_PM_STATE_ON &&
-				old_state == UART_PM_STATE_UNDEFINED))
-		geni_se_resources_on(&port->se);
 	else if (new_state == UART_PM_STATE_OFF &&
 			old_state == UART_PM_STATE_ON)
 		geni_se_resources_off(&port->se);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 248/422] arm64: dts: ti: k3-am65: Change #address-cells and #size-cells of interconnect to 2
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (246 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 247/422] tty: serial: qcom_geni_serial: Fix serial when not used as console Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 249/422] samples/bpf: fix a compilation failure Greg Kroah-Hartman
                   ` (177 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Kishon Vijay Abraham I,
	Tony Lindgren, Vignesh R, Nishanth Menon, Tero Kristo,
	Sasha Levin

From: Kishon Vijay Abraham I <kishon@ti.com>

[ Upstream commit 3bc1572068e3896b60d86f9c0fb56d1cef28201c ]

AM65 has two PCIe controllers and each PCIe controller has '2' address
spaces one within the 4GB address space of the SoC and the other above
the 4GB address space of the SoC (cbass_main) in addition to the
register space. The size of the address space above the 4GB SoC address
space is 4GB. These address ranges will be used by CPU/DMA to access
the PCIe address space. In order to represent the address space above
the 4GB SoC address space and to represent the size of this address
space as 4GB, change address-cells and size-cells of interconnect to 2.

Since OSPI has similar need in MCU Domain Memory Map, change
address-cells and size-cells of cbass_mcu interconnect also to 2.

Fixes: ea47eed33a3fe3d919 ("arm64: dts: ti: Add Support for AM654 SoC")
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Acked-by: Vignesh R <vigneshr@ti.com>
Acked-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/ti/k3-am65-main.dtsi | 10 +++---
 arch/arm64/boot/dts/ti/k3-am65.dtsi      | 44 ++++++++++++------------
 2 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/arch/arm64/boot/dts/ti/k3-am65-main.dtsi b/arch/arm64/boot/dts/ti/k3-am65-main.dtsi
index e23c5762355d0..2e3917171b17f 100644
--- a/arch/arm64/boot/dts/ti/k3-am65-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am65-main.dtsi
@@ -8,13 +8,13 @@
 &cbass_main {
 	gic500: interrupt-controller@1800000 {
 		compatible = "arm,gic-v3";
-		#address-cells = <1>;
-		#size-cells = <1>;
+		#address-cells = <2>;
+		#size-cells = <2>;
 		ranges;
 		#interrupt-cells = <3>;
 		interrupt-controller;
-		reg = <0x01800000 0x10000>,	/* GICD */
-		      <0x01880000 0x90000>;	/* GICR */
+		reg = <0x00 0x01800000 0x00 0x10000>,	/* GICD */
+		      <0x00 0x01880000 0x00 0x90000>;	/* GICR */
 		/*
 		 * vcpumntirq:
 		 * virtual CPU interface maintenance interrupt
@@ -23,7 +23,7 @@
 
 		gic_its: gic-its@1820000 {
 			compatible = "arm,gic-v3-its";
-			reg = <0x01820000 0x10000>;
+			reg = <0x00 0x01820000 0x00 0x10000>;
 			msi-controller;
 			#msi-cells = <1>;
 		};
diff --git a/arch/arm64/boot/dts/ti/k3-am65.dtsi b/arch/arm64/boot/dts/ti/k3-am65.dtsi
index cede1fa0983c9..ded364d208351 100644
--- a/arch/arm64/boot/dts/ti/k3-am65.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am65.dtsi
@@ -46,38 +46,38 @@
 
 	cbass_main: interconnect@100000 {
 		compatible = "simple-bus";
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges = <0x00100000 0x00 0x00100000 0x00020000>, /* ctrl mmr */
-			 <0x00600000 0x00 0x00600000 0x00001100>, /* GPIO */
-			 <0x00900000 0x00 0x00900000 0x00012000>, /* serdes */
-			 <0x01000000 0x00 0x01000000 0x0af02400>, /* Most peripherals */
-			 <0x30800000 0x00 0x30800000 0x0bc00000>, /* MAIN NAVSS */
+		#address-cells = <2>;
+		#size-cells = <2>;
+		ranges = <0x00 0x00100000 0x00 0x00100000 0x00 0x00020000>, /* ctrl mmr */
+			 <0x00 0x00600000 0x00 0x00600000 0x00 0x00001100>, /* GPIO */
+			 <0x00 0x00900000 0x00 0x00900000 0x00 0x00012000>, /* serdes */
+			 <0x00 0x01000000 0x00 0x01000000 0x00 0x0af02400>, /* Most peripherals */
+			 <0x00 0x30800000 0x00 0x30800000 0x00 0x0bc00000>, /* MAIN NAVSS */
 			 /* MCUSS Range */
-			 <0x28380000 0x00 0x28380000 0x03880000>,
-			 <0x40200000 0x00 0x40200000 0x00900100>,
-			 <0x42040000 0x00 0x42040000 0x03ac2400>,
-			 <0x45100000 0x00 0x45100000 0x00c24000>,
-			 <0x46000000 0x00 0x46000000 0x00200000>,
-			 <0x47000000 0x00 0x47000000 0x00068400>;
+			 <0x00 0x28380000 0x00 0x28380000 0x00 0x03880000>,
+			 <0x00 0x40200000 0x00 0x40200000 0x00 0x00900100>,
+			 <0x00 0x42040000 0x00 0x42040000 0x00 0x03ac2400>,
+			 <0x00 0x45100000 0x00 0x45100000 0x00 0x00c24000>,
+			 <0x00 0x46000000 0x00 0x46000000 0x00 0x00200000>,
+			 <0x00 0x47000000 0x00 0x47000000 0x00 0x00068400>;
 
 		cbass_mcu: interconnect@28380000 {
 			compatible = "simple-bus";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0x28380000 0x28380000 0x03880000>, /* MCU NAVSS*/
-				 <0x40200000 0x40200000 0x00900100>, /* First peripheral window */
-				 <0x42040000 0x42040000 0x03ac2400>, /* WKUP */
-				 <0x45100000 0x45100000 0x00c24000>, /* MMRs, remaining NAVSS */
-				 <0x46000000 0x46000000 0x00200000>, /* CPSW */
-				 <0x47000000 0x47000000 0x00068400>; /* OSPI space 1 */
+			#address-cells = <2>;
+			#size-cells = <2>;
+			ranges = <0x00 0x28380000 0x00 0x28380000 0x00 0x03880000>, /* MCU NAVSS*/
+				 <0x00 0x40200000 0x00 0x40200000 0x00 0x00900100>, /* First peripheral window */
+				 <0x00 0x42040000 0x00 0x42040000 0x00 0x03ac2400>, /* WKUP */
+				 <0x00 0x45100000 0x00 0x45100000 0x00 0x00c24000>, /* MMRs, remaining NAVSS */
+				 <0x00 0x46000000 0x00 0x46000000 0x00 0x00200000>, /* CPSW */
+				 <0x00 0x47000000 0x00 0x47000000 0x00 0x00068400>; /* OSPI space 1 */
 
 			cbass_wakeup: interconnect@42040000 {
 				compatible = "simple-bus";
 				#address-cells = <1>;
 				#size-cells = <1>;
 				/* WKUP  Basic peripherals */
-				ranges = <0x42040000 0x42040000 0x03ac2400>;
+				ranges = <0x42040000 0x00 0x42040000 0x03ac2400>;
 			};
 		};
 	};
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 249/422] samples/bpf: fix a compilation failure
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (247 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 248/422] arm64: dts: ti: k3-am65: Change #address-cells and #size-cells of interconnect to 2 Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 250/422] spi/bcm63xx-hsspi: keep pll clk enabled Greg Kroah-Hartman
                   ` (176 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Yonghong Song, Daniel Borkmann, Sasha Levin

From: Yonghong Song <yhs@fb.com>

[ Upstream commit 534e0e52bc23de588e81b5a6f75e10c8c4b189fc ]

samples/bpf build failed with the following errors:

  $ make samples/bpf/
  ...
  HOSTCC  samples/bpf/sockex3_user.o
  /data/users/yhs/work/net-next/samples/bpf/sockex3_user.c:16:8: error: redefinition of ‘struct bpf_flow_keys’
   struct bpf_flow_keys {
          ^
  In file included from /data/users/yhs/work/net-next/samples/bpf/sockex3_user.c:4:0:
  ./usr/include/linux/bpf.h:2338:9: note: originally defined here
    struct bpf_flow_keys *flow_keys;
           ^
  make[3]: *** [samples/bpf/sockex3_user.o] Error 1

Commit d58e468b1112d ("flow_dissector: implements flow dissector BPF hook")
introduced struct bpf_flow_keys in include/uapi/linux/bpf.h and hence
caused the naming conflict with samples/bpf/sockex3_user.c.

The fix is to rename struct bpf_flow_keys in samples/bpf/sockex3_user.c
to flow_keys to avoid the conflict.

Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 samples/bpf/sockex3_user.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/samples/bpf/sockex3_user.c b/samples/bpf/sockex3_user.c
index 5ba3ae9d180ba..22f74d0e14934 100644
--- a/samples/bpf/sockex3_user.c
+++ b/samples/bpf/sockex3_user.c
@@ -13,7 +13,7 @@
 #define PARSE_IP_PROG_FD (prog_fd[0])
 #define PROG_ARRAY_FD (map_fd[0])
 
-struct bpf_flow_keys {
+struct flow_keys {
 	__be32 src;
 	__be32 dst;
 	union {
@@ -64,7 +64,7 @@ int main(int argc, char **argv)
 	(void) f;
 
 	for (i = 0; i < 5; i++) {
-		struct bpf_flow_keys key = {}, next_key;
+		struct flow_keys key = {}, next_key;
 		struct pair value;
 
 		sleep(1);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 250/422] spi/bcm63xx-hsspi: keep pll clk enabled
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (248 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 249/422] samples/bpf: fix a compilation failure Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 251/422] spi: mediatek: Dont modify spi_transfer when transfer Greg Kroah-Hartman
                   ` (175 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jonas Gorski, Mark Brown, Sasha Levin

From: Jonas Gorski <jonas.gorski@gmail.com>

[ Upstream commit 0fd85869c2a9c8723a98bc1f56a876e8383649f4 ]

If the pll clock needs to be enabled to get its rate, it will also need
to be enabled to provide it. So ensure it is kept enabled through the
lifetime of the device.

Fixes: 0d7412ed1f5dc ("spi/bcm63xx-hspi: Enable the clock before calling clk_get_rate().")
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/spi/spi-bcm63xx-hsspi.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/drivers/spi/spi-bcm63xx-hsspi.c b/drivers/spi/spi-bcm63xx-hsspi.c
index c23849f7aa7bc..9a06ffdb73b88 100644
--- a/drivers/spi/spi-bcm63xx-hsspi.c
+++ b/drivers/spi/spi-bcm63xx-hsspi.c
@@ -101,6 +101,7 @@ struct bcm63xx_hsspi {
 
 	struct platform_device *pdev;
 	struct clk *clk;
+	struct clk *pll_clk;
 	void __iomem *regs;
 	u8 __iomem *fifo;
 
@@ -332,7 +333,7 @@ static int bcm63xx_hsspi_probe(struct platform_device *pdev)
 	struct resource *res_mem;
 	void __iomem *regs;
 	struct device *dev = &pdev->dev;
-	struct clk *clk;
+	struct clk *clk, *pll_clk = NULL;
 	int irq, ret;
 	u32 reg, rate, num_cs = HSSPI_SPI_MAX_CS;
 
@@ -358,7 +359,7 @@ static int bcm63xx_hsspi_probe(struct platform_device *pdev)
 
 	rate = clk_get_rate(clk);
 	if (!rate) {
-		struct clk *pll_clk = devm_clk_get(dev, "pll");
+		pll_clk = devm_clk_get(dev, "pll");
 
 		if (IS_ERR(pll_clk)) {
 			ret = PTR_ERR(pll_clk);
@@ -373,19 +374,20 @@ static int bcm63xx_hsspi_probe(struct platform_device *pdev)
 		clk_disable_unprepare(pll_clk);
 		if (!rate) {
 			ret = -EINVAL;
-			goto out_disable_clk;
+			goto out_disable_pll_clk;
 		}
 	}
 
 	master = spi_alloc_master(&pdev->dev, sizeof(*bs));
 	if (!master) {
 		ret = -ENOMEM;
-		goto out_disable_clk;
+		goto out_disable_pll_clk;
 	}
 
 	bs = spi_master_get_devdata(master);
 	bs->pdev = pdev;
 	bs->clk = clk;
+	bs->pll_clk = pll_clk;
 	bs->regs = regs;
 	bs->speed_hz = rate;
 	bs->fifo = (u8 __iomem *)(bs->regs + HSSPI_FIFO_REG(0));
@@ -440,6 +442,8 @@ static int bcm63xx_hsspi_probe(struct platform_device *pdev)
 
 out_put_master:
 	spi_master_put(master);
+out_disable_pll_clk:
+	clk_disable_unprepare(pll_clk);
 out_disable_clk:
 	clk_disable_unprepare(clk);
 	return ret;
@@ -453,6 +457,7 @@ static int bcm63xx_hsspi_remove(struct platform_device *pdev)
 
 	/* reset the hardware and block queue progress */
 	__raw_writel(0, bs->regs + HSSPI_INT_MASK_REG);
+	clk_disable_unprepare(bs->pll_clk);
 	clk_disable_unprepare(bs->clk);
 
 	return 0;
@@ -465,6 +470,7 @@ static int bcm63xx_hsspi_suspend(struct device *dev)
 	struct bcm63xx_hsspi *bs = spi_master_get_devdata(master);
 
 	spi_master_suspend(master);
+	clk_disable_unprepare(bs->pll_clk);
 	clk_disable_unprepare(bs->clk);
 
 	return 0;
@@ -480,6 +486,12 @@ static int bcm63xx_hsspi_resume(struct device *dev)
 	if (ret)
 		return ret;
 
+	if (bs->pll_clk) {
+		ret = clk_prepare_enable(bs->pll_clk);
+		if (ret)
+			return ret;
+	}
+
 	spi_master_resume(master);
 
 	return 0;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 251/422] spi: mediatek: Dont modify spi_transfer when transfer.
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (249 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 250/422] spi/bcm63xx-hsspi: keep pll clk enabled Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 252/422] ASoC: rt5682: Fix the boost volume at the begining of playback Greg Kroah-Hartman
                   ` (174 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Pi-Hsun Shih, Mark Brown, Sasha Levin

From: Peter Shih <pihsun@chromium.org>

[ Upstream commit 00bca73bfca4fb0ab089b94cad0fc83d8b49c25f ]

Mediatek SPI driver modifies some fields (tx_buf, rx_buf, len, tx_dma,
rx_dma) of the spi_transfer* passed in when doing transfer_one and in
interrupt handler. This is somewhat unexpected, and there are some
caller (e.g. Cr50 spi driver) that reuse the spi_transfer for multiple
messages. Add a field to record how many bytes have been transferred,
and calculate the right len / buffer based on it instead.

Signed-off-by: Pi-Hsun Shih <pihsun@chromium.org>

Change-Id: I23e218cd964f16c0b2b26127d4a5ca6529867673
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/spi/spi-mt65xx.c | 37 +++++++++++++++++++++----------------
 1 file changed, 21 insertions(+), 16 deletions(-)

diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c
index 86bf45667a040..3dc31627c6558 100644
--- a/drivers/spi/spi-mt65xx.c
+++ b/drivers/spi/spi-mt65xx.c
@@ -98,6 +98,7 @@ struct mtk_spi {
 	struct clk *parent_clk, *sel_clk, *spi_clk;
 	struct spi_transfer *cur_transfer;
 	u32 xfer_len;
+	u32 num_xfered;
 	struct scatterlist *tx_sgl, *rx_sgl;
 	u32 tx_sgl_len, rx_sgl_len;
 	const struct mtk_spi_compatible *dev_comp;
@@ -385,6 +386,7 @@ static int mtk_spi_fifo_transfer(struct spi_master *master,
 
 	mdata->cur_transfer = xfer;
 	mdata->xfer_len = min(MTK_SPI_MAX_FIFO_SIZE, xfer->len);
+	mdata->num_xfered = 0;
 	mtk_spi_prepare_transfer(master, xfer);
 	mtk_spi_setup_packet(master);
 
@@ -415,6 +417,7 @@ static int mtk_spi_dma_transfer(struct spi_master *master,
 	mdata->tx_sgl_len = 0;
 	mdata->rx_sgl_len = 0;
 	mdata->cur_transfer = xfer;
+	mdata->num_xfered = 0;
 
 	mtk_spi_prepare_transfer(master, xfer);
 
@@ -482,7 +485,7 @@ static int mtk_spi_setup(struct spi_device *spi)
 
 static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id)
 {
-	u32 cmd, reg_val, cnt, remainder;
+	u32 cmd, reg_val, cnt, remainder, len;
 	struct spi_master *master = dev_id;
 	struct mtk_spi *mdata = spi_master_get_devdata(master);
 	struct spi_transfer *trans = mdata->cur_transfer;
@@ -497,36 +500,38 @@ static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id)
 		if (trans->rx_buf) {
 			cnt = mdata->xfer_len / 4;
 			ioread32_rep(mdata->base + SPI_RX_DATA_REG,
-				     trans->rx_buf, cnt);
+				     trans->rx_buf + mdata->num_xfered, cnt);
 			remainder = mdata->xfer_len % 4;
 			if (remainder > 0) {
 				reg_val = readl(mdata->base + SPI_RX_DATA_REG);
-				memcpy(trans->rx_buf + (cnt * 4),
-					&reg_val, remainder);
+				memcpy(trans->rx_buf +
+					mdata->num_xfered +
+					(cnt * 4),
+					&reg_val,
+					remainder);
 			}
 		}
 
-		trans->len -= mdata->xfer_len;
-		if (!trans->len) {
+		mdata->num_xfered += mdata->xfer_len;
+		if (mdata->num_xfered == trans->len) {
 			spi_finalize_current_transfer(master);
 			return IRQ_HANDLED;
 		}
 
-		if (trans->tx_buf)
-			trans->tx_buf += mdata->xfer_len;
-		if (trans->rx_buf)
-			trans->rx_buf += mdata->xfer_len;
-
-		mdata->xfer_len = min(MTK_SPI_MAX_FIFO_SIZE, trans->len);
+		len = trans->len - mdata->num_xfered;
+		mdata->xfer_len = min(MTK_SPI_MAX_FIFO_SIZE, len);
 		mtk_spi_setup_packet(master);
 
-		cnt = trans->len / 4;
-		iowrite32_rep(mdata->base + SPI_TX_DATA_REG, trans->tx_buf, cnt);
+		cnt = len / 4;
+		iowrite32_rep(mdata->base + SPI_TX_DATA_REG,
+				trans->tx_buf + mdata->num_xfered, cnt);
 
-		remainder = trans->len % 4;
+		remainder = len % 4;
 		if (remainder > 0) {
 			reg_val = 0;
-			memcpy(&reg_val, trans->tx_buf + (cnt * 4), remainder);
+			memcpy(&reg_val,
+				trans->tx_buf + (cnt * 4) + mdata->num_xfered,
+				remainder);
 			writel(reg_val, mdata->base + SPI_TX_DATA_REG);
 		}
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 252/422] ASoC: rt5682: Fix the boost volume at the begining of playback
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (250 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 251/422] spi: mediatek: Dont modify spi_transfer when transfer Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 253/422] ipmi_si_pci: fix NULL device in ipmi_si error message Greg Kroah-Hartman
                   ` (173 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Shuming Fan, Mark Brown, Sasha Levin

From: Shuming Fan <shumingf@realtek.com>

[ Upstream commit 28b20dde5e1c943ab899549a655ac4935cffccbb ]

This patch fixed the boost volume at the begining of playback
while DAC volume set to lower level.

Signed-off-by: Shuming Fan <shumingf@realtek.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/codecs/rt5682.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/sound/soc/codecs/rt5682.c b/sound/soc/codecs/rt5682.c
index 21e7c430baf7f..7a78bb00f874d 100644
--- a/sound/soc/codecs/rt5682.c
+++ b/sound/soc/codecs/rt5682.c
@@ -68,6 +68,7 @@ struct rt5682_priv {
 
 static const struct reg_sequence patch_list[] = {
 	{0x01c1, 0x1000},
+	{RT5682_DAC_ADC_DIG_VOL1, 0xa020},
 };
 
 static const struct reg_default rt5682_reg[] = {
@@ -1457,6 +1458,8 @@ static int rt5682_hp_event(struct snd_soc_dapm_widget *w,
 			RT5682_NG2_EN_MASK, RT5682_NG2_EN);
 		snd_soc_component_update_bits(component,
 			RT5682_DEPOP_1, 0x60, 0x60);
+		snd_soc_component_update_bits(component,
+			RT5682_DAC_ADC_DIG_VOL1, 0x00c0, 0x0080);
 		break;
 
 	case SND_SOC_DAPM_POST_PMD:
@@ -1464,6 +1467,8 @@ static int rt5682_hp_event(struct snd_soc_dapm_widget *w,
 			RT5682_DEPOP_1, 0x60, 0x0);
 		snd_soc_component_write(component,
 			RT5682_HP_CTRL_2, 0x0000);
+		snd_soc_component_update_bits(component,
+			RT5682_DAC_ADC_DIG_VOL1, 0x00c0, 0x0000);
 		break;
 
 	default:
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 253/422] ipmi_si_pci: fix NULL device in ipmi_si error message
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (251 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 252/422] ASoC: rt5682: Fix the boost volume at the begining of playback Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 254/422] ipmi_si: fix potential integer overflow on large shift Greg Kroah-Hartman
                   ` (172 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Meelis Roos, Corey Minyard, Sasha Levin

From: Meelis Roos <mroos@linux.ee>

[ Upstream commit 01508d9ebf4fc863f2fc4561c390bf4b7c3301a6 ]

I noticed that 4.17.0 logs the follwing during ipmi_si setup:

 ipmi_si 0000:01:04.6: probing via PCI
 (NULL device *): Could not setup I/O space
 ipmi_si 0000:01:04.6: [mem 0xf5ef0000-0xf5ef00ff] regsize 1 spacing 1 irq 21

Fix the "NULL device *) by moving io.dev assignment before its potential
use by ipmi_pci_probe_regspacing().

Result:
 ipmi_si 0000:01:04.6: probing via PCI
 ipmi_si 0000:01:04.6: Could not setup I/O space
 ipmi_si 0000:01:04.6: [mem 0xf5ef0000-0xf5ef00ff] regsize 1 spacing 1 irq 21

Signed-off-by: Meelis Roos <mroos@linux.ee>
Signed-off-by: Corey Minyard <cminyard@mvista.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/char/ipmi/ipmi_si_pci.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/char/ipmi/ipmi_si_pci.c b/drivers/char/ipmi/ipmi_si_pci.c
index f54ca6869ed2c..022e03634ce2a 100644
--- a/drivers/char/ipmi/ipmi_si_pci.c
+++ b/drivers/char/ipmi/ipmi_si_pci.c
@@ -120,6 +120,8 @@ static int ipmi_pci_probe(struct pci_dev *pdev,
 	}
 	io.addr_data = pci_resource_start(pdev, 0);
 
+	io.dev = &pdev->dev;
+
 	io.regspacing = ipmi_pci_probe_regspacing(&io);
 	io.regsize = DEFAULT_REGSIZE;
 	io.regshift = 0;
@@ -128,8 +130,6 @@ static int ipmi_pci_probe(struct pci_dev *pdev,
 	if (io.irq)
 		io.irq_setup = ipmi_std_irq_setup;
 
-	io.dev = &pdev->dev;
-
 	dev_info(&pdev->dev, "%pR regsize %d spacing %d irq %d\n",
 		&pdev->resource[0], io.regsize, io.regspacing, io.irq);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 254/422] ipmi_si: fix potential integer overflow on large shift
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (252 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 253/422] ipmi_si_pci: fix NULL device in ipmi_si error message Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 255/422] ipmi:dmi: Ignore IPMI SMBIOS entries with a zero base address Greg Kroah-Hartman
                   ` (171 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Colin Ian King, Corey Minyard, Sasha Levin

From: Colin Ian King <colin.king@canonical.com>

[ Upstream commit 97a103e6b584442cd848887ed8d47be2410b7e09 ]

Shifting unsigned char b by an int type can lead to sign-extension
overflow. For example, if b is 0xff and the shift is 24, then top
bit is sign-extended so the final value passed to writeq has all
the upper 32 bits set.  Fix this by casting b to a 64 bit unsigned
before the shift.

Detected by CoverityScan, CID#1465246 ("Unintended sign extension")

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Corey Minyard <cminyard@mvista.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/char/ipmi/ipmi_si_mem_io.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/char/ipmi/ipmi_si_mem_io.c b/drivers/char/ipmi/ipmi_si_mem_io.c
index 638f4ab88f445..75583612ab105 100644
--- a/drivers/char/ipmi/ipmi_si_mem_io.c
+++ b/drivers/char/ipmi/ipmi_si_mem_io.c
@@ -51,7 +51,7 @@ static unsigned char mem_inq(const struct si_sm_io *io, unsigned int offset)
 static void mem_outq(const struct si_sm_io *io, unsigned int offset,
 		     unsigned char b)
 {
-	writeq(b << io->regshift, (io->addr)+(offset * io->regspacing));
+	writeq((u64)b << io->regshift, (io->addr)+(offset * io->regspacing));
 }
 #endif
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 255/422] ipmi:dmi: Ignore IPMI SMBIOS entries with a zero base address
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (253 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 254/422] ipmi_si: fix potential integer overflow on large shift Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 256/422] ipmi: fix return value of ipmi_set_my_LUN Greg Kroah-Hartman
                   ` (170 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Corey Minyard, Sasha Levin

From: Corey Minyard <cminyard@mvista.com>

[ Upstream commit 1574608f5f4204440d6d9f52b971aba967664764 ]

Looking at logs from systems all over the place, it looks like tons
of broken systems exist that set the base address to zero.  I can
only guess that is some sort of non-standard idea to mark the
interface as not being present.  It can't be zero, anyway, so just
complain and ignore it.

Signed-off-by: Corey Minyard <cminyard@mvista.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/char/ipmi/ipmi_dmi.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/char/ipmi/ipmi_dmi.c b/drivers/char/ipmi/ipmi_dmi.c
index e2c143861b1e5..28dbd5529188a 100644
--- a/drivers/char/ipmi/ipmi_dmi.c
+++ b/drivers/char/ipmi/ipmi_dmi.c
@@ -217,6 +217,10 @@ static void __init dmi_decode_ipmi(const struct dmi_header *dm)
 	slave_addr = data[DMI_IPMI_SLAVEADDR];
 
 	memcpy(&base_addr, data + DMI_IPMI_ADDR, sizeof(unsigned long));
+	if (!base_addr) {
+		pr_err("Base address is zero, assuming no IPMI interface\n");
+		return;
+	}
 	if (len >= DMI_IPMI_VER2_LENGTH) {
 		if (type == IPMI_DMI_TYPE_SSIF) {
 			offset = 0;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 256/422] ipmi: fix return value of ipmi_set_my_LUN
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (254 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 255/422] ipmi:dmi: Ignore IPMI SMBIOS entries with a zero base address Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 257/422] net: hns3: fix return type of ndo_start_xmit function Greg Kroah-Hartman
                   ` (169 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, YueHaibing, Corey Minyard, Sasha Levin

From: YueHaibing <yuehaibing@huawei.com>

[ Upstream commit 060e8fb53fe3455568982d10ab8c3dd605565049 ]

Fixes gcc '-Wunused-but-set-variable' warning:

drivers/char/ipmi/ipmi_msghandler.c: In function 'ipmi_set_my_LUN':
drivers/char/ipmi/ipmi_msghandler.c:1335:13: warning:
 variable 'rv' set but not used [-Wunused-but-set-variable]
  int index, rv = 0;

'rv' should be the correct return value.

Fixes: 048f7c3e352e ("ipmi: Properly release srcu locks on error conditions")
Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: Corey Minyard <cminyard@mvista.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/char/ipmi/ipmi_msghandler.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
index 3fb297b5fb176..84c17f936c09c 100644
--- a/drivers/char/ipmi/ipmi_msghandler.c
+++ b/drivers/char/ipmi/ipmi_msghandler.c
@@ -1365,7 +1365,7 @@ int ipmi_set_my_LUN(struct ipmi_user *user,
 	}
 	release_ipmi_user(user, index);
 
-	return 0;
+	return rv;
 }
 EXPORT_SYMBOL(ipmi_set_my_LUN);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 257/422] net: hns3: fix return type of ndo_start_xmit function
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (255 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 256/422] ipmi: fix return value of ipmi_set_my_LUN Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 258/422] net: cavium: " Greg Kroah-Hartman
                   ` (168 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, YueHaibing, David S. Miller, Sasha Levin

From: YueHaibing <yuehaibing@huawei.com>

[ Upstream commit c9c3941186c5637caed131c4f4064411d6882299 ]

The method ndo_start_xmit() is defined as returning an 'netdev_tx_t',
which is a typedef for an enum type, also the implementation in this
driver has returns 'netdev_tx_t' value, so just change the function
return type to netdev_tx_t.

Found by coccinelle.

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/hisilicon/hip04_eth.c    | 3 ++-
 drivers/net/ethernet/hisilicon/hix5hd2_gmac.c | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hip04_eth.c b/drivers/net/ethernet/hisilicon/hip04_eth.c
index 644ad78d00515..e8936ae46add9 100644
--- a/drivers/net/ethernet/hisilicon/hip04_eth.c
+++ b/drivers/net/ethernet/hisilicon/hip04_eth.c
@@ -424,7 +424,8 @@ static void hip04_start_tx_timer(struct hip04_priv *priv)
 			       ns, HRTIMER_MODE_REL);
 }
 
-static int hip04_mac_start_xmit(struct sk_buff *skb, struct net_device *ndev)
+static netdev_tx_t
+hip04_mac_start_xmit(struct sk_buff *skb, struct net_device *ndev)
 {
 	struct hip04_priv *priv = netdev_priv(ndev);
 	struct net_device_stats *stats = &ndev->stats;
diff --git a/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c b/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c
index c5727003af8c1..471805ea363b6 100644
--- a/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c
+++ b/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c
@@ -736,7 +736,7 @@ static int hix5hd2_fill_sg_desc(struct hix5hd2_priv *priv,
 	return 0;
 }
 
-static int hix5hd2_net_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t hix5hd2_net_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct hix5hd2_priv *priv = netdev_priv(dev);
 	struct hix5hd2_desc *desc;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 258/422] net: cavium: fix return type of ndo_start_xmit function
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (256 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 257/422] net: hns3: fix return type of ndo_start_xmit function Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 259/422] net: ibm: " Greg Kroah-Hartman
                   ` (167 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, YueHaibing, David S. Miller, Sasha Levin

From: YueHaibing <yuehaibing@huawei.com>

[ Upstream commit ac1172dea10b6ba51de9346d3130db688b5196c5 ]

The method ndo_start_xmit() is defined as returning an 'netdev_tx_t',
which is a typedef for an enum type, so make sure the implementation in
this driver has returns 'netdev_tx_t' value, and change the function
return type to netdev_tx_t.

Found by coccinelle.

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/cavium/liquidio/lio_main.c    | 2 +-
 drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 2 +-
 drivers/net/ethernet/cavium/liquidio/lio_vf_rep.c  | 5 +++--
 drivers/net/ethernet/cavium/octeon/octeon_mgmt.c   | 5 +++--
 4 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c
index 6fb13fa73b271..304e4b9436276 100644
--- a/drivers/net/ethernet/cavium/liquidio/lio_main.c
+++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c
@@ -2324,7 +2324,7 @@ static inline int send_nic_timestamp_pkt(struct octeon_device *oct,
  * @returns whether the packet was transmitted to the device okay or not
  *             (NETDEV_TX_OK or NETDEV_TX_BUSY)
  */
-static int liquidio_xmit(struct sk_buff *skb, struct net_device *netdev)
+static netdev_tx_t liquidio_xmit(struct sk_buff *skb, struct net_device *netdev)
 {
 	struct lio *lio;
 	struct octnet_buf_free_info *finfo;
diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c
index b77835724dc84..d83773bc0dd7f 100644
--- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c
+++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c
@@ -1390,7 +1390,7 @@ static int send_nic_timestamp_pkt(struct octeon_device *oct,
  * @returns whether the packet was transmitted to the device okay or not
  *             (NETDEV_TX_OK or NETDEV_TX_BUSY)
  */
-static int liquidio_xmit(struct sk_buff *skb, struct net_device *netdev)
+static netdev_tx_t liquidio_xmit(struct sk_buff *skb, struct net_device *netdev)
 {
 	struct octnet_buf_free_info *finfo;
 	union octnic_cmd_setup cmdsetup;
diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_rep.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_rep.c
index c99b59fe4c8fb..a1bda1683ebfc 100644
--- a/drivers/net/ethernet/cavium/liquidio/lio_vf_rep.c
+++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_rep.c
@@ -31,7 +31,8 @@
 
 static int lio_vf_rep_open(struct net_device *ndev);
 static int lio_vf_rep_stop(struct net_device *ndev);
-static int lio_vf_rep_pkt_xmit(struct sk_buff *skb, struct net_device *ndev);
+static netdev_tx_t lio_vf_rep_pkt_xmit(struct sk_buff *skb,
+				       struct net_device *ndev);
 static void lio_vf_rep_tx_timeout(struct net_device *netdev);
 static int lio_vf_rep_phys_port_name(struct net_device *dev,
 				     char *buf, size_t len);
@@ -382,7 +383,7 @@ lio_vf_rep_packet_sent_callback(struct octeon_device *oct,
 		netif_wake_queue(ndev);
 }
 
-static int
+static netdev_tx_t
 lio_vf_rep_pkt_xmit(struct sk_buff *skb, struct net_device *ndev)
 {
 	struct lio_vf_rep_desc *vf_rep = netdev_priv(ndev);
diff --git a/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c b/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
index 592fb9e847b95..0957e735cdc4d 100644
--- a/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
+++ b/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
@@ -1268,12 +1268,13 @@ static int octeon_mgmt_stop(struct net_device *netdev)
 	return 0;
 }
 
-static int octeon_mgmt_xmit(struct sk_buff *skb, struct net_device *netdev)
+static netdev_tx_t
+octeon_mgmt_xmit(struct sk_buff *skb, struct net_device *netdev)
 {
 	struct octeon_mgmt *p = netdev_priv(netdev);
 	union mgmt_port_ring_entry re;
 	unsigned long flags;
-	int rv = NETDEV_TX_BUSY;
+	netdev_tx_t rv = NETDEV_TX_BUSY;
 
 	re.d64 = 0;
 	re.s.tstamp = ((skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) != 0);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 259/422] net: ibm: fix return type of ndo_start_xmit function
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (257 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 258/422] net: cavium: " Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 260/422] powerpc/iommu: Avoid derefence before pointer check Greg Kroah-Hartman
                   ` (166 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, YueHaibing, David S. Miller, Sasha Levin

From: YueHaibing <yuehaibing@huawei.com>

[ Upstream commit 94b2bb28dbb43fcb943d5275ab19fd5a4972bedb ]

The method ndo_start_xmit() is defined as returning an 'netdev_tx_t',
which is a typedef for an enum type, so make sure the implementation in
this driver has returns 'netdev_tx_t' value, and change the function
return type to netdev_tx_t.

Found by coccinelle.

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/ibm/ehea/ehea_main.c | 2 +-
 drivers/net/ethernet/ibm/emac/core.c      | 7 ++++---
 drivers/net/ethernet/ibm/ibmvnic.c        | 4 ++--
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/ibm/ehea/ehea_main.c b/drivers/net/ethernet/ibm/ehea/ehea_main.c
index 506f78322d741..e8ee69d4e4d34 100644
--- a/drivers/net/ethernet/ibm/ehea/ehea_main.c
+++ b/drivers/net/ethernet/ibm/ehea/ehea_main.c
@@ -2027,7 +2027,7 @@ static void ehea_xmit3(struct sk_buff *skb, struct net_device *dev,
 	dev_consume_skb_any(skb);
 }
 
-static int ehea_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t ehea_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct ehea_port *port = netdev_priv(dev);
 	struct ehea_swqe *swqe;
diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c
index 129f4e9f38dac..a96f501813ff7 100644
--- a/drivers/net/ethernet/ibm/emac/core.c
+++ b/drivers/net/ethernet/ibm/emac/core.c
@@ -1409,7 +1409,7 @@ static inline u16 emac_tx_csum(struct emac_instance *dev,
 	return 0;
 }
 
-static inline int emac_xmit_finish(struct emac_instance *dev, int len)
+static inline netdev_tx_t emac_xmit_finish(struct emac_instance *dev, int len)
 {
 	struct emac_regs __iomem *p = dev->emacp;
 	struct net_device *ndev = dev->ndev;
@@ -1436,7 +1436,7 @@ static inline int emac_xmit_finish(struct emac_instance *dev, int len)
 }
 
 /* Tx lock BH */
-static int emac_start_xmit(struct sk_buff *skb, struct net_device *ndev)
+static netdev_tx_t emac_start_xmit(struct sk_buff *skb, struct net_device *ndev)
 {
 	struct emac_instance *dev = netdev_priv(ndev);
 	unsigned int len = skb->len;
@@ -1494,7 +1494,8 @@ static inline int emac_xmit_split(struct emac_instance *dev, int slot,
 }
 
 /* Tx lock BH disabled (SG version for TAH equipped EMACs) */
-static int emac_start_xmit_sg(struct sk_buff *skb, struct net_device *ndev)
+static netdev_tx_t
+emac_start_xmit_sg(struct sk_buff *skb, struct net_device *ndev)
 {
 	struct emac_instance *dev = netdev_priv(ndev);
 	int nr_frags = skb_shinfo(skb)->nr_frags;
diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
index 8fa14736449bc..8a1916443235a 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -1420,7 +1420,7 @@ static int ibmvnic_xmit_workarounds(struct sk_buff *skb,
 	return 0;
 }
 
-static int ibmvnic_xmit(struct sk_buff *skb, struct net_device *netdev)
+static netdev_tx_t ibmvnic_xmit(struct sk_buff *skb, struct net_device *netdev)
 {
 	struct ibmvnic_adapter *adapter = netdev_priv(netdev);
 	int queue_num = skb_get_queue_mapping(skb);
@@ -1444,7 +1444,7 @@ static int ibmvnic_xmit(struct sk_buff *skb, struct net_device *netdev)
 	u64 *handle_array;
 	int index = 0;
 	u8 proto = 0;
-	int ret = 0;
+	netdev_tx_t ret = NETDEV_TX_OK;
 
 	if (adapter->resetting) {
 		if (!netif_subqueue_stopped(netdev, skb))
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 260/422] powerpc/iommu: Avoid derefence before pointer check
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (258 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 259/422] net: ibm: " Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 261/422] selftests/powerpc: Do not fail with reschedule Greg Kroah-Hartman
                   ` (165 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Breno Leitao, Michael Ellerman, Sasha Levin

From: Breno Leitao <leitao@debian.org>

[ Upstream commit 984ecdd68de0fa1f63ce205d6c19ef5a7bc67b40 ]

The tbl pointer is being derefenced by IOMMU_PAGE_SIZE prior the check
if it is not NULL.

Just moving the dereference code to after the check, where there will
be guarantee that 'tbl' will not be NULL.

Signed-off-by: Breno Leitao <leitao@debian.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/powerpc/kernel/iommu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c
index 19b4c628f3bec..f0dc680e659af 100644
--- a/arch/powerpc/kernel/iommu.c
+++ b/arch/powerpc/kernel/iommu.c
@@ -785,9 +785,9 @@ dma_addr_t iommu_map_page(struct device *dev, struct iommu_table *tbl,
 
 	vaddr = page_address(page) + offset;
 	uaddr = (unsigned long)vaddr;
-	npages = iommu_num_pages(uaddr, size, IOMMU_PAGE_SIZE(tbl));
 
 	if (tbl) {
+		npages = iommu_num_pages(uaddr, size, IOMMU_PAGE_SIZE(tbl));
 		align = 0;
 		if (tbl->it_page_shift < PAGE_SHIFT && size >= PAGE_SIZE &&
 		    ((unsigned long)vaddr & ~PAGE_MASK) == 0)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 261/422] selftests/powerpc: Do not fail with reschedule
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (259 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 260/422] powerpc/iommu: Avoid derefence before pointer check Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 262/422] powerpc/64s/hash: Fix stab_rr off by one initialization Greg Kroah-Hartman
                   ` (164 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Breno Leitao, Gustavo Romero,
	Michael Ellerman, Sasha Levin

From: Breno Leitao <leitao@debian.org>

[ Upstream commit 44d947eff19d64384efc06069509db7a0a1103b0 ]

There are cases where the test is not expecting to have the transaction
aborted, but, the test process might have been rescheduled, either in the
OS level or by KVM (if it is running on a KVM guest machine). The process
reschedule will cause a treclaim/recheckpoint which will cause the
transaction to doom, aborting the transaction as soon as the process is
rescheduled back to the CPU. This might cause the test to fail, but this is
not a failure in essence.

If that is the case, TEXASR[FC] is indicated with either
TM_CAUSE_RESCHEDULE or TM_CAUSE_KVM_RESCHEDULE for KVM interruptions.

In this scenario, ignore these two failures and avoid the whole test to
return failure.

Signed-off-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Gustavo Romero <gromero@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 tools/testing/selftests/powerpc/tm/tm-unavailable.c | 9 ++++++---
 tools/testing/selftests/powerpc/tm/tm.h             | 9 +++++++++
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/powerpc/tm/tm-unavailable.c b/tools/testing/selftests/powerpc/tm/tm-unavailable.c
index 156c8e750259b..09894f4ff62e6 100644
--- a/tools/testing/selftests/powerpc/tm/tm-unavailable.c
+++ b/tools/testing/selftests/powerpc/tm/tm-unavailable.c
@@ -236,7 +236,8 @@ void *tm_una_ping(void *input)
 	}
 
 	/* Check if we were not expecting a failure and a it occurred. */
-	if (!expecting_failure() && is_failure(cr_)) {
+	if (!expecting_failure() && is_failure(cr_) &&
+	    !failure_is_reschedule()) {
 		printf("\n\tUnexpected transaction failure 0x%02lx\n\t",
 			failure_code());
 		return (void *) -1;
@@ -244,9 +245,11 @@ void *tm_una_ping(void *input)
 
 	/*
 	 * Check if TM failed due to the cause we were expecting. 0xda is a
-	 * TM_CAUSE_FAC_UNAV cause, otherwise it's an unexpected cause.
+	 * TM_CAUSE_FAC_UNAV cause, otherwise it's an unexpected cause, unless
+	 * it was caused by a reschedule.
 	 */
-	if (is_failure(cr_) && !failure_is_unavailable()) {
+	if (is_failure(cr_) && !failure_is_unavailable() &&
+	    !failure_is_reschedule()) {
 		printf("\n\tUnexpected failure cause 0x%02lx\n\t",
 			failure_code());
 		return (void *) -1;
diff --git a/tools/testing/selftests/powerpc/tm/tm.h b/tools/testing/selftests/powerpc/tm/tm.h
index df4204247d45c..5518b1d4ef8b2 100644
--- a/tools/testing/selftests/powerpc/tm/tm.h
+++ b/tools/testing/selftests/powerpc/tm/tm.h
@@ -52,6 +52,15 @@ static inline bool failure_is_unavailable(void)
 	return (failure_code() & TM_CAUSE_FAC_UNAV) == TM_CAUSE_FAC_UNAV;
 }
 
+static inline bool failure_is_reschedule(void)
+{
+	if ((failure_code() & TM_CAUSE_RESCHED) == TM_CAUSE_RESCHED ||
+	    (failure_code() & TM_CAUSE_KVM_RESCHED) == TM_CAUSE_KVM_RESCHED)
+		return true;
+
+	return false;
+}
+
 static inline bool failure_is_nesting(void)
 {
 	return (__builtin_get_texasru() & 0x400000);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 262/422] powerpc/64s/hash: Fix stab_rr off by one initialization
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (260 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 261/422] selftests/powerpc: Do not fail with reschedule Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 263/422] powerpc/pseries/memory-hotplug: Only update DT once per memory DLPAR request Greg Kroah-Hartman
                   ` (163 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Nicholas Piggin, Michael Ellerman,
	Sasha Levin

From: Nicholas Piggin <npiggin@gmail.com>

[ Upstream commit 09b4438db13fa83b6219aee5993711a2aa2a0c64 ]

This causes SLB alloation to start 1 beyond the start of the SLB.
There is no real problem because after it wraps it stats behaving
properly, it's just surprisig to see when looking at SLB traces.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/powerpc/mm/slb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c
index 9f574e59d1786..2f162c6e52d4f 100644
--- a/arch/powerpc/mm/slb.c
+++ b/arch/powerpc/mm/slb.c
@@ -355,7 +355,7 @@ void slb_initialize(void)
 #endif
 	}
 
-	get_paca()->stab_rr = SLB_NUM_BOLTED;
+	get_paca()->stab_rr = SLB_NUM_BOLTED - 1;
 
 	lflags = SLB_VSID_KERNEL | linear_llp;
 	vflags = SLB_VSID_KERNEL | vmalloc_llp;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 263/422] powerpc/pseries/memory-hotplug: Only update DT once per memory DLPAR request
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (261 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 262/422] powerpc/64s/hash: Fix stab_rr off by one initialization Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 264/422] powerpc/pseries: Disable CPU hotplug across migrations Greg Kroah-Hartman
                   ` (162 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Nathan Fontenot, Michael Ellerman,
	Sasha Levin

From: Nathan Fontenot <nfont@linux.vnet.ibm.com>

[ Upstream commit 063b8b1251fd069f3740339fca56119d218f11ba ]

The updates to powerpc numa and memory hotplug code now use the
in-kernel LMB array instead of the device tree. This change allows the
pseries memory DLPAR code to only update the device tree once after
successfully handling a DLPAR request.

Prior to the in-kernel LMB array, the numa code looked up the affinity
for memory being added in the device tree, the code now looks this up
in the LMB array. This change means the memory hotplug code can just
update the affinity for an LMB in the LMB array instead of updating
the device tree.

This also provides a savings in kernel memory. When updating the
device tree old properties are never free'ed since there is no
usecount on properties. This behavior leads to a new copy of the
property being allocated every time a LMB is added or removed (i.e. a
request to add 100 LMBs creates 100 new copies of the property). With
this update only a single new property is created when a DLPAR request
completes successfully.

Signed-off-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/powerpc/include/asm/drmem.h              |  5 ++
 .../platforms/pseries/hotplug-memory.c        | 55 ++++++-------------
 2 files changed, 21 insertions(+), 39 deletions(-)

diff --git a/arch/powerpc/include/asm/drmem.h b/arch/powerpc/include/asm/drmem.h
index ce242b9ea8c67..7c1d8e74b25d4 100644
--- a/arch/powerpc/include/asm/drmem.h
+++ b/arch/powerpc/include/asm/drmem.h
@@ -99,4 +99,9 @@ void __init walk_drmem_lmbs_early(unsigned long node,
 			void (*func)(struct drmem_lmb *, const __be32 **));
 #endif
 
+static inline void invalidate_lmb_associativity_index(struct drmem_lmb *lmb)
+{
+	lmb->aa_index = 0xffffffff;
+}
+
 #endif /* _ASM_POWERPC_LMB_H */
diff --git a/arch/powerpc/platforms/pseries/hotplug-memory.c b/arch/powerpc/platforms/pseries/hotplug-memory.c
index f99cd31b6fd1a..2f166136bb50a 100644
--- a/arch/powerpc/platforms/pseries/hotplug-memory.c
+++ b/arch/powerpc/platforms/pseries/hotplug-memory.c
@@ -163,7 +163,7 @@ static u32 find_aa_index(struct device_node *dr_node,
 	return aa_index;
 }
 
-static u32 lookup_lmb_associativity_index(struct drmem_lmb *lmb)
+static int update_lmb_associativity_index(struct drmem_lmb *lmb)
 {
 	struct device_node *parent, *lmb_node, *dr_node;
 	struct property *ala_prop;
@@ -203,43 +203,14 @@ static u32 lookup_lmb_associativity_index(struct drmem_lmb *lmb)
 	aa_index = find_aa_index(dr_node, ala_prop, lmb_assoc);
 
 	dlpar_free_cc_nodes(lmb_node);
-	return aa_index;
-}
-
-static int dlpar_add_device_tree_lmb(struct drmem_lmb *lmb)
-{
-	int rc, aa_index;
-
-	lmb->flags |= DRCONF_MEM_ASSIGNED;
 
-	aa_index = lookup_lmb_associativity_index(lmb);
 	if (aa_index < 0) {
-		pr_err("Couldn't find associativity index for drc index %x\n",
-		       lmb->drc_index);
-		return aa_index;
+		pr_err("Could not find LMB associativity\n");
+		return -1;
 	}
 
 	lmb->aa_index = aa_index;
-
-	rtas_hp_event = true;
-	rc = drmem_update_dt();
-	rtas_hp_event = false;
-
-	return rc;
-}
-
-static int dlpar_remove_device_tree_lmb(struct drmem_lmb *lmb)
-{
-	int rc;
-
-	lmb->flags &= ~DRCONF_MEM_ASSIGNED;
-	lmb->aa_index = 0xffffffff;
-
-	rtas_hp_event = true;
-	rc = drmem_update_dt();
-	rtas_hp_event = false;
-
-	return rc;
+	return 0;
 }
 
 static struct memory_block *lmb_to_memblock(struct drmem_lmb *lmb)
@@ -431,7 +402,9 @@ static int dlpar_remove_lmb(struct drmem_lmb *lmb)
 	/* Update memory regions for memory remove */
 	memblock_remove(lmb->base_addr, block_sz);
 
-	dlpar_remove_device_tree_lmb(lmb);
+	invalidate_lmb_associativity_index(lmb);
+	lmb->flags &= ~DRCONF_MEM_ASSIGNED;
+
 	return 0;
 }
 
@@ -691,10 +664,8 @@ static int dlpar_add_lmb(struct drmem_lmb *lmb)
 	if (lmb->flags & DRCONF_MEM_ASSIGNED)
 		return -EINVAL;
 
-	rc = dlpar_add_device_tree_lmb(lmb);
+	rc = update_lmb_associativity_index(lmb);
 	if (rc) {
-		pr_err("Couldn't update device tree for drc index %x\n",
-		       lmb->drc_index);
 		dlpar_release_drc(lmb->drc_index);
 		return rc;
 	}
@@ -707,14 +678,14 @@ static int dlpar_add_lmb(struct drmem_lmb *lmb)
 	/* Add the memory */
 	rc = add_memory(nid, lmb->base_addr, block_sz);
 	if (rc) {
-		dlpar_remove_device_tree_lmb(lmb);
+		invalidate_lmb_associativity_index(lmb);
 		return rc;
 	}
 
 	rc = dlpar_online_lmb(lmb);
 	if (rc) {
 		remove_memory(nid, lmb->base_addr, block_sz);
-		dlpar_remove_device_tree_lmb(lmb);
+		invalidate_lmb_associativity_index(lmb);
 	} else {
 		lmb->flags |= DRCONF_MEM_ASSIGNED;
 	}
@@ -961,6 +932,12 @@ int dlpar_memory(struct pseries_hp_errorlog *hp_elog)
 		break;
 	}
 
+	if (!rc) {
+		rtas_hp_event = true;
+		rc = drmem_update_dt();
+		rtas_hp_event = false;
+	}
+
 	unlock_device_hotplug();
 	return rc;
 }
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 264/422] powerpc/pseries: Disable CPU hotplug across migrations
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (262 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 263/422] powerpc/pseries/memory-hotplug: Only update DT once per memory DLPAR request Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 265/422] powerpc: Fix duplicate const clang warning in user access code Greg Kroah-Hartman
                   ` (161 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Nathan Fontenot, Tyrel Datwyler,
	Michael Ellerman, Sasha Levin

From: Nathan Fontenot <nfont@linux.vnet.ibm.com>

[ Upstream commit 85a88cabad57d26d826dd94ea34d3a785824d802 ]

When performing partition migrations all present CPUs must be online
as all present CPUs must make the H_JOIN call as part of the migration
process. Once all present CPUs make the H_JOIN call, one CPU is returned
to make the rtas call to perform the migration to the destination system.

During testing of migration and changing the SMT state we have found
instances where CPUs are offlined, as part of the SMT state change,
before they make the H_JOIN call. This results in a hung system where
every CPU is either in H_JOIN or offline.

To prevent this this patch disables CPU hotplug during the migration
process.

Signed-off-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Reviewed-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/powerpc/kernel/rtas.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c
index 9e41a9de43235..95d1264ba7952 100644
--- a/arch/powerpc/kernel/rtas.c
+++ b/arch/powerpc/kernel/rtas.c
@@ -985,6 +985,7 @@ int rtas_ibm_suspend_me(u64 handle)
 		goto out;
 	}
 
+	cpu_hotplug_disable();
 	stop_topology_update();
 
 	/* Call function on all CPUs.  One of us will make the
@@ -999,6 +1000,7 @@ int rtas_ibm_suspend_me(u64 handle)
 		printk(KERN_ERR "Error doing global join\n");
 
 	start_topology_update();
+	cpu_hotplug_enable();
 
 	/* Take down CPUs not online prior to suspend */
 	cpuret = rtas_offline_cpus_mask(offline_mask);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 265/422] powerpc: Fix duplicate const clang warning in user access code
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (263 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 264/422] powerpc/pseries: Disable CPU hotplug across migrations Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 266/422] RDMA/i40iw: Fix incorrect iterator type Greg Kroah-Hartman
                   ` (160 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Anton Blanchard, Joel Stanley,
	Nick Desaulniers, Michael Ellerman, Sasha Levin

From: Anton Blanchard <anton@samba.org>

[ Upstream commit e00d93ac9a189673028ac125a74b9bc8ae73eebc ]

This re-applies commit b91c1e3e7a6f ("powerpc: Fix duplicate const
clang warning in user access code") (Jun 2015) which was undone in
commits:
  f2ca80905929 ("powerpc/sparse: Constify the address pointer in __get_user_nosleep()") (Feb 2017)
  d466f6c5cac1 ("powerpc/sparse: Constify the address pointer in __get_user_nocheck()") (Feb 2017)
  f84ed59a612d ("powerpc/sparse: Constify the address pointer in __get_user_check()") (Feb 2017)

We see a large number of duplicate const errors in the user access
code when building with llvm/clang:

  include/linux/pagemap.h:576:8: warning: duplicate 'const' declaration specifier [-Wduplicate-decl-specifier]
        ret = __get_user(c, uaddr);

The problem is we are doing const __typeof__(*(ptr)), which will hit
the warning if ptr is marked const.

Removing const does not seem to have any effect on GCC code
generation.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Joel Stanley <joel@jms.id.au>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/powerpc/include/asm/uaccess.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h
index 1ca9e37f7cc99..38a25ff8afb76 100644
--- a/arch/powerpc/include/asm/uaccess.h
+++ b/arch/powerpc/include/asm/uaccess.h
@@ -260,7 +260,7 @@ do {								\
 ({								\
 	long __gu_err;						\
 	__long_type(*(ptr)) __gu_val;				\
-	const __typeof__(*(ptr)) __user *__gu_addr = (ptr);	\
+	__typeof__(*(ptr)) __user *__gu_addr = (ptr);	\
 	__chk_user_ptr(ptr);					\
 	if (!is_kernel_addr((unsigned long)__gu_addr))		\
 		might_fault();					\
@@ -274,7 +274,7 @@ do {								\
 ({									\
 	long __gu_err = -EFAULT;					\
 	__long_type(*(ptr)) __gu_val = 0;				\
-	const __typeof__(*(ptr)) __user *__gu_addr = (ptr);		\
+	__typeof__(*(ptr)) __user *__gu_addr = (ptr);		\
 	might_fault();							\
 	if (access_ok(VERIFY_READ, __gu_addr, (size))) {		\
 		barrier_nospec();					\
@@ -288,7 +288,7 @@ do {								\
 ({								\
 	long __gu_err;						\
 	__long_type(*(ptr)) __gu_val;				\
-	const __typeof__(*(ptr)) __user *__gu_addr = (ptr);	\
+	__typeof__(*(ptr)) __user *__gu_addr = (ptr);	\
 	__chk_user_ptr(ptr);					\
 	barrier_nospec();					\
 	__get_user_size(__gu_val, __gu_addr, (size), __gu_err);	\
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 266/422] RDMA/i40iw: Fix incorrect iterator type
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (264 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 265/422] powerpc: Fix duplicate const clang warning in user access code Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 267/422] ARM: dts: atmel: Fix I2C and SPI bus warnings Greg Kroah-Hartman
                   ` (159 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Håkon Bugge, Jason Gunthorpe,
	Sasha Levin

From: Håkon Bugge <Haakon.Bugge@oracle.com>

[ Upstream commit 802fa45cd320de319e86c93bca72abec028ba059 ]

Commit f27b4746f378 ("i40iw: add connection management code") uses an
incorrect rcu iterator, whilst holding the rtnl_lock. Since the
critical region invokes i40iw_manage_qhash(), which is a sleeping
function, the rcu locking and traversal cannot be used.

Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/hw/i40iw/i40iw_cm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/infiniband/hw/i40iw/i40iw_cm.c b/drivers/infiniband/hw/i40iw/i40iw_cm.c
index 423818a7d3330..771eb6bd07854 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_cm.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_cm.c
@@ -1689,7 +1689,7 @@ static enum i40iw_status_code i40iw_add_mqh_6(struct i40iw_device *iwdev,
 	unsigned long flags;
 
 	rtnl_lock();
-	for_each_netdev_rcu(&init_net, ip_dev) {
+	for_each_netdev(&init_net, ip_dev) {
 		if ((((rdma_vlan_dev_vlan_id(ip_dev) < I40IW_NO_VLAN) &&
 		      (rdma_vlan_dev_real_dev(ip_dev) == iwdev->netdev)) ||
 		     (ip_dev == iwdev->netdev)) && (ip_dev->flags & IFF_UP)) {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 267/422] ARM: dts: atmel: Fix I2C and SPI bus warnings
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (265 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 266/422] RDMA/i40iw: Fix incorrect iterator type Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 268/422] OPP: Protect dev_list with opp_table lock Greg Kroah-Hartman
                   ` (158 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Rob Herring, Nicolas Ferre,
	Alexandre Belloni, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit c890ecdbe93d482512a911b299bfb009780a29c2 ]

dtc has new checks for I2C and SPI buses. Fix the warnings in node names
and unit-addresses.

arch/arm/boot/dts/at91-dvk_som60.dtb: Warning (i2c_bus_reg): /ahb/apb/i2c@f0018000/eeprom@87: I2C bus unit address format error, expected "57"
arch/arm/boot/dts/at91-dvk_som60.dtb: Warning (i2c_bus_reg): /ahb/apb/i2c@f0018000/ft5426@56: I2C bus unit address format error, expected "38"
arch/arm/boot/dts/at91-vinco.dtb: Warning (i2c_bus_reg): /ahb/apb/i2c@f8024000/rtc@64: I2C bus unit address format error, expected "32"
arch/arm/boot/dts/at91sam9260ek.dtb: Warning (spi_bus_reg): /ahb/apb/spi@fffc8000/mtd_dataflash@0: SPI bus unit address format error, expected "1"
arch/arm/boot/dts/at91sam9g20ek_2mmc.dtb: Warning (spi_bus_reg): /ahb/apb/spi@fffc8000/mtd_dataflash@0: SPI bus unit address format error, expected "1"
arch/arm/boot/dts/at91sam9g20ek.dtb: Warning (spi_bus_reg): /ahb/apb/spi@fffc8000/mtd_dataflash@0: SPI bus unit address format error, expected "1"
arch/arm/boot/dts/at91sam9261ek.dtb: Warning (spi_bus_reg): /ahb/apb/spi@fffc8000/tsc2046@0: SPI bus unit address format error, expected "2"

Signed-off-by: Rob Herring <robh@kernel.org>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/at91-dvk_su60_somc.dtsi     | 4 ++--
 arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi | 4 ++--
 arch/arm/boot/dts/at91-vinco.dts              | 2 +-
 arch/arm/boot/dts/at91sam9260ek.dts           | 2 +-
 arch/arm/boot/dts/at91sam9261ek.dts           | 2 +-
 arch/arm/boot/dts/at91sam9g20ek_common.dtsi   | 2 +-
 6 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/arch/arm/boot/dts/at91-dvk_su60_somc.dtsi b/arch/arm/boot/dts/at91-dvk_su60_somc.dtsi
index bb86f17ed5ed1..21876da7c4425 100644
--- a/arch/arm/boot/dts/at91-dvk_su60_somc.dtsi
+++ b/arch/arm/boot/dts/at91-dvk_su60_somc.dtsi
@@ -70,9 +70,9 @@
 &i2c1 {
 	status = "okay";
 
-	eeprom@87 {
+	eeprom@57 {
 		compatible = "giantec,gt24c32a", "atmel,24c32";
-		reg = <87>;
+		reg = <0x57>;
 		pagesize = <32>;
 	};
 };
diff --git a/arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi b/arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi
index 4b9176dc5d029..df0f0cc575c18 100644
--- a/arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi
+++ b/arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi
@@ -59,9 +59,9 @@
 &i2c1 {
 	status = "okay";
 
-	ft5426@56 {
+	ft5426@38 {
 		compatible = "focaltech,ft5426", "edt,edt-ft5406";
-		reg = <56>;
+		reg = <0x38>;
 		pinctrl-names = "default";
 		pinctrl-0 = <&pinctrl_lcd_ctp_int>;
 
diff --git a/arch/arm/boot/dts/at91-vinco.dts b/arch/arm/boot/dts/at91-vinco.dts
index 1be9889a2b3a1..430277291e025 100644
--- a/arch/arm/boot/dts/at91-vinco.dts
+++ b/arch/arm/boot/dts/at91-vinco.dts
@@ -128,7 +128,7 @@
 			i2c2: i2c@f8024000 {
 				status = "okay";
 
-				rtc1: rtc@64 {
+				rtc1: rtc@32 {
 					compatible = "epson,rx8900";
 					reg = <0x32>;
 				};
diff --git a/arch/arm/boot/dts/at91sam9260ek.dts b/arch/arm/boot/dts/at91sam9260ek.dts
index d2b865f602932..07d1b571e6017 100644
--- a/arch/arm/boot/dts/at91sam9260ek.dts
+++ b/arch/arm/boot/dts/at91sam9260ek.dts
@@ -127,7 +127,7 @@
 
 			spi0: spi@fffc8000 {
 				cs-gpios = <0>, <&pioC 11 0>, <0>, <0>;
-				mtd_dataflash@0 {
+				mtd_dataflash@1 {
 					compatible = "atmel,at45", "atmel,dataflash";
 					spi-max-frequency = <50000000>;
 					reg = <1>;
diff --git a/arch/arm/boot/dts/at91sam9261ek.dts b/arch/arm/boot/dts/at91sam9261ek.dts
index a29fc04940762..a57f2d435dcae 100644
--- a/arch/arm/boot/dts/at91sam9261ek.dts
+++ b/arch/arm/boot/dts/at91sam9261ek.dts
@@ -160,7 +160,7 @@
 					spi-max-frequency = <15000000>;
 				};
 
-				tsc2046@0 {
+				tsc2046@2 {
 					reg = <2>;
 					compatible = "ti,ads7843";
 					interrupts-extended = <&pioC 2 IRQ_TYPE_EDGE_BOTH>;
diff --git a/arch/arm/boot/dts/at91sam9g20ek_common.dtsi b/arch/arm/boot/dts/at91sam9g20ek_common.dtsi
index 71df3adfc7ca1..ec1f17ab6753b 100644
--- a/arch/arm/boot/dts/at91sam9g20ek_common.dtsi
+++ b/arch/arm/boot/dts/at91sam9g20ek_common.dtsi
@@ -109,7 +109,7 @@
 
 			spi0: spi@fffc8000 {
 				cs-gpios = <0>, <&pioC 11 0>, <0>, <0>;
-				mtd_dataflash@0 {
+				mtd_dataflash@1 {
 					compatible = "atmel,at45", "atmel,dataflash";
 					spi-max-frequency = <50000000>;
 					reg = <1>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 268/422] OPP: Protect dev_list with opp_table lock
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (266 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 267/422] ARM: dts: atmel: Fix I2C and SPI bus warnings Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 269/422] of/unittest: Fix I2C bus unit-address error Greg Kroah-Hartman
                   ` (157 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Niklas Cassel, Viresh Kumar, Sasha Levin

From: Viresh Kumar <viresh.kumar@linaro.org>

[ Upstream commit 3d2556992a878a2210d3be498416aee39e0c32aa ]

The dev_list needs to be protected with a lock, else we may have
simultaneous access (addition/removal) to it and that would be racy.
Extend scope of the opp_table lock to protect dev_list as well.

Tested-by: Niklas Cassel <niklas.cassel@linaro.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/opp/core.c | 21 +++++++++++++++++++--
 drivers/opp/cpu.c  |  2 ++
 drivers/opp/opp.h  |  2 +-
 3 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/drivers/opp/core.c b/drivers/opp/core.c
index f3433bf47b100..14d4ef5943741 100644
--- a/drivers/opp/core.c
+++ b/drivers/opp/core.c
@@ -48,9 +48,14 @@ static struct opp_device *_find_opp_dev(const struct device *dev,
 static struct opp_table *_find_opp_table_unlocked(struct device *dev)
 {
 	struct opp_table *opp_table;
+	bool found;
 
 	list_for_each_entry(opp_table, &opp_tables, node) {
-		if (_find_opp_dev(dev, opp_table)) {
+		mutex_lock(&opp_table->lock);
+		found = !!_find_opp_dev(dev, opp_table);
+		mutex_unlock(&opp_table->lock);
+
+		if (found) {
 			_get_opp_table_kref(opp_table);
 
 			return opp_table;
@@ -766,6 +771,8 @@ struct opp_device *_add_opp_dev(const struct device *dev,
 
 	/* Initialize opp-dev */
 	opp_dev->dev = dev;
+
+	mutex_lock(&opp_table->lock);
 	list_add(&opp_dev->node, &opp_table->dev_list);
 
 	/* Create debugfs entries for the opp_table */
@@ -773,6 +780,7 @@ struct opp_device *_add_opp_dev(const struct device *dev,
 	if (ret)
 		dev_err(dev, "%s: Failed to register opp debugfs (%d)\n",
 			__func__, ret);
+	mutex_unlock(&opp_table->lock);
 
 	return opp_dev;
 }
@@ -791,6 +799,7 @@ static struct opp_table *_allocate_opp_table(struct device *dev)
 	if (!opp_table)
 		return NULL;
 
+	mutex_init(&opp_table->lock);
 	INIT_LIST_HEAD(&opp_table->dev_list);
 
 	opp_dev = _add_opp_dev(dev, opp_table);
@@ -812,7 +821,6 @@ static struct opp_table *_allocate_opp_table(struct device *dev)
 
 	BLOCKING_INIT_NOTIFIER_HEAD(&opp_table->head);
 	INIT_LIST_HEAD(&opp_table->opp_list);
-	mutex_init(&opp_table->lock);
 	kref_init(&opp_table->kref);
 
 	/* Secure the device table modification */
@@ -854,6 +862,10 @@ static void _opp_table_kref_release(struct kref *kref)
 	if (!IS_ERR(opp_table->clk))
 		clk_put(opp_table->clk);
 
+	/*
+	 * No need to take opp_table->lock here as we are guaranteed that no
+	 * references to the OPP table are taken at this point.
+	 */
 	opp_dev = list_first_entry(&opp_table->dev_list, struct opp_device,
 				   node);
 
@@ -1719,6 +1731,9 @@ void _dev_pm_opp_remove_table(struct opp_table *opp_table, struct device *dev,
 {
 	struct dev_pm_opp *opp, *tmp;
 
+	/* Protect dev_list */
+	mutex_lock(&opp_table->lock);
+
 	/* Find if opp_table manages a single device */
 	if (list_is_singular(&opp_table->dev_list)) {
 		/* Free static OPPs */
@@ -1736,6 +1751,8 @@ void _dev_pm_opp_remove_table(struct opp_table *opp_table, struct device *dev,
 	} else {
 		_remove_opp_dev(_find_opp_dev(dev, opp_table), opp_table);
 	}
+
+	mutex_unlock(&opp_table->lock);
 }
 
 void _dev_pm_opp_find_and_remove_table(struct device *dev, bool remove_all)
diff --git a/drivers/opp/cpu.c b/drivers/opp/cpu.c
index 0c09107094350..2868a022a0407 100644
--- a/drivers/opp/cpu.c
+++ b/drivers/opp/cpu.c
@@ -222,8 +222,10 @@ int dev_pm_opp_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask)
 	cpumask_clear(cpumask);
 
 	if (opp_table->shared_opp == OPP_TABLE_ACCESS_SHARED) {
+		mutex_lock(&opp_table->lock);
 		list_for_each_entry(opp_dev, &opp_table->dev_list, node)
 			cpumask_set_cpu(opp_dev->dev->id, cpumask);
+		mutex_unlock(&opp_table->lock);
 	} else {
 		cpumask_set_cpu(cpu_dev->id, cpumask);
 	}
diff --git a/drivers/opp/opp.h b/drivers/opp/opp.h
index 7c540fd063b2d..e0866b1c1f1b2 100644
--- a/drivers/opp/opp.h
+++ b/drivers/opp/opp.h
@@ -126,7 +126,7 @@ enum opp_table_access {
  * @dev_list:	list of devices that share these OPPs
  * @opp_list:	table of opps
  * @kref:	for reference count of the table.
- * @lock:	mutex protecting the opp_list.
+ * @lock:	mutex protecting the opp_list and dev_list.
  * @np:		struct device_node pointer for opp's DT node.
  * @clock_latency_ns_max: Max clock latency in nanoseconds.
  * @shared_opp: OPP is shared between multiple devices.
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 269/422] of/unittest: Fix I2C bus unit-address error
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (267 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 268/422] OPP: Protect dev_list with opp_table lock Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 270/422] libfdt: Ensure INT_MAX is defined in libfdt_env.h Greg Kroah-Hartman
                   ` (156 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Frank Rowand, Rob Herring, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit 62287dce5d0ee207b6a09a0a1abd06b61cee1094 ]

dtc has new checks for I2C buses. Fix the warnings in unit-addresses in
the unittests.

drivers/of/unittest-data/testcases.dtb: Warning (i2c_bus_reg): /testcase-data/overlay-node/test-bus/i2c-test-bus/test-unittest14/i2c@0/test-mux-dev: I2C bus unit address format error, expected "20"
drivers/of/unittest-data/overlay_15.dtb: Warning (i2c_bus_reg): /fragment@0/__overlay__/test-unittest15/i2c@0/test-mux-dev: I2C bus unit address format error, expected "20"

Cc: Frank Rowand <frowand.list@gmail.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/of/unittest-data/overlay_15.dts     | 4 ++--
 drivers/of/unittest-data/tests-overlay.dtsi | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/of/unittest-data/overlay_15.dts b/drivers/of/unittest-data/overlay_15.dts
index b98f2514df4b3..5728490474f6b 100644
--- a/drivers/of/unittest-data/overlay_15.dts
+++ b/drivers/of/unittest-data/overlay_15.dts
@@ -20,8 +20,8 @@
 			#size-cells = <0>;
 			reg = <0>;
 
-			test-mux-dev {
-				reg = <32>;
+			test-mux-dev@20 {
+				reg = <0x20>;
 				compatible = "unittest-i2c-dev";
 				status = "okay";
 			};
diff --git a/drivers/of/unittest-data/tests-overlay.dtsi b/drivers/of/unittest-data/tests-overlay.dtsi
index 25cf397b8f6b6..4ea024d908ee2 100644
--- a/drivers/of/unittest-data/tests-overlay.dtsi
+++ b/drivers/of/unittest-data/tests-overlay.dtsi
@@ -103,8 +103,8 @@
 							#size-cells = <0>;
 							reg = <0>;
 
-							test-mux-dev {
-								reg = <32>;
+							test-mux-dev@20 {
+								reg = <0x20>;
 								compatible = "unittest-i2c-dev";
 								status = "okay";
 							};
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 270/422] libfdt: Ensure INT_MAX is defined in libfdt_env.h
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (268 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 269/422] of/unittest: Fix I2C bus unit-address error Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 271/422] power: supply: twl4030_charger: fix charging current out-of-bounds Greg Kroah-Hartman
                   ` (155 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Russell King, Benjamin Herrenschmidt,
	Paul Mackerras, Michael Ellerman, linux-arm-kernel, linuxppc-dev,
	Rob Herring, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit 53dd9dce6979bc54d64a3a09a2fb20187a025be7 ]

The next update of libfdt has a new dependency on INT_MAX. Update the
instances of libfdt_env.h in the kernel to either include the necessary
header with the definition or define it locally.

Cc: Russell King <linux@armlinux.org.uk>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/compressed/libfdt_env.h | 2 ++
 arch/powerpc/boot/libfdt_env.h        | 2 ++
 include/linux/libfdt_env.h            | 1 +
 3 files changed, 5 insertions(+)

diff --git a/arch/arm/boot/compressed/libfdt_env.h b/arch/arm/boot/compressed/libfdt_env.h
index 07437816e0986..b36c0289a308e 100644
--- a/arch/arm/boot/compressed/libfdt_env.h
+++ b/arch/arm/boot/compressed/libfdt_env.h
@@ -6,6 +6,8 @@
 #include <linux/string.h>
 #include <asm/byteorder.h>
 
+#define INT_MAX			((int)(~0U>>1))
+
 typedef __be16 fdt16_t;
 typedef __be32 fdt32_t;
 typedef __be64 fdt64_t;
diff --git a/arch/powerpc/boot/libfdt_env.h b/arch/powerpc/boot/libfdt_env.h
index 2a0c8b1bf1479..2abc8e83b95e9 100644
--- a/arch/powerpc/boot/libfdt_env.h
+++ b/arch/powerpc/boot/libfdt_env.h
@@ -5,6 +5,8 @@
 #include <types.h>
 #include <string.h>
 
+#define INT_MAX			((int)(~0U>>1))
+
 #include "of.h"
 
 typedef unsigned long uintptr_t;
diff --git a/include/linux/libfdt_env.h b/include/linux/libfdt_env.h
index c6ac1fe7ec68a..edb0f0c309044 100644
--- a/include/linux/libfdt_env.h
+++ b/include/linux/libfdt_env.h
@@ -2,6 +2,7 @@
 #ifndef LIBFDT_ENV_H
 #define LIBFDT_ENV_H
 
+#include <linux/kernel.h>	/* For INT_MAX */
 #include <linux/string.h>
 
 #include <asm/byteorder.h>
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 271/422] power: supply: twl4030_charger: fix charging current out-of-bounds
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (269 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 270/422] libfdt: Ensure INT_MAX is defined in libfdt_env.h Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 272/422] power: supply: twl4030_charger: disable eoc interrupt on linear charge Greg Kroah-Hartman
                   ` (154 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andreas Kemnade, Sebastian Reichel,
	Sasha Levin

From: Andreas Kemnade <andreas@kemnade.info>

[ Upstream commit 8314c212f995bc0d06b54ad02ef0ab4089781540 ]

the charging current uses unsigned int variables, if we step back
if the current is still low, we would run into negative which
means setting the target to a huge value.
Better add checks here.

Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/power/supply/twl4030_charger.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/power/supply/twl4030_charger.c b/drivers/power/supply/twl4030_charger.c
index b6a7d9f74cf30..adcaa0a10a6f4 100644
--- a/drivers/power/supply/twl4030_charger.c
+++ b/drivers/power/supply/twl4030_charger.c
@@ -420,7 +420,8 @@ static void twl4030_current_worker(struct work_struct *data)
 
 	if (v < USB_MIN_VOLT) {
 		/* Back up and stop adjusting. */
-		bci->usb_cur -= USB_CUR_STEP;
+		if (bci->usb_cur >= USB_CUR_STEP)
+			bci->usb_cur -= USB_CUR_STEP;
 		bci->usb_cur_target = bci->usb_cur;
 	} else if (bci->usb_cur >= bci->usb_cur_target ||
 		   bci->usb_cur + USB_CUR_STEP > USB_MAX_CURRENT) {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 272/422] power: supply: twl4030_charger: disable eoc interrupt on linear charge
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (270 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 271/422] power: supply: twl4030_charger: fix charging current out-of-bounds Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 273/422] net: mvpp2: fix the number of queues per cpu for PPv2.2 Greg Kroah-Hartman
                   ` (153 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andreas Kemnade, Sebastian Reichel,
	Sasha Levin

From: Andreas Kemnade <andreas@kemnade.info>

[ Upstream commit 079cdff3d0a09c5da10ae1be35def7a116776328 ]

This avoids getting woken up from suspend after power interruptions
when the bci wrongly thinks the battery is full just because
of input current going low because of low input power

Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/power/supply/twl4030_charger.c | 27 +++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/drivers/power/supply/twl4030_charger.c b/drivers/power/supply/twl4030_charger.c
index adcaa0a10a6f4..0e202d4273fb6 100644
--- a/drivers/power/supply/twl4030_charger.c
+++ b/drivers/power/supply/twl4030_charger.c
@@ -440,6 +440,7 @@ static void twl4030_current_worker(struct work_struct *data)
 static int twl4030_charger_enable_usb(struct twl4030_bci *bci, bool enable)
 {
 	int ret;
+	u32 reg;
 
 	if (bci->usb_mode == CHARGE_OFF)
 		enable = false;
@@ -453,14 +454,38 @@ static int twl4030_charger_enable_usb(struct twl4030_bci *bci, bool enable)
 			bci->usb_enabled = 1;
 		}
 
-		if (bci->usb_mode == CHARGE_AUTO)
+		if (bci->usb_mode == CHARGE_AUTO) {
+			/* Enable interrupts now. */
+			reg = ~(u32)(TWL4030_ICHGLOW | TWL4030_ICHGEOC |
+					TWL4030_TBATOR2 | TWL4030_TBATOR1 |
+					TWL4030_BATSTS);
+			ret = twl_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, reg,
+				       TWL4030_INTERRUPTS_BCIIMR1A);
+			if (ret < 0) {
+				dev_err(bci->dev,
+					"failed to unmask interrupts: %d\n",
+					ret);
+				return ret;
+			}
 			/* forcing the field BCIAUTOUSB (BOOT_BCI[1]) to 1 */
 			ret = twl4030_clear_set_boot_bci(0, TWL4030_BCIAUTOUSB);
+		}
 
 		/* forcing USBFASTMCHG(BCIMFSTS4[2]) to 1 */
 		ret = twl4030_clear_set(TWL_MODULE_MAIN_CHARGE, 0,
 			TWL4030_USBFASTMCHG, TWL4030_BCIMFSTS4);
 		if (bci->usb_mode == CHARGE_LINEAR) {
+			/* Enable interrupts now. */
+			reg = ~(u32)(TWL4030_ICHGLOW | TWL4030_TBATOR2 |
+					TWL4030_TBATOR1 | TWL4030_BATSTS);
+			ret = twl_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, reg,
+				       TWL4030_INTERRUPTS_BCIIMR1A);
+			if (ret < 0) {
+				dev_err(bci->dev,
+					"failed to unmask interrupts: %d\n",
+					ret);
+				return ret;
+			}
 			twl4030_clear_set_boot_bci(TWL4030_BCIAUTOAC|TWL4030_CVENAC, 0);
 			/* Watch dog key: WOVF acknowledge */
 			ret = twl_i2c_write_u8(TWL_MODULE_MAIN_CHARGE, 0x33,
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 273/422] net: mvpp2: fix the number of queues per cpu for PPv2.2
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (271 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 272/422] power: supply: twl4030_charger: disable eoc interrupt on linear charge Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 274/422] net: marvell: fix return type of ndo_start_xmit function Greg Kroah-Hartman
                   ` (152 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Antoine Tenart, David S. Miller, Sasha Levin

From: Antoine Tenart <antoine.tenart@bootlin.com>

[ Upstream commit 70afb58e9856a70ff9e45760af2d0ebeb7c46ac2 ]

The Marvell PPv2.2 engine only has 8 Rx queues per CPU, while PPv2.1 has
16 of them. This patch updates the code so that the Rx queues mask width
is selected given the version of the network controller used.

Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/marvell/mvpp2/mvpp2.h      | 3 ++-
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 7 ++++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2.h b/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
index 67b9e81b7c024..46911b67b0398 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
@@ -253,7 +253,8 @@
 #define     MVPP2_ISR_ENABLE_INTERRUPT(mask)	((mask) & 0xffff)
 #define     MVPP2_ISR_DISABLE_INTERRUPT(mask)	(((mask) << 16) & 0xffff0000)
 #define MVPP2_ISR_RX_TX_CAUSE_REG(port)		(0x5480 + 4 * (port))
-#define     MVPP2_CAUSE_RXQ_OCCUP_DESC_ALL_MASK	0xffff
+#define     MVPP2_CAUSE_RXQ_OCCUP_DESC_ALL_MASK(version) \
+					((version) == MVPP21 ? 0xffff : 0xff)
 #define     MVPP2_CAUSE_TXQ_OCCUP_DESC_ALL_MASK	0xff0000
 #define     MVPP2_CAUSE_TXQ_OCCUP_DESC_ALL_OFFSET	16
 #define     MVPP2_CAUSE_RX_FIFO_OVERRUN_MASK	BIT(24)
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index 9b608d23ff7ee..29f1260535325 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -908,7 +908,7 @@ static void mvpp2_interrupts_unmask(void *arg)
 	u32 val;
 
 	val = MVPP2_CAUSE_MISC_SUM_MASK |
-		MVPP2_CAUSE_RXQ_OCCUP_DESC_ALL_MASK;
+		MVPP2_CAUSE_RXQ_OCCUP_DESC_ALL_MASK(port->priv->hw_version);
 	if (port->has_tx_irqs)
 		val |= MVPP2_CAUSE_TXQ_OCCUP_DESC_ALL_MASK;
 
@@ -928,7 +928,7 @@ mvpp2_shared_interrupt_mask_unmask(struct mvpp2_port *port, bool mask)
 	if (mask)
 		val = 0;
 	else
-		val = MVPP2_CAUSE_RXQ_OCCUP_DESC_ALL_MASK;
+		val = MVPP2_CAUSE_RXQ_OCCUP_DESC_ALL_MASK(MVPP22);
 
 	for (i = 0; i < port->nqvecs; i++) {
 		struct mvpp2_queue_vector *v = port->qvecs + i;
@@ -3059,7 +3059,8 @@ static int mvpp2_poll(struct napi_struct *napi, int budget)
 	}
 
 	/* Process RX packets */
-	cause_rx = cause_rx_tx & MVPP2_CAUSE_RXQ_OCCUP_DESC_ALL_MASK;
+	cause_rx = cause_rx_tx &
+		   MVPP2_CAUSE_RXQ_OCCUP_DESC_ALL_MASK(port->priv->hw_version);
 	cause_rx <<= qv->first_rxq;
 	cause_rx |= qv->pending_cause_rx;
 	while (cause_rx && budget > 0) {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 274/422] net: marvell: fix return type of ndo_start_xmit function
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (272 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 273/422] net: mvpp2: fix the number of queues per cpu for PPv2.2 Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 275/422] net: toshiba: " Greg Kroah-Hartman
                   ` (151 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, YueHaibing, David S. Miller, Sasha Levin

From: YueHaibing <yuehaibing@huawei.com>

[ Upstream commit f03508ce3f9650148262c176e0178413e16c902b ]

The method ndo_start_xmit() is defined as returning an 'netdev_tx_t',
which is a typedef for an enum type, so make sure the implementation in
this driver has returns 'netdev_tx_t' value, and change the function
return type to netdev_tx_t.

Found by coccinelle.

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/marvell/mvneta.c           | 2 +-
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 2 +-
 drivers/net/ethernet/marvell/pxa168_eth.c       | 3 ++-
 3 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index 28762314353f9..4313bbb2396f4 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -2394,7 +2394,7 @@ error:
 }
 
 /* Main tx processing */
-static int mvneta_tx(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t mvneta_tx(struct sk_buff *skb, struct net_device *dev)
 {
 	struct mvneta_port *pp = netdev_priv(dev);
 	u16 txq_id = skb_get_queue_mapping(skb);
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index 29f1260535325..1cc0e8fda4d5e 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -2901,7 +2901,7 @@ release:
 }
 
 /* Main tx processing */
-static int mvpp2_tx(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t mvpp2_tx(struct sk_buff *skb, struct net_device *dev)
 {
 	struct mvpp2_port *port = netdev_priv(dev);
 	struct mvpp2_tx_queue *txq, *aggr_txq;
diff --git a/drivers/net/ethernet/marvell/pxa168_eth.c b/drivers/net/ethernet/marvell/pxa168_eth.c
index 3a9730612a704..ff2fea0f8b751 100644
--- a/drivers/net/ethernet/marvell/pxa168_eth.c
+++ b/drivers/net/ethernet/marvell/pxa168_eth.c
@@ -1260,7 +1260,8 @@ static int pxa168_rx_poll(struct napi_struct *napi, int budget)
 	return work_done;
 }
 
-static int pxa168_eth_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t
+pxa168_eth_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct pxa168_eth_private *pep = netdev_priv(dev);
 	struct net_device_stats *stats = &dev->stats;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 275/422] net: toshiba: fix return type of ndo_start_xmit function
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (273 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 274/422] net: marvell: fix return type of ndo_start_xmit function Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 276/422] net: xilinx: " Greg Kroah-Hartman
                   ` (150 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, YueHaibing, David S. Miller, Sasha Levin

From: YueHaibing <yuehaibing@huawei.com>

[ Upstream commit bacade822524e02f662d88f784d2ae821a5546fb ]

The method ndo_start_xmit() is defined as returning an 'netdev_tx_t',
which is a typedef for an enum type, so make sure the implementation in
this driver has returns 'netdev_tx_t' value, and change the function
return type to netdev_tx_t.

Found by coccinelle.

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/toshiba/ps3_gelic_net.c | 4 ++--
 drivers/net/ethernet/toshiba/ps3_gelic_net.h | 2 +-
 drivers/net/ethernet/toshiba/spider_net.c    | 4 ++--
 drivers/net/ethernet/toshiba/tc35815.c       | 6 ++++--
 4 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/toshiba/ps3_gelic_net.c b/drivers/net/ethernet/toshiba/ps3_gelic_net.c
index 88d74aef218a2..75237c81c63d6 100644
--- a/drivers/net/ethernet/toshiba/ps3_gelic_net.c
+++ b/drivers/net/ethernet/toshiba/ps3_gelic_net.c
@@ -845,9 +845,9 @@ static int gelic_card_kick_txdma(struct gelic_card *card,
  * @skb: packet to send out
  * @netdev: interface device structure
  *
- * returns 0 on success, <0 on failure
+ * returns NETDEV_TX_OK on success, NETDEV_TX_BUSY on failure
  */
-int gelic_net_xmit(struct sk_buff *skb, struct net_device *netdev)
+netdev_tx_t gelic_net_xmit(struct sk_buff *skb, struct net_device *netdev)
 {
 	struct gelic_card *card = netdev_card(netdev);
 	struct gelic_descr *descr;
diff --git a/drivers/net/ethernet/toshiba/ps3_gelic_net.h b/drivers/net/ethernet/toshiba/ps3_gelic_net.h
index 003d0452d9cb1..fbbf9b54b173b 100644
--- a/drivers/net/ethernet/toshiba/ps3_gelic_net.h
+++ b/drivers/net/ethernet/toshiba/ps3_gelic_net.h
@@ -370,7 +370,7 @@ void gelic_card_up(struct gelic_card *card);
 void gelic_card_down(struct gelic_card *card);
 int gelic_net_open(struct net_device *netdev);
 int gelic_net_stop(struct net_device *netdev);
-int gelic_net_xmit(struct sk_buff *skb, struct net_device *netdev);
+netdev_tx_t gelic_net_xmit(struct sk_buff *skb, struct net_device *netdev);
 void gelic_net_set_multi(struct net_device *netdev);
 void gelic_net_tx_timeout(struct net_device *netdev);
 int gelic_net_setup_netdev(struct net_device *netdev, struct gelic_card *card);
diff --git a/drivers/net/ethernet/toshiba/spider_net.c b/drivers/net/ethernet/toshiba/spider_net.c
index d925b82039966..23417266b7ecc 100644
--- a/drivers/net/ethernet/toshiba/spider_net.c
+++ b/drivers/net/ethernet/toshiba/spider_net.c
@@ -880,9 +880,9 @@ out:
  * @skb: packet to send out
  * @netdev: interface device structure
  *
- * returns 0 on success, !0 on failure
+ * returns NETDEV_TX_OK on success, NETDEV_TX_BUSY on failure
  */
-static int
+static netdev_tx_t
 spider_net_xmit(struct sk_buff *skb, struct net_device *netdev)
 {
 	int cnt;
diff --git a/drivers/net/ethernet/toshiba/tc35815.c b/drivers/net/ethernet/toshiba/tc35815.c
index 9146068979d2c..03afc4d8c3ec1 100644
--- a/drivers/net/ethernet/toshiba/tc35815.c
+++ b/drivers/net/ethernet/toshiba/tc35815.c
@@ -474,7 +474,8 @@ static void free_rxbuf_skb(struct pci_dev *hwdev, struct sk_buff *skb, dma_addr_
 /* Index to functions, as function prototypes. */
 
 static int	tc35815_open(struct net_device *dev);
-static int	tc35815_send_packet(struct sk_buff *skb, struct net_device *dev);
+static netdev_tx_t	tc35815_send_packet(struct sk_buff *skb,
+					    struct net_device *dev);
 static irqreturn_t	tc35815_interrupt(int irq, void *dev_id);
 static int	tc35815_rx(struct net_device *dev, int limit);
 static int	tc35815_poll(struct napi_struct *napi, int budget);
@@ -1248,7 +1249,8 @@ tc35815_open(struct net_device *dev)
  * invariant will hold if you make sure that the netif_*_queue()
  * calls are done at the proper times.
  */
-static int tc35815_send_packet(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t
+tc35815_send_packet(struct sk_buff *skb, struct net_device *dev)
 {
 	struct tc35815_local *lp = netdev_priv(dev);
 	struct TxFD *txfd;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 276/422] net: xilinx: fix return type of ndo_start_xmit function
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (274 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 275/422] net: toshiba: " Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 277/422] net: broadcom: " Greg Kroah-Hartman
                   ` (149 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, YueHaibing, David S. Miller, Sasha Levin

From: YueHaibing <yuehaibing@huawei.com>

[ Upstream commit 81255af8d9d5565004792c295dde49344df450ca ]

The method ndo_start_xmit() is defined as returning an 'netdev_tx_t',
which is a typedef for an enum type, so make sure the implementation in
this driver has returns 'netdev_tx_t' value, and change the function
return type to netdev_tx_t.

Found by coccinelle.

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/xilinx/ll_temac_main.c       | 3 ++-
 drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 3 ++-
 drivers/net/ethernet/xilinx/xilinx_emaclite.c     | 9 +++++----
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/xilinx/ll_temac_main.c b/drivers/net/ethernet/xilinx/ll_temac_main.c
index 60abc9250f56a..2241f98970926 100644
--- a/drivers/net/ethernet/xilinx/ll_temac_main.c
+++ b/drivers/net/ethernet/xilinx/ll_temac_main.c
@@ -674,7 +674,8 @@ static inline int temac_check_tx_bd_space(struct temac_local *lp, int num_frag)
 	return 0;
 }
 
-static int temac_start_xmit(struct sk_buff *skb, struct net_device *ndev)
+static netdev_tx_t
+temac_start_xmit(struct sk_buff *skb, struct net_device *ndev)
 {
 	struct temac_local *lp = netdev_priv(ndev);
 	struct cdmac_bd *cur_p;
diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
index 66b30ebd45ee8..28764268a44f8 100644
--- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
+++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
@@ -657,7 +657,8 @@ static inline int axienet_check_tx_bd_space(struct axienet_local *lp,
  * start the transmission. Additionally if checksum offloading is supported,
  * it populates AXI Stream Control fields with appropriate values.
  */
-static int axienet_start_xmit(struct sk_buff *skb, struct net_device *ndev)
+static netdev_tx_t
+axienet_start_xmit(struct sk_buff *skb, struct net_device *ndev)
 {
 	u32 ii;
 	u32 num_frag;
diff --git a/drivers/net/ethernet/xilinx/xilinx_emaclite.c b/drivers/net/ethernet/xilinx/xilinx_emaclite.c
index 42f1f518dad69..c77c81eb7ab3b 100644
--- a/drivers/net/ethernet/xilinx/xilinx_emaclite.c
+++ b/drivers/net/ethernet/xilinx/xilinx_emaclite.c
@@ -1020,9 +1020,10 @@ static int xemaclite_close(struct net_device *dev)
  * deferred and the Tx queue is stopped so that the deferred socket buffer can
  * be transmitted when the Emaclite device is free to transmit data.
  *
- * Return:	0, always.
+ * Return:	NETDEV_TX_OK, always.
  */
-static int xemaclite_send(struct sk_buff *orig_skb, struct net_device *dev)
+static netdev_tx_t
+xemaclite_send(struct sk_buff *orig_skb, struct net_device *dev)
 {
 	struct net_local *lp = netdev_priv(dev);
 	struct sk_buff *new_skb;
@@ -1044,7 +1045,7 @@ static int xemaclite_send(struct sk_buff *orig_skb, struct net_device *dev)
 		/* Take the time stamp now, since we can't do this in an ISR. */
 		skb_tx_timestamp(new_skb);
 		spin_unlock_irqrestore(&lp->reset_lock, flags);
-		return 0;
+		return NETDEV_TX_OK;
 	}
 	spin_unlock_irqrestore(&lp->reset_lock, flags);
 
@@ -1053,7 +1054,7 @@ static int xemaclite_send(struct sk_buff *orig_skb, struct net_device *dev)
 	dev->stats.tx_bytes += len;
 	dev_consume_skb_any(new_skb);
 
-	return 0;
+	return NETDEV_TX_OK;
 }
 
 /**
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 277/422] net: broadcom: fix return type of ndo_start_xmit function
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (275 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 276/422] net: xilinx: " Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 278/422] net: amd: " Greg Kroah-Hartman
                   ` (148 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, YueHaibing, David S. Miller, Sasha Levin

From: YueHaibing <yuehaibing@huawei.com>

[ Upstream commit 0c13b8d1aee87c35a2fbc1d85a1f766227cf54b5 ]

The method ndo_start_xmit() is defined as returning an 'netdev_tx_t',
which is a typedef for an enum type, so make sure the implementation in
this driver has returns 'netdev_tx_t' value, and change the function
return type to netdev_tx_t.

Found by coccinelle.

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/broadcom/bcm63xx_enet.c | 5 +++--
 drivers/net/ethernet/broadcom/sb1250-mac.c   | 4 ++--
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bcm63xx_enet.c b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
index 897302adc38ec..50f8a377596e1 100644
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
@@ -568,12 +568,13 @@ static irqreturn_t bcm_enet_isr_dma(int irq, void *dev_id)
 /*
  * tx request callback
  */
-static int bcm_enet_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t
+bcm_enet_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct bcm_enet_priv *priv;
 	struct bcm_enet_desc *desc;
 	u32 len_stat;
-	int ret;
+	netdev_tx_t ret;
 
 	priv = netdev_priv(dev);
 
diff --git a/drivers/net/ethernet/broadcom/sb1250-mac.c b/drivers/net/ethernet/broadcom/sb1250-mac.c
index ef4a0c326736d..7e3f9642ba6c5 100644
--- a/drivers/net/ethernet/broadcom/sb1250-mac.c
+++ b/drivers/net/ethernet/broadcom/sb1250-mac.c
@@ -299,7 +299,7 @@ static enum sbmac_state sbmac_set_channel_state(struct sbmac_softc *,
 static void sbmac_promiscuous_mode(struct sbmac_softc *sc, int onoff);
 static uint64_t sbmac_addr2reg(unsigned char *ptr);
 static irqreturn_t sbmac_intr(int irq, void *dev_instance);
-static int sbmac_start_tx(struct sk_buff *skb, struct net_device *dev);
+static netdev_tx_t sbmac_start_tx(struct sk_buff *skb, struct net_device *dev);
 static void sbmac_setmulti(struct sbmac_softc *sc);
 static int sbmac_init(struct platform_device *pldev, long long base);
 static int sbmac_set_speed(struct sbmac_softc *s, enum sbmac_speed speed);
@@ -2028,7 +2028,7 @@ static irqreturn_t sbmac_intr(int irq,void *dev_instance)
  *  Return value:
  *  	   nothing
  ********************************************************************* */
-static int sbmac_start_tx(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t sbmac_start_tx(struct sk_buff *skb, struct net_device *dev)
 {
 	struct sbmac_softc *sc = netdev_priv(dev);
 	unsigned long flags;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 278/422] net: amd: fix return type of ndo_start_xmit function
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (276 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 277/422] net: broadcom: " Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 279/422] net: sun: " Greg Kroah-Hartman
                   ` (147 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, YueHaibing, David S. Miller, Sasha Levin

From: YueHaibing <yuehaibing@huawei.com>

[ Upstream commit fe72352e37ae8478f4c97975a9831f0c50f22e73 ]

The method ndo_start_xmit() is defined as returning an 'netdev_tx_t',
which is a typedef for an enum type, so make sure the implementation in
this driver has returns 'netdev_tx_t' value, and change the function
return type to netdev_tx_t.

Found by coccinelle.

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/amd/am79c961a.c     | 2 +-
 drivers/net/ethernet/amd/atarilance.c    | 6 ++++--
 drivers/net/ethernet/amd/declance.c      | 2 +-
 drivers/net/ethernet/amd/sun3lance.c     | 6 ++++--
 drivers/net/ethernet/amd/sunlance.c      | 2 +-
 drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 4 ++--
 6 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/amd/am79c961a.c b/drivers/net/ethernet/amd/am79c961a.c
index 01d132c02ff90..265039c57023f 100644
--- a/drivers/net/ethernet/amd/am79c961a.c
+++ b/drivers/net/ethernet/amd/am79c961a.c
@@ -440,7 +440,7 @@ static void am79c961_timeout(struct net_device *dev)
 /*
  * Transmit a packet
  */
-static int
+static netdev_tx_t
 am79c961_sendpacket(struct sk_buff *skb, struct net_device *dev)
 {
 	struct dev_priv *priv = netdev_priv(dev);
diff --git a/drivers/net/ethernet/amd/atarilance.c b/drivers/net/ethernet/amd/atarilance.c
index c5b81268c2849..d3d44e07afbc0 100644
--- a/drivers/net/ethernet/amd/atarilance.c
+++ b/drivers/net/ethernet/amd/atarilance.c
@@ -339,7 +339,8 @@ static unsigned long lance_probe1( struct net_device *dev, struct lance_addr
                                    *init_rec );
 static int lance_open( struct net_device *dev );
 static void lance_init_ring( struct net_device *dev );
-static int lance_start_xmit( struct sk_buff *skb, struct net_device *dev );
+static netdev_tx_t lance_start_xmit(struct sk_buff *skb,
+				    struct net_device *dev);
 static irqreturn_t lance_interrupt( int irq, void *dev_id );
 static int lance_rx( struct net_device *dev );
 static int lance_close( struct net_device *dev );
@@ -769,7 +770,8 @@ static void lance_tx_timeout (struct net_device *dev)
 
 /* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */
 
-static int lance_start_xmit( struct sk_buff *skb, struct net_device *dev )
+static netdev_tx_t
+lance_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct lance_private *lp = netdev_priv(dev);
 	struct lance_ioreg	 *IO = lp->iobase;
diff --git a/drivers/net/ethernet/amd/declance.c b/drivers/net/ethernet/amd/declance.c
index 00332a1ea84b9..9f23703dd509f 100644
--- a/drivers/net/ethernet/amd/declance.c
+++ b/drivers/net/ethernet/amd/declance.c
@@ -894,7 +894,7 @@ static void lance_tx_timeout(struct net_device *dev)
 	netif_wake_queue(dev);
 }
 
-static int lance_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t lance_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct lance_private *lp = netdev_priv(dev);
 	volatile struct lance_regs *ll = lp->ll;
diff --git a/drivers/net/ethernet/amd/sun3lance.c b/drivers/net/ethernet/amd/sun3lance.c
index 77b1db2677309..da7e3d4f41661 100644
--- a/drivers/net/ethernet/amd/sun3lance.c
+++ b/drivers/net/ethernet/amd/sun3lance.c
@@ -236,7 +236,8 @@ struct lance_private {
 static int lance_probe( struct net_device *dev);
 static int lance_open( struct net_device *dev );
 static void lance_init_ring( struct net_device *dev );
-static int lance_start_xmit( struct sk_buff *skb, struct net_device *dev );
+static netdev_tx_t lance_start_xmit(struct sk_buff *skb,
+				    struct net_device *dev);
 static irqreturn_t lance_interrupt( int irq, void *dev_id);
 static int lance_rx( struct net_device *dev );
 static int lance_close( struct net_device *dev );
@@ -511,7 +512,8 @@ static void lance_init_ring( struct net_device *dev )
 }
 
 
-static int lance_start_xmit( struct sk_buff *skb, struct net_device *dev )
+static netdev_tx_t
+lance_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct lance_private *lp = netdev_priv(dev);
 	int entry, len;
diff --git a/drivers/net/ethernet/amd/sunlance.c b/drivers/net/ethernet/amd/sunlance.c
index 19f89d9b1781f..9d48998268233 100644
--- a/drivers/net/ethernet/amd/sunlance.c
+++ b/drivers/net/ethernet/amd/sunlance.c
@@ -1106,7 +1106,7 @@ static void lance_tx_timeout(struct net_device *dev)
 	netif_wake_queue(dev);
 }
 
-static int lance_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t lance_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct lance_private *lp = netdev_priv(dev);
 	int entry, skblen, len;
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
index 24f1053b8785e..d96a84a62d78d 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
@@ -2009,7 +2009,7 @@ static int xgbe_close(struct net_device *netdev)
 	return 0;
 }
 
-static int xgbe_xmit(struct sk_buff *skb, struct net_device *netdev)
+static netdev_tx_t xgbe_xmit(struct sk_buff *skb, struct net_device *netdev)
 {
 	struct xgbe_prv_data *pdata = netdev_priv(netdev);
 	struct xgbe_hw_if *hw_if = &pdata->hw_if;
@@ -2018,7 +2018,7 @@ static int xgbe_xmit(struct sk_buff *skb, struct net_device *netdev)
 	struct xgbe_ring *ring;
 	struct xgbe_packet_data *packet;
 	struct netdev_queue *txq;
-	int ret;
+	netdev_tx_t ret;
 
 	DBGPR("-->xgbe_xmit: skb->len = %d\n", skb->len);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 279/422] net: sun: fix return type of ndo_start_xmit function
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (277 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 278/422] net: amd: " Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 280/422] net: hns3: Fix for setting speed for phy failed problem Greg Kroah-Hartman
                   ` (146 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, YueHaibing, Shannon Nelson,
	David S. Miller, Sasha Levin

From: YueHaibing <yuehaibing@huawei.com>

[ Upstream commit 0e0cc31f6999df18bb5cfd0bd83c892ed5633975 ]

The method ndo_start_xmit() is defined as returning an 'netdev_tx_t',
which is a typedef for an enum type, but the implementation in this
driver returns an 'int'.

Found by coccinelle.

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Acked-by: Shannon Nelson <shannon.nelson@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/sun/ldmvsw.c         |  2 +-
 drivers/net/ethernet/sun/sunbmac.c        |  3 ++-
 drivers/net/ethernet/sun/sunqe.c          |  2 +-
 drivers/net/ethernet/sun/sunvnet.c        |  2 +-
 drivers/net/ethernet/sun/sunvnet_common.c | 14 ++++++++------
 drivers/net/ethernet/sun/sunvnet_common.h |  7 ++++---
 6 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/drivers/net/ethernet/sun/ldmvsw.c b/drivers/net/ethernet/sun/ldmvsw.c
index d42f47f6c632f..644e42c181ee6 100644
--- a/drivers/net/ethernet/sun/ldmvsw.c
+++ b/drivers/net/ethernet/sun/ldmvsw.c
@@ -113,7 +113,7 @@ static u16 vsw_select_queue(struct net_device *dev, struct sk_buff *skb,
 }
 
 /* Wrappers to common functions */
-static int vsw_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t vsw_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	return sunvnet_start_xmit_common(skb, dev, vsw_tx_port_find);
 }
diff --git a/drivers/net/ethernet/sun/sunbmac.c b/drivers/net/ethernet/sun/sunbmac.c
index f047b27971564..720b7ac77f3b3 100644
--- a/drivers/net/ethernet/sun/sunbmac.c
+++ b/drivers/net/ethernet/sun/sunbmac.c
@@ -950,7 +950,8 @@ static void bigmac_tx_timeout(struct net_device *dev)
 }
 
 /* Put a packet on the wire. */
-static int bigmac_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t
+bigmac_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct bigmac *bp = netdev_priv(dev);
 	int len, entry;
diff --git a/drivers/net/ethernet/sun/sunqe.c b/drivers/net/ethernet/sun/sunqe.c
index 7fe0d5e339221..1468fa0a54e9b 100644
--- a/drivers/net/ethernet/sun/sunqe.c
+++ b/drivers/net/ethernet/sun/sunqe.c
@@ -570,7 +570,7 @@ out:
 }
 
 /* Get a packet queued to go onto the wire. */
-static int qe_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t qe_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct sunqe *qep = netdev_priv(dev);
 	struct sunqe_buffers *qbufs = qep->buffers;
diff --git a/drivers/net/ethernet/sun/sunvnet.c b/drivers/net/ethernet/sun/sunvnet.c
index 12539b357a784..590172818b922 100644
--- a/drivers/net/ethernet/sun/sunvnet.c
+++ b/drivers/net/ethernet/sun/sunvnet.c
@@ -247,7 +247,7 @@ static u16 vnet_select_queue(struct net_device *dev, struct sk_buff *skb,
 }
 
 /* Wrappers to common functions */
-static int vnet_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t vnet_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	return sunvnet_start_xmit_common(skb, dev, vnet_tx_port_find);
 }
diff --git a/drivers/net/ethernet/sun/sunvnet_common.c b/drivers/net/ethernet/sun/sunvnet_common.c
index d8f4c3f281505..baa3088b475c7 100644
--- a/drivers/net/ethernet/sun/sunvnet_common.c
+++ b/drivers/net/ethernet/sun/sunvnet_common.c
@@ -1216,9 +1216,10 @@ static inline struct sk_buff *vnet_skb_shape(struct sk_buff *skb, int ncookies)
 	return skb;
 }
 
-static int vnet_handle_offloads(struct vnet_port *port, struct sk_buff *skb,
-				struct vnet_port *(*vnet_tx_port)
-				(struct sk_buff *, struct net_device *))
+static netdev_tx_t
+vnet_handle_offloads(struct vnet_port *port, struct sk_buff *skb,
+		     struct vnet_port *(*vnet_tx_port)
+		     (struct sk_buff *, struct net_device *))
 {
 	struct net_device *dev = VNET_PORT_TO_NET_DEVICE(port);
 	struct vio_dring_state *dr = &port->vio.drings[VIO_DRIVER_TX_RING];
@@ -1321,9 +1322,10 @@ out_dropped:
 	return NETDEV_TX_OK;
 }
 
-int sunvnet_start_xmit_common(struct sk_buff *skb, struct net_device *dev,
-			      struct vnet_port *(*vnet_tx_port)
-			      (struct sk_buff *, struct net_device *))
+netdev_tx_t
+sunvnet_start_xmit_common(struct sk_buff *skb, struct net_device *dev,
+			  struct vnet_port *(*vnet_tx_port)
+			  (struct sk_buff *, struct net_device *))
 {
 	struct vnet_port *port = NULL;
 	struct vio_dring_state *dr;
diff --git a/drivers/net/ethernet/sun/sunvnet_common.h b/drivers/net/ethernet/sun/sunvnet_common.h
index 1ea0b016580a4..2b808d2482d60 100644
--- a/drivers/net/ethernet/sun/sunvnet_common.h
+++ b/drivers/net/ethernet/sun/sunvnet_common.h
@@ -136,9 +136,10 @@ int sunvnet_close_common(struct net_device *dev);
 void sunvnet_set_rx_mode_common(struct net_device *dev, struct vnet *vp);
 int sunvnet_set_mac_addr_common(struct net_device *dev, void *p);
 void sunvnet_tx_timeout_common(struct net_device *dev);
-int sunvnet_start_xmit_common(struct sk_buff *skb, struct net_device *dev,
-			   struct vnet_port *(*vnet_tx_port)
-			   (struct sk_buff *, struct net_device *));
+netdev_tx_t
+sunvnet_start_xmit_common(struct sk_buff *skb, struct net_device *dev,
+			  struct vnet_port *(*vnet_tx_port)
+			  (struct sk_buff *, struct net_device *));
 #ifdef CONFIG_NET_POLL_CONTROLLER
 void sunvnet_poll_controller_common(struct net_device *dev, struct vnet *vp);
 #endif
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 280/422] net: hns3: Fix for setting speed for phy failed problem
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (278 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 279/422] net: sun: " Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 281/422] net: hns3: Fix cmdq registers initialization issue for vf Greg Kroah-Hartman
                   ` (145 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Fuyun Liang, Peng Li, Salil Mehta,
	David S. Miller, Sasha Levin

From: Fuyun Liang <liangfuyun1@huawei.com>

[ Upstream commit fd8133148eb6a733f9cfdaecd4d99f378e21d582 ]

The function of genphy_read_status is that reading phy information
from HW and using these information to update SW variable. If user
is using ethtool to setting the speed of phy and service task is calling
by hclge_get_mac_phy_link, the result of speed setting is uncertain.
Because ethtool cmd will modified phydev and hclge_get_mac_phy_link also
will modified phydev.

Because phy state machine will update phy link periodically, we can
just use phydev->link to check the link status. This patch removes
function call of genphy_read_status. To ensure accuracy, this patch
adds a phy state check. If phy state is not PHY_RUNNING, we consider
link is down. Because in some scenarios, phydev->link may be link up,
but phy state is not PHY_RUNNING. This is just an intermediate state.
In fact, the link is not ready yet.

Fixes: 46a3df9f9718 ("net: hns3: Add HNS3 Acceleration Engine & Compatibility Layer Support")
Signed-off-by: Fuyun Liang <liangfuyun1@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index 0cf33fa351df3..6889e83a55707 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -2367,7 +2367,7 @@ static int hclge_get_mac_phy_link(struct hclge_dev *hdev)
 	mac_state = hclge_get_mac_link_status(hdev);
 
 	if (hdev->hw.mac.phydev) {
-		if (!genphy_read_status(hdev->hw.mac.phydev))
+		if (hdev->hw.mac.phydev->state == PHY_RUNNING)
 			link_stat = mac_state &
 				hdev->hw.mac.phydev->link;
 		else
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 281/422] net: hns3: Fix cmdq registers initialization issue for vf
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (279 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 280/422] net: hns3: Fix for setting speed for phy failed problem Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:17 ` [PATCH 4.19 282/422] net: hns3: Clear client pointer when initialize client failed or unintialize finished Greg Kroah-Hartman
                   ` (144 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jian Shen, Peng Li, Salil Mehta,
	David S. Miller, Sasha Levin

From: Jian Shen <shenjian15@huawei.com>

[ Upstream commit 37dc9cdbdc1bd64bd3b6ea285a9c2e811404dc82 ]

According to hardware's description, the head pointer register should
be written before the tail pointer register while initializing the vf
command queue. Otherwise, it may trigger an interrupt even though there
is no command received.

Fixes: fedd0c15d288 ("net: hns3: Add HNS3 VF IMP(Integrated Management Proc) cmd interface")
Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_cmd.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_cmd.c b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_cmd.c
index fb471fe2c4946..d8c0cc8e04c9d 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_cmd.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_cmd.c
@@ -132,8 +132,8 @@ static int hclgevf_init_cmd_queue(struct hclgevf_dev *hdev,
 		reg_val |= HCLGEVF_NIC_CMQ_ENABLE;
 		hclgevf_write_dev(hw, HCLGEVF_NIC_CSQ_DEPTH_REG, reg_val);
 
-		hclgevf_write_dev(hw, HCLGEVF_NIC_CSQ_TAIL_REG, 0);
 		hclgevf_write_dev(hw, HCLGEVF_NIC_CSQ_HEAD_REG, 0);
+		hclgevf_write_dev(hw, HCLGEVF_NIC_CSQ_TAIL_REG, 0);
 		break;
 	case HCLGEVF_TYPE_CRQ:
 		reg_val = (u32)ring->desc_dma_addr;
@@ -145,8 +145,8 @@ static int hclgevf_init_cmd_queue(struct hclgevf_dev *hdev,
 		reg_val |= HCLGEVF_NIC_CMQ_ENABLE;
 		hclgevf_write_dev(hw, HCLGEVF_NIC_CRQ_DEPTH_REG, reg_val);
 
-		hclgevf_write_dev(hw, HCLGEVF_NIC_CRQ_TAIL_REG, 0);
 		hclgevf_write_dev(hw, HCLGEVF_NIC_CRQ_HEAD_REG, 0);
+		hclgevf_write_dev(hw, HCLGEVF_NIC_CRQ_TAIL_REG, 0);
 		break;
 	}
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 282/422] net: hns3: Clear client pointer when initialize client failed or unintialize finished
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (280 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 281/422] net: hns3: Fix cmdq registers initialization issue for vf Greg Kroah-Hartman
@ 2019-11-19  5:17 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 283/422] net: hns3: Fix client initialize state issue when roce client initialize failed Greg Kroah-Hartman
                   ` (143 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jian Shen, Peng Li, Salil Mehta,
	David S. Miller, Sasha Levin

From: Jian Shen <shenjian15@huawei.com>

[ Upstream commit 49dd80541c75c2f21c28bbbdd958e993b55bf97b ]

If initialize client failed or finish uninitializing client, we should
clear the client pointer. It may cause unexpected result when use
uninitialized client. Meanwhile, we also should check whether client
exist when uninitialize it.

Fixes: 46a3df9f9718 ("net: hns3: Add HNS3 Acceleration Engine & Compatibility Layer Support")
Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../hisilicon/hns3/hns3pf/hclge_main.c        | 25 +++++++++-----
 .../hisilicon/hns3/hns3vf/hclgevf_main.c      | 33 ++++++++++++++-----
 2 files changed, 41 insertions(+), 17 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index 6889e83a55707..c5e617fdb809f 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -5476,13 +5476,13 @@ static int hclge_init_client_instance(struct hnae3_client *client,
 			vport->nic.client = client;
 			ret = client->ops->init_instance(&vport->nic);
 			if (ret)
-				return ret;
+				goto clear_nic;
 
 			ret = hclge_init_instance_hw(hdev);
 			if (ret) {
 			        client->ops->uninit_instance(&vport->nic,
 			                                     0);
-			        return ret;
+				goto clear_nic;
 			}
 
 			if (hdev->roce_client &&
@@ -5491,11 +5491,11 @@ static int hclge_init_client_instance(struct hnae3_client *client,
 
 				ret = hclge_init_roce_base_info(vport);
 				if (ret)
-					return ret;
+					goto clear_roce;
 
 				ret = rc->ops->init_instance(&vport->roce);
 				if (ret)
-					return ret;
+					goto clear_roce;
 			}
 
 			break;
@@ -5505,7 +5505,7 @@ static int hclge_init_client_instance(struct hnae3_client *client,
 
 			ret = client->ops->init_instance(&vport->nic);
 			if (ret)
-				return ret;
+				goto clear_nic;
 
 			break;
 		case HNAE3_CLIENT_ROCE:
@@ -5517,16 +5517,25 @@ static int hclge_init_client_instance(struct hnae3_client *client,
 			if (hdev->roce_client && hdev->nic_client) {
 				ret = hclge_init_roce_base_info(vport);
 				if (ret)
-					return ret;
+					goto clear_roce;
 
 				ret = client->ops->init_instance(&vport->roce);
 				if (ret)
-					return ret;
+					goto clear_roce;
 			}
 		}
 	}
 
 	return 0;
+
+clear_nic:
+	hdev->nic_client = NULL;
+	vport->nic.client = NULL;
+	return ret;
+clear_roce:
+	hdev->roce_client = NULL;
+	vport->roce.client = NULL;
+	return ret;
 }
 
 static void hclge_uninit_client_instance(struct hnae3_client *client,
@@ -5546,7 +5555,7 @@ static void hclge_uninit_client_instance(struct hnae3_client *client,
 		}
 		if (client->type == HNAE3_CLIENT_ROCE)
 			return;
-		if (client->ops->uninit_instance) {
+		if (hdev->nic_client && client->ops->uninit_instance) {
 			hclge_uninit_instance_hw(hdev);
 			client->ops->uninit_instance(&vport->nic, 0);
 			hdev->nic_client = NULL;
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c
index 5570fb5dc2eb4..83fcdd326de71 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c
@@ -1629,17 +1629,17 @@ static int hclgevf_init_client_instance(struct hnae3_client *client,
 
 		ret = client->ops->init_instance(&hdev->nic);
 		if (ret)
-			return ret;
+			goto clear_nic;
 
 		if (hdev->roce_client && hnae3_dev_roce_supported(hdev)) {
 			struct hnae3_client *rc = hdev->roce_client;
 
 			ret = hclgevf_init_roce_base_info(hdev);
 			if (ret)
-				return ret;
+				goto clear_roce;
 			ret = rc->ops->init_instance(&hdev->roce);
 			if (ret)
-				return ret;
+				goto clear_roce;
 		}
 		break;
 	case HNAE3_CLIENT_UNIC:
@@ -1648,7 +1648,7 @@ static int hclgevf_init_client_instance(struct hnae3_client *client,
 
 		ret = client->ops->init_instance(&hdev->nic);
 		if (ret)
-			return ret;
+			goto clear_nic;
 		break;
 	case HNAE3_CLIENT_ROCE:
 		if (hnae3_dev_roce_supported(hdev)) {
@@ -1659,15 +1659,24 @@ static int hclgevf_init_client_instance(struct hnae3_client *client,
 		if (hdev->roce_client && hdev->nic_client) {
 			ret = hclgevf_init_roce_base_info(hdev);
 			if (ret)
-				return ret;
+				goto clear_roce;
 
 			ret = client->ops->init_instance(&hdev->roce);
 			if (ret)
-				return ret;
+				goto clear_roce;
 		}
 	}
 
 	return 0;
+
+clear_nic:
+	hdev->nic_client = NULL;
+	hdev->nic.client = NULL;
+	return ret;
+clear_roce:
+	hdev->roce_client = NULL;
+	hdev->roce.client = NULL;
+	return ret;
 }
 
 static void hclgevf_uninit_client_instance(struct hnae3_client *client,
@@ -1676,13 +1685,19 @@ static void hclgevf_uninit_client_instance(struct hnae3_client *client,
 	struct hclgevf_dev *hdev = ae_dev->priv;
 
 	/* un-init roce, if it exists */
-	if (hdev->roce_client)
+	if (hdev->roce_client) {
 		hdev->roce_client->ops->uninit_instance(&hdev->roce, 0);
+		hdev->roce_client = NULL;
+		hdev->roce.client = NULL;
+	}
 
 	/* un-init nic/unic, if this was not called by roce client */
-	if ((client->ops->uninit_instance) &&
-	    (client->type != HNAE3_CLIENT_ROCE))
+	if (client->ops->uninit_instance && hdev->nic_client &&
+	    client->type != HNAE3_CLIENT_ROCE) {
 		client->ops->uninit_instance(&hdev->nic, 0);
+		hdev->nic_client = NULL;
+		hdev->nic.client = NULL;
+	}
 }
 
 static int hclgevf_pci_init(struct hclgevf_dev *hdev)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 283/422] net: hns3: Fix client initialize state issue when roce client initialize failed
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (281 preceding siblings ...)
  2019-11-19  5:17 ` [PATCH 4.19 282/422] net: hns3: Clear client pointer when initialize client failed or unintialize finished Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 284/422] net: hns3: Fix parameter type for q_id in hclge_tm_q_to_qs_map_cfg() Greg Kroah-Hartman
                   ` (142 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jian Shen, Peng Li, Salil Mehta,
	David S. Miller, Sasha Levin

From: Jian Shen <shenjian15@huawei.com>

[ Upstream commit d9f28fc23d544f673d087b00a6c7132d972f89ea ]

When roce is loaded before nic, the roce client will not be initialized
until nic client is initialized, but roce init flag is set before it.
Furthermore, in this case of nic initialized success and roce failed,
the nic init flag is not set, and roce init flag is not cleared.

This patch fixes it by set init flag only after the client is initialized
successfully.

Fixes: e2cb1dec9779 ("net: hns3: Add HNS3 VF HCL(Hardware Compatibility Layer) Support")
Fixes: 46a3df9f9718 ("net: hns3: Add HNS3 Acceleration Engine & Compatibility Layer Support")
Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/hisilicon/hns3/hnae3.c          | 12 +++++-------
 drivers/net/ethernet/hisilicon/hns3/hnae3.h          |  3 +++
 .../net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c  |  9 +++++++++
 .../ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c    |  9 +++++++++
 4 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hnae3.c b/drivers/net/ethernet/hisilicon/hns3/hnae3.c
index 0594a6c3dccda..2097f92e14c5c 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hnae3.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.c
@@ -29,8 +29,8 @@ static bool hnae3_client_match(enum hnae3_client_type client_type,
 	return false;
 }
 
-static void hnae3_set_client_init_flag(struct hnae3_client *client,
-				       struct hnae3_ae_dev *ae_dev, int inited)
+void hnae3_set_client_init_flag(struct hnae3_client *client,
+				struct hnae3_ae_dev *ae_dev, int inited)
 {
 	switch (client->type) {
 	case HNAE3_CLIENT_KNIC:
@@ -46,6 +46,7 @@ static void hnae3_set_client_init_flag(struct hnae3_client *client,
 		break;
 	}
 }
+EXPORT_SYMBOL(hnae3_set_client_init_flag);
 
 static int hnae3_get_client_init_flag(struct hnae3_client *client,
 				       struct hnae3_ae_dev *ae_dev)
@@ -86,14 +87,11 @@ static int hnae3_match_n_instantiate(struct hnae3_client *client,
 	/* now, (un-)instantiate client by calling lower layer */
 	if (is_reg) {
 		ret = ae_dev->ops->init_client_instance(client, ae_dev);
-		if (ret) {
+		if (ret)
 			dev_err(&ae_dev->pdev->dev,
 				"fail to instantiate client, ret = %d\n", ret);
-			return ret;
-		}
 
-		hnae3_set_client_init_flag(client, ae_dev, 1);
-		return 0;
+		return ret;
 	}
 
 	if (hnae3_get_client_init_flag(client, ae_dev)) {
diff --git a/drivers/net/ethernet/hisilicon/hns3/hnae3.h b/drivers/net/ethernet/hisilicon/hns3/hnae3.h
index 67befff0bfc50..f5c7fc9c5e5cc 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hnae3.h
+++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.h
@@ -521,4 +521,7 @@ void hnae3_register_ae_algo(struct hnae3_ae_algo *ae_algo);
 
 void hnae3_unregister_client(struct hnae3_client *client);
 int hnae3_register_client(struct hnae3_client *client);
+
+void hnae3_set_client_init_flag(struct hnae3_client *client,
+				struct hnae3_ae_dev *ae_dev, int inited);
 #endif
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index c5e617fdb809f..b04df79f393f8 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -5485,6 +5485,8 @@ static int hclge_init_client_instance(struct hnae3_client *client,
 				goto clear_nic;
 			}
 
+			hnae3_set_client_init_flag(client, ae_dev, 1);
+
 			if (hdev->roce_client &&
 			    hnae3_dev_roce_supported(hdev)) {
 				struct hnae3_client *rc = hdev->roce_client;
@@ -5496,6 +5498,9 @@ static int hclge_init_client_instance(struct hnae3_client *client,
 				ret = rc->ops->init_instance(&vport->roce);
 				if (ret)
 					goto clear_roce;
+
+				hnae3_set_client_init_flag(hdev->roce_client,
+							   ae_dev, 1);
 			}
 
 			break;
@@ -5507,6 +5512,8 @@ static int hclge_init_client_instance(struct hnae3_client *client,
 			if (ret)
 				goto clear_nic;
 
+			hnae3_set_client_init_flag(client, ae_dev, 1);
+
 			break;
 		case HNAE3_CLIENT_ROCE:
 			if (hnae3_dev_roce_supported(hdev)) {
@@ -5522,6 +5529,8 @@ static int hclge_init_client_instance(struct hnae3_client *client,
 				ret = client->ops->init_instance(&vport->roce);
 				if (ret)
 					goto clear_roce;
+
+				hnae3_set_client_init_flag(client, ae_dev, 1);
 			}
 		}
 	}
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c
index 83fcdd326de71..beae1e2cd59b1 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c
@@ -1631,6 +1631,8 @@ static int hclgevf_init_client_instance(struct hnae3_client *client,
 		if (ret)
 			goto clear_nic;
 
+		hnae3_set_client_init_flag(client, ae_dev, 1);
+
 		if (hdev->roce_client && hnae3_dev_roce_supported(hdev)) {
 			struct hnae3_client *rc = hdev->roce_client;
 
@@ -1640,6 +1642,9 @@ static int hclgevf_init_client_instance(struct hnae3_client *client,
 			ret = rc->ops->init_instance(&hdev->roce);
 			if (ret)
 				goto clear_roce;
+
+			hnae3_set_client_init_flag(hdev->roce_client, ae_dev,
+						   1);
 		}
 		break;
 	case HNAE3_CLIENT_UNIC:
@@ -1649,6 +1654,8 @@ static int hclgevf_init_client_instance(struct hnae3_client *client,
 		ret = client->ops->init_instance(&hdev->nic);
 		if (ret)
 			goto clear_nic;
+
+		hnae3_set_client_init_flag(client, ae_dev, 1);
 		break;
 	case HNAE3_CLIENT_ROCE:
 		if (hnae3_dev_roce_supported(hdev)) {
@@ -1665,6 +1672,8 @@ static int hclgevf_init_client_instance(struct hnae3_client *client,
 			if (ret)
 				goto clear_roce;
 		}
+
+		hnae3_set_client_init_flag(client, ae_dev, 1);
 	}
 
 	return 0;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 284/422] net: hns3: Fix parameter type for q_id in hclge_tm_q_to_qs_map_cfg()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (282 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 283/422] net: hns3: Fix client initialize state issue when roce client initialize failed Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 285/422] nfp: provide a better warning when ring allocation fails Greg Kroah-Hartman
                   ` (141 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jian Shen, Peng Li, Salil Mehta,
	David S. Miller, Sasha Levin

From: Jian Shen <shenjian15@huawei.com>

[ Upstream commit 32c7fbc8ffd752c6aa05d2dd7c13b0f0aa00ddaa ]

So far all the places calling hclge_tm_q_to_qs_map_cfg() are assigning
an u16 type value to "q_id", and in the processing of
hclge_tm_q_to_qs_map_cfg(), it also converts the "q_id" to le16.

The max tqp number for pf can be more than 256, we should use "u16" to
store the queue id, instead of "u8", which may cause data lost.

Fixes: 848440544b41 ("net: hns3: Add support of TX Scheduler & Shaper to HNS3 driver")
Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c
index 11e9259ca0407..0d45d045706c7 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c
@@ -298,7 +298,7 @@ static int hclge_tm_qs_to_pri_map_cfg(struct hclge_dev *hdev,
 }
 
 static int hclge_tm_q_to_qs_map_cfg(struct hclge_dev *hdev,
-				    u8 q_id, u16 qs_id)
+				    u16 q_id, u16 qs_id)
 {
 	struct hclge_nq_to_qs_link_cmd *map;
 	struct hclge_desc desc;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 285/422] nfp: provide a better warning when ring allocation fails
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (283 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 284/422] net: hns3: Fix parameter type for q_id in hclge_tm_q_to_qs_map_cfg() Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 286/422] usb: chipidea: imx: enable OTG overcurrent in case USB subsystem is already started Greg Kroah-Hartman
                   ` (140 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jakub Kicinski, Dirk van der Merwe,
	David S. Miller, Sasha Levin

From: Jakub Kicinski <jakub.kicinski@netronome.com>

[ Upstream commit 23d9f5531c7c28546954b0bf332134a9b8a38c0a ]

NFP supports fairly enormous ring sizes (up to 256k descriptors).
In commit 466271703867 ("nfp: use kvcalloc() to allocate SW buffer
descriptor arrays") we have started using kvcalloc() functions to
make sure the allocation of software state arrays doesn't hit
the MAX_ORDER limit.  Unfortunately, we can't use virtual mappings
for the DMA region holding HW descriptors.  In case this allocation
fails instead of the generic (and fairly scary) warning/splat in
the logs print a helpful message explaining what happened and
suggesting how to fix it.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../net/ethernet/netronome/nfp/nfp_net_common.c  | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
index c6d29fdbb880f..d288c7eebacd8 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
@@ -2187,9 +2187,13 @@ nfp_net_tx_ring_alloc(struct nfp_net_dp *dp, struct nfp_net_tx_ring *tx_ring)
 
 	tx_ring->size = array_size(tx_ring->cnt, sizeof(*tx_ring->txds));
 	tx_ring->txds = dma_zalloc_coherent(dp->dev, tx_ring->size,
-					    &tx_ring->dma, GFP_KERNEL);
-	if (!tx_ring->txds)
+					    &tx_ring->dma,
+					    GFP_KERNEL | __GFP_NOWARN);
+	if (!tx_ring->txds) {
+		netdev_warn(dp->netdev, "failed to allocate TX descriptor ring memory, requested descriptor count: %d, consider lowering descriptor count\n",
+			    tx_ring->cnt);
 		goto err_alloc;
+	}
 
 	tx_ring->txbufs = kvcalloc(tx_ring->cnt, sizeof(*tx_ring->txbufs),
 				   GFP_KERNEL);
@@ -2341,9 +2345,13 @@ nfp_net_rx_ring_alloc(struct nfp_net_dp *dp, struct nfp_net_rx_ring *rx_ring)
 	rx_ring->cnt = dp->rxd_cnt;
 	rx_ring->size = array_size(rx_ring->cnt, sizeof(*rx_ring->rxds));
 	rx_ring->rxds = dma_zalloc_coherent(dp->dev, rx_ring->size,
-					    &rx_ring->dma, GFP_KERNEL);
-	if (!rx_ring->rxds)
+					    &rx_ring->dma,
+					    GFP_KERNEL | __GFP_NOWARN);
+	if (!rx_ring->rxds) {
+		netdev_warn(dp->netdev, "failed to allocate RX descriptor ring memory, requested descriptor count: %d, consider lowering descriptor count\n",
+			    rx_ring->cnt);
 		goto err_alloc;
+	}
 
 	rx_ring->rxbufs = kvcalloc(rx_ring->cnt, sizeof(*rx_ring->rxbufs),
 				   GFP_KERNEL);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 286/422] usb: chipidea: imx: enable OTG overcurrent in case USB subsystem is already started
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (284 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 285/422] nfp: provide a better warning when ring allocation fails Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 287/422] usb: chipidea: Fix otg event handler Greg Kroah-Hartman
                   ` (139 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Nicolas Adell, Peter Chen, Sasha Levin

From: Nicolas Adell <nicolas.adell@actia.fr>

[ Upstream commit 1dedbdf2bbb1ede8d96f35f9845ecae179dc1988 ]

When initializing the USB subsystem before starting the kernel,
OTG overcurrent detection is disabled. In case the OTG polarity of
overcurrent is low active, the overcurrent detection is never enabled
again and events cannot be reported as expected. Because imx usb
overcurrent polarity is low active by default, only detection needs
to be enable in usbmisc init function.

Signed-off-by: Nicolas Adell <nicolas.adell@actia.fr>
Signed-off-by: Peter Chen <peter.chen@nxp.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/usb/chipidea/usbmisc_imx.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c
index 34ad5bf8acd8d..424ecb1f003fe 100644
--- a/drivers/usb/chipidea/usbmisc_imx.c
+++ b/drivers/usb/chipidea/usbmisc_imx.c
@@ -343,6 +343,8 @@ static int usbmisc_imx6q_init(struct imx_usbmisc_data *data)
 	} else if (data->oc_polarity == 1) {
 		/* High active */
 		reg &= ~(MX6_BM_OVER_CUR_DIS | MX6_BM_OVER_CUR_POLARITY);
+	} else {
+		reg &= ~(MX6_BM_OVER_CUR_DIS);
 	}
 	writel(reg, usbmisc->base + data->index * 4);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 287/422] usb: chipidea: Fix otg event handler
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (285 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 286/422] usb: chipidea: imx: enable OTG overcurrent in case USB subsystem is already started Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 288/422] usb: usbtmc: Fix ioctl USBTMC_IOCTL_ABORT_BULK_OUT Greg Kroah-Hartman
                   ` (138 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Loic Poulain, Peter Chen, Sasha Levin

From: Loic Poulain <loic.poulain@linaro.org>

[ Upstream commit 59739131e0ca06db7560f9073fff2fb83f6bc2a5 ]

At OTG work running time, it's possible that several events need to be
addressed (e.g. ID and VBUS events). The current implementation handles
only one event at a time which leads to ignoring the other one. Fix it.

Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
Signed-off-by: Peter Chen <peter.chen@nxp.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/usb/chipidea/otg.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/usb/chipidea/otg.c b/drivers/usb/chipidea/otg.c
index db4ceffcf2a61..f25d4827fd49c 100644
--- a/drivers/usb/chipidea/otg.c
+++ b/drivers/usb/chipidea/otg.c
@@ -203,14 +203,17 @@ static void ci_otg_work(struct work_struct *work)
 	}
 
 	pm_runtime_get_sync(ci->dev);
+
 	if (ci->id_event) {
 		ci->id_event = false;
 		ci_handle_id_switch(ci);
-	} else if (ci->b_sess_valid_event) {
+	}
+
+	if (ci->b_sess_valid_event) {
 		ci->b_sess_valid_event = false;
 		ci_handle_vbus_change(ci);
-	} else
-		dev_err(ci->dev, "unexpected event occurs at %s\n", __func__);
+	}
+
 	pm_runtime_put_sync(ci->dev);
 
 	enable_irq(ci->irq);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 288/422] usb: usbtmc: Fix ioctl USBTMC_IOCTL_ABORT_BULK_OUT
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (286 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 287/422] usb: chipidea: Fix otg event handler Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 289/422] s390/zcrypt: enable AP bus scan without a valid default domain Greg Kroah-Hartman
                   ` (137 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Guido Kiener, Steve Bayless, Sasha Levin

From: Guido Kiener <guido@kiener-muenchen.de>

[ Upstream commit 0e59088e7ff7aeda49dedadbf0e967761b909ad8 ]

Add parameter 'tag' to function usbtmc_ioctl_abort_bulk_out_tag()
for future versions.

Use USBTMC_BUFSIZE (4k) instead of USBTMC_SIZE_IOBUFFER (2k).
Using USBTMC_SIZE_IOBUFFER is deprecated.

Insert a sleep of 50 ms between subsequent
CHECK_ABORT_BULK_OUT_STATUS control requests to avoid stressing
the instrument with repeated requests.

Use common macro USB_CTRL_GET_TIMEOUT instead of USBTMC_TIMEOUT.

Signed-off-by: Guido Kiener <guido.kiener@rohde-schwarz.com>
Reviewed-by: Steve Bayless <steve_bayless@keysight.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/usb/class/usbtmc.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c
index 83ffa5a14c3db..3ce45c9e9d20d 100644
--- a/drivers/usb/class/usbtmc.c
+++ b/drivers/usb/class/usbtmc.c
@@ -342,7 +342,8 @@ exit:
 
 }
 
-static int usbtmc_ioctl_abort_bulk_out(struct usbtmc_device_data *data)
+static int usbtmc_ioctl_abort_bulk_out_tag(struct usbtmc_device_data *data,
+					   u8 tag)
 {
 	struct device *dev;
 	u8 *buffer;
@@ -359,8 +360,8 @@ static int usbtmc_ioctl_abort_bulk_out(struct usbtmc_device_data *data)
 			     usb_rcvctrlpipe(data->usb_dev, 0),
 			     USBTMC_REQUEST_INITIATE_ABORT_BULK_OUT,
 			     USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_ENDPOINT,
-			     data->bTag_last_write, data->bulk_out,
-			     buffer, 2, USBTMC_TIMEOUT);
+			     tag, data->bulk_out,
+			     buffer, 2, USB_CTRL_GET_TIMEOUT);
 
 	if (rv < 0) {
 		dev_err(dev, "usb_control_msg returned %d\n", rv);
@@ -379,12 +380,14 @@ static int usbtmc_ioctl_abort_bulk_out(struct usbtmc_device_data *data)
 	n = 0;
 
 usbtmc_abort_bulk_out_check_status:
+	/* do not stress device with subsequent requests */
+	msleep(50);
 	rv = usb_control_msg(data->usb_dev,
 			     usb_rcvctrlpipe(data->usb_dev, 0),
 			     USBTMC_REQUEST_CHECK_ABORT_BULK_OUT_STATUS,
 			     USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_ENDPOINT,
 			     0, data->bulk_out, buffer, 0x08,
-			     USBTMC_TIMEOUT);
+			     USB_CTRL_GET_TIMEOUT);
 	n++;
 	if (rv < 0) {
 		dev_err(dev, "usb_control_msg returned %d\n", rv);
@@ -418,6 +421,11 @@ exit:
 	return rv;
 }
 
+static int usbtmc_ioctl_abort_bulk_out(struct usbtmc_device_data *data)
+{
+	return usbtmc_ioctl_abort_bulk_out_tag(data, data->bTag_last_write);
+}
+
 static int usbtmc488_ioctl_read_stb(struct usbtmc_file_data *file_data,
 				void __user *arg)
 {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 289/422] s390/zcrypt: enable AP bus scan without a valid default domain
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (287 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 288/422] usb: usbtmc: Fix ioctl USBTMC_IOCTL_ABORT_BULK_OUT Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 290/422] s390/vdso: avoid 64-bit vdso mapping for compat tasks Greg Kroah-Hartman
                   ` (136 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Halil Pasic, Michael Mueller,
	Harald Freudenberger, Martin Schwidefsky, Sasha Levin

From: Halil Pasic <pasic@linux.ibm.com>

[ Upstream commit 1c472d46283263497adccd7a0bec64ee2f9c09e5 ]

The AP bus scan is aborted before doing anything worth mentioning if
ap_select_domain() fails, e.g. if the ap_rights.aqm mask is all zeros.
As the result of this the ap bus fails to manage (e.g. create and
register) devices like it is supposed to.

Let us make ap_scan_bus() work even if ap_select_domain() can't select a
default domain. Let's also make ap_select_domain() return void, as there
are no more callers interested in its return value.

Signed-off-by: Halil Pasic <pasic@linux.ibm.com>
Reported-by: Michael Mueller <mimu@linux.ibm.com>
Fixes: 7e0bdbe5c21c "s390/zcrypt: AP bus support for alternate driver(s)"
[freude@linux.ibm.com: title and patch header slightly modified]
Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/s390/crypto/ap_bus.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c
index 3be54651698a3..027a53eec42a5 100644
--- a/drivers/s390/crypto/ap_bus.c
+++ b/drivers/s390/crypto/ap_bus.c
@@ -1223,11 +1223,10 @@ static struct bus_attribute *const ap_bus_attrs[] = {
 };
 
 /**
- * ap_select_domain(): Select an AP domain.
- *
- * Pick one of the 16 AP domains.
+ * ap_select_domain(): Select an AP domain if possible and we haven't
+ * already done so before.
  */
-static int ap_select_domain(void)
+static void ap_select_domain(void)
 {
 	int count, max_count, best_domain;
 	struct ap_queue_status status;
@@ -1242,7 +1241,7 @@ static int ap_select_domain(void)
 	if (ap_domain_index >= 0) {
 		/* Domain has already been selected. */
 		spin_unlock_bh(&ap_domain_lock);
-		return 0;
+		return;
 	}
 	best_domain = -1;
 	max_count = 0;
@@ -1269,11 +1268,8 @@ static int ap_select_domain(void)
 	if (best_domain >= 0) {
 		ap_domain_index = best_domain;
 		AP_DBF(DBF_DEBUG, "new ap_domain_index=%d\n", ap_domain_index);
-		spin_unlock_bh(&ap_domain_lock);
-		return 0;
 	}
 	spin_unlock_bh(&ap_domain_lock);
-	return -ENODEV;
 }
 
 /*
@@ -1351,8 +1347,7 @@ static void ap_scan_bus(struct work_struct *unused)
 	AP_DBF(DBF_DEBUG, "%s running\n", __func__);
 
 	ap_query_configuration(ap_configuration);
-	if (ap_select_domain() != 0)
-		goto out;
+	ap_select_domain();
 
 	for (id = 0; id < AP_DEVICES; id++) {
 		/* check if device is registered */
@@ -1468,12 +1463,11 @@ static void ap_scan_bus(struct work_struct *unused)
 		}
 	} /* end device loop */
 
-	if (defdomdevs < 1)
+	if (ap_domain_index >= 0 && defdomdevs < 1)
 		AP_DBF(DBF_INFO,
 		       "no queue device with default domain %d available\n",
 		       ap_domain_index);
 
-out:
 	mod_timer(&ap_config_timer, jiffies + ap_config_time * HZ);
 }
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 290/422] s390/vdso: avoid 64-bit vdso mapping for compat tasks
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (288 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 289/422] s390/zcrypt: enable AP bus scan without a valid default domain Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 291/422] s390/vdso: correct CFI annotations of vDSO functions Greg Kroah-Hartman
                   ` (135 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Vasily Gorbik, Martin Schwidefsky,
	Sasha Levin

From: Vasily Gorbik <gor@linux.ibm.com>

[ Upstream commit d1befa65823e9c6d013883b8a41d081ec338c489 ]

vdso_fault used is_compat_task function (on s390 it tests "current"
thread_info flags) to distinguish compat tasks and map 31-bit vdso
pages. But "current" task might not correspond to mm context.

When 31-bit compat inferior is executed under gdb, gdb does
PTRACE_PEEKTEXT on vdso page, causing vdso_fault with "current" being
64-bit gdb process. So, 31-bit inferior ends up with 64-bit vdso mapped.

To avoid this problem a new compat_mm flag has been introduced into
mm context. This flag is used in vdso_fault and vdso_mremap instead
of is_compat_task.

Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/s390/include/asm/mmu.h         | 2 ++
 arch/s390/include/asm/mmu_context.h | 1 +
 arch/s390/kernel/vdso.c             | 8 +++++---
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/arch/s390/include/asm/mmu.h b/arch/s390/include/asm/mmu.h
index a8418e1379eb7..bcfb6371086f2 100644
--- a/arch/s390/include/asm/mmu.h
+++ b/arch/s390/include/asm/mmu.h
@@ -32,6 +32,8 @@ typedef struct {
 	unsigned int uses_cmm:1;
 	/* The gmaps associated with this context are allowed to use huge pages. */
 	unsigned int allow_gmap_hpage_1m:1;
+	/* The mmu context is for compat task */
+	unsigned int compat_mm:1;
 } mm_context_t;
 
 #define INIT_MM_CONTEXT(name)						   \
diff --git a/arch/s390/include/asm/mmu_context.h b/arch/s390/include/asm/mmu_context.h
index 09b61d0e491f6..e4462202200d7 100644
--- a/arch/s390/include/asm/mmu_context.h
+++ b/arch/s390/include/asm/mmu_context.h
@@ -25,6 +25,7 @@ static inline int init_new_context(struct task_struct *tsk,
 	atomic_set(&mm->context.flush_count, 0);
 	mm->context.gmap_asce = 0;
 	mm->context.flush_mm = 0;
+	mm->context.compat_mm = 0;
 #ifdef CONFIG_PGSTE
 	mm->context.alloc_pgste = page_table_allocate_pgste ||
 		test_thread_flag(TIF_PGSTE) ||
diff --git a/arch/s390/kernel/vdso.c b/arch/s390/kernel/vdso.c
index 3031cc6dd0ab4..ec31b48a42a52 100644
--- a/arch/s390/kernel/vdso.c
+++ b/arch/s390/kernel/vdso.c
@@ -56,7 +56,7 @@ static vm_fault_t vdso_fault(const struct vm_special_mapping *sm,
 	vdso_pagelist = vdso64_pagelist;
 	vdso_pages = vdso64_pages;
 #ifdef CONFIG_COMPAT
-	if (is_compat_task()) {
+	if (vma->vm_mm->context.compat_mm) {
 		vdso_pagelist = vdso32_pagelist;
 		vdso_pages = vdso32_pages;
 	}
@@ -77,7 +77,7 @@ static int vdso_mremap(const struct vm_special_mapping *sm,
 
 	vdso_pages = vdso64_pages;
 #ifdef CONFIG_COMPAT
-	if (is_compat_task())
+	if (vma->vm_mm->context.compat_mm)
 		vdso_pages = vdso32_pages;
 #endif
 
@@ -224,8 +224,10 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
 
 	vdso_pages = vdso64_pages;
 #ifdef CONFIG_COMPAT
-	if (is_compat_task())
+	if (is_compat_task()) {
 		vdso_pages = vdso32_pages;
+		mm->context.compat_mm = 1;
+	}
 #endif
 	/*
 	 * vDSO has a problem and was disabled, just don't "enable" it for
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 291/422] s390/vdso: correct CFI annotations of vDSO functions
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (289 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 290/422] s390/vdso: avoid 64-bit vdso mapping for compat tasks Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 292/422] brcmfmac: increase buffer for obtaining firmware capabilities Greg Kroah-Hartman
                   ` (134 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Hendrik Brueckner, Vasily Gorbik,
	Martin Schwidefsky, Sasha Levin

From: Vasily Gorbik <gor@linux.ibm.com>

[ Upstream commit 26f4414a45b808f83d42d6fd2fbf4a59ef25e84b ]

Correct stack frame overhead for 31-bit vdso, which should be 96 rather
then 160. This is done by reusing STACK_FRAME_OVERHEAD definition which
contains correct value based on build flags. This fixes stack unwinding
within vdso code for 31-bit processes. While at it replace all hard coded
stack frame overhead values with the same definition in vdso64 as well.

Reviewed-by: Hendrik Brueckner <brueckner@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/s390/kernel/vdso32/clock_gettime.S | 19 ++++++++++---------
 arch/s390/kernel/vdso32/gettimeofday.S  |  3 ++-
 arch/s390/kernel/vdso64/clock_gettime.S | 25 +++++++++++++------------
 arch/s390/kernel/vdso64/gettimeofday.S  |  3 ++-
 4 files changed, 27 insertions(+), 23 deletions(-)

diff --git a/arch/s390/kernel/vdso32/clock_gettime.S b/arch/s390/kernel/vdso32/clock_gettime.S
index a9418bf975db5..ada5c11a16e5a 100644
--- a/arch/s390/kernel/vdso32/clock_gettime.S
+++ b/arch/s390/kernel/vdso32/clock_gettime.S
@@ -10,6 +10,7 @@
 #include <asm/asm-offsets.h>
 #include <asm/unistd.h>
 #include <asm/dwarf.h>
+#include <asm/ptrace.h>
 
 	.text
 	.align 4
@@ -18,8 +19,8 @@
 __kernel_clock_gettime:
 	CFI_STARTPROC
 	ahi	%r15,-16
-	CFI_DEF_CFA_OFFSET 176
-	CFI_VAL_OFFSET 15, -160
+	CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD+16
+	CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
 	basr	%r5,0
 0:	al	%r5,21f-0b(%r5)			/* get &_vdso_data */
 	chi	%r2,__CLOCK_REALTIME_COARSE
@@ -72,13 +73,13 @@ __kernel_clock_gettime:
 	st	%r1,4(%r3)			/* store tp->tv_nsec */
 	lhi	%r2,0
 	ahi	%r15,16
-	CFI_DEF_CFA_OFFSET 160
+	CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
 	CFI_RESTORE 15
 	br	%r14
 
 	/* CLOCK_MONOTONIC_COARSE */
-	CFI_DEF_CFA_OFFSET 176
-	CFI_VAL_OFFSET 15, -160
+	CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD+16
+	CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
 9:	l	%r4,__VDSO_UPD_COUNT+4(%r5)	/* load update counter */
 	tml	%r4,0x0001			/* pending update ? loop */
 	jnz	9b
@@ -158,17 +159,17 @@ __kernel_clock_gettime:
 	st	%r1,4(%r3)			/* store tp->tv_nsec */
 	lhi	%r2,0
 	ahi	%r15,16
-	CFI_DEF_CFA_OFFSET 160
+	CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
 	CFI_RESTORE 15
 	br	%r14
 
 	/* Fallback to system call */
-	CFI_DEF_CFA_OFFSET 176
-	CFI_VAL_OFFSET 15, -160
+	CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD+16
+	CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
 19:	lhi	%r1,__NR_clock_gettime
 	svc	0
 	ahi	%r15,16
-	CFI_DEF_CFA_OFFSET 160
+	CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
 	CFI_RESTORE 15
 	br	%r14
 	CFI_ENDPROC
diff --git a/arch/s390/kernel/vdso32/gettimeofday.S b/arch/s390/kernel/vdso32/gettimeofday.S
index 3c0db0fa6ad90..b23063fbc892c 100644
--- a/arch/s390/kernel/vdso32/gettimeofday.S
+++ b/arch/s390/kernel/vdso32/gettimeofday.S
@@ -10,6 +10,7 @@
 #include <asm/asm-offsets.h>
 #include <asm/unistd.h>
 #include <asm/dwarf.h>
+#include <asm/ptrace.h>
 
 	.text
 	.align 4
@@ -19,7 +20,7 @@ __kernel_gettimeofday:
 	CFI_STARTPROC
 	ahi	%r15,-16
 	CFI_ADJUST_CFA_OFFSET 16
-	CFI_VAL_OFFSET 15, -160
+	CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
 	basr	%r5,0
 0:	al	%r5,13f-0b(%r5)			/* get &_vdso_data */
 1:	ltr	%r3,%r3				/* check if tz is NULL */
diff --git a/arch/s390/kernel/vdso64/clock_gettime.S b/arch/s390/kernel/vdso64/clock_gettime.S
index fac3ab5ec83a9..9d2ee79b90f25 100644
--- a/arch/s390/kernel/vdso64/clock_gettime.S
+++ b/arch/s390/kernel/vdso64/clock_gettime.S
@@ -10,6 +10,7 @@
 #include <asm/asm-offsets.h>
 #include <asm/unistd.h>
 #include <asm/dwarf.h>
+#include <asm/ptrace.h>
 
 	.text
 	.align 4
@@ -18,8 +19,8 @@
 __kernel_clock_gettime:
 	CFI_STARTPROC
 	aghi	%r15,-16
-	CFI_DEF_CFA_OFFSET 176
-	CFI_VAL_OFFSET 15, -160
+	CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD+16
+	CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
 	larl	%r5,_vdso_data
 	cghi	%r2,__CLOCK_REALTIME_COARSE
 	je	4f
@@ -56,13 +57,13 @@ __kernel_clock_gettime:
 	stg	%r1,8(%r3)			/* store tp->tv_nsec */
 	lghi	%r2,0
 	aghi	%r15,16
-	CFI_DEF_CFA_OFFSET 160
+	CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
 	CFI_RESTORE 15
 	br	%r14
 
 	/* CLOCK_MONOTONIC_COARSE */
-	CFI_DEF_CFA_OFFSET 176
-	CFI_VAL_OFFSET 15, -160
+	CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD+16
+	CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
 3:	lg	%r4,__VDSO_UPD_COUNT(%r5)	/* load update counter */
 	tmll	%r4,0x0001			/* pending update ? loop */
 	jnz	3b
@@ -115,13 +116,13 @@ __kernel_clock_gettime:
 	stg	%r1,8(%r3)			/* store tp->tv_nsec */
 	lghi	%r2,0
 	aghi	%r15,16
-	CFI_DEF_CFA_OFFSET 160
+	CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
 	CFI_RESTORE 15
 	br	%r14
 
 	/* CPUCLOCK_VIRT for this thread */
-	CFI_DEF_CFA_OFFSET 176
-	CFI_VAL_OFFSET 15, -160
+	CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD+16
+	CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
 9:	lghi	%r4,0
 	icm	%r0,15,__VDSO_ECTG_OK(%r5)
 	jz	12f
@@ -142,17 +143,17 @@ __kernel_clock_gettime:
 	stg	%r4,8(%r3)
 	lghi	%r2,0
 	aghi	%r15,16
-	CFI_DEF_CFA_OFFSET 160
+	CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
 	CFI_RESTORE 15
 	br	%r14
 
 	/* Fallback to system call */
-	CFI_DEF_CFA_OFFSET 176
-	CFI_VAL_OFFSET 15, -160
+	CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD+16
+	CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
 12:	lghi	%r1,__NR_clock_gettime
 	svc	0
 	aghi	%r15,16
-	CFI_DEF_CFA_OFFSET 160
+	CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
 	CFI_RESTORE 15
 	br	%r14
 	CFI_ENDPROC
diff --git a/arch/s390/kernel/vdso64/gettimeofday.S b/arch/s390/kernel/vdso64/gettimeofday.S
index 6e1f0b421695a..aebe10dc7c99a 100644
--- a/arch/s390/kernel/vdso64/gettimeofday.S
+++ b/arch/s390/kernel/vdso64/gettimeofday.S
@@ -10,6 +10,7 @@
 #include <asm/asm-offsets.h>
 #include <asm/unistd.h>
 #include <asm/dwarf.h>
+#include <asm/ptrace.h>
 
 	.text
 	.align 4
@@ -19,7 +20,7 @@ __kernel_gettimeofday:
 	CFI_STARTPROC
 	aghi	%r15,-16
 	CFI_ADJUST_CFA_OFFSET 16
-	CFI_VAL_OFFSET 15, -160
+	CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
 	larl	%r5,_vdso_data
 0:	ltgr	%r3,%r3				/* check if tz is NULL */
 	je	1f
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 292/422] brcmfmac: increase buffer for obtaining firmware capabilities
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (290 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 291/422] s390/vdso: correct CFI annotations of vDSO functions Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 293/422] brcmsmac: Use kvmalloc() for ucode allocations Greg Kroah-Hartman
                   ` (133 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Hante Meuleman,
	Pieter-Paul Giesberts, Franky Lin, Arend van Spriel, Kalle Valo,
	Sasha Levin

From: Arend van Spriel <arend.vanspriel@broadcom.com>

[ Upstream commit 59c2a30d36c8ae430d26a902c4c9665ea33ccee5 ]

When obtaining the firmware capability a buffer is provided of 512
bytes. However, if all features in firmware are supported the buffer
needs to be 565 bytes as otherwise truncated information is retrieved
from firmware. Increasing the buffer to 768 bytes on stack.

Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
index 8347da632a5b0..4c5a3995dc352 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
@@ -178,7 +178,7 @@ static void brcmf_feat_iovar_data_set(struct brcmf_if *ifp,
 	ifp->fwil_fwerr = false;
 }
 
-#define MAX_CAPS_BUFFER_SIZE	512
+#define MAX_CAPS_BUFFER_SIZE	768
 static void brcmf_feat_firmware_capabilities(struct brcmf_if *ifp)
 {
 	char caps[MAX_CAPS_BUFFER_SIZE];
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 293/422] brcmsmac: Use kvmalloc() for ucode allocations
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (291 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 292/422] brcmfmac: increase buffer for obtaining firmware capabilities Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 294/422] mlxsw: spectrum: Init shaper for TCs 8..15 Greg Kroah-Hartman
                   ` (132 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Takashi Iwai, Kalle Valo, Sasha Levin

From: Takashi Iwai <tiwai@suse.de>

[ Upstream commit 6c3efbe77bc78bf49db851aec7f385be475afca6 ]

The ucode chunk might be relatively large and the allocation with
kmalloc() may fail occasionally.  Since the data isn't DMA-transferred
but by manual loops, we can use vmalloc instead of kmalloc.
For a better performance, though, kvmalloc() would be the best choice
in such a case, so let's replace with it.

Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1103431
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c  | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c
index ecc89e718b9c1..6255fb6d97a70 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c
@@ -1578,10 +1578,10 @@ int brcms_ucode_init_buf(struct brcms_info *wl, void **pbuf, u32 idx)
 			if (le32_to_cpu(hdr->idx) == idx) {
 				pdata = wl->fw.fw_bin[i]->data +
 					le32_to_cpu(hdr->offset);
-				*pbuf = kmemdup(pdata, len, GFP_KERNEL);
+				*pbuf = kvmalloc(len, GFP_KERNEL);
 				if (*pbuf == NULL)
 					goto fail;
-
+				memcpy(*pbuf, pdata, len);
 				return 0;
 			}
 		}
@@ -1629,7 +1629,7 @@ int brcms_ucode_init_uint(struct brcms_info *wl, size_t *n_bytes, u32 idx)
  */
 void brcms_ucode_free_buf(void *p)
 {
-	kfree(p);
+	kvfree(p);
 }
 
 /*
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 294/422] mlxsw: spectrum: Init shaper for TCs 8..15
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (292 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 293/422] brcmsmac: Use kvmalloc() for ucode allocations Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 295/422] PCI: portdrv: Initialize service drivers directly Greg Kroah-Hartman
                   ` (131 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Petr Machata, Jiri Pirko,
	Ido Schimmel, David S. Miller, Sasha Levin

From: Petr Machata <petrm@mellanox.com>

[ Upstream commit a9f36656b519a9a21309793c306941a3cd0eeb8f ]

With introduction of MC-aware mode to mlxsw, it became necessary to
configure TCs above 7 as well. There is now code in mlxsw to disable ETS
for these higher classes, but disablement of max shaper was neglected.

By default, max shaper is currently disabled to begin with, so the
problem is just cosmetic. However, for symmetry, do like we do for ETS
configuration, and call mlxsw_sp_port_ets_maxrate_set() for both TC i
and i + 8.

Signed-off-by: Petr Machata <petrm@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
index ccd9aca281b37..1c170a0fd2cc9 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
@@ -2815,6 +2815,13 @@ static int mlxsw_sp_port_ets_init(struct mlxsw_sp_port *mlxsw_sp_port)
 						    MLXSW_REG_QEEC_MAS_DIS);
 		if (err)
 			return err;
+
+		err = mlxsw_sp_port_ets_maxrate_set(mlxsw_sp_port,
+						    MLXSW_REG_QEEC_HIERARCY_TC,
+						    i + 8, i,
+						    MLXSW_REG_QEEC_MAS_DIS);
+		if (err)
+			return err;
 	}
 
 	/* Map all priorities to traffic class 0. */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 295/422] PCI: portdrv: Initialize service drivers directly
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (293 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 294/422] mlxsw: spectrum: Init shaper for TCs 8..15 Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 296/422] ARM: dts: am335x-evm: fix number of cpsw Greg Kroah-Hartman
                   ` (130 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Keith Busch, Bjorn Helgaas,
	Sinan Kaya, Sasha Levin

From: Keith Busch <keith.busch@intel.com>

[ Upstream commit c29de84149aba5f74e87b6491c13ac7203c12f55 ]

The PCI port driver saves the PCI state after initializing the device with
the applicable service devices.  This was, however, before the service
drivers were even registered because PCI probe happens before the
device_initcall initialized those service drivers.  The config space state
that the services set up were not being saved.  The end result would cause
PCI devices to not react to events that the drivers think they did if the
PCI state ever needed to be restored.

Fix this by changing the service drivers from using the init calls to
having the portdrv driver calling the services directly.  This will get the
state saved as desired, while making the relationship between the port
driver and the services under it more explicit in the code.

Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Sinan Kaya <okaya@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/pci/hotplug/pciehp_core.c |  3 +--
 drivers/pci/pcie/aer.c            |  3 +--
 drivers/pci/pcie/dpc.c            |  3 +--
 drivers/pci/pcie/pme.c            |  3 +--
 drivers/pci/pcie/portdrv.h        | 24 ++++++++++++++++++++++++
 drivers/pci/pcie/portdrv_pci.c    |  9 +++++++++
 6 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c
index ec48c9433ae50..518c46f8e63b7 100644
--- a/drivers/pci/hotplug/pciehp_core.c
+++ b/drivers/pci/hotplug/pciehp_core.c
@@ -348,7 +348,7 @@ static struct pcie_port_service_driver hpdriver_portdrv = {
 #endif	/* PM */
 };
 
-static int __init pcied_init(void)
+int __init pcie_hp_init(void)
 {
 	int retval = 0;
 
@@ -359,4 +359,3 @@ static int __init pcied_init(void)
 
 	return retval;
 }
-device_initcall(pcied_init);
diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c
index 83180edd6ed47..637d638f73da5 100644
--- a/drivers/pci/pcie/aer.c
+++ b/drivers/pci/pcie/aer.c
@@ -1569,10 +1569,9 @@ static struct pcie_port_service_driver aerdriver = {
  *
  * Invoked when AER root service driver is loaded.
  */
-static int __init aer_service_init(void)
+int __init pcie_aer_init(void)
 {
 	if (!pci_aer_available() || aer_acpi_firmware_first())
 		return -ENXIO;
 	return pcie_port_service_register(&aerdriver);
 }
-device_initcall(aer_service_init);
diff --git a/drivers/pci/pcie/dpc.c b/drivers/pci/pcie/dpc.c
index 1908dd2978d3c..118b5bcae42ea 100644
--- a/drivers/pci/pcie/dpc.c
+++ b/drivers/pci/pcie/dpc.c
@@ -307,8 +307,7 @@ static struct pcie_port_service_driver dpcdriver = {
 	.reset_link	= dpc_reset_link,
 };
 
-static int __init dpc_service_init(void)
+int __init pcie_dpc_init(void)
 {
 	return pcie_port_service_register(&dpcdriver);
 }
-device_initcall(dpc_service_init);
diff --git a/drivers/pci/pcie/pme.c b/drivers/pci/pcie/pme.c
index 6ac17f0c40775..54d593d10396f 100644
--- a/drivers/pci/pcie/pme.c
+++ b/drivers/pci/pcie/pme.c
@@ -455,8 +455,7 @@ static struct pcie_port_service_driver pcie_pme_driver = {
 /**
  * pcie_pme_service_init - Register the PCIe PME service driver.
  */
-static int __init pcie_pme_service_init(void)
+int __init pcie_pme_init(void)
 {
 	return pcie_port_service_register(&pcie_pme_driver);
 }
-device_initcall(pcie_pme_service_init);
diff --git a/drivers/pci/pcie/portdrv.h b/drivers/pci/pcie/portdrv.h
index d59afa42fc14b..2498b2d340095 100644
--- a/drivers/pci/pcie/portdrv.h
+++ b/drivers/pci/pcie/portdrv.h
@@ -23,6 +23,30 @@
 
 #define PCIE_PORT_DEVICE_MAXSERVICES   4
 
+#ifdef CONFIG_PCIEAER
+int pcie_aer_init(void);
+#else
+static inline int pcie_aer_init(void) { return 0; }
+#endif
+
+#ifdef CONFIG_HOTPLUG_PCI_PCIE
+int pcie_hp_init(void);
+#else
+static inline int pcie_hp_init(void) { return 0; }
+#endif
+
+#ifdef CONFIG_PCIE_PME
+int pcie_pme_init(void);
+#else
+static inline int pcie_pme_init(void) { return 0; }
+#endif
+
+#ifdef CONFIG_PCIE_DPC
+int pcie_dpc_init(void);
+#else
+static inline int pcie_dpc_init(void) { return 0; }
+#endif
+
 /* Port Type */
 #define PCIE_ANY_PORT			(~0)
 
diff --git a/drivers/pci/pcie/portdrv_pci.c b/drivers/pci/pcie/portdrv_pci.c
index eef22dc29140c..23a5a0c2c3fe9 100644
--- a/drivers/pci/pcie/portdrv_pci.c
+++ b/drivers/pci/pcie/portdrv_pci.c
@@ -226,11 +226,20 @@ static const struct dmi_system_id pcie_portdrv_dmi_table[] __initconst = {
 	 {}
 };
 
+static void __init pcie_init_services(void)
+{
+	pcie_aer_init();
+	pcie_pme_init();
+	pcie_dpc_init();
+	pcie_hp_init();
+}
+
 static int __init pcie_portdrv_init(void)
 {
 	if (pcie_ports_disabled)
 		return -EACCES;
 
+	pcie_init_services();
 	dmi_check_system(pcie_portdrv_dmi_table);
 
 	return pci_register_driver(&pcie_portdriver);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 296/422] ARM: dts: am335x-evm: fix number of cpsw
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (294 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 295/422] PCI: portdrv: Initialize service drivers directly Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 297/422] ARM: dts: ti: Fix SPI and I2C bus warnings Greg Kroah-Hartman
                   ` (129 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Grygorii Strashko, Tony Lindgren,
	Sasha Levin

From: Grygorii Strashko <grygorii.strashko@ti.com>

[ Upstream commit dcbf6b18d81bcdc51390ca1b258c17e2e13b7d0c ]

am335x-evm has only one CPSW external port physically wired, but DT defines
2 ext. ports. As result, PHY connection failure reported for the second
ext. port.

Update DT to reflect am335x-evm board HW configuration, and, while here,
switch to use phy-handle instead of phy_id.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/am335x-evm.dts | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts
index 20bbb899b3b76..cc59e42c91342 100644
--- a/arch/arm/boot/dts/am335x-evm.dts
+++ b/arch/arm/boot/dts/am335x-evm.dts
@@ -731,6 +731,7 @@
 	pinctrl-0 = <&cpsw_default>;
 	pinctrl-1 = <&cpsw_sleep>;
 	status = "okay";
+	slaves = <1>;
 };
 
 &davinci_mdio {
@@ -738,15 +739,14 @@
 	pinctrl-0 = <&davinci_mdio_default>;
 	pinctrl-1 = <&davinci_mdio_sleep>;
 	status = "okay";
-};
 
-&cpsw_emac0 {
-	phy_id = <&davinci_mdio>, <0>;
-	phy-mode = "rgmii-txid";
+	ethphy0: ethernet-phy@0 {
+		reg = <0>;
+	};
 };
 
-&cpsw_emac1 {
-	phy_id = <&davinci_mdio>, <1>;
+&cpsw_emac0 {
+	phy-handle = <&ethphy0>;
 	phy-mode = "rgmii-txid";
 };
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 297/422] ARM: dts: ti: Fix SPI and I2C bus warnings
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (295 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 296/422] ARM: dts: am335x-evm: fix number of cpsw Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 298/422] f2fs: avoid infinite loop in f2fs_alloc_nid Greg Kroah-Hartman
                   ` (128 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Benoît Cousson, Tony Lindgren,
	Santosh Shilimkar, linux-omap, Rob Herring, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit cc893871f092be9ac1184a78f9ae1e76b85d5317 ]

dtc has new checks for I2C and SPI buses. Fix the warnings in node names
and unit-addresses.

arch/arm/boot/dts/am437x-idk-evm.dtb: Warning (spi_bus_bridge): /ocp@44000000/qspi@47900000: node name for SPI buses should be 'spi'
arch/arm/boot/dts/am437x-sk-evm.dtb: Warning (spi_bus_bridge): /ocp@44000000/qspi@47900000: node name for SPI buses should be 'spi'
arch/arm/boot/dts/am43x-epos-evm.dtb: Warning (spi_bus_bridge): /ocp@44000000/qspi@47900000: node name for SPI buses should be 'spi'
arch/arm/boot/dts/omap3-n9.dtb: Warning (i2c_bus_reg): /ocp@68000000/i2c@48060000/ak8975@0f: I2C bus unit address format error, expected "f"
arch/arm/boot/dts/am335x-osd3358-sm-red.dtb: Warning (i2c_bus_reg): /ocp/i2c@44e0b000/pressure@78: I2C bus unit address format error, expected "76"
arch/arm/boot/dts/am335x-boneblack.dtb: Warning (i2c_bus_reg): /ocp/i2c@44e0b000/tda19988: I2C bus unit address format error, expected "70"
arch/arm/boot/dts/am335x-boneblack-wireless.dtb: Warning (i2c_bus_reg): /ocp/i2c@44e0b000/tda19988: I2C bus unit address format error, expected "70"
arch/arm/boot/dts/am335x-sancloud-bbe.dtb: Warning (i2c_bus_reg): /ocp/i2c@44e0b000/tda19988: I2C bus unit address format error, expected "70"
arch/arm/boot/dts/am571x-idk.dtb: Warning (spi_bus_bridge): /ocp/qspi@4b300000: node name for SPI buses should be 'spi'
arch/arm/boot/dts/am572x-idk.dtb: Warning (spi_bus_bridge): /ocp/qspi@4b300000: node name for SPI buses should be 'spi'
arch/arm/boot/dts/am574x-idk.dtb: Warning (spi_bus_bridge): /ocp/qspi@4b300000: node name for SPI buses should be 'spi'
arch/arm/boot/dts/am57xx-cl-som-am57x.dtb: Warning (spi_bus_bridge): /ocp/qspi@4b300000: node name for SPI buses should be 'spi'
arch/arm/boot/dts/am57xx-sbc-am57x.dtb: Warning (spi_bus_bridge): /ocp/qspi@4b300000: node name for SPI buses should be 'spi'
arch/arm/boot/dts/dra72-evm.dtb: Warning (spi_bus_bridge): /ocp/qspi@4b300000: node name for SPI buses should be 'spi'
arch/arm/boot/dts/dra72-evm-revc.dtb: Warning (spi_bus_bridge): /ocp/qspi@4b300000: node name for SPI buses should be 'spi'
arch/arm/boot/dts/dra76-evm.dtb: Warning (spi_bus_bridge): /ocp/qspi@4b300000: node name for SPI buses should be 'spi'
arch/arm/boot/dts/dra7-evm.dtb: Warning (spi_bus_bridge): /ocp/qspi@4b300000: node name for SPI buses should be 'spi'
arch/arm/boot/dts/am335x-pdu001.dtb: Warning (spi_bus_reg): /ocp/spi@481a0000/cfaf240320a032t: SPI bus unit address format error, expected "0"
arch/arm/boot/dts/keystone-k2g-evm.dtb: Warning (spi_bus_bridge): /soc@0/qspi@2940000: node name for SPI buses should be 'spi'
arch/arm/boot/dts/keystone-k2g-ice.dtb: Warning (spi_bus_bridge): /soc@0/qspi@2940000: node name for SPI buses should be 'spi'

Cc: "Benoît Cousson" <bcousson@baylibre.com>
Cc: Tony Lindgren <tony@atomide.com>
Cc: Santosh Shilimkar <ssantosh@kernel.org>
Cc: linux-omap@vger.kernel.org
Signed-off-by: Rob Herring <robh@kernel.org>
[tony@atomide.com: fixed mode to 644 for am335x-osd3358-sm-red.dts while at it]
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/am335x-boneblack-common.dtsi | 2 +-
 arch/arm/boot/dts/am335x-osd3358-sm-red.dts    | 2 +-
 arch/arm/boot/dts/am335x-pdu001.dts            | 2 +-
 arch/arm/boot/dts/am4372.dtsi                  | 2 +-
 arch/arm/boot/dts/am57xx-cl-som-am57x.dts      | 2 +-
 arch/arm/boot/dts/dra7.dtsi                    | 2 +-
 arch/arm/boot/dts/keystone-k2g.dtsi            | 2 +-
 arch/arm/boot/dts/omap2.dtsi                   | 4 ++--
 arch/arm/boot/dts/omap2430.dtsi                | 2 +-
 arch/arm/boot/dts/omap3-n9.dts                 | 2 +-
 10 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/arch/arm/boot/dts/am335x-boneblack-common.dtsi b/arch/arm/boot/dts/am335x-boneblack-common.dtsi
index 325daae40278a..21bc1173fa6b9 100644
--- a/arch/arm/boot/dts/am335x-boneblack-common.dtsi
+++ b/arch/arm/boot/dts/am335x-boneblack-common.dtsi
@@ -88,7 +88,7 @@
 };
 
 &i2c0 {
-	tda19988: tda19988 {
+	tda19988: tda19988@70 {
 		compatible = "nxp,tda998x";
 		reg = <0x70>;
 
diff --git a/arch/arm/boot/dts/am335x-osd3358-sm-red.dts b/arch/arm/boot/dts/am335x-osd3358-sm-red.dts
index 4d969013f99a6..d9e92671055bd 100644
--- a/arch/arm/boot/dts/am335x-osd3358-sm-red.dts
+++ b/arch/arm/boot/dts/am335x-osd3358-sm-red.dts
@@ -161,7 +161,7 @@
 		invensense,key = [4e cc 7e eb f6 1e 35 22 00 34 0d 65 32 e9 94 89];*/
 	};
 
-	bmp280: pressure@78 {
+	bmp280: pressure@76 {
 		compatible = "bosch,bmp280";
 		reg = <0x76>;
 	};
diff --git a/arch/arm/boot/dts/am335x-pdu001.dts b/arch/arm/boot/dts/am335x-pdu001.dts
index 1ad530a39a957..34fb63ef420f5 100644
--- a/arch/arm/boot/dts/am335x-pdu001.dts
+++ b/arch/arm/boot/dts/am335x-pdu001.dts
@@ -373,7 +373,7 @@
 	ti,pindir-d0-out-d1-in;
 	status = "okay";
 
-	cfaf240320a032t {
+	display-controller@0 {
 		compatible = "orisetech,otm3225a";
 		reg = <0>;
 		spi-max-frequency = <1000000>;
diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi
index cf1e4f747242f..09e58fb810d95 100644
--- a/arch/arm/boot/dts/am4372.dtsi
+++ b/arch/arm/boot/dts/am4372.dtsi
@@ -1101,7 +1101,7 @@
 			};
 		};
 
-		qspi: qspi@47900000 {
+		qspi: spi@47900000 {
 			compatible = "ti,am4372-qspi";
 			reg = <0x47900000 0x100>,
 			      <0x30000000 0x4000000>;
diff --git a/arch/arm/boot/dts/am57xx-cl-som-am57x.dts b/arch/arm/boot/dts/am57xx-cl-som-am57x.dts
index 203266f884807..52ae8eef60fc3 100644
--- a/arch/arm/boot/dts/am57xx-cl-som-am57x.dts
+++ b/arch/arm/boot/dts/am57xx-cl-som-am57x.dts
@@ -518,7 +518,7 @@
 	};
 
 	/* touch controller */
-	ads7846@0 {
+	touchscreen@1 {
 		pinctrl-names = "default";
 		pinctrl-0 = <&ads7846_pins>;
 
diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
index 2cb45ddd2ae3b..9136b3cf9a2ce 100644
--- a/arch/arm/boot/dts/dra7.dtsi
+++ b/arch/arm/boot/dts/dra7.dtsi
@@ -1369,7 +1369,7 @@
 			status = "disabled";
 		};
 
-		qspi: qspi@4b300000 {
+		qspi: spi@4b300000 {
 			compatible = "ti,dra7xxx-qspi";
 			reg = <0x4b300000 0x100>,
 			      <0x5c000000 0x4000000>;
diff --git a/arch/arm/boot/dts/keystone-k2g.dtsi b/arch/arm/boot/dts/keystone-k2g.dtsi
index 738b44cf2b0bb..1c833105d6c54 100644
--- a/arch/arm/boot/dts/keystone-k2g.dtsi
+++ b/arch/arm/boot/dts/keystone-k2g.dtsi
@@ -416,7 +416,7 @@
 			clock-names = "fck", "mmchsdb_fck";
 		};
 
-		qspi: qspi@2940000 {
+		qspi: spi@2940000 {
 			compatible = "ti,k2g-qspi", "cdns,qspi-nor";
 			#address-cells = <1>;
 			#size-cells = <0>;
diff --git a/arch/arm/boot/dts/omap2.dtsi b/arch/arm/boot/dts/omap2.dtsi
index f1d6de8b3c193..000bf16de6517 100644
--- a/arch/arm/boot/dts/omap2.dtsi
+++ b/arch/arm/boot/dts/omap2.dtsi
@@ -114,7 +114,7 @@
 			dma-names = "tx", "rx";
 		};
 
-		mcspi1: mcspi@48098000 {
+		mcspi1: spi@48098000 {
 			compatible = "ti,omap2-mcspi";
 			ti,hwmods = "mcspi1";
 			reg = <0x48098000 0x100>;
@@ -125,7 +125,7 @@
 				    "tx2", "rx2", "tx3", "rx3";
 		};
 
-		mcspi2: mcspi@4809a000 {
+		mcspi2: spi@4809a000 {
 			compatible = "ti,omap2-mcspi";
 			ti,hwmods = "mcspi2";
 			reg = <0x4809a000 0x100>;
diff --git a/arch/arm/boot/dts/omap2430.dtsi b/arch/arm/boot/dts/omap2430.dtsi
index 84635eeb99cd4..7f57af2f10acb 100644
--- a/arch/arm/boot/dts/omap2430.dtsi
+++ b/arch/arm/boot/dts/omap2430.dtsi
@@ -285,7 +285,7 @@
 			ti,timer-alwon;
 		};
 
-		mcspi3: mcspi@480b8000 {
+		mcspi3: spi@480b8000 {
 			compatible = "ti,omap2-mcspi";
 			ti,hwmods = "mcspi3";
 			reg = <0x480b8000 0x100>;
diff --git a/arch/arm/boot/dts/omap3-n9.dts b/arch/arm/boot/dts/omap3-n9.dts
index ded5fcf084eb7..1f91646b89516 100644
--- a/arch/arm/boot/dts/omap3-n9.dts
+++ b/arch/arm/boot/dts/omap3-n9.dts
@@ -40,7 +40,7 @@
 };
 
 &i2c3 {
-	ak8975@0f {
+	ak8975@f {
 		compatible = "asahi-kasei,ak8975";
 		reg = <0x0f>;
 	};
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 298/422] f2fs: avoid infinite loop in f2fs_alloc_nid
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (296 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 297/422] ARM: dts: ti: Fix SPI and I2C bus warnings Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 299/422] f2fs: fix to recover inodes uid/gid during POR Greg Kroah-Hartman
                   ` (127 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Chao Yu, Chao Yu, Jaegeuk Kim, Sasha Levin

From: Jaegeuk Kim <jaegeuk@kernel.org>

[ Upstream commit f84262b0862d43b71b3e80a036cdd9d82e620367 ]

If we have an error in f2fs_build_free_nids, we're able to fall into a loop
to find free nids.

Suggested-by: Chao Yu <chao@kernel.org>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/f2fs/node.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index aa8f19e1bdb3d..e5d474681471c 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -2367,8 +2367,9 @@ retry:
 	spin_unlock(&nm_i->nid_list_lock);
 
 	/* Let's scan nat pages and its caches to get free nids */
-	f2fs_build_free_nids(sbi, true, false);
-	goto retry;
+	if (!f2fs_build_free_nids(sbi, true, false))
+		goto retry;
+	return false;
 }
 
 /*
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 299/422] f2fs: fix to recover inodes uid/gid during POR
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (297 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 298/422] f2fs: avoid infinite loop in f2fs_alloc_nid Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 300/422] ARM: dts: ux500: Correct SCU unit address Greg Kroah-Hartman
                   ` (126 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Chao Yu, Jaegeuk Kim, Sasha Levin

From: Chao Yu <yuchao0@huawei.com>

[ Upstream commit dc4cd1257c86451cec3e8e352cc376348e4f4af4 ]

Step to reproduce this bug:
1. logon as root
2. mount -t f2fs /dev/sdd /mnt;
3. touch /mnt/file;
4. chown system /mnt/file; chgrp system /mnt/file;
5. xfs_io -f /mnt/file -c "fsync";
6. godown /mnt;
7. umount /mnt;
8. mount -t f2fs /dev/sdd /mnt;

After step 8) we will expect file's uid/gid are all system, but during
recovery, these two fields were not been recovered, fix it.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/f2fs/recovery.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/fs/f2fs/recovery.c b/fs/f2fs/recovery.c
index 2c3be4c3c626f..2c5d2c25d37e3 100644
--- a/fs/f2fs/recovery.c
+++ b/fs/f2fs/recovery.c
@@ -216,6 +216,8 @@ static void recover_inode(struct inode *inode, struct page *page)
 	char *name;
 
 	inode->i_mode = le16_to_cpu(raw->i_mode);
+	i_uid_write(inode, le32_to_cpu(raw->i_uid));
+	i_gid_write(inode, le32_to_cpu(raw->i_gid));
 	f2fs_i_size_write(inode, le64_to_cpu(raw->i_size));
 	inode->i_atime.tv_sec = le64_to_cpu(raw->i_atime);
 	inode->i_ctime.tv_sec = le64_to_cpu(raw->i_ctime);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 300/422] ARM: dts: ux500: Correct SCU unit address
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (298 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 299/422] f2fs: fix to recover inodes uid/gid during POR Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 301/422] ARM: dts: ux500: Fix LCDA clock line muxing Greg Kroah-Hartman
                   ` (125 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Geert Uytterhoeven, Linus Walleij,
	Sasha Levin

From: Geert Uytterhoeven <geert+renesas@glider.be>

[ Upstream commit 2f217d24ecaec2012e628d21e244eef0608656a4 ]

The unit address of the Cortex-A9 SCU device node contains one zero too
many.  Remove it.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/ste-dbx5x0.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/ste-dbx5x0.dtsi b/arch/arm/boot/dts/ste-dbx5x0.dtsi
index 2310a4e97768c..3dc0028e108b3 100644
--- a/arch/arm/boot/dts/ste-dbx5x0.dtsi
+++ b/arch/arm/boot/dts/ste-dbx5x0.dtsi
@@ -197,7 +197,7 @@
 			      <0xa0410100 0x100>;
 		};
 
-		scu@a04100000 {
+		scu@a0410000 {
 			compatible = "arm,cortex-a9-scu";
 			reg = <0xa0410000 0x100>;
 		};
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 301/422] ARM: dts: ux500: Fix LCDA clock line muxing
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (299 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 300/422] ARM: dts: ux500: Correct SCU unit address Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 302/422] ARM: dts: ste: Fix SPI controller node names Greg Kroah-Hartman
                   ` (124 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Linus Walleij, Sasha Levin

From: Linus Walleij <linus.walleij@linaro.org>

[ Upstream commit ecde29569e3484e1d0a032bf4074449bce4d4a03 ]

The "lcdaclk_b_1" group is muxed with the function "lcd"
but needs a separate entry to be muxed in with "lcda"
rather than "lcd".

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/ste-href-family-pinctrl.dtsi | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/ste-href-family-pinctrl.dtsi b/arch/arm/boot/dts/ste-href-family-pinctrl.dtsi
index 5c5cea232743d..1ec193b0c5065 100644
--- a/arch/arm/boot/dts/ste-href-family-pinctrl.dtsi
+++ b/arch/arm/boot/dts/ste-href-family-pinctrl.dtsi
@@ -607,16 +607,20 @@
 
 			mcde {
 				lcd_default_mode: lcd_default {
-					default_mux {
+					default_mux1 {
 						/* Mux in VSI0 and all the data lines */
 						function = "lcd";
 						groups =
 						"lcdvsi0_a_1", /* VSI0 for LCD */
 						"lcd_d0_d7_a_1", /* Data lines */
 						"lcd_d8_d11_a_1", /* TV-out */
-						"lcdaclk_b_1", /* Clock line for TV-out */
 						"lcdvsi1_a_1"; /* VSI1 for HDMI */
 					};
+					default_mux2 {
+						function = "lcda";
+						groups =
+						"lcdaclk_b_1"; /* Clock line for TV-out */
+					};
 					default_cfg1 {
 						pins =
 						"GPIO68_E1", /* VSI0 */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 302/422] ARM: dts: ste: Fix SPI controller node names
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (300 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 301/422] ARM: dts: ux500: Fix LCDA clock line muxing Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 303/422] spi: pic32: Use proper enum in dmaengine_prep_slave_rg Greg Kroah-Hartman
                   ` (123 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Rob Herring, Linus Walleij, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit 2f967f9e9fa076affb711da1a8389b5d33814fc6 ]

SPI controller nodes should be named 'spi' rather than 'ssp'. Fixing the
name enables dtc SPI bus checks.

Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/ste-dbx5x0.dtsi     | 4 ++--
 arch/arm/boot/dts/ste-hrefprev60.dtsi | 2 +-
 arch/arm/boot/dts/ste-snowball.dts    | 2 +-
 arch/arm/boot/dts/ste-u300.dts        | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/arm/boot/dts/ste-dbx5x0.dtsi b/arch/arm/boot/dts/ste-dbx5x0.dtsi
index 3dc0028e108b3..986767735e249 100644
--- a/arch/arm/boot/dts/ste-dbx5x0.dtsi
+++ b/arch/arm/boot/dts/ste-dbx5x0.dtsi
@@ -878,7 +878,7 @@
 			power-domains = <&pm_domains DOMAIN_VAPE>;
 		};
 
-		ssp@80002000 {
+		spi@80002000 {
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0x80002000 0x1000>;
 			interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
@@ -892,7 +892,7 @@
 			power-domains = <&pm_domains DOMAIN_VAPE>;
 		};
 
-		ssp@80003000 {
+		spi@80003000 {
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0x80003000 0x1000>;
 			interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
diff --git a/arch/arm/boot/dts/ste-hrefprev60.dtsi b/arch/arm/boot/dts/ste-hrefprev60.dtsi
index 3f14b4df69b4e..94eeb7f1c9478 100644
--- a/arch/arm/boot/dts/ste-hrefprev60.dtsi
+++ b/arch/arm/boot/dts/ste-hrefprev60.dtsi
@@ -57,7 +57,7 @@
 			};
 		};
 
-		ssp@80002000 {
+		spi@80002000 {
 			/*
 			 * On the first generation boards, this SSP/SPI port was connected
 			 * to the AB8500.
diff --git a/arch/arm/boot/dts/ste-snowball.dts b/arch/arm/boot/dts/ste-snowball.dts
index b0b94d0530985..603890461ae0f 100644
--- a/arch/arm/boot/dts/ste-snowball.dts
+++ b/arch/arm/boot/dts/ste-snowball.dts
@@ -376,7 +376,7 @@
 			pinctrl-1 = <&i2c3_sleep_mode>;
 		};
 
-		ssp@80002000 {
+		spi@80002000 {
 			pinctrl-names = "default";
 			pinctrl-0 = <&ssp0_snowball_mode>;
 		};
diff --git a/arch/arm/boot/dts/ste-u300.dts b/arch/arm/boot/dts/ste-u300.dts
index 62ecb6a2fa39e..1bd1aba3322f1 100644
--- a/arch/arm/boot/dts/ste-u300.dts
+++ b/arch/arm/boot/dts/ste-u300.dts
@@ -442,7 +442,7 @@
 			dma-names = "rx";
 		};
 
-		spi: ssp@c0006000 {
+		spi: spi@c0006000 {
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0xc0006000 0x1000>;
 			interrupt-parent = <&vica>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 303/422] spi: pic32: Use proper enum in dmaengine_prep_slave_rg
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (301 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 302/422] ARM: dts: ste: Fix SPI controller node names Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 304/422] crypto: chacha20 - Fix chacha20_block() keystream alignment (again) Greg Kroah-Hartman
                   ` (122 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Nathan Chancellor, Mark Brown, Sasha Levin

From: Nathan Chancellor <natechancellor@gmail.com>

[ Upstream commit 8cfde7847d5ed0bb77bace41519572963e43cd17 ]

Clang warns when one enumerated type is converted implicitly to another:

drivers/spi/spi-pic32.c:323:8: warning: implicit conversion from
enumeration type 'enum dma_data_direction' to different enumeration type
'enum dma_transfer_direction' [-Wenum-conversion]
                                          DMA_FROM_DEVICE,
                                          ^~~~~~~~~~~~~~~
drivers/spi/spi-pic32.c:333:8: warning: implicit conversion from
enumeration type 'enum dma_data_direction' to different enumeration type
'enum dma_transfer_direction' [-Wenum-conversion]
                                          DMA_TO_DEVICE,
                                          ^~~~~~~~~~~~~
2 warnings generated.

Use the proper enums from dma_transfer_direction (DMA_FROM_DEVICE =
DMA_DEV_TO_MEM = 2, DMA_TO_DEVICE = DMA_MEM_TO_DEV = 1) to satify Clang.

Link: https://github.com/ClangBuiltLinux/linux/issues/159
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/spi/spi-pic32.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/spi/spi-pic32.c b/drivers/spi/spi-pic32.c
index f8a45af1fa9f2..288002f6c613e 100644
--- a/drivers/spi/spi-pic32.c
+++ b/drivers/spi/spi-pic32.c
@@ -320,7 +320,7 @@ static int pic32_spi_dma_transfer(struct pic32_spi *pic32s,
 	desc_rx = dmaengine_prep_slave_sg(master->dma_rx,
 					  xfer->rx_sg.sgl,
 					  xfer->rx_sg.nents,
-					  DMA_FROM_DEVICE,
+					  DMA_DEV_TO_MEM,
 					  DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
 	if (!desc_rx) {
 		ret = -EINVAL;
@@ -330,7 +330,7 @@ static int pic32_spi_dma_transfer(struct pic32_spi *pic32s,
 	desc_tx = dmaengine_prep_slave_sg(master->dma_tx,
 					  xfer->tx_sg.sgl,
 					  xfer->tx_sg.nents,
-					  DMA_TO_DEVICE,
+					  DMA_MEM_TO_DEV,
 					  DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
 	if (!desc_tx) {
 		ret = -EINVAL;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 304/422] crypto: chacha20 - Fix chacha20_block() keystream alignment (again)
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (302 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 303/422] spi: pic32: Use proper enum in dmaengine_prep_slave_rg Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 305/422] cpufeature: avoid warning when compiling with clang Greg Kroah-Hartman
                   ` (121 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Stephan Müller, Theodore Tso,
	Eric Biggers, Herbert Xu, Sasha Levin

From: Eric Biggers <ebiggers@google.com>

[ Upstream commit a5e9f557098e54af44ade5d501379be18435bfbf ]

In commit 9f480faec58c ("crypto: chacha20 - Fix keystream alignment for
chacha20_block()"), I had missed that chacha20_block() can be called
directly on the buffer passed to get_random_bytes(), which can have any
alignment.  So, while my commit didn't break anything, it didn't fully
solve the alignment problems.

Revert my solution and just update chacha20_block() to use
put_unaligned_le32(), so the output buffer need not be aligned.
This is simpler, and on many CPUs it's the same speed.

But, I kept the 'tmp' buffers in extract_crng_user() and
_get_random_bytes() 4-byte aligned, since that alignment is actually
needed for _crng_backtrack_protect() too.

Reported-by: Stephan Müller <smueller@chronox.de>
Cc: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 crypto/chacha20_generic.c |  7 ++++---
 drivers/char/random.c     | 24 ++++++++++++------------
 include/crypto/chacha20.h |  3 +--
 lib/chacha20.c            |  6 +++---
 4 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/crypto/chacha20_generic.c b/crypto/chacha20_generic.c
index e451c3cb6a56e..3ae96587caf9a 100644
--- a/crypto/chacha20_generic.c
+++ b/crypto/chacha20_generic.c
@@ -18,20 +18,21 @@
 static void chacha20_docrypt(u32 *state, u8 *dst, const u8 *src,
 			     unsigned int bytes)
 {
-	u32 stream[CHACHA20_BLOCK_WORDS];
+	/* aligned to potentially speed up crypto_xor() */
+	u8 stream[CHACHA20_BLOCK_SIZE] __aligned(sizeof(long));
 
 	if (dst != src)
 		memcpy(dst, src, bytes);
 
 	while (bytes >= CHACHA20_BLOCK_SIZE) {
 		chacha20_block(state, stream);
-		crypto_xor(dst, (const u8 *)stream, CHACHA20_BLOCK_SIZE);
+		crypto_xor(dst, stream, CHACHA20_BLOCK_SIZE);
 		bytes -= CHACHA20_BLOCK_SIZE;
 		dst += CHACHA20_BLOCK_SIZE;
 	}
 	if (bytes) {
 		chacha20_block(state, stream);
-		crypto_xor(dst, (const u8 *)stream, bytes);
+		crypto_xor(dst, stream, bytes);
 	}
 }
 
diff --git a/drivers/char/random.c b/drivers/char/random.c
index 0a84b7f468ad0..86fe1df902393 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -433,9 +433,9 @@ static int crng_init_cnt = 0;
 static unsigned long crng_global_init_time = 0;
 #define CRNG_INIT_CNT_THRESH (2*CHACHA20_KEY_SIZE)
 static void _extract_crng(struct crng_state *crng,
-			  __u32 out[CHACHA20_BLOCK_WORDS]);
+			  __u8 out[CHACHA20_BLOCK_SIZE]);
 static void _crng_backtrack_protect(struct crng_state *crng,
-				    __u32 tmp[CHACHA20_BLOCK_WORDS], int used);
+				    __u8 tmp[CHACHA20_BLOCK_SIZE], int used);
 static void process_random_ready_list(void);
 static void _get_random_bytes(void *buf, int nbytes);
 
@@ -929,7 +929,7 @@ static void crng_reseed(struct crng_state *crng, struct entropy_store *r)
 	unsigned long	flags;
 	int		i, num;
 	union {
-		__u32	block[CHACHA20_BLOCK_WORDS];
+		__u8	block[CHACHA20_BLOCK_SIZE];
 		__u32	key[8];
 	} buf;
 
@@ -976,7 +976,7 @@ static void crng_reseed(struct crng_state *crng, struct entropy_store *r)
 }
 
 static void _extract_crng(struct crng_state *crng,
-			  __u32 out[CHACHA20_BLOCK_WORDS])
+			  __u8 out[CHACHA20_BLOCK_SIZE])
 {
 	unsigned long v, flags;
 
@@ -993,7 +993,7 @@ static void _extract_crng(struct crng_state *crng,
 	spin_unlock_irqrestore(&crng->lock, flags);
 }
 
-static void extract_crng(__u32 out[CHACHA20_BLOCK_WORDS])
+static void extract_crng(__u8 out[CHACHA20_BLOCK_SIZE])
 {
 	struct crng_state *crng = NULL;
 
@@ -1011,7 +1011,7 @@ static void extract_crng(__u32 out[CHACHA20_BLOCK_WORDS])
  * enough) to mutate the CRNG key to provide backtracking protection.
  */
 static void _crng_backtrack_protect(struct crng_state *crng,
-				    __u32 tmp[CHACHA20_BLOCK_WORDS], int used)
+				    __u8 tmp[CHACHA20_BLOCK_SIZE], int used)
 {
 	unsigned long	flags;
 	__u32		*s, *d;
@@ -1023,14 +1023,14 @@ static void _crng_backtrack_protect(struct crng_state *crng,
 		used = 0;
 	}
 	spin_lock_irqsave(&crng->lock, flags);
-	s = &tmp[used / sizeof(__u32)];
+	s = (__u32 *) &tmp[used];
 	d = &crng->state[4];
 	for (i=0; i < 8; i++)
 		*d++ ^= *s++;
 	spin_unlock_irqrestore(&crng->lock, flags);
 }
 
-static void crng_backtrack_protect(__u32 tmp[CHACHA20_BLOCK_WORDS], int used)
+static void crng_backtrack_protect(__u8 tmp[CHACHA20_BLOCK_SIZE], int used)
 {
 	struct crng_state *crng = NULL;
 
@@ -1046,7 +1046,7 @@ static void crng_backtrack_protect(__u32 tmp[CHACHA20_BLOCK_WORDS], int used)
 static ssize_t extract_crng_user(void __user *buf, size_t nbytes)
 {
 	ssize_t ret = 0, i = CHACHA20_BLOCK_SIZE;
-	__u32 tmp[CHACHA20_BLOCK_WORDS];
+	__u8 tmp[CHACHA20_BLOCK_SIZE] __aligned(4);
 	int large_request = (nbytes > 256);
 
 	while (nbytes) {
@@ -1625,7 +1625,7 @@ static void _warn_unseeded_randomness(const char *func_name, void *caller,
  */
 static void _get_random_bytes(void *buf, int nbytes)
 {
-	__u32 tmp[CHACHA20_BLOCK_WORDS];
+	__u8 tmp[CHACHA20_BLOCK_SIZE] __aligned(4);
 
 	trace_get_random_bytes(nbytes, _RET_IP_);
 
@@ -2251,7 +2251,7 @@ u64 get_random_u64(void)
 	batch = raw_cpu_ptr(&batched_entropy_u64);
 	spin_lock_irqsave(&batch->batch_lock, flags);
 	if (batch->position % ARRAY_SIZE(batch->entropy_u64) == 0) {
-		extract_crng((__u32 *)batch->entropy_u64);
+		extract_crng((u8 *)batch->entropy_u64);
 		batch->position = 0;
 	}
 	ret = batch->entropy_u64[batch->position++];
@@ -2278,7 +2278,7 @@ u32 get_random_u32(void)
 	batch = raw_cpu_ptr(&batched_entropy_u32);
 	spin_lock_irqsave(&batch->batch_lock, flags);
 	if (batch->position % ARRAY_SIZE(batch->entropy_u32) == 0) {
-		extract_crng(batch->entropy_u32);
+		extract_crng((u8 *)batch->entropy_u32);
 		batch->position = 0;
 	}
 	ret = batch->entropy_u32[batch->position++];
diff --git a/include/crypto/chacha20.h b/include/crypto/chacha20.h
index b83d66073db03..f76302d99e2be 100644
--- a/include/crypto/chacha20.h
+++ b/include/crypto/chacha20.h
@@ -13,13 +13,12 @@
 #define CHACHA20_IV_SIZE	16
 #define CHACHA20_KEY_SIZE	32
 #define CHACHA20_BLOCK_SIZE	64
-#define CHACHA20_BLOCK_WORDS	(CHACHA20_BLOCK_SIZE / sizeof(u32))
 
 struct chacha20_ctx {
 	u32 key[8];
 };
 
-void chacha20_block(u32 *state, u32 *stream);
+void chacha20_block(u32 *state, u8 *stream);
 void crypto_chacha20_init(u32 *state, struct chacha20_ctx *ctx, u8 *iv);
 int crypto_chacha20_setkey(struct crypto_skcipher *tfm, const u8 *key,
 			   unsigned int keysize);
diff --git a/lib/chacha20.c b/lib/chacha20.c
index c1cc50fb68c9f..d907fec6a9ed1 100644
--- a/lib/chacha20.c
+++ b/lib/chacha20.c
@@ -16,9 +16,9 @@
 #include <asm/unaligned.h>
 #include <crypto/chacha20.h>
 
-void chacha20_block(u32 *state, u32 *stream)
+void chacha20_block(u32 *state, u8 *stream)
 {
-	u32 x[16], *out = stream;
+	u32 x[16];
 	int i;
 
 	for (i = 0; i < ARRAY_SIZE(x); i++)
@@ -67,7 +67,7 @@ void chacha20_block(u32 *state, u32 *stream)
 	}
 
 	for (i = 0; i < ARRAY_SIZE(x); i++)
-		out[i] = cpu_to_le32(x[i] + state[i]);
+		put_unaligned_le32(x[i] + state[i], &stream[i * sizeof(u32)]);
 
 	state[12]++;
 }
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 305/422] cpufeature: avoid warning when compiling with clang
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (303 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 304/422] crypto: chacha20 - Fix chacha20_block() keystream alignment (again) Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 306/422] crypto: arm/crc32 - avoid warning when compiling with Clang Greg Kroah-Hartman
                   ` (120 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Stefan Agner, Ard Biesheuvel,
	Herbert Xu, Sasha Levin

From: Stefan Agner <stefan@agner.ch>

[ Upstream commit c785896b21dd8e156326ff660050b0074d3431df ]

The table id (second) argument to MODULE_DEVICE_TABLE is often
referenced otherwise. This is not the case for CPU features. This
leads to warnings when building the kernel with Clang:
  arch/arm/crypto/aes-ce-glue.c:450:1: warning: variable
    'cpu_feature_match_AES' is not needed and will not be emitted
    [-Wunneeded-internal-declaration]
  module_cpu_feature_match(AES, aes_init);
  ^

Avoid warnings by using __maybe_unused, similar to commit 1f318a8bafcf
("modules: mark __inittest/__exittest as __maybe_unused").

Fixes: 67bad2fdb754 ("cpu: add generic support for CPU feature based module autoloading")
Signed-off-by: Stefan Agner <stefan@agner.ch>
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/linux/cpufeature.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/cpufeature.h b/include/linux/cpufeature.h
index 986c06c88d814..84d3c81b59781 100644
--- a/include/linux/cpufeature.h
+++ b/include/linux/cpufeature.h
@@ -45,7 +45,7 @@
  * 'asm/cpufeature.h' of your favorite architecture.
  */
 #define module_cpu_feature_match(x, __initfunc)			\
-static struct cpu_feature const cpu_feature_match_ ## x[] =	\
+static struct cpu_feature const __maybe_unused cpu_feature_match_ ## x[] = \
 	{ { .feature = cpu_feature(x) }, { } };			\
 MODULE_DEVICE_TABLE(cpu, cpu_feature_match_ ## x);		\
 								\
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 306/422] crypto: arm/crc32 - avoid warning when compiling with Clang
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (304 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 305/422] cpufeature: avoid warning when compiling with clang Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 307/422] ARM: dts: marvell: Fix SPI and I2C bus warnings Greg Kroah-Hartman
                   ` (119 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Stefan Agner, Ard Biesheuvel,
	Herbert Xu, Sasha Levin

From: Stefan Agner <stefan@agner.ch>

[ Upstream commit cd560235d8f9ddd94aa51e1c4dabdf3212b9b241 ]

The table id (second) argument to MODULE_DEVICE_TABLE is often
referenced otherwise. This is not the case for CPU features. This
leads to a warning when building the kernel with Clang:
  arch/arm/crypto/crc32-ce-glue.c:239:33: warning: variable
    'crc32_cpu_feature' is not needed and will not be emitted
    [-Wunneeded-internal-declaration]
  static const struct cpu_feature crc32_cpu_feature[] = {
                                  ^

Avoid warnings by using __maybe_unused, similar to commit 1f318a8bafcf
("modules: mark __inittest/__exittest as __maybe_unused").

Fixes: 2a9faf8b7e43 ("crypto: arm/crc32 - enable module autoloading based on CPU feature bits")
Signed-off-by: Stefan Agner <stefan@agner.ch>
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/crypto/crc32-ce-glue.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/crypto/crc32-ce-glue.c b/arch/arm/crypto/crc32-ce-glue.c
index 96e62ec105d06..cd9e93b46c2dd 100644
--- a/arch/arm/crypto/crc32-ce-glue.c
+++ b/arch/arm/crypto/crc32-ce-glue.c
@@ -236,7 +236,7 @@ static void __exit crc32_pmull_mod_exit(void)
 				  ARRAY_SIZE(crc32_pmull_algs));
 }
 
-static const struct cpu_feature crc32_cpu_feature[] = {
+static const struct cpu_feature __maybe_unused crc32_cpu_feature[] = {
 	{ cpu_feature(CRC32) }, { cpu_feature(PMULL) }, { }
 };
 MODULE_DEVICE_TABLE(cpu, crc32_cpu_feature);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 307/422] ARM: dts: marvell: Fix SPI and I2C bus warnings
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (305 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 306/422] crypto: arm/crc32 - avoid warning when compiling with Clang Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 308/422] x86/mce-inject: Reset injection struct after injection Greg Kroah-Hartman
                   ` (118 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jason Cooper, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Rob Herring, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit cf680cc5251487b9a39919c3cda31a108af19cf8 ]

dtc has new checks for I2C and SPI buses. Fix the warnings in node names
and unit-addresses.

arch/arm/boot/dts/dove-cubox.dtb: Warning (i2c_bus_reg): /i2c-mux/i2c@0/clock-generator: I2C bus unit address format error, expected "60"
arch/arm/boot/dts/dove-cubox-es.dtb: Warning (i2c_bus_reg): /i2c-mux/i2c@0/clock-generator: I2C bus unit address format error, expected "60"
arch/arm/boot/dts/dove-cubox.dtb: Warning (spi_bus_bridge): /mbus/internal-regs/spi-ctrl@10600: node name for SPI buses should be 'spi'
arch/arm/boot/dts/dove-cubox-es.dtb: Warning (spi_bus_bridge): /mbus/internal-regs/spi-ctrl@10600: node name for SPI buses should be 'spi'
arch/arm/boot/dts/dove-dove-db.dtb: Warning (spi_bus_bridge): /mbus/internal-regs/spi-ctrl@10600: node name for SPI buses should be 'spi'
arch/arm/boot/dts/dove-sbc-a510.dtb: Warning (spi_bus_bridge): /mbus/internal-regs/spi-ctrl@10600: node name for SPI buses should be 'spi'
arch/arm/boot/dts/dove-sbc-a510.dtb: Warning (spi_bus_bridge): /mbus/internal-regs/spi-ctrl@14600: node name for SPI buses should be 'spi'
arch/arm/boot/dts/orion5x-kuroboxpro.dtb: Warning (i2c_bus_reg): /soc/internal-regs/i2c@11000/rtc: I2C bus unit address format error, expected "32"
arch/arm/boot/dts/orion5x-linkstation-lschl.dtb: Warning (i2c_bus_reg): /soc/internal-regs/i2c@11000/rtc: I2C bus unit address format error, expected "32"
arch/arm/boot/dts/orion5x-linkstation-lsgl.dtb: Warning (i2c_bus_reg): /soc/internal-regs/i2c@11000/rtc: I2C bus unit address format error, expected "32"
arch/arm/boot/dts/orion5x-linkstation-lswtgl.dtb: Warning (i2c_bus_reg): /soc/internal-regs/i2c@11000/rtc: I2C bus unit address format error, expected "32"

Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Cc: Gregory Clement <gregory.clement@bootlin.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/dove-cubox.dts           | 2 +-
 arch/arm/boot/dts/dove.dtsi                | 6 +++---
 arch/arm/boot/dts/orion5x-linkstation.dtsi | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/arm/boot/dts/dove-cubox.dts b/arch/arm/boot/dts/dove-cubox.dts
index 580e3cbcfbf7c..3e1584e787aec 100644
--- a/arch/arm/boot/dts/dove-cubox.dts
+++ b/arch/arm/boot/dts/dove-cubox.dts
@@ -87,7 +87,7 @@
 	status = "okay";
 	clock-frequency = <100000>;
 
-	si5351: clock-generator {
+	si5351: clock-generator@60 {
 		compatible = "silabs,si5351a-msop";
 		reg = <0x60>;
 		#address-cells = <1>;
diff --git a/arch/arm/boot/dts/dove.dtsi b/arch/arm/boot/dts/dove.dtsi
index 4a0a5115b2984..250ad0535e8cc 100644
--- a/arch/arm/boot/dts/dove.dtsi
+++ b/arch/arm/boot/dts/dove.dtsi
@@ -155,7 +155,7 @@
 				  0xffffe000 MBUS_ID(0x03, 0x01) 0 0x0000800   /* CESA SRAM  2k */
 				  0xfffff000 MBUS_ID(0x0d, 0x00) 0 0x0000800>; /* PMU  SRAM  2k */
 
-			spi0: spi-ctrl@10600 {
+			spi0: spi@10600 {
 				compatible = "marvell,orion-spi";
 				#address-cells = <1>;
 				#size-cells = <0>;
@@ -168,7 +168,7 @@
 				status = "disabled";
 			};
 
-			i2c: i2c-ctrl@11000 {
+			i2c: i2c@11000 {
 				compatible = "marvell,mv64xxx-i2c";
 				reg = <0x11000 0x20>;
 				#address-cells = <1>;
@@ -218,7 +218,7 @@
 				status = "disabled";
 			};
 
-			spi1: spi-ctrl@14600 {
+			spi1: spi@14600 {
 				compatible = "marvell,orion-spi";
 				#address-cells = <1>;
 				#size-cells = <0>;
diff --git a/arch/arm/boot/dts/orion5x-linkstation.dtsi b/arch/arm/boot/dts/orion5x-linkstation.dtsi
index ebd93df5d07a8..b6c9b85951ea6 100644
--- a/arch/arm/boot/dts/orion5x-linkstation.dtsi
+++ b/arch/arm/boot/dts/orion5x-linkstation.dtsi
@@ -156,7 +156,7 @@
 &i2c {
 	status = "okay";
 
-	rtc {
+	rtc@32 {
 		compatible = "ricoh,rs5c372a";
 		reg = <0x32>;
 	};
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 308/422] x86/mce-inject: Reset injection struct after injection
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (306 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 307/422] ARM: dts: marvell: Fix SPI and I2C bus warnings Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 309/422] ARM: dts: stm32: enable display on stm32mp157c-ev1 board Greg Kroah-Hartman
                   ` (117 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Borislav Petkov, Sasha Levin

From: Borislav Petkov <bp@suse.de>

[ Upstream commit 7401a633c34adc7aefd3edfec60074cb0475a3e8 ]

Clear the MCE struct which is used for collecting the injection details
after injection.

Also, populate it with more details from the machine.

Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20180905081954.10391-1-bp@alien8.de
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/x86/kernel/cpu/mcheck/mce-inject.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/x86/kernel/cpu/mcheck/mce-inject.c b/arch/x86/kernel/cpu/mcheck/mce-inject.c
index ff1c00b695aed..1ceccc4a5472c 100644
--- a/arch/x86/kernel/cpu/mcheck/mce-inject.c
+++ b/arch/x86/kernel/cpu/mcheck/mce-inject.c
@@ -106,6 +106,9 @@ static void setup_inj_struct(struct mce *m)
 	memset(m, 0, sizeof(struct mce));
 
 	m->cpuvendor = boot_cpu_data.x86_vendor;
+	m->time	     = ktime_get_real_seconds();
+	m->cpuid     = cpuid_eax(1);
+	m->microcode = boot_cpu_data.microcode;
 }
 
 /* Update fake mce registers on current CPU. */
@@ -580,6 +583,9 @@ static int inj_bank_set(void *data, u64 val)
 	m->bank = val;
 	do_inject();
 
+	/* Reset injection struct */
+	setup_inj_struct(&i_mce);
+
 	return 0;
 }
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 309/422] ARM: dts: stm32: enable display on stm32mp157c-ev1 board
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (307 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 308/422] x86/mce-inject: Reset injection struct after injection Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 310/422] ARM: dts: clearfog: fix sdhci supply property name Greg Kroah-Hartman
                   ` (116 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Yannick Fertré,
	Alexandre Torgue, Sasha Levin

From: Yannick Fertré <yannick.fertre@st.com>

[ Upstream commit 67330599f93672bd351123c729e2591a460fd24c ]

Enable panel raydium RM68200, DSI bridge & display controller.

Signed-off-by: Yannick Fertré <yannick.fertre@st.com>
Signed-off-by: Alexandre Torgue <alexandre.torgue@st.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/stm32mp157c-ev1.dts | 73 ++++++++++++++++++++++++---
 1 file changed, 67 insertions(+), 6 deletions(-)

diff --git a/arch/arm/boot/dts/stm32mp157c-ev1.dts b/arch/arm/boot/dts/stm32mp157c-ev1.dts
index 372bc2ea6b921..063ee8ac5dcbd 100644
--- a/arch/arm/boot/dts/stm32mp157c-ev1.dts
+++ b/arch/arm/boot/dts/stm32mp157c-ev1.dts
@@ -6,6 +6,7 @@
 /dts-v1/;
 
 #include "stm32mp157c-ed1.dts"
+#include <dt-bindings/gpio/gpio.h>
 
 / {
 	model = "STMicroelectronics STM32MP157C eval daughter on eval mother";
@@ -19,6 +20,58 @@
 		serial0 = &uart4;
 		ethernet0 = &ethernet0;
 	};
+
+	panel_backlight: panel-backlight {
+		compatible = "gpio-backlight";
+		gpios = <&gpiod 13 GPIO_ACTIVE_LOW>;
+		default-on;
+		status = "okay";
+	};
+};
+
+&cec {
+	pinctrl-names = "default";
+	pinctrl-0 = <&cec_pins_a>;
+	status = "okay";
+};
+
+&dsi {
+	#address-cells = <1>;
+	#size-cells = <0>;
+	status = "okay";
+
+	ports {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		port@0 {
+			reg = <0>;
+			dsi_in: endpoint {
+				remote-endpoint = <&ltdc_ep0_out>;
+			};
+		};
+
+		port@1 {
+			reg = <1>;
+			dsi_out: endpoint {
+				remote-endpoint = <&dsi_panel_in>;
+			};
+		};
+	};
+
+	panel-dsi@0 {
+		compatible = "raydium,rm68200";
+		reg = <0>;
+		reset-gpios = <&gpiof 15 GPIO_ACTIVE_LOW>;
+		backlight = <&panel_backlight>;
+		status = "okay";
+
+		port {
+			dsi_panel_in: endpoint {
+				remote-endpoint = <&dsi_out>;
+			};
+		};
+	};
 };
 
 &ethernet0 {
@@ -40,12 +93,6 @@
 	};
 };
 
-&cec {
-	pinctrl-names = "default";
-	pinctrl-0 = <&cec_pins_a>;
-	status = "okay";
-};
-
 &i2c2 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&i2c2_pins_a>;
@@ -62,6 +109,20 @@
 	status = "okay";
 };
 
+&ltdc {
+	status = "okay";
+
+	port {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		ltdc_ep0_out: endpoint@0 {
+			reg = <0>;
+			remote-endpoint = <&dsi_in>;
+		};
+	};
+};
+
 &m_can1 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&m_can1_pins_a>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 310/422] ARM: dts: clearfog: fix sdhci supply property name
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (308 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 309/422] ARM: dts: stm32: enable display on stm32mp157c-ev1 board Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 311/422] ARM: dts: stm32: Fix SPI controller node names Greg Kroah-Hartman
                   ` (115 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Baruch Siach, Gregory CLEMENT, Sasha Levin

From: Baruch Siach <baruch@tkos.co.il>

[ Upstream commit e807f0298144c06740022a2f900d86b7f115595e ]

The vmmc phandle, like all power supply property names, must have the
'-supply' suffix.

Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/armada-388-clearfog.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/armada-388-clearfog.dtsi b/arch/arm/boot/dts/armada-388-clearfog.dtsi
index 7c6ad2afb0947..1b0d0680c8b62 100644
--- a/arch/arm/boot/dts/armada-388-clearfog.dtsi
+++ b/arch/arm/boot/dts/armada-388-clearfog.dtsi
@@ -48,7 +48,7 @@
 					     &clearfog_sdhci_cd_pins>;
 				pinctrl-names = "default";
 				status = "okay";
-				vmmc = <&reg_3p3v>;
+				vmmc-supply = <&reg_3p3v>;
 				wp-inverted;
 			};
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 311/422] ARM: dts: stm32: Fix SPI controller node names
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (309 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 310/422] ARM: dts: clearfog: fix sdhci supply property name Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 312/422] bnx2x: Ignore bandwidth attention in single function mode Greg Kroah-Hartman
                   ` (114 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Maxime Coquelin, Alexandre Torgue,
	Rob Herring, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit 1ba23b1df0bb6eec430408614c3a11280941e112 ]

SPI controller nodes should be named 'spi' rather than 'qspi'. Fixing the
name enables dtc SPI bus checks.

Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Alexandre Torgue <alexandre.torgue@st.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/stm32mp157c.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/stm32mp157c.dtsi b/arch/arm/boot/dts/stm32mp157c.dtsi
index 185541a5b69fb..c50c36baba758 100644
--- a/arch/arm/boot/dts/stm32mp157c.dtsi
+++ b/arch/arm/boot/dts/stm32mp157c.dtsi
@@ -947,7 +947,7 @@
 			dma-requests = <48>;
 		};
 
-		qspi: qspi@58003000 {
+		qspi: spi@58003000 {
 			compatible = "st,stm32f469-qspi";
 			reg = <0x58003000 0x1000>, <0x70000000 0x10000000>;
 			reg-names = "qspi", "qspi_mm";
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 312/422] bnx2x: Ignore bandwidth attention in single function mode
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (310 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 311/422] ARM: dts: stm32: Fix SPI controller node names Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 313/422] PCI/AER: Take reference on error devices Greg Kroah-Hartman
                   ` (113 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Shahed Shaikh, Ariel Elior,
	David S. Miller, Sasha Levin

From: Shahed Shaikh <Shahed.Shaikh@cavium.com>

[ Upstream commit 75a110a1783ef8324ffd763b24f4ac268253cbca ]

This is a workaround for FW bug -
MFW generates bandwidth attention in single function mode, which
is only expected to be generated in multi function mode.
This undesired attention in SF mode results in incorrect HW
configuration and resulting into Tx timeout.

Signed-off-by: Shahed Shaikh <Shahed.Shaikh@cavium.com>
Signed-off-by: Ariel Elior <ariel.elior@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 68c62e32e8820..af57568c922eb 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -3540,6 +3540,16 @@ static void bnx2x_drv_info_iscsi_stat(struct bnx2x *bp)
  */
 static void bnx2x_config_mf_bw(struct bnx2x *bp)
 {
+	/* Workaround for MFW bug.
+	 * MFW is not supposed to generate BW attention in
+	 * single function mode.
+	 */
+	if (!IS_MF(bp)) {
+		DP(BNX2X_MSG_MCP,
+		   "Ignoring MF BW config in single function mode\n");
+		return;
+	}
+
 	if (bp->link_vars.link_up) {
 		bnx2x_cmng_fns_init(bp, true, CMNG_FNS_MINMAX);
 		bnx2x_link_sync_notify(bp);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 313/422] PCI/AER: Take reference on error devices
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (311 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 312/422] bnx2x: Ignore bandwidth attention in single function mode Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 314/422] PCI/AER: Dont read upstream ports below fatal errors Greg Kroah-Hartman
                   ` (112 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Keith Busch, Bjorn Helgaas,
	Sinan Kaya, Sasha Levin

From: Keith Busch <keith.busch@intel.com>

[ Upstream commit 60271ab044a53edb9dcbe76bebea2221c4ff04d9 ]

Error handling may be running in parallel with a hot removal.  Reference
count the device during AER handling so the device can not be freed while
AER wants to reference it.

Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Sinan Kaya <okaya@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/pci/pcie/aer.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c
index 637d638f73da5..ffbbd759683c5 100644
--- a/drivers/pci/pcie/aer.c
+++ b/drivers/pci/pcie/aer.c
@@ -866,7 +866,7 @@ void cper_print_aer(struct pci_dev *dev, int aer_severity,
 static int add_error_device(struct aer_err_info *e_info, struct pci_dev *dev)
 {
 	if (e_info->error_dev_num < AER_MAX_MULTI_ERR_DEVICES) {
-		e_info->dev[e_info->error_dev_num] = dev;
+		e_info->dev[e_info->error_dev_num] = pci_dev_get(dev);
 		e_info->error_dev_num++;
 		return 0;
 	}
@@ -1013,6 +1013,7 @@ static void handle_error_source(struct pci_dev *dev, struct aer_err_info *info)
 		pcie_do_nonfatal_recovery(dev);
 	else if (info->severity == AER_FATAL)
 		pcie_do_fatal_recovery(dev, PCIE_PORT_SERVICE_AER);
+	pci_dev_put(dev);
 }
 
 #ifdef CONFIG_ACPI_APEI_PCIEAER
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 314/422] PCI/AER: Dont read upstream ports below fatal errors
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (312 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 313/422] PCI/AER: Take reference on error devices Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 315/422] PCI/ERR: Use slot reset if available Greg Kroah-Hartman
                   ` (111 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Keith Busch, Bjorn Helgaas,
	Sinan Kaya, Sasha Levin

From: Keith Busch <keith.busch@intel.com>

[ Upstream commit 9d938ea53b265ed6df6cdd1715d971f0235fdbfc ]

The AER driver has never read the config space of an endpoint that reported
a fatal error because the link to that device is considered unreliable.

An ERR_FATAL from an upstream port almost certainly indicates an error on
its upstream link, so we can't expect to reliably read its config space for
the same reason.

Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Sinan Kaya <okaya@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/pci/pcie/aer.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c
index ffbbd759683c5..5c3ea7254c6ae 100644
--- a/drivers/pci/pcie/aer.c
+++ b/drivers/pci/pcie/aer.c
@@ -1116,8 +1116,9 @@ int aer_get_device_error_info(struct pci_dev *dev, struct aer_err_info *info)
 			&info->mask);
 		if (!(info->status & ~info->mask))
 			return 0;
-	} else if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
-		info->severity == AER_NONFATAL) {
+	} else if (pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT ||
+	           pci_pcie_type(dev) == PCI_EXP_TYPE_DOWNSTREAM ||
+		   info->severity == AER_NONFATAL) {
 
 		/* Link is still healthy for IO reads */
 		pci_read_config_dword(dev, pos + PCI_ERR_UNCOR_STATUS,
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 315/422] PCI/ERR: Use slot reset if available
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (313 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 314/422] PCI/AER: Dont read upstream ports below fatal errors Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 316/422] samples/bpf: fix compilation failure Greg Kroah-Hartman
                   ` (110 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Keith Busch, Bjorn Helgaas,
	Sinan Kaya, Sasha Levin

From: Keith Busch <keith.busch@intel.com>

[ Upstream commit c4eed62a214330908eec11b0dc170d34fa50b412 ]

The secondary bus reset may have link side effects that a hotplug capable
port may incorrectly react to.  Use the slot specific reset for hotplug
ports, fixing the undesirable link down-up handling during error
recovering.

Signed-off-by: Keith Busch <keith.busch@intel.com>
[bhelgaas: fold in
https://lore.kernel.org/linux-pci/20180926152326.14821-1-keith.busch@intel.com
for issue reported by Stephen Rothwell <sfr@canb.auug.org.au>]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Sinan Kaya <okaya@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/pci/pci.c      | 37 +++++++++++++++++++++++++++++++++++++
 drivers/pci/pci.h      |  2 ++
 drivers/pci/pcie/aer.c |  2 +-
 drivers/pci/pcie/err.c |  2 +-
 drivers/pci/slot.c     |  1 -
 5 files changed, 41 insertions(+), 3 deletions(-)

diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 2baf1f82f8933..c9f51fc24563c 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -35,6 +35,8 @@
 #include <linux/aer.h>
 #include "pci.h"
 
+DEFINE_MUTEX(pci_slot_mutex);
+
 const char *pci_power_names[] = {
 	"error", "D0", "D1", "D2", "D3hot", "D3cold", "unknown",
 };
@@ -5191,6 +5193,41 @@ static int pci_bus_reset(struct pci_bus *bus, int probe)
 	return ret;
 }
 
+/**
+ * pci_bus_error_reset - reset the bridge's subordinate bus
+ * @bridge: The parent device that connects to the bus to reset
+ *
+ * This function will first try to reset the slots on this bus if the method is
+ * available. If slot reset fails or is not available, this will fall back to a
+ * secondary bus reset.
+ */
+int pci_bus_error_reset(struct pci_dev *bridge)
+{
+	struct pci_bus *bus = bridge->subordinate;
+	struct pci_slot *slot;
+
+	if (!bus)
+		return -ENOTTY;
+
+	mutex_lock(&pci_slot_mutex);
+	if (list_empty(&bus->slots))
+		goto bus_reset;
+
+	list_for_each_entry(slot, &bus->slots, list)
+		if (pci_probe_reset_slot(slot))
+			goto bus_reset;
+
+	list_for_each_entry(slot, &bus->slots, list)
+		if (pci_slot_reset(slot, 0))
+			goto bus_reset;
+
+	mutex_unlock(&pci_slot_mutex);
+	return 0;
+bus_reset:
+	mutex_unlock(&pci_slot_mutex);
+	return pci_bus_reset(bridge->subordinate, 0);
+}
+
 /**
  * pci_probe_reset_bus - probe whether a PCI bus can be reset
  * @bus: PCI bus to probe
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index ab25752f00d96..e9ede82ee2c25 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -35,6 +35,7 @@ int pci_mmap_fits(struct pci_dev *pdev, int resno, struct vm_area_struct *vmai,
 
 int pci_probe_reset_function(struct pci_dev *dev);
 int pci_bridge_secondary_bus_reset(struct pci_dev *dev);
+int pci_bus_error_reset(struct pci_dev *dev);
 
 /**
  * struct pci_platform_pm_ops - Firmware PM callbacks
@@ -136,6 +137,7 @@ static inline void pci_remove_legacy_files(struct pci_bus *bus) { return; }
 
 /* Lock for read/write access to pci device and bus lists */
 extern struct rw_semaphore pci_bus_sem;
+extern struct mutex pci_slot_mutex;
 
 extern raw_spinlock_t pci_lock;
 
diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c
index 5c3ea7254c6ae..1563e22600eca 100644
--- a/drivers/pci/pcie/aer.c
+++ b/drivers/pci/pcie/aer.c
@@ -1528,7 +1528,7 @@ static pci_ers_result_t aer_root_reset(struct pci_dev *dev)
 	reg32 &= ~ROOT_PORT_INTR_ON_MESG_MASK;
 	pci_write_config_dword(dev, pos + PCI_ERR_ROOT_COMMAND, reg32);
 
-	rc = pci_bridge_secondary_bus_reset(dev);
+	rc = pci_bus_error_reset(dev);
 	pci_printk(KERN_DEBUG, dev, "Root Port link has been reset\n");
 
 	/* Clear Root Error Status */
diff --git a/drivers/pci/pcie/err.c b/drivers/pci/pcie/err.c
index 708fd3a0d6466..12c1205e1d804 100644
--- a/drivers/pci/pcie/err.c
+++ b/drivers/pci/pcie/err.c
@@ -177,7 +177,7 @@ static pci_ers_result_t default_reset_link(struct pci_dev *dev)
 {
 	int rc;
 
-	rc = pci_bridge_secondary_bus_reset(dev);
+	rc = pci_bus_error_reset(dev);
 	pci_printk(KERN_DEBUG, dev, "downstream link has been reset\n");
 	return rc ? PCI_ERS_RESULT_DISCONNECT : PCI_ERS_RESULT_RECOVERED;
 }
diff --git a/drivers/pci/slot.c b/drivers/pci/slot.c
index e634229ece895..a32897f83ee51 100644
--- a/drivers/pci/slot.c
+++ b/drivers/pci/slot.c
@@ -14,7 +14,6 @@
 
 struct kset *pci_slots_kset;
 EXPORT_SYMBOL_GPL(pci_slots_kset);
-static DEFINE_MUTEX(pci_slot_mutex);
 
 static ssize_t pci_slot_attr_show(struct kobject *kobj,
 					struct attribute *attr, char *buf)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 316/422] samples/bpf: fix compilation failure
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (314 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 315/422] PCI/ERR: Use slot reset if available Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 317/422] net: phy: mdio-bcm-unimac: Allow configuring MDIO clock divider Greg Kroah-Hartman
                   ` (109 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Prashant Bhole, Song Liu,
	Daniel Borkmann, Sasha Levin

From: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>

[ Upstream commit 32c009798385ce21080beaa87a9b95faad3acd1e ]

following commit:
commit d58e468b1112 ("flow_dissector: implements flow dissector BPF hook")
added struct bpf_flow_keys which conflicts with the struct with
same name in sockex2_kern.c and sockex3_kern.c

similar to commit:
commit 534e0e52bc23 ("samples/bpf: fix a compilation failure")
we tried the rename it "flow_keys" but it also conflicted with struct
having same name in include/net/flow_dissector.h. Hence renaming the
struct to "flow_key_record". Also, this commit doesn't fix the
compilation error completely because the similar struct is present in
sockex3_kern.c. Hence renaming it in both files sockex3_user.c and
sockex3_kern.c

Signed-off-by: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
Acked-by: Song Liu <songliubraving@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 samples/bpf/sockex2_kern.c | 11 ++++++-----
 samples/bpf/sockex3_kern.c |  8 ++++----
 samples/bpf/sockex3_user.c |  4 ++--
 3 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/samples/bpf/sockex2_kern.c b/samples/bpf/sockex2_kern.c
index f58acfc925561..f2f9dbc021b0d 100644
--- a/samples/bpf/sockex2_kern.c
+++ b/samples/bpf/sockex2_kern.c
@@ -14,7 +14,7 @@ struct vlan_hdr {
 	__be16 h_vlan_encapsulated_proto;
 };
 
-struct bpf_flow_keys {
+struct flow_key_record {
 	__be32 src;
 	__be32 dst;
 	union {
@@ -59,7 +59,7 @@ static inline __u32 ipv6_addr_hash(struct __sk_buff *ctx, __u64 off)
 }
 
 static inline __u64 parse_ip(struct __sk_buff *skb, __u64 nhoff, __u64 *ip_proto,
-			     struct bpf_flow_keys *flow)
+			     struct flow_key_record *flow)
 {
 	__u64 verlen;
 
@@ -83,7 +83,7 @@ static inline __u64 parse_ip(struct __sk_buff *skb, __u64 nhoff, __u64 *ip_proto
 }
 
 static inline __u64 parse_ipv6(struct __sk_buff *skb, __u64 nhoff, __u64 *ip_proto,
-			       struct bpf_flow_keys *flow)
+			       struct flow_key_record *flow)
 {
 	*ip_proto = load_byte(skb,
 			      nhoff + offsetof(struct ipv6hdr, nexthdr));
@@ -96,7 +96,8 @@ static inline __u64 parse_ipv6(struct __sk_buff *skb, __u64 nhoff, __u64 *ip_pro
 	return nhoff;
 }
 
-static inline bool flow_dissector(struct __sk_buff *skb, struct bpf_flow_keys *flow)
+static inline bool flow_dissector(struct __sk_buff *skb,
+				  struct flow_key_record *flow)
 {
 	__u64 nhoff = ETH_HLEN;
 	__u64 ip_proto;
@@ -198,7 +199,7 @@ struct bpf_map_def SEC("maps") hash_map = {
 SEC("socket2")
 int bpf_prog2(struct __sk_buff *skb)
 {
-	struct bpf_flow_keys flow = {};
+	struct flow_key_record flow = {};
 	struct pair *value;
 	u32 key;
 
diff --git a/samples/bpf/sockex3_kern.c b/samples/bpf/sockex3_kern.c
index 95907f8d2b17d..c527b57d3ec8a 100644
--- a/samples/bpf/sockex3_kern.c
+++ b/samples/bpf/sockex3_kern.c
@@ -61,7 +61,7 @@ struct vlan_hdr {
 	__be16 h_vlan_encapsulated_proto;
 };
 
-struct bpf_flow_keys {
+struct flow_key_record {
 	__be32 src;
 	__be32 dst;
 	union {
@@ -88,7 +88,7 @@ static inline __u32 ipv6_addr_hash(struct __sk_buff *ctx, __u64 off)
 }
 
 struct globals {
-	struct bpf_flow_keys flow;
+	struct flow_key_record flow;
 };
 
 struct bpf_map_def SEC("maps") percpu_map = {
@@ -114,14 +114,14 @@ struct pair {
 
 struct bpf_map_def SEC("maps") hash_map = {
 	.type = BPF_MAP_TYPE_HASH,
-	.key_size = sizeof(struct bpf_flow_keys),
+	.key_size = sizeof(struct flow_key_record),
 	.value_size = sizeof(struct pair),
 	.max_entries = 1024,
 };
 
 static void update_stats(struct __sk_buff *skb, struct globals *g)
 {
-	struct bpf_flow_keys key = g->flow;
+	struct flow_key_record key = g->flow;
 	struct pair *value;
 
 	value = bpf_map_lookup_elem(&hash_map, &key);
diff --git a/samples/bpf/sockex3_user.c b/samples/bpf/sockex3_user.c
index 22f74d0e14934..9d02e0404719a 100644
--- a/samples/bpf/sockex3_user.c
+++ b/samples/bpf/sockex3_user.c
@@ -13,7 +13,7 @@
 #define PARSE_IP_PROG_FD (prog_fd[0])
 #define PROG_ARRAY_FD (map_fd[0])
 
-struct flow_keys {
+struct flow_key_record {
 	__be32 src;
 	__be32 dst;
 	union {
@@ -64,7 +64,7 @@ int main(int argc, char **argv)
 	(void) f;
 
 	for (i = 0; i < 5; i++) {
-		struct flow_keys key = {}, next_key;
+		struct flow_key_record key = {}, next_key;
 		struct pair value;
 
 		sleep(1);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 317/422] net: phy: mdio-bcm-unimac: Allow configuring MDIO clock divider
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (315 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 316/422] samples/bpf: fix compilation failure Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 318/422] net: micrel: fix return type of ndo_start_xmit function Greg Kroah-Hartman
                   ` (108 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Florian Fainelli, David S. Miller,
	Sasha Levin

From: Florian Fainelli <f.fainelli@gmail.com>

[ Upstream commit b78ac6ecd1b6b46f8767cbafa95a7b0b51b87ad8 ]

Allow the configuration of the MDIO clock divider when the Device Tree
contains 'clock-frequency' property (similar to I2C and SPI buses).
Because the hardware may have lost its state during suspend/resume,
re-apply the MDIO clock divider upon resumption.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../bindings/net/brcm,unimac-mdio.txt         |  3 +
 drivers/net/phy/mdio-bcm-unimac.c             | 83 ++++++++++++++++++-
 2 files changed, 84 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/net/brcm,unimac-mdio.txt b/Documentation/devicetree/bindings/net/brcm,unimac-mdio.txt
index 4648948f7c3b8..e15589f477876 100644
--- a/Documentation/devicetree/bindings/net/brcm,unimac-mdio.txt
+++ b/Documentation/devicetree/bindings/net/brcm,unimac-mdio.txt
@@ -19,6 +19,9 @@ Optional properties:
 - interrupt-names: must be "mdio_done_error" when there is a share interrupt fed
   to this hardware block, or must be "mdio_done" for the first interrupt and
   "mdio_error" for the second when there are separate interrupts
+- clocks: A reference to the clock supplying the MDIO bus controller
+- clock-frequency: the MDIO bus clock that must be output by the MDIO bus
+  hardware, if absent, the default hardware values are used
 
 Child nodes of this MDIO bus controller node are standard Ethernet PHY device
 nodes as described in Documentation/devicetree/bindings/net/phy.txt
diff --git a/drivers/net/phy/mdio-bcm-unimac.c b/drivers/net/phy/mdio-bcm-unimac.c
index 8d370667fa1b3..80b9583eaa952 100644
--- a/drivers/net/phy/mdio-bcm-unimac.c
+++ b/drivers/net/phy/mdio-bcm-unimac.c
@@ -16,6 +16,7 @@
 #include <linux/module.h>
 #include <linux/io.h>
 #include <linux/delay.h>
+#include <linux/clk.h>
 
 #include <linux/of.h>
 #include <linux/of_platform.h>
@@ -45,6 +46,8 @@ struct unimac_mdio_priv {
 	void __iomem		*base;
 	int (*wait_func)	(void *wait_func_data);
 	void			*wait_func_data;
+	struct clk		*clk;
+	u32			clk_freq;
 };
 
 static inline u32 unimac_mdio_readl(struct unimac_mdio_priv *priv, u32 offset)
@@ -189,6 +192,35 @@ static int unimac_mdio_reset(struct mii_bus *bus)
 	return 0;
 }
 
+static void unimac_mdio_clk_set(struct unimac_mdio_priv *priv)
+{
+	unsigned long rate;
+	u32 reg, div;
+
+	/* Keep the hardware default values */
+	if (!priv->clk_freq)
+		return;
+
+	if (!priv->clk)
+		rate = 250000000;
+	else
+		rate = clk_get_rate(priv->clk);
+
+	div = (rate / (2 * priv->clk_freq)) - 1;
+	if (div & ~MDIO_CLK_DIV_MASK) {
+		pr_warn("Incorrect MDIO clock frequency, ignoring\n");
+		return;
+	}
+
+	/* The MDIO clock is the reference clock (typicaly 250Mhz) divided by
+	 * 2 x (MDIO_CLK_DIV + 1)
+	 */
+	reg = unimac_mdio_readl(priv, MDIO_CFG);
+	reg &= ~(MDIO_CLK_DIV_MASK << MDIO_CLK_DIV_SHIFT);
+	reg |= div << MDIO_CLK_DIV_SHIFT;
+	unimac_mdio_writel(priv, reg, MDIO_CFG);
+}
+
 static int unimac_mdio_probe(struct platform_device *pdev)
 {
 	struct unimac_mdio_pdata *pdata = pdev->dev.platform_data;
@@ -217,9 +249,26 @@ static int unimac_mdio_probe(struct platform_device *pdev)
 		return -ENOMEM;
 	}
 
+	priv->clk = devm_clk_get(&pdev->dev, NULL);
+	if (PTR_ERR(priv->clk) == -EPROBE_DEFER)
+		return PTR_ERR(priv->clk);
+	else
+		priv->clk = NULL;
+
+	ret = clk_prepare_enable(priv->clk);
+	if (ret)
+		return ret;
+
+	if (of_property_read_u32(np, "clock-frequency", &priv->clk_freq))
+		priv->clk_freq = 0;
+
+	unimac_mdio_clk_set(priv);
+
 	priv->mii_bus = mdiobus_alloc();
-	if (!priv->mii_bus)
-		return -ENOMEM;
+	if (!priv->mii_bus) {
+		ret = -ENOMEM;
+		goto out_clk_disable;
+	}
 
 	bus = priv->mii_bus;
 	bus->priv = priv;
@@ -253,6 +302,8 @@ static int unimac_mdio_probe(struct platform_device *pdev)
 
 out_mdio_free:
 	mdiobus_free(bus);
+out_clk_disable:
+	clk_disable_unprepare(priv->clk);
 	return ret;
 }
 
@@ -262,10 +313,37 @@ static int unimac_mdio_remove(struct platform_device *pdev)
 
 	mdiobus_unregister(priv->mii_bus);
 	mdiobus_free(priv->mii_bus);
+	clk_disable_unprepare(priv->clk);
+
+	return 0;
+}
+
+static int unimac_mdio_suspend(struct device *d)
+{
+	struct unimac_mdio_priv *priv = dev_get_drvdata(d);
+
+	clk_disable_unprepare(priv->clk);
+
+	return 0;
+}
+
+static int unimac_mdio_resume(struct device *d)
+{
+	struct unimac_mdio_priv *priv = dev_get_drvdata(d);
+	int ret;
+
+	ret = clk_prepare_enable(priv->clk);
+	if (ret)
+		return ret;
+
+	unimac_mdio_clk_set(priv);
 
 	return 0;
 }
 
+static SIMPLE_DEV_PM_OPS(unimac_mdio_pm_ops,
+			 unimac_mdio_suspend, unimac_mdio_resume);
+
 static const struct of_device_id unimac_mdio_ids[] = {
 	{ .compatible = "brcm,genet-mdio-v5", },
 	{ .compatible = "brcm,genet-mdio-v4", },
@@ -281,6 +359,7 @@ static struct platform_driver unimac_mdio_driver = {
 	.driver = {
 		.name = UNIMAC_MDIO_DRV_NAME,
 		.of_match_table = unimac_mdio_ids,
+		.pm = &unimac_mdio_pm_ops,
 	},
 	.probe	= unimac_mdio_probe,
 	.remove	= unimac_mdio_remove,
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 318/422] net: micrel: fix return type of ndo_start_xmit function
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (316 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 317/422] net: phy: mdio-bcm-unimac: Allow configuring MDIO clock divider Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 319/422] net: freescale: " Greg Kroah-Hartman
                   ` (107 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, YueHaibing, David S. Miller, Sasha Levin

From: YueHaibing <yuehaibing@huawei.com>

[ Upstream commit 2b49117a5abee8478b0470cba46ac74f93b4a479 ]

The method ndo_start_xmit() is defined as returning an 'netdev_tx_t',
which is a typedef for an enum type, so make sure the implementation in
this driver has returns 'netdev_tx_t' value, and change the function
return type to netdev_tx_t.

Found by coccinelle.

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/micrel/ks8695net.c  | 2 +-
 drivers/net/ethernet/micrel/ks8851_mll.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/micrel/ks8695net.c b/drivers/net/ethernet/micrel/ks8695net.c
index bd51e057e9150..b881f5d4a7f9e 100644
--- a/drivers/net/ethernet/micrel/ks8695net.c
+++ b/drivers/net/ethernet/micrel/ks8695net.c
@@ -1164,7 +1164,7 @@ ks8695_timeout(struct net_device *ndev)
  *	sk_buff and adds it to the TX ring. It then kicks the TX DMA
  *	engine to ensure transmission begins.
  */
-static int
+static netdev_tx_t
 ks8695_start_xmit(struct sk_buff *skb, struct net_device *ndev)
 {
 	struct ks8695_priv *ksp = netdev_priv(ndev);
diff --git a/drivers/net/ethernet/micrel/ks8851_mll.c b/drivers/net/ethernet/micrel/ks8851_mll.c
index 0e9719fbc6243..35f8c9ef204d9 100644
--- a/drivers/net/ethernet/micrel/ks8851_mll.c
+++ b/drivers/net/ethernet/micrel/ks8851_mll.c
@@ -1021,9 +1021,9 @@ static void ks_write_qmu(struct ks_net *ks, u8 *pdata, u16 len)
  * spin_lock_irqsave is required because tx and rx should be mutual exclusive.
  * So while tx is in-progress, prevent IRQ interrupt from happenning.
  */
-static int ks_start_xmit(struct sk_buff *skb, struct net_device *netdev)
+static netdev_tx_t ks_start_xmit(struct sk_buff *skb, struct net_device *netdev)
 {
-	int retv = NETDEV_TX_OK;
+	netdev_tx_t retv = NETDEV_TX_OK;
 	struct ks_net *ks = netdev_priv(netdev);
 
 	disable_irq(netdev->irq);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 319/422] net: freescale: fix return type of ndo_start_xmit function
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (317 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 318/422] net: micrel: fix return type of ndo_start_xmit function Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 320/422] x86/CPU: Use correct macros for Cyrix calls Greg Kroah-Hartman
                   ` (106 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, YueHaibing, David S. Miller, Sasha Levin

From: YueHaibing <yuehaibing@huawei.com>

[ Upstream commit 06983aa526c759ebdf43f202d8d0491d9494e2f4 ]

The method ndo_start_xmit() is defined as returning an 'netdev_tx_t',
which is a typedef for an enum type, so make sure the implementation in
this driver has returns 'netdev_tx_t' value, and change the function
return type to netdev_tx_t.

Found by coccinelle.

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/freescale/dpaa/dpaa_eth.c        | 3 ++-
 drivers/net/ethernet/freescale/fec_mpc52xx.c          | 3 ++-
 drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c | 3 ++-
 drivers/net/ethernet/freescale/gianfar.c              | 4 ++--
 drivers/net/ethernet/freescale/ucc_geth.c             | 3 ++-
 5 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
index d7915cd68dc14..462bb8c4f80c9 100644
--- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
+++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
@@ -2046,7 +2046,8 @@ static inline int dpaa_xmit(struct dpaa_priv *priv,
 	return 0;
 }
 
-static int dpaa_start_xmit(struct sk_buff *skb, struct net_device *net_dev)
+static netdev_tx_t
+dpaa_start_xmit(struct sk_buff *skb, struct net_device *net_dev)
 {
 	const int queue_mapping = skb_get_queue_mapping(skb);
 	bool nonlinear = skb_is_nonlinear(skb);
diff --git a/drivers/net/ethernet/freescale/fec_mpc52xx.c b/drivers/net/ethernet/freescale/fec_mpc52xx.c
index 6d7269d87a850..b90bab72efdb3 100644
--- a/drivers/net/ethernet/freescale/fec_mpc52xx.c
+++ b/drivers/net/ethernet/freescale/fec_mpc52xx.c
@@ -305,7 +305,8 @@ static int mpc52xx_fec_close(struct net_device *dev)
  * invariant will hold if you make sure that the netif_*_queue()
  * calls are done at the proper times.
  */
-static int mpc52xx_fec_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t
+mpc52xx_fec_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct mpc52xx_fec_priv *priv = netdev_priv(dev);
 	struct bcom_fec_bd *bd;
diff --git a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c
index 2c2976a2dda6b..7c548ed535da5 100644
--- a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c
+++ b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c
@@ -481,7 +481,8 @@ static struct sk_buff *tx_skb_align_workaround(struct net_device *dev,
 }
 #endif
 
-static int fs_enet_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t
+fs_enet_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct fs_enet_private *fep = netdev_priv(dev);
 	cbd_t __iomem *bdp;
diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c
index f27f9bae1a4ac..c97c4edfa31bc 100644
--- a/drivers/net/ethernet/freescale/gianfar.c
+++ b/drivers/net/ethernet/freescale/gianfar.c
@@ -112,7 +112,7 @@
 const char gfar_driver_version[] = "2.0";
 
 static int gfar_enet_open(struct net_device *dev);
-static int gfar_start_xmit(struct sk_buff *skb, struct net_device *dev);
+static netdev_tx_t gfar_start_xmit(struct sk_buff *skb, struct net_device *dev);
 static void gfar_reset_task(struct work_struct *work);
 static void gfar_timeout(struct net_device *dev);
 static int gfar_close(struct net_device *dev);
@@ -2334,7 +2334,7 @@ static inline bool gfar_csum_errata_76(struct gfar_private *priv,
 /* This is called by the kernel when a frame is ready for transmission.
  * It is pointed to by the dev->hard_start_xmit function pointer
  */
-static int gfar_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t gfar_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct gfar_private *priv = netdev_priv(dev);
 	struct gfar_priv_tx_q *tx_queue = NULL;
diff --git a/drivers/net/ethernet/freescale/ucc_geth.c b/drivers/net/ethernet/freescale/ucc_geth.c
index 1e2b53a934fb9..a5bf02ae4bc5c 100644
--- a/drivers/net/ethernet/freescale/ucc_geth.c
+++ b/drivers/net/ethernet/freescale/ucc_geth.c
@@ -3085,7 +3085,8 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
 
 /* This is called by the kernel when a frame is ready for transmission. */
 /* It is pointed to by the dev->hard_start_xmit function pointer */
-static int ucc_geth_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t
+ucc_geth_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct ucc_geth_private *ugeth = netdev_priv(dev);
 #ifdef CONFIG_UGETH_TX_ON_DEMAND
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 320/422] x86/CPU: Use correct macros for Cyrix calls
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (318 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 319/422] net: freescale: " Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 321/422] x86/CPU: Change query logic so CPUID is enabled before testing Greg Kroah-Hartman
                   ` (105 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Matthew Whitehead, Borislav Petkov,
	Andy Lutomirski, H. Peter Anvin, Ingo Molnar, Jia Zhang,
	Peter Zijlstra, Philippe Ombredanne, Thomas Gleixner,
	Sasha Levin

From: Matthew Whitehead <tedheadster@gmail.com>

[ Upstream commit 03b099bdcdf7125d4a63dc9ddeefdd454e05123d ]

There are comments in processor-cyrix.h advising you to _not_ make calls
using the deprecated macros in this style:

  setCx86_old(CX86_CCR4, getCx86_old(CX86_CCR4) | 0x80);

This is because it expands the macro into a non-functioning calling
sequence. The calling order must be:

  outb(CX86_CCR2, 0x22);
  inb(0x23);

>From the comments:

 * When using the old macros a line like
 *   setCx86(CX86_CCR2, getCx86(CX86_CCR2) | 0x88);
 * gets expanded to:
 *  do {
 *    outb((CX86_CCR2), 0x22);
 *    outb((({
 *        outb((CX86_CCR2), 0x22);
 *        inb(0x23);
 *    }) | 0x88), 0x23);
 *  } while (0);

The new macros fix this problem, so use them instead.

Signed-off-by: Matthew Whitehead <tedheadster@gmail.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Andy Lutomirski <luto@amacapital.net>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jia Zhang <qianyue.zj@alibaba-inc.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Philippe Ombredanne <pombredanne@nexb.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/20180921212041.13096-2-tedheadster@gmail.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/x86/kernel/cpu/cyrix.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/cpu/cyrix.c b/arch/x86/kernel/cpu/cyrix.c
index fa61c870ada94..1d9b8aaea06c8 100644
--- a/arch/x86/kernel/cpu/cyrix.c
+++ b/arch/x86/kernel/cpu/cyrix.c
@@ -437,7 +437,7 @@ static void cyrix_identify(struct cpuinfo_x86 *c)
 			/* enable MAPEN  */
 			setCx86(CX86_CCR3, (ccr3 & 0x0f) | 0x10);
 			/* enable cpuid  */
-			setCx86_old(CX86_CCR4, getCx86_old(CX86_CCR4) | 0x80);
+			setCx86(CX86_CCR4, getCx86(CX86_CCR4) | 0x80);
 			/* disable MAPEN */
 			setCx86(CX86_CCR3, ccr3);
 			local_irq_restore(flags);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 321/422] x86/CPU: Change query logic so CPUID is enabled before testing
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (319 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 320/422] x86/CPU: Use correct macros for Cyrix calls Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 322/422] EDAC: Correct DIMM capacity unit symbol Greg Kroah-Hartman
                   ` (104 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andy Lutomirski, Matthew Whitehead,
	Borislav Petkov, David Woodhouse, H. Peter Anvin, Ingo Molnar,
	Konrad Rzeszutek Wilk, Peter Zijlstra, Thomas Gleixner,
	Sasha Levin

From: Matthew Whitehead <tedheadster@gmail.com>

[ Upstream commit 2893cc8ff892fa74972d8dc0e1d0dc65116daaa3 ]

Presently we check first if CPUID is enabled. If it is not already
enabled, then we next call identify_cpu_without_cpuid() and clear
X86_FEATURE_CPUID.

Unfortunately, identify_cpu_without_cpuid() is the function where CPUID
becomes _enabled_ on Cyrix 6x86/6x86L CPUs.

Reverse the calling sequence so that CPUID is first enabled, and then
check a second time to see if the feature has now been activated.

[ bp: Massage commit message and remove trailing whitespace. ]

Suggested-by: Andy Lutomirski <luto@amacapital.net>
Signed-off-by: Matthew Whitehead <tedheadster@gmail.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Andy Lutomirski <luto@amacapital.net>
Cc: David Woodhouse <dwmw@amazon.co.uk>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/20180921212041.13096-3-tedheadster@gmail.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/x86/kernel/cpu/common.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index 1e07814f02bc6..a6458ab499c21 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -1133,6 +1133,9 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c)
 	memset(&c->x86_capability, 0, sizeof c->x86_capability);
 	c->extended_cpuid_level = 0;
 
+	if (!have_cpuid_p())
+		identify_cpu_without_cpuid(c);
+
 	/* cyrix could have cpuid enabled via c_identify()*/
 	if (have_cpuid_p()) {
 		cpu_detect(c);
@@ -1150,7 +1153,6 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c)
 		if (this_cpu->c_bsp_init)
 			this_cpu->c_bsp_init(c);
 	} else {
-		identify_cpu_without_cpuid(c);
 		setup_clear_cpu_cap(X86_FEATURE_CPUID);
 	}
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 322/422] EDAC: Correct DIMM capacity unit symbol
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (320 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 321/422] x86/CPU: Change query logic so CPUID is enabled before testing Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 323/422] MIPS: kexec: Relax memory restriction Greg Kroah-Hartman
                   ` (103 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Qiuxu Zhuo, Tony Luck,
	Borislav Petkov, Aristeu Rozanski, Mauro Carvalho Chehab,
	linux-edac, Sasha Levin

From: Qiuxu Zhuo <qiuxu.zhuo@intel.com>

[ Upstream commit 6f6da136046294a1e8d2944336eb97412751f653 ]

The {i3200|i7core|sb|skx}_edac drivers show DIMM capacity using the
wrong unit symbol: 'Mb' - megabit. Fix them by replacing 'Mb' with
'MiB' - mebibyte.

[Tony: These are all "edac_dbg()" messages, so this won't break scripts
       that parse console logs.]

Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Aristeu Rozanski <aris@redhat.com>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: linux-edac@vger.kernel.org
Link: https://lkml.kernel.org/r/20180919003433.16475-1-tony.luck@intel.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/edac/i3200_edac.c  | 2 +-
 drivers/edac/i7core_edac.c | 2 +-
 drivers/edac/sb_edac.c     | 2 +-
 drivers/edac/skx_edac.c    | 4 ++--
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/edac/i3200_edac.c b/drivers/edac/i3200_edac.c
index d92d56cee1017..299b441647cd5 100644
--- a/drivers/edac/i3200_edac.c
+++ b/drivers/edac/i3200_edac.c
@@ -399,7 +399,7 @@ static int i3200_probe1(struct pci_dev *pdev, int dev_idx)
 			if (nr_pages == 0)
 				continue;
 
-			edac_dbg(0, "csrow %d, channel %d%s, size = %ld Mb\n", i, j,
+			edac_dbg(0, "csrow %d, channel %d%s, size = %ld MiB\n", i, j,
 				 stacked ? " (stacked)" : "", PAGES_TO_MiB(nr_pages));
 
 			dimm->nr_pages = nr_pages;
diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c
index f1d19504a0281..4a3300c2da333 100644
--- a/drivers/edac/i7core_edac.c
+++ b/drivers/edac/i7core_edac.c
@@ -597,7 +597,7 @@ static int get_dimm_config(struct mem_ctl_info *mci)
 			/* DDR3 has 8 I/O banks */
 			size = (rows * cols * banks * ranks) >> (20 - 3);
 
-			edac_dbg(0, "\tdimm %d %d Mb offset: %x, bank: %d, rank: %d, row: %#x, col: %#x\n",
+			edac_dbg(0, "\tdimm %d %d MiB offset: %x, bank: %d, rank: %d, row: %#x, col: %#x\n",
 				 j, size,
 				 RANKOFFSET(dimm_dod[j]),
 				 banks, ranks, rows, cols);
diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
index 7447f1453200d..53074ad361e58 100644
--- a/drivers/edac/sb_edac.c
+++ b/drivers/edac/sb_edac.c
@@ -1622,7 +1622,7 @@ static int __populate_dimms(struct mem_ctl_info *mci,
 				size = ((u64)rows * cols * banks * ranks) >> (20 - 3);
 				npages = MiB_TO_PAGES(size);
 
-				edac_dbg(0, "mc#%d: ha %d channel %d, dimm %d, %lld Mb (%d pages) bank: %d, rank: %d, row: %#x, col: %#x\n",
+				edac_dbg(0, "mc#%d: ha %d channel %d, dimm %d, %lld MiB (%d pages) bank: %d, rank: %d, row: %#x, col: %#x\n",
 					 pvt->sbridge_dev->mc, pvt->sbridge_dev->dom, i, j,
 					 size, npages,
 					 banks, ranks, rows, cols);
diff --git a/drivers/edac/skx_edac.c b/drivers/edac/skx_edac.c
index 4ba92f1dd0f74..dd209e0dd9abb 100644
--- a/drivers/edac/skx_edac.c
+++ b/drivers/edac/skx_edac.c
@@ -364,7 +364,7 @@ static int get_dimm_info(u32 mtr, u32 amap, struct dimm_info *dimm,
 	size = ((1ull << (rows + cols + ranks)) * banks) >> (20 - 3);
 	npages = MiB_TO_PAGES(size);
 
-	edac_dbg(0, "mc#%d: channel %d, dimm %d, %lld Mb (%d pages) bank: %d, rank: %d, row: %#x, col: %#x\n",
+	edac_dbg(0, "mc#%d: channel %d, dimm %d, %lld MiB (%d pages) bank: %d, rank: %d, row: %#x, col: %#x\n",
 		 imc->mc, chan, dimmno, size, npages,
 		 banks, 1 << ranks, rows, cols);
 
@@ -424,7 +424,7 @@ unknown_size:
 	dimm->mtype = MEM_NVDIMM;
 	dimm->edac_mode = EDAC_SECDED; /* likely better than this */
 
-	edac_dbg(0, "mc#%d: channel %d, dimm %d, %llu Mb (%u pages)\n",
+	edac_dbg(0, "mc#%d: channel %d, dimm %d, %llu MiB (%u pages)\n",
 		 imc->mc, chan, dimmno, size >> 20, dimm->nr_pages);
 
 	snprintf(dimm->label, sizeof(dimm->label), "CPU_SrcID#%u_MC#%u_Chan#%u_DIMM#%u",
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 323/422] MIPS: kexec: Relax memory restriction
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (321 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 322/422] EDAC: Correct DIMM capacity unit symbol Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 324/422] arm64: dts: rockchip: Fix microSD in rk3399 sapphire board Greg Kroah-Hartman
                   ` (102 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Rachel Mozes, Dengcheng Zhu,
	Paul Burton, pburton, ralf, linux-mips, Sasha Levin

From: Dengcheng Zhu <dzhu@wavecomp.com>

[ Upstream commit a6da4d6fdf8bd512c98d3ac7f1d16bc4bb282919 ]

We can rely on the system kernel and the dump capture kernel themselves in
memory usage.

Being restrictive with 512MB limit may cause kexec tool failure on some
platforms.

Tested-by: Rachel Mozes <rachel.mozes@intel.com>
Reported-by: Rachel Mozes <rachel.mozes@intel.com>
Signed-off-by: Dengcheng Zhu <dzhu@wavecomp.com>
Signed-off-by: Paul Burton <paul.burton@mips.com>
Patchwork: https://patchwork.linux-mips.org/patch/20568/
Cc: pburton@wavecomp.com
Cc: ralf@linux-mips.org
Cc: linux-mips@linux-mips.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/mips/include/asm/kexec.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/mips/include/asm/kexec.h b/arch/mips/include/asm/kexec.h
index 493a3cc7c39ad..cfdbe66575f4d 100644
--- a/arch/mips/include/asm/kexec.h
+++ b/arch/mips/include/asm/kexec.h
@@ -12,11 +12,11 @@
 #include <asm/stacktrace.h>
 
 /* Maximum physical address we can use pages from */
-#define KEXEC_SOURCE_MEMORY_LIMIT (0x20000000)
+#define KEXEC_SOURCE_MEMORY_LIMIT (-1UL)
 /* Maximum address we can reach in physical address mode */
-#define KEXEC_DESTINATION_MEMORY_LIMIT (0x20000000)
+#define KEXEC_DESTINATION_MEMORY_LIMIT (-1UL)
  /* Maximum address we can use for the control code buffer */
-#define KEXEC_CONTROL_MEMORY_LIMIT (0x20000000)
+#define KEXEC_CONTROL_MEMORY_LIMIT (-1UL)
 /* Reserve 3*4096 bytes for board-specific info */
 #define KEXEC_CONTROL_PAGE_SIZE (4096 + 3*4096)
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 324/422] arm64: dts: rockchip: Fix microSD in rk3399 sapphire board
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (322 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 323/422] MIPS: kexec: Relax memory restriction Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 325/422] mlxsw: Make MLXSW_SP1_FWREV_MINOR a hard requirement Greg Kroah-Hartman
                   ` (101 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Vicente Bergas, Heiko Stuebner, Sasha Levin

From: Vicente Bergas <vicencb@gmail.com>

[ Upstream commit 88a20edf76091ee7f1bb459b89d714d53f0f8940 ]

The microSD card slot in the Sapphire board is not working because of
several issues:
 1.- The vmmc power supply is missing in the DTS. It is capable of 3.0V
 and has a GPIO-based enable control.
 2.- The vqmmc power supply can provide up to 3.3V, but it is capped in
 the DTS to just 3.0V because of the vmmc capability. This results in a
 conflict from the mmc driver requesting an unsupportable voltage range
 from 3.3V to 3.0V (min > max) as reported in dmesg. So, extend the
 range up to 3.3V. The hw should be able to stand this 0.3V tolerance.
 See mmc_regulator_set_vqmmc in drivers/mmc/core/core.c.
 3.- The card detect signal is non-working. There is a known conflict
 with jtag, but the workaround in drivers/soc/rockchip/grf.c does not
 work. Adding the broken-cd attribute to the DTS fixes the issue.

Signed-off-by: Vicente Bergas <vicencb@gmail.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../boot/dts/rockchip/rk3399-sapphire.dtsi    | 24 ++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi
index 8b33ef3306820..6062cc8250b11 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi
@@ -93,6 +93,19 @@
 		vin-supply = <&vcc_1v8>;
 	};
 
+	vcc3v0_sd: vcc3v0-sd {
+		compatible = "regulator-fixed";
+		enable-active-high;
+		gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&sdmmc0_pwr_h>;
+		regulator-always-on;
+		regulator-max-microvolt = <3000000>;
+		regulator-min-microvolt = <3000000>;
+		regulator-name = "vcc3v0_sd";
+		vin-supply = <&vcc3v3_sys>;
+	};
+
 	vcc3v3_sys: vcc3v3-sys {
 		compatible = "regulator-fixed";
 		regulator-name = "vcc3v3_sys";
@@ -310,7 +323,7 @@
 				regulator-always-on;
 				regulator-boot-on;
 				regulator-min-microvolt = <1800000>;
-				regulator-max-microvolt = <3000000>;
+				regulator-max-microvolt = <3300000>;
 				regulator-state-mem {
 					regulator-on-in-suspend;
 					regulator-suspend-microvolt = <3000000>;
@@ -469,6 +482,13 @@
 		};
 	};
 
+	sd {
+		sdmmc0_pwr_h: sdmmc0-pwr-h {
+			rockchip,pins =
+				<RK_GPIO0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
 	usb2 {
 		vcc5v0_host_en: vcc5v0-host-en {
 			rockchip,pins =
@@ -499,6 +519,7 @@
 };
 
 &sdmmc {
+	broken-cd;
 	bus-width = <4>;
 	cap-mmc-highspeed;
 	cap-sd-highspeed;
@@ -507,6 +528,7 @@
 	max-frequency = <150000000>;
 	pinctrl-names = "default";
 	pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
+	vmmc-supply = <&vcc3v0_sd>;
 	vqmmc-supply = <&vcc_sdio>;
 	status = "okay";
 };
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 325/422] mlxsw: Make MLXSW_SP1_FWREV_MINOR a hard requirement
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (323 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 324/422] arm64: dts: rockchip: Fix microSD in rk3399 sapphire board Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 326/422] media: imx: work around false-positive warning, again Greg Kroah-Hartman
                   ` (100 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Petr Machata, Jiri Pirko,
	Ido Schimmel, David S. Miller, Sasha Levin

From: Petr Machata <petrm@mellanox.com>

[ Upstream commit 12ba7e1045521ec9f251c93ae0a6735cc3f42337 ]

Up until now, mlxsw tolerated firmware versions that weren't exactly
matching the required version, if the branch number matched. That
allowed the users to test various firmware versions as long as they were
on the right branch.

On the other hand, it made it impossible for mlxsw to put a hard lower
bound on a version that fixes all problems known to date. If a user had
a somewhat older FW version installed, mlxsw would start up just fine,
possibly performing non-optimally as it would use features that trigger
problematic behavior.

Therefore tweak the check to accept any FW version that is:

- on the same branch as the preferred version, and
- the same as or newer than the preferred version.

Signed-off-by: Petr Machata <petrm@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
index 1c170a0fd2cc9..e498ee95bacab 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
@@ -336,7 +336,10 @@ static int mlxsw_sp_fw_rev_validate(struct mlxsw_sp *mlxsw_sp)
 		return -EINVAL;
 	}
 	if (MLXSW_SP_FWREV_MINOR_TO_BRANCH(rev->minor) ==
-	    MLXSW_SP_FWREV_MINOR_TO_BRANCH(req_rev->minor))
+	    MLXSW_SP_FWREV_MINOR_TO_BRANCH(req_rev->minor) &&
+	    (rev->minor > req_rev->minor ||
+	     (rev->minor == req_rev->minor &&
+	      rev->subminor >= req_rev->subminor)))
 		return 0;
 
 	dev_info(mlxsw_sp->bus_info->dev, "The firmware version %d.%d.%d is incompatible with the driver\n",
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 326/422] media: imx: work around false-positive warning, again
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (324 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 325/422] mlxsw: Make MLXSW_SP1_FWREV_MINOR a hard requirement Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 327/422] media: pci: ivtv: Fix a sleep-in-atomic-context bug in ivtv_yuv_init() Greg Kroah-Hartman
                   ` (99 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Arnd Bergmann, Hans Verkuil,
	Mauro Carvalho Chehab, Sasha Levin

From: Arnd Bergmann <arnd@arndb.de>

[ Upstream commit 8d1a4817cce1b15b4909f0e324a4f5af5952da67 ]

A warning that I thought to be solved by a previous patch of mine
has resurfaced with gcc-8:

media/imx/imx-media-csi.c: In function 'csi_link_validate':
media/imx/imx-media-csi.c:1025:20: error: 'upstream_ep' may be used uninitialized in this function [-Werror=maybe-uninitialized]
media/imx/imx-media-csi.c:1026:24: error: 'upstream_ep.bus_type' may be used uninitialized in this function [-Werror=maybe-uninitialized]
media/imx/imx-media-csi.c:127:19: error: 'upstream_ep.bus.parallel.bus_width' may be used uninitialized in this function [-Werror=maybe-uninitialized]
media/imx/imx-media-csi.c: In function 'csi_enum_mbus_code':
media/imx/imx-media-csi.c:132:9: error: '*((void *)&upstream_ep+12)' may be used uninitialized in this function [-Werror=maybe-uninitialized]
media/imx/imx-media-csi.c:132:48: error: 'upstream_ep.bus.parallel.bus_width' may be used uninitialized in this function [-Werror=maybe-uninitialized]

I spent some more time digging in this time, and think I have a better
fix, bailing out of the function that either initializes or errors
out here, which simplifies the code enough for gcc to figure out
what is going on. The earlier partial workaround can be removed now,
as the new workaround is better.

Fixes: 890f27693f2a ("media: imx: work around false-positive warning")

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/staging/media/imx/imx-media-csi.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c
index d17ce1fb4ef51..0f8fdc347091b 100644
--- a/drivers/staging/media/imx/imx-media-csi.c
+++ b/drivers/staging/media/imx/imx-media-csi.c
@@ -166,6 +166,9 @@ static int csi_get_upstream_endpoint(struct csi_priv *priv,
 	struct v4l2_subdev *sd;
 	struct media_pad *pad;
 
+	if (!IS_ENABLED(CONFIG_OF))
+		return -ENXIO;
+
 	if (!priv->src_sd)
 		return -EPIPE;
 
@@ -1072,7 +1075,7 @@ static int csi_link_validate(struct v4l2_subdev *sd,
 			     struct v4l2_subdev_format *sink_fmt)
 {
 	struct csi_priv *priv = v4l2_get_subdevdata(sd);
-	struct v4l2_fwnode_endpoint upstream_ep = {};
+	struct v4l2_fwnode_endpoint upstream_ep;
 	bool is_csi2;
 	int ret;
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 327/422] media: pci: ivtv: Fix a sleep-in-atomic-context bug in ivtv_yuv_init()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (325 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 326/422] media: imx: work around false-positive warning, again Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 328/422] media: au0828: Fix incorrect error messages Greg Kroah-Hartman
                   ` (98 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jia-Ju Bai, Hans Verkuil,
	Mauro Carvalho Chehab, Sasha Levin

From: Jia-Ju Bai <baijiaju1990@gmail.com>

[ Upstream commit 8d11eb847de7d89c2754988c944d51a4f63e219b ]

The driver may sleep in a interrupt handler.

The function call paths (from bottom to top) in Linux-4.16 are:

[FUNC] kzalloc(GFP_KERNEL)
drivers/media/pci/ivtv/ivtv-yuv.c, 938:
	kzalloc in ivtv_yuv_init
drivers/media/pci/ivtv/ivtv-yuv.c, 960:
	ivtv_yuv_init in ivtv_yuv_next_free
drivers/media/pci/ivtv/ivtv-yuv.c, 1126:
	ivtv_yuv_next_free in ivtv_yuv_setup_stream_frame
drivers/media/pci/ivtv/ivtv-irq.c, 827:
	ivtv_yuv_setup_stream_frame in ivtv_irq_dec_data_req
drivers/media/pci/ivtv/ivtv-irq.c, 1013:
	ivtv_irq_dec_data_req in ivtv_irq_handler

To fix this bug, GFP_KERNEL is replaced with GFP_ATOMIC.

This bug is found by my static analysis tool DSAC.

Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/media/pci/ivtv/ivtv-yuv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/pci/ivtv/ivtv-yuv.c b/drivers/media/pci/ivtv/ivtv-yuv.c
index 44936d6d7c396..1380474519f2b 100644
--- a/drivers/media/pci/ivtv/ivtv-yuv.c
+++ b/drivers/media/pci/ivtv/ivtv-yuv.c
@@ -935,7 +935,7 @@ static void ivtv_yuv_init(struct ivtv *itv)
 	}
 
 	/* We need a buffer for blanking when Y plane is offset - non-fatal if we can't get one */
-	yi->blanking_ptr = kzalloc(720 * 16, GFP_KERNEL|__GFP_NOWARN);
+	yi->blanking_ptr = kzalloc(720 * 16, GFP_ATOMIC|__GFP_NOWARN);
 	if (yi->blanking_ptr) {
 		yi->blanking_dmaptr = pci_map_single(itv->pdev, yi->blanking_ptr, 720*16, PCI_DMA_TODEVICE);
 	} else {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 328/422] media: au0828: Fix incorrect error messages
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (326 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 327/422] media: pci: ivtv: Fix a sleep-in-atomic-context bug in ivtv_yuv_init() Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 329/422] media: davinci: Fix implicit enum conversion warning Greg Kroah-Hartman
                   ` (97 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Brad Love, Hans Verkuil,
	Mauro Carvalho Chehab, Sasha Levin

From: Brad Love <brad@nextdimension.cc>

[ Upstream commit f347596f2bf114a3af3d80201c6e6bef538d884f ]

Correcting red herring error messages.

Where appropriate, replaces au0282_dev_register with:
- au0828_analog_register
- au0828_dvb_register

Signed-off-by: Brad Love <brad@nextdimension.cc>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/media/usb/au0828/au0828-core.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/usb/au0828/au0828-core.c b/drivers/media/usb/au0828/au0828-core.c
index e3f63299f85c0..07e3322bb1827 100644
--- a/drivers/media/usb/au0828/au0828-core.c
+++ b/drivers/media/usb/au0828/au0828-core.c
@@ -632,7 +632,7 @@ static int au0828_usb_probe(struct usb_interface *interface,
 	/* Analog TV */
 	retval = au0828_analog_register(dev, interface);
 	if (retval) {
-		pr_err("%s() au0282_dev_register failed to register on V4L2\n",
+		pr_err("%s() au0828_analog_register failed to register on V4L2\n",
 			__func__);
 		mutex_unlock(&dev->lock);
 		goto done;
@@ -641,7 +641,7 @@ static int au0828_usb_probe(struct usb_interface *interface,
 	/* Digital TV */
 	retval = au0828_dvb_register(dev);
 	if (retval)
-		pr_err("%s() au0282_dev_register failed\n",
+		pr_err("%s() au0828_dvb_register failed\n",
 		       __func__);
 
 	/* Remote controller */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 329/422] media: davinci: Fix implicit enum conversion warning
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (327 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 328/422] media: au0828: Fix incorrect error messages Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 330/422] ARM: dts: rockchip: explicitly set vcc_sd0 pin to gpio on rk3188-radxarock Greg Kroah-Hartman
                   ` (96 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Nick Desaulniers, Nathan Chancellor,
	Hans Verkuil, Mauro Carvalho Chehab, Sasha Levin

From: Nathan Chancellor <natechancellor@gmail.com>

[ Upstream commit 4158757395b300b6eb308fc20b96d1d231484413 ]

Clang warns when one enumerated type is implicitly converted to another.

drivers/media/platform/davinci/vpbe_display.c:524:24: warning: implicit
conversion from enumeration type 'enum osd_v_exp_ratio' to different
enumeration type 'enum osd_h_exp_ratio' [-Wenum-conversion]
                        layer_info->h_exp = V_EXP_6_OVER_5;
                                          ~ ^~~~~~~~~~~~~~
1 warning generated.

This appears to be a copy and paste error judging from the couple of
lines directly above this statement and the way that height is handled
in the if block above this one.

Reported-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/media/platform/davinci/vpbe_display.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/platform/davinci/vpbe_display.c b/drivers/media/platform/davinci/vpbe_display.c
index b0eb3d899eb44..6f82693524331 100644
--- a/drivers/media/platform/davinci/vpbe_display.c
+++ b/drivers/media/platform/davinci/vpbe_display.c
@@ -521,7 +521,7 @@ vpbe_disp_calculate_scale_factor(struct vpbe_display *disp_dev,
 		else if (v_scale == 4)
 			layer_info->v_zoom = ZOOM_X4;
 		if (v_exp)
-			layer_info->h_exp = V_EXP_6_OVER_5;
+			layer_info->v_exp = V_EXP_6_OVER_5;
 	} else {
 		/* no scaling, only cropping. Set display area to crop area */
 		cfg->ysize = expected_ysize;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 330/422] ARM: dts: rockchip: explicitly set vcc_sd0 pin to gpio on rk3188-radxarock
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (328 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 329/422] media: davinci: Fix implicit enum conversion warning Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 331/422] usb: gadget: uvc: configfs: Drop leaked references to config items Greg Kroah-Hartman
                   ` (95 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Heiko Stuebner, Sasha Levin

From: Heiko Stuebner <heiko@sntech.de>

[ Upstream commit a2df0984e73fd9e1dad5fc3f1c307ec3de395e30 ]

It is good practice to make the setting of gpio-pinctrls explicitly in the
devicetree, and in this case even necessary.
Rockchip boards start with iomux settings set to gpio for most pins and
while the linux pinctrl driver also implicitly sets the gpio function if
a pin is requested as gpio that is not necessarily true for other drivers.

The issue in question stems from uboot, where the sdmmc_pwr pin is set
to function 1 (sdmmc-power) by the bootrom when reading the 1st-stage
loader. The regulator controlled by the pin is active-low though, so
when the dwmmc hw-block sets its enabled bit, it actually disables the
regulator. By changing the pin back to gpio we fix that behaviour.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/rk3188-radxarock.dts | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/arm/boot/dts/rk3188-radxarock.dts b/arch/arm/boot/dts/rk3188-radxarock.dts
index 45fd2b302dda1..4a2890618f6fc 100644
--- a/arch/arm/boot/dts/rk3188-radxarock.dts
+++ b/arch/arm/boot/dts/rk3188-radxarock.dts
@@ -93,6 +93,8 @@
 		regulator-min-microvolt = <3300000>;
 		regulator-max-microvolt = <3300000>;
 		gpio = <&gpio3 RK_PA1 GPIO_ACTIVE_LOW>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&sdmmc_pwr>;
 		startup-delay-us = <100000>;
 		vin-supply = <&vcc_io>;
 	};
@@ -315,6 +317,12 @@
 		};
 	};
 
+	sd0 {
+		sdmmc_pwr: sdmmc-pwr {
+			rockchip,pins = <RK_GPIO3 1 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
 	usb {
 		host_vbus_drv: host-vbus-drv {
 			rockchip,pins = <0 3 RK_FUNC_GPIO &pcfg_pull_none>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 331/422] usb: gadget: uvc: configfs: Drop leaked references to config items
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (329 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 330/422] ARM: dts: rockchip: explicitly set vcc_sd0 pin to gpio on rk3188-radxarock Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 332/422] usb: gadget: uvc: configfs: Prevent format changes after linking header Greg Kroah-Hartman
                   ` (94 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Laurent Pinchart, Kieran Bingham,
	Sasha Levin

From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

[ Upstream commit 86f3daed59bceb4fa7981d85e89f63ebbae1d561 ]

Some of the .allow_link() and .drop_link() operations implementations
call config_group_find_item() and then leak the reference to the
returned item. Fix this by dropping those references where needed.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/usb/gadget/function/uvc_configfs.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/usb/gadget/function/uvc_configfs.c b/drivers/usb/gadget/function/uvc_configfs.c
index b51f0d2788269..dc4edba95a478 100644
--- a/drivers/usb/gadget/function/uvc_configfs.c
+++ b/drivers/usb/gadget/function/uvc_configfs.c
@@ -544,6 +544,7 @@ static int uvcg_control_class_allow_link(struct config_item *src,
 unlock:
 	mutex_unlock(&opts->lock);
 out:
+	config_item_put(header);
 	mutex_unlock(su_mutex);
 	return ret;
 }
@@ -579,6 +580,7 @@ static void uvcg_control_class_drop_link(struct config_item *src,
 unlock:
 	mutex_unlock(&opts->lock);
 out:
+	config_item_put(header);
 	mutex_unlock(su_mutex);
 }
 
@@ -2038,6 +2040,7 @@ static int uvcg_streaming_class_allow_link(struct config_item *src,
 unlock:
 	mutex_unlock(&opts->lock);
 out:
+	config_item_put(header);
 	mutex_unlock(su_mutex);
 	return ret;
 }
@@ -2078,6 +2081,7 @@ static void uvcg_streaming_class_drop_link(struct config_item *src,
 unlock:
 	mutex_unlock(&opts->lock);
 out:
+	config_item_put(header);
 	mutex_unlock(su_mutex);
 }
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 332/422] usb: gadget: uvc: configfs: Prevent format changes after linking header
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (330 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 331/422] usb: gadget: uvc: configfs: Drop leaked references to config items Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 333/422] usb: gadget: uvc: configfs: Sort frame intervals upon writing Greg Kroah-Hartman
                   ` (93 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Joel Pepper, Kieran Bingham,
	Laurent Pinchart, Sasha Levin

From: Joel Pepper <joel.pepper@rwth-aachen.de>

[ Upstream commit cb2200f7af8341aaf0c6abd7ba37e4c667c41639 ]

While checks are in place to avoid attributes and children of a format
being manipulated after the format is linked into the streaming header,
the linked flag was never actually set, invalidating the protections.
Update the flag as appropriate in the header link calls.

Signed-off-by: Joel Pepper <joel.pepper@rwth-aachen.de>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/usb/gadget/function/uvc_configfs.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/usb/gadget/function/uvc_configfs.c b/drivers/usb/gadget/function/uvc_configfs.c
index dc4edba95a478..9478a7cdb1433 100644
--- a/drivers/usb/gadget/function/uvc_configfs.c
+++ b/drivers/usb/gadget/function/uvc_configfs.c
@@ -766,6 +766,7 @@ static int uvcg_streaming_header_allow_link(struct config_item *src,
 	format_ptr->fmt = target_fmt;
 	list_add_tail(&format_ptr->entry, &src_hdr->formats);
 	++src_hdr->num_fmt;
+	++target_fmt->linked;
 
 out:
 	mutex_unlock(&opts->lock);
@@ -803,6 +804,8 @@ static void uvcg_streaming_header_drop_link(struct config_item *src,
 			break;
 		}
 
+	--target_fmt->linked;
+
 out:
 	mutex_unlock(&opts->lock);
 	mutex_unlock(su_mutex);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 333/422] usb: gadget: uvc: configfs: Sort frame intervals upon writing
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (331 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 332/422] usb: gadget: uvc: configfs: Prevent format changes after linking header Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 334/422] ARM: dts: exynos: Correct audio subsystem parent clock on Peach Chromebooks Greg Kroah-Hartman
                   ` (92 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Paul Elder, Laurent Pinchart, Sasha Levin

From: Paul Elder <paul.elder@ideasonboard.com>

[ Upstream commit 89969a842e72b1b653140a4bbddd927b242736d0 ]

There is an issue where the host is unable to tell the gadget what frame
rate it wants if the dwFrameIntervals in the interface descriptors are
not in ascending order. This means that when instantiating a uvc gadget
via configfs the user must make sure the dwFrameIntervals are in
ascending order.

Instead of silently failing the breaking of this rule, we sort the
dwFrameIntervals upon writing to configfs.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/usb/gadget/function/uvc_configfs.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/usb/gadget/function/uvc_configfs.c b/drivers/usb/gadget/function/uvc_configfs.c
index 9478a7cdb1433..2e4c0391b5836 100644
--- a/drivers/usb/gadget/function/uvc_configfs.c
+++ b/drivers/usb/gadget/function/uvc_configfs.c
@@ -9,6 +9,9 @@
  *
  * Author: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
  */
+
+#include <linux/sort.h>
+
 #include "u_uvc.h"
 #include "uvc_configfs.h"
 
@@ -31,6 +34,14 @@ static struct configfs_attribute prefix##attr_##cname = { \
 	.show		= prefix##cname##_show,				\
 }
 
+static int uvcg_config_compare_u32(const void *l, const void *r)
+{
+	u32 li = *(const u32 *)l;
+	u32 ri = *(const u32 *)r;
+
+	return li < ri ? -1 : li == ri ? 0 : 1;
+}
+
 static inline struct f_uvc_opts *to_f_uvc_opts(struct config_item *item)
 {
 	return container_of(to_config_group(item), struct f_uvc_opts,
@@ -1134,6 +1145,8 @@ static ssize_t uvcg_frame_dw_frame_interval_store(struct config_item *item,
 	kfree(ch->dw_frame_interval);
 	ch->dw_frame_interval = frm_intrv;
 	ch->frame.b_frame_interval_type = n;
+	sort(ch->dw_frame_interval, n, sizeof(*ch->dw_frame_interval),
+	     uvcg_config_compare_u32, NULL);
 	ret = len;
 
 end:
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 334/422] ARM: dts: exynos: Correct audio subsystem parent clock on Peach Chromebooks
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (332 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 333/422] usb: gadget: uvc: configfs: Sort frame intervals upon writing Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 335/422] i2c: aspeed: fix invalid clock parameters for very large divisors Greg Kroah-Hartman
                   ` (91 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Marek Szyprowski,
	Krzysztof Kozlowski, Sasha Levin

From: Marek Szyprowski <m.szyprowski@samsung.com>

[ Upstream commit ff1e37c6809daab75f7b2dea1efe69330e8eb65b ]

The proper parent clock for audio subsystem for Exynos5420 and Exynos5800
SoCs is CLK_MAU_EPLL. This fixes following warning:

    clk: failed to reparent mout_audss to fout_epll: -22

Fixes: ed7d1307077e: ARM: dts: exynos: Enable HDMI audio support on Peach Pit
Fixes: bae0f445c1e7: ARM: dts: exynos: Enable HDMI audio support on Peach Pi
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/exynos5420-peach-pit.dts | 2 +-
 arch/arm/boot/dts/exynos5800-peach-pi.dts  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/exynos5420-peach-pit.dts b/arch/arm/boot/dts/exynos5420-peach-pit.dts
index 769d60d6c9006..9eb48cabcca45 100644
--- a/arch/arm/boot/dts/exynos5420-peach-pit.dts
+++ b/arch/arm/boot/dts/exynos5420-peach-pit.dts
@@ -153,7 +153,7 @@
 
 &clock_audss {
 	assigned-clocks = <&clock_audss EXYNOS_MOUT_AUDSS>;
-	assigned-clock-parents = <&clock CLK_FOUT_EPLL>;
+	assigned-clock-parents = <&clock CLK_MAU_EPLL>;
 };
 
 &cpu0 {
diff --git a/arch/arm/boot/dts/exynos5800-peach-pi.dts b/arch/arm/boot/dts/exynos5800-peach-pi.dts
index 492e2cd2e559e..4398f2d1fe881 100644
--- a/arch/arm/boot/dts/exynos5800-peach-pi.dts
+++ b/arch/arm/boot/dts/exynos5800-peach-pi.dts
@@ -153,7 +153,7 @@
 
 &clock_audss {
 	assigned-clocks = <&clock_audss EXYNOS_MOUT_AUDSS>;
-	assigned-clock-parents = <&clock CLK_FOUT_EPLL>;
+	assigned-clock-parents = <&clock CLK_MAU_EPLL>;
 };
 
 &cpu0 {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 335/422] i2c: aspeed: fix invalid clock parameters for very large divisors
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (333 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 334/422] ARM: dts: exynos: Correct audio subsystem parent clock on Peach Chromebooks Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 336/422] gpiolib: Fix gpio_direction_* for single direction GPIOs Greg Kroah-Hartman
                   ` (90 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Brendan Higgins, Jae Hyun Yoo,
	Wolfram Sang, Sasha Levin

From: Brendan Higgins <brendanhiggins@google.com>

[ Upstream commit 17ccba67109cd0631f206cf49e17986218b47854 ]

The function that computes clock parameters from divisors did not
respect the maximum size of the bitfields that the parameters were
written to. This fixes the bug.

This bug can be reproduced with (and this fix verified with) the test
at: https://kunit-review.googlesource.com/c/linux/+/1035/

Discovered-by-KUnit: https://kunit-review.googlesource.com/c/linux/+/1035/
Signed-off-by: Brendan Higgins <brendanhiggins@google.com>
Reviewed-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/i2c/busses/i2c-aspeed.c | 65 +++++++++++++++++++++++----------
 1 file changed, 45 insertions(+), 20 deletions(-)

diff --git a/drivers/i2c/busses/i2c-aspeed.c b/drivers/i2c/busses/i2c-aspeed.c
index a19fbff168617..d9401b5191069 100644
--- a/drivers/i2c/busses/i2c-aspeed.c
+++ b/drivers/i2c/busses/i2c-aspeed.c
@@ -137,7 +137,8 @@ struct aspeed_i2c_bus {
 	/* Synchronizes I/O mem access to base. */
 	spinlock_t			lock;
 	struct completion		cmd_complete;
-	u32				(*get_clk_reg_val)(u32 divisor);
+	u32				(*get_clk_reg_val)(struct device *dev,
+							   u32 divisor);
 	unsigned long			parent_clk_frequency;
 	u32				bus_frequency;
 	/* Transaction state. */
@@ -686,16 +687,27 @@ static const struct i2c_algorithm aspeed_i2c_algo = {
 #endif /* CONFIG_I2C_SLAVE */
 };
 
-static u32 aspeed_i2c_get_clk_reg_val(u32 clk_high_low_max, u32 divisor)
+static u32 aspeed_i2c_get_clk_reg_val(struct device *dev,
+				      u32 clk_high_low_mask,
+				      u32 divisor)
 {
-	u32 base_clk, clk_high, clk_low, tmp;
+	u32 base_clk_divisor, clk_high_low_max, clk_high, clk_low, tmp;
+
+	/*
+	 * SCL_high and SCL_low represent a value 1 greater than what is stored
+	 * since a zero divider is meaningless. Thus, the max value each can
+	 * store is every bit set + 1. Since SCL_high and SCL_low are added
+	 * together (see below), the max value of both is the max value of one
+	 * them times two.
+	 */
+	clk_high_low_max = (clk_high_low_mask + 1) * 2;
 
 	/*
 	 * The actual clock frequency of SCL is:
 	 *	SCL_freq = APB_freq / (base_freq * (SCL_high + SCL_low))
 	 *		 = APB_freq / divisor
 	 * where base_freq is a programmable clock divider; its value is
-	 *	base_freq = 1 << base_clk
+	 *	base_freq = 1 << base_clk_divisor
 	 * SCL_high is the number of base_freq clock cycles that SCL stays high
 	 * and SCL_low is the number of base_freq clock cycles that SCL stays
 	 * low for a period of SCL.
@@ -705,47 +717,59 @@ static u32 aspeed_i2c_get_clk_reg_val(u32 clk_high_low_max, u32 divisor)
 	 *	SCL_low	 = clk_low + 1
 	 * Thus,
 	 *	SCL_freq = APB_freq /
-	 *		((1 << base_clk) * (clk_high + 1 + clk_low + 1))
+	 *		((1 << base_clk_divisor) * (clk_high + 1 + clk_low + 1))
 	 * The documentation recommends clk_high >= clk_high_max / 2 and
 	 * clk_low >= clk_low_max / 2 - 1 when possible; this last constraint
 	 * gives us the following solution:
 	 */
-	base_clk = divisor > clk_high_low_max ?
+	base_clk_divisor = divisor > clk_high_low_max ?
 			ilog2((divisor - 1) / clk_high_low_max) + 1 : 0;
-	tmp = (divisor + (1 << base_clk) - 1) >> base_clk;
-	clk_low = tmp / 2;
-	clk_high = tmp - clk_low;
 
-	if (clk_high)
-		clk_high--;
+	if (base_clk_divisor > ASPEED_I2CD_TIME_BASE_DIVISOR_MASK) {
+		base_clk_divisor = ASPEED_I2CD_TIME_BASE_DIVISOR_MASK;
+		clk_low = clk_high_low_mask;
+		clk_high = clk_high_low_mask;
+		dev_err(dev,
+			"clamping clock divider: divider requested, %u, is greater than largest possible divider, %u.\n",
+			divisor, (1 << base_clk_divisor) * clk_high_low_max);
+	} else {
+		tmp = (divisor + (1 << base_clk_divisor) - 1)
+				>> base_clk_divisor;
+		clk_low = tmp / 2;
+		clk_high = tmp - clk_low;
+
+		if (clk_high)
+			clk_high--;
 
-	if (clk_low)
-		clk_low--;
+		if (clk_low)
+			clk_low--;
+	}
 
 
 	return ((clk_high << ASPEED_I2CD_TIME_SCL_HIGH_SHIFT)
 		& ASPEED_I2CD_TIME_SCL_HIGH_MASK)
 			| ((clk_low << ASPEED_I2CD_TIME_SCL_LOW_SHIFT)
 			   & ASPEED_I2CD_TIME_SCL_LOW_MASK)
-			| (base_clk & ASPEED_I2CD_TIME_BASE_DIVISOR_MASK);
+			| (base_clk_divisor
+			   & ASPEED_I2CD_TIME_BASE_DIVISOR_MASK);
 }
 
-static u32 aspeed_i2c_24xx_get_clk_reg_val(u32 divisor)
+static u32 aspeed_i2c_24xx_get_clk_reg_val(struct device *dev, u32 divisor)
 {
 	/*
 	 * clk_high and clk_low are each 3 bits wide, so each can hold a max
 	 * value of 8 giving a clk_high_low_max of 16.
 	 */
-	return aspeed_i2c_get_clk_reg_val(16, divisor);
+	return aspeed_i2c_get_clk_reg_val(dev, GENMASK(2, 0), divisor);
 }
 
-static u32 aspeed_i2c_25xx_get_clk_reg_val(u32 divisor)
+static u32 aspeed_i2c_25xx_get_clk_reg_val(struct device *dev, u32 divisor)
 {
 	/*
 	 * clk_high and clk_low are each 4 bits wide, so each can hold a max
 	 * value of 16 giving a clk_high_low_max of 32.
 	 */
-	return aspeed_i2c_get_clk_reg_val(32, divisor);
+	return aspeed_i2c_get_clk_reg_val(dev, GENMASK(3, 0), divisor);
 }
 
 /* precondition: bus.lock has been acquired. */
@@ -758,7 +782,7 @@ static int aspeed_i2c_init_clk(struct aspeed_i2c_bus *bus)
 	clk_reg_val &= (ASPEED_I2CD_TIME_TBUF_MASK |
 			ASPEED_I2CD_TIME_THDSTA_MASK |
 			ASPEED_I2CD_TIME_TACST_MASK);
-	clk_reg_val |= bus->get_clk_reg_val(divisor);
+	clk_reg_val |= bus->get_clk_reg_val(bus->dev, divisor);
 	writel(clk_reg_val, bus->base + ASPEED_I2C_AC_TIMING_REG1);
 	writel(ASPEED_NO_TIMEOUT_CTRL, bus->base + ASPEED_I2C_AC_TIMING_REG2);
 
@@ -874,7 +898,8 @@ static int aspeed_i2c_probe_bus(struct platform_device *pdev)
 	if (!match)
 		bus->get_clk_reg_val = aspeed_i2c_24xx_get_clk_reg_val;
 	else
-		bus->get_clk_reg_val = (u32 (*)(u32))match->data;
+		bus->get_clk_reg_val = (u32 (*)(struct device *, u32))
+				match->data;
 
 	/* Initialize the I2C adapter */
 	spin_lock_init(&bus->lock);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 336/422] gpiolib: Fix gpio_direction_* for single direction GPIOs
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (334 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 335/422] i2c: aspeed: fix invalid clock parameters for very large divisors Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 337/422] ARM: at91: pm: call put_device instead of of_node_put in at91_pm_config_ws Greg Kroah-Hartman
                   ` (89 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ricardo Ribalda Delgado,
	Linus Walleij, Sasha Levin

From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>

[ Upstream commit ae9847f48a4b4bff0335da20be63ac84d94eb54c ]

GPIOs with no programmable direction are not required to implement
direction_output nor direction_input.

If we try to set an output direction on an output-only GPIO or input
direction on an input-only GPIO simply return 0.

This allows this single direction GPIO to be used by libgpiod.

Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpio/gpiolib.c | 36 ++++++++++++++++++++++++++++--------
 1 file changed, 28 insertions(+), 8 deletions(-)

diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 565ab945698ca..b81a27c7f89c4 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -2541,19 +2541,27 @@ EXPORT_SYMBOL_GPL(gpiochip_free_own_desc);
 int gpiod_direction_input(struct gpio_desc *desc)
 {
 	struct gpio_chip	*chip;
-	int			status = -EINVAL;
+	int			status = 0;
 
 	VALIDATE_DESC(desc);
 	chip = desc->gdev->chip;
 
-	if (!chip->get || !chip->direction_input) {
+	if (!chip->get && chip->direction_input) {
 		gpiod_warn(desc,
-			"%s: missing get() or direction_input() operations\n",
+			"%s: missing get() and direction_input() operations\n",
 			__func__);
 		return -EIO;
 	}
 
-	status = chip->direction_input(chip, gpio_chip_hwgpio(desc));
+	if (chip->direction_input) {
+		status = chip->direction_input(chip, gpio_chip_hwgpio(desc));
+	} else if (chip->get_direction &&
+		  (chip->get_direction(chip, gpio_chip_hwgpio(desc)) != 1)) {
+		gpiod_warn(desc,
+			"%s: missing direction_input() operation\n",
+			__func__);
+		return -EIO;
+	}
 	if (status == 0)
 		clear_bit(FLAG_IS_OUT, &desc->flags);
 
@@ -2575,16 +2583,28 @@ static int gpiod_direction_output_raw_commit(struct gpio_desc *desc, int value)
 {
 	struct gpio_chip *gc = desc->gdev->chip;
 	int val = !!value;
-	int ret;
+	int ret = 0;
 
-	if (!gc->set || !gc->direction_output) {
+	if (!gc->set && !gc->direction_output) {
 		gpiod_warn(desc,
-		       "%s: missing set() or direction_output() operations\n",
+		       "%s: missing set() and direction_output() operations\n",
 		       __func__);
 		return -EIO;
 	}
 
-	ret = gc->direction_output(gc, gpio_chip_hwgpio(desc), val);
+	if (gc->direction_output) {
+		ret = gc->direction_output(gc, gpio_chip_hwgpio(desc), val);
+	} else {
+		if (gc->get_direction &&
+		    gc->get_direction(gc, gpio_chip_hwgpio(desc))) {
+			gpiod_warn(desc,
+				"%s: missing direction_output() operation\n",
+				__func__);
+			return -EIO;
+		}
+		gc->set(gc, gpio_chip_hwgpio(desc), val);
+	}
+
 	if (!ret)
 		set_bit(FLAG_IS_OUT, &desc->flags);
 	trace_gpio_value(desc_to_gpio(desc), 0, val);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 337/422] ARM: at91: pm: call put_device instead of of_node_put in at91_pm_config_ws
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (335 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 336/422] gpiolib: Fix gpio_direction_* for single direction GPIOs Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 338/422] phy: brcm-sata: allow PHY_BRCM_SATA driver to be built for DSL SoCs Greg Kroah-Hartman
                   ` (88 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Claudiu Beznea, zhong jiang,
	Alexandre Belloni, Sasha Levin

From: zhong jiang <zhongjiang@huawei.com>

[ Upstream commit 95590a6286c547b7287d01c55515fb96b904aa03 ]

of_find_device_by_node takes a reference to the struct device when it
finds a match via get_device. but it fails to put_device in
at91_pm_config_ws, for_each_matching_node_and_match will get and put
the node properly, there is no need to call the of_put_node. Therefore,
just call put_device instead of of_node_put in at91_pm_config_ws.

Fixes: d7484f5c6b3b ("ARM: at91: pm: configure wakeup sources for ULP1 mode")
Suggested-by: Claudiu Beznea <Claudiu.Beznea@microchip.com>
Signed-off-by: zhong jiang <zhongjiang@huawei.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/mach-at91/pm.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c
index 0921e2c10edfd..e2e4df3d11e53 100644
--- a/arch/arm/mach-at91/pm.c
+++ b/arch/arm/mach-at91/pm.c
@@ -143,15 +143,15 @@ static int at91_pm_config_ws(unsigned int pm_mode, bool set)
 
 			/* Check if enabled on SHDWC. */
 			if (wsi->shdwc_mr_bit && !(val & wsi->shdwc_mr_bit))
-				goto put_node;
+				goto put_device;
 
 			mode |= wsi->pmc_fsmr_bit;
 			if (wsi->set_polarity)
 				polarity |= wsi->pmc_fsmr_bit;
 		}
 
-put_node:
-		of_node_put(np);
+put_device:
+		put_device(&pdev->dev);
 	}
 
 	if (mode) {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 338/422] phy: brcm-sata: allow PHY_BRCM_SATA driver to be built for DSL SoCs
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (336 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 337/422] ARM: at91: pm: call put_device instead of of_node_put in at91_pm_config_ws Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 339/422] phy: renesas: rcar-gen3-usb2: fix vbus_ctrl for role sysfs Greg Kroah-Hartman
                   ` (87 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Florian Fainelli,
	Kishon Vijay Abraham I, Sasha Levin

From: Florian Fainelli <f.fainelli@gmail.com>

[ Upstream commit 26728df4b254ae06247726a9a6e64823e39ac504 ]

Broadcom ARM-based DSL SoCs (BCM63xx product line) have the same
Broadcom SATA PHY that other SoCs are using, make it possible to select
that driver on these platforms.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/phy/broadcom/Kconfig | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/phy/broadcom/Kconfig b/drivers/phy/broadcom/Kconfig
index 8786a9674471d..aa917a61071db 100644
--- a/drivers/phy/broadcom/Kconfig
+++ b/drivers/phy/broadcom/Kconfig
@@ -60,7 +60,8 @@ config PHY_NS2_USB_DRD
 
 config PHY_BRCM_SATA
 	tristate "Broadcom SATA PHY driver"
-	depends on ARCH_BRCMSTB || ARCH_BCM_IPROC || BMIPS_GENERIC || COMPILE_TEST
+	depends on ARCH_BRCMSTB || ARCH_BCM_IPROC || BMIPS_GENERIC || \
+		   ARCH_BCM_63XX || COMPILE_TEST
 	depends on OF
 	select GENERIC_PHY
 	default ARCH_BCM_IPROC
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 339/422] phy: renesas: rcar-gen3-usb2: fix vbus_ctrl for role sysfs
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (337 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 338/422] phy: brcm-sata: allow PHY_BRCM_SATA driver to be built for DSL SoCs Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 340/422] phy: phy-twl4030-usb: fix denied runtime access Greg Kroah-Hartman
                   ` (86 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Yoshihiro Shimoda, Simon Horman,
	Kishon Vijay Abraham I, Sasha Levin

From: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>

[ Upstream commit 09938ea9d136243e8d1fed6d4d7a257764f28f6d ]

This patch fixes and issue that the vbus_ctrl is disabled by
rcar_gen3_init_from_a_peri_to_a_host(), so a usb host cannot
supply the vbus.

Note that this condition will exit when the otg irq happens
even if we don't apply this patch.

Fixes: 9bb86777fb71 ("phy: rcar-gen3-usb2: add sysfs for usb role swap")
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/phy/renesas/phy-rcar-gen3-usb2.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
index 6fb2b69695905..d22b1ec2e58c7 100644
--- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c
+++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
@@ -199,7 +199,7 @@ static void rcar_gen3_init_from_a_peri_to_a_host(struct rcar_gen3_chan *ch)
 	val = readl(usb2_base + USB2_OBINTEN);
 	writel(val & ~USB2_OBINT_BITS, usb2_base + USB2_OBINTEN);
 
-	rcar_gen3_enable_vbus_ctrl(ch, 0);
+	rcar_gen3_enable_vbus_ctrl(ch, 1);
 	rcar_gen3_init_for_host(ch);
 
 	writel(val | USB2_OBINT_BITS, usb2_base + USB2_OBINTEN);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 340/422] phy: phy-twl4030-usb: fix denied runtime access
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (338 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 339/422] phy: renesas: rcar-gen3-usb2: fix vbus_ctrl for role sysfs Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 341/422] ARM: dts: imx6ull: update vdd_soc voltage for 900MHz operating point Greg Kroah-Hartman
                   ` (85 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Andreas Kemnade,
	Kishon Vijay Abraham I, Sasha Levin

From: Andreas Kemnade <andreas@kemnade.info>

[ Upstream commit 6c7103aa026094a4ee2c2708ec6977a6dfc5331d ]

When runtime is not enabled, pm_runtime_get_sync() returns -EACCESS,
the counter will be incremented but the resume callback not called,
so enumeration and charging will not start properly.
To avoid that happen, disable irq on suspend and recheck on resume.

Practically this happens when the device is woken up from suspend by
plugging in usb.

Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/phy/ti/phy-twl4030-usb.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/drivers/phy/ti/phy-twl4030-usb.c b/drivers/phy/ti/phy-twl4030-usb.c
index a44680d64f9b4..c267afb68f077 100644
--- a/drivers/phy/ti/phy-twl4030-usb.c
+++ b/drivers/phy/ti/phy-twl4030-usb.c
@@ -144,6 +144,7 @@
 #define PMBR1				0x0D
 #define GPIO_USB_4PIN_ULPI_2430C	(3 << 0)
 
+static irqreturn_t twl4030_usb_irq(int irq, void *_twl);
 /*
  * If VBUS is valid or ID is ground, then we know a
  * cable is present and we need to be runtime-enabled
@@ -395,6 +396,33 @@ static void __twl4030_phy_power(struct twl4030_usb *twl, int on)
 	WARN_ON(twl4030_usb_write_verify(twl, PHY_PWR_CTRL, pwr) < 0);
 }
 
+static int __maybe_unused twl4030_usb_suspend(struct device *dev)
+{
+	struct twl4030_usb *twl = dev_get_drvdata(dev);
+
+	/*
+	 * we need enabled runtime on resume,
+	 * so turn irq off here, so we do not get it early
+	 * note: wakeup on usb plug works independently of this
+	 */
+	dev_dbg(twl->dev, "%s\n", __func__);
+	disable_irq(twl->irq);
+
+	return 0;
+}
+
+static int __maybe_unused twl4030_usb_resume(struct device *dev)
+{
+	struct twl4030_usb *twl = dev_get_drvdata(dev);
+
+	dev_dbg(twl->dev, "%s\n", __func__);
+	enable_irq(twl->irq);
+	/* check whether cable status changed */
+	twl4030_usb_irq(0, twl);
+
+	return 0;
+}
+
 static int __maybe_unused twl4030_usb_runtime_suspend(struct device *dev)
 {
 	struct twl4030_usb *twl = dev_get_drvdata(dev);
@@ -655,6 +683,7 @@ static const struct phy_ops ops = {
 static const struct dev_pm_ops twl4030_usb_pm_ops = {
 	SET_RUNTIME_PM_OPS(twl4030_usb_runtime_suspend,
 			   twl4030_usb_runtime_resume, NULL)
+	SET_SYSTEM_SLEEP_PM_OPS(twl4030_usb_suspend, twl4030_usb_resume)
 };
 
 static int twl4030_usb_probe(struct platform_device *pdev)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 341/422] ARM: dts: imx6ull: update vdd_soc voltage for 900MHz operating point
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (339 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 340/422] phy: phy-twl4030-usb: fix denied runtime access Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:18 ` [PATCH 4.19 342/422] usb: gadget: uvc: Factor out video USB request queueing Greg Kroah-Hartman
                   ` (84 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Anson Huang,
	Sébastien Szymanski, Shawn Guo, Sasha Levin

From: Anson Huang <Anson.Huang@nxp.com>

[ Upstream commit 245f880c25dbd8927af0f33aa5d1404370013957 ]

Update VDD_SOC voltage to 1.25V for 900MHz operating point
according to datasheet Rev. 1.3, 08/2018, 25mV is added to
the minimum allowed values to cover power supply ripple.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Reviewed-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/imx6ull.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/imx6ull.dtsi b/arch/arm/boot/dts/imx6ull.dtsi
index cd1776a7015ac..796ed35d4ac9a 100644
--- a/arch/arm/boot/dts/imx6ull.dtsi
+++ b/arch/arm/boot/dts/imx6ull.dtsi
@@ -22,7 +22,7 @@
 	>;
 	fsl,soc-operating-points = <
 		/* KHz	uV */
-		900000	1175000
+		900000	1250000
 		792000	1175000
 		528000	1175000
 		396000	1175000
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 342/422] usb: gadget: uvc: Factor out video USB request queueing
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (340 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 341/422] ARM: dts: imx6ull: update vdd_soc voltage for 900MHz operating point Greg Kroah-Hartman
@ 2019-11-19  5:18 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 343/422] usb: gadget: uvc: Only halt video streaming endpoint in bulk mode Greg Kroah-Hartman
                   ` (83 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Laurent Pinchart, Paul Elder,
	Kieran Bingham, Sasha Levin

From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

[ Upstream commit 9d1ff5dcb3cd3390b1e56f1c24ae42c72257c4a3 ]

USB requests for video data are queued from two different locations in
the driver, with the same code block occurring twice. Factor it out to a
function.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Tested-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/usb/gadget/function/uvc_video.c | 30 ++++++++++++++++---------
 1 file changed, 20 insertions(+), 10 deletions(-)

diff --git a/drivers/usb/gadget/function/uvc_video.c b/drivers/usb/gadget/function/uvc_video.c
index d3567b90343a4..a95c8e2364edc 100644
--- a/drivers/usb/gadget/function/uvc_video.c
+++ b/drivers/usb/gadget/function/uvc_video.c
@@ -125,6 +125,19 @@ uvc_video_encode_isoc(struct usb_request *req, struct uvc_video *video,
  * Request handling
  */
 
+static int uvcg_video_ep_queue(struct uvc_video *video, struct usb_request *req)
+{
+	int ret;
+
+	ret = usb_ep_queue(video->ep, req, GFP_ATOMIC);
+	if (ret < 0) {
+		printk(KERN_INFO "Failed to queue request (%d).\n", ret);
+		usb_ep_set_halt(video->ep);
+	}
+
+	return ret;
+}
+
 /*
  * I somehow feel that synchronisation won't be easy to achieve here. We have
  * three events that control USB requests submission:
@@ -189,14 +202,13 @@ uvc_video_complete(struct usb_ep *ep, struct usb_request *req)
 
 	video->encode(req, video, buf);
 
-	if ((ret = usb_ep_queue(ep, req, GFP_ATOMIC)) < 0) {
-		printk(KERN_INFO "Failed to queue request (%d).\n", ret);
-		usb_ep_set_halt(ep);
-		spin_unlock_irqrestore(&video->queue.irqlock, flags);
+	ret = uvcg_video_ep_queue(video, req);
+	spin_unlock_irqrestore(&video->queue.irqlock, flags);
+
+	if (ret < 0) {
 		uvcg_queue_cancel(queue, 0);
 		goto requeue;
 	}
-	spin_unlock_irqrestore(&video->queue.irqlock, flags);
 
 	return;
 
@@ -316,15 +328,13 @@ int uvcg_video_pump(struct uvc_video *video)
 		video->encode(req, video, buf);
 
 		/* Queue the USB request */
-		ret = usb_ep_queue(video->ep, req, GFP_ATOMIC);
+		ret = uvcg_video_ep_queue(video, req);
+		spin_unlock_irqrestore(&queue->irqlock, flags);
+
 		if (ret < 0) {
-			printk(KERN_INFO "Failed to queue request (%d)\n", ret);
-			usb_ep_set_halt(video->ep);
-			spin_unlock_irqrestore(&queue->irqlock, flags);
 			uvcg_queue_cancel(queue, 0);
 			break;
 		}
-		spin_unlock_irqrestore(&queue->irqlock, flags);
 	}
 
 	spin_lock_irqsave(&video->req_lock, flags);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 343/422] usb: gadget: uvc: Only halt video streaming endpoint in bulk mode
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (341 preceding siblings ...)
  2019-11-19  5:18 ` [PATCH 4.19 342/422] usb: gadget: uvc: Factor out video USB request queueing Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 344/422] coresight: Use ERR_CAST instead of ERR_PTR Greg Kroah-Hartman
                   ` (82 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Laurent Pinchart, Paul Elder,
	Kieran Bingham, Sasha Levin

From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

[ Upstream commit 8dbf9c7abefd5c1434a956d5c6b25e11183061a3 ]

When USB requests for video data fail to be submitted, the driver
signals a problem to the host by halting the video streaming endpoint.
This is only valid in bulk mode, as isochronous transfers have no
handshake phase and can't thus report a stall. The usb_ep_set_halt()
call returns an error when using isochronous endpoints, which we happily
ignore, but some UDCs complain in the kernel log. Fix this by only
trying to halt the endpoint in bulk mode.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Tested-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/usb/gadget/function/uvc_video.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/gadget/function/uvc_video.c b/drivers/usb/gadget/function/uvc_video.c
index a95c8e2364edc..2c9821ec836e7 100644
--- a/drivers/usb/gadget/function/uvc_video.c
+++ b/drivers/usb/gadget/function/uvc_video.c
@@ -132,7 +132,9 @@ static int uvcg_video_ep_queue(struct uvc_video *video, struct usb_request *req)
 	ret = usb_ep_queue(video->ep, req, GFP_ATOMIC);
 	if (ret < 0) {
 		printk(KERN_INFO "Failed to queue request (%d).\n", ret);
-		usb_ep_set_halt(video->ep);
+		/* Isochronous endpoints can't be halted. */
+		if (usb_endpoint_xfer_bulk(video->ep->desc))
+			usb_ep_set_halt(video->ep);
 	}
 
 	return ret;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 344/422] coresight: Use ERR_CAST instead of ERR_PTR
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (342 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 343/422] usb: gadget: uvc: Only halt video streaming endpoint in bulk mode Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 345/422] coresight: Fix handling of sinks Greg Kroah-Hartman
                   ` (81 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, zhong jiang, Mathieu Poirier, Sasha Levin

From: zhong jiang <zhongjiang@huawei.com>

[ Upstream commit bbd35ba6fab5419e58e96f35f1431f13bdc14f98 ]

Use ERR_CAT inlined function to replace the ERR_PTR(PTR_ERR). It
make the code more concise.

Signed-off-by: zhong jiang <zhongjiang@huawei.com>
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/hwtracing/coresight/coresight-tmc-etr.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hwtracing/coresight/coresight-tmc-etr.c b/drivers/hwtracing/coresight/coresight-tmc-etr.c
index 2eda5de304c20..11963647e19ae 100644
--- a/drivers/hwtracing/coresight/coresight-tmc-etr.c
+++ b/drivers/hwtracing/coresight/coresight-tmc-etr.c
@@ -536,7 +536,7 @@ tmc_init_etr_sg_table(struct device *dev, int node,
 	sg_table = tmc_alloc_sg_table(dev, node, nr_tpages, nr_dpages, pages);
 	if (IS_ERR(sg_table)) {
 		kfree(etr_table);
-		return ERR_PTR(PTR_ERR(sg_table));
+		return ERR_CAST(sg_table);
 	}
 
 	etr_table->sg_table = sg_table;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 345/422] coresight: Fix handling of sinks
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (343 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 344/422] coresight: Use ERR_CAST instead of ERR_PTR Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 346/422] coresight: perf: Fix per cpu path management Greg Kroah-Hartman
                   ` (80 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Mathieu Poirier, Suzuki K Poulose,
	Sasha Levin

From: Suzuki K Poulose <suzuki.poulose@arm.com>

[ Upstream commit c71369de02b285d9da526a526d8f2affc7b17c59 ]

The coresight components could be operated either in sysfs mode or in perf
mode. For some of the components, the mode of operation doesn't matter as
they simply relay the data to the next component in the trace path. But for
sinks, they need to be able to provide the trace data back to the user.
Thus we need to make sure that "mode" is handled appropriately. e.g,
the sysfs mode could have multiple sources driving the trace data, while
perf mode doesn't allow sharing the sink.

The coresight_enable_sink() however doesn't really allow this check to
trigger as it skips the "enable_sink" callback if the component is
already enabled, irrespective of the mode. This could cause mixing
of data from different modes or even same mode (in perf), if the
sources are different. Also, if we fail to enable the sink while
enabling a path (where sink is the first component enabled),
we could end up in disabling the components in the "entire"
path which were not enabled in this trial, causing disruptions
in the existing trace paths.

Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/hwtracing/coresight/coresight.c | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/drivers/hwtracing/coresight/coresight.c b/drivers/hwtracing/coresight/coresight.c
index 3e07fd335f8cf..c0dabbddc1e49 100644
--- a/drivers/hwtracing/coresight/coresight.c
+++ b/drivers/hwtracing/coresight/coresight.c
@@ -132,12 +132,14 @@ static int coresight_enable_sink(struct coresight_device *csdev, u32 mode)
 {
 	int ret;
 
-	if (!csdev->enable) {
-		if (sink_ops(csdev)->enable) {
-			ret = sink_ops(csdev)->enable(csdev, mode);
-			if (ret)
-				return ret;
-		}
+	/*
+	 * We need to make sure the "new" session is compatible with the
+	 * existing "mode" of operation.
+	 */
+	if (sink_ops(csdev)->enable) {
+		ret = sink_ops(csdev)->enable(csdev, mode);
+		if (ret)
+			return ret;
 		csdev->enable = true;
 	}
 
@@ -339,8 +341,14 @@ int coresight_enable_path(struct list_head *path, u32 mode)
 		switch (type) {
 		case CORESIGHT_DEV_TYPE_SINK:
 			ret = coresight_enable_sink(csdev, mode);
+			/*
+			 * Sink is the first component turned on. If we
+			 * failed to enable the sink, there are no components
+			 * that need disabling. Disabling the path here
+			 * would mean we could disrupt an existing session.
+			 */
 			if (ret)
-				goto err;
+				goto out;
 			break;
 		case CORESIGHT_DEV_TYPE_SOURCE:
 			/* sources are enabled from either sysFS or Perf */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 346/422] coresight: perf: Fix per cpu path management
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (344 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 345/422] coresight: Fix handling of sinks Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 347/422] coresight: perf: Disable trace path upon source error Greg Kroah-Hartman
                   ` (79 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Mathieu Poirier, Suzuki K Poulose,
	Sasha Levin

From: Suzuki K Poulose <suzuki.poulose@arm.com>

[ Upstream commit 5ecabe4a76e8cdb61fa3e24862d9ca240a1c4ddf ]

We create a coresight trace path for each online CPU when
we start the event. We rely on the number of online CPUs
and then go on to allocate an array matching the "number of
online CPUs" for holding the path and then uses normal
CPU id as the index to the array. This is problematic as
we could have some offline CPUs causing us to access beyond
the actual array size (e.g, on a dual SMP system, if CPU0 is
offline, CPU1 could be really accessing beyond the array).
The solution is to switch to per-cpu array for holding the path.

Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../hwtracing/coresight/coresight-etm-perf.c  | 55 ++++++++++++++-----
 1 file changed, 40 insertions(+), 15 deletions(-)

diff --git a/drivers/hwtracing/coresight/coresight-etm-perf.c b/drivers/hwtracing/coresight/coresight-etm-perf.c
index 0f5e03e4df22c..4b53d55788a07 100644
--- a/drivers/hwtracing/coresight/coresight-etm-perf.c
+++ b/drivers/hwtracing/coresight/coresight-etm-perf.c
@@ -12,6 +12,7 @@
 #include <linux/mm.h>
 #include <linux/init.h>
 #include <linux/perf_event.h>
+#include <linux/percpu-defs.h>
 #include <linux/slab.h>
 #include <linux/types.h>
 #include <linux/workqueue.h>
@@ -33,7 +34,7 @@ struct etm_event_data {
 	struct work_struct work;
 	cpumask_t mask;
 	void *snk_config;
-	struct list_head **path;
+	struct list_head * __percpu *path;
 };
 
 static DEFINE_PER_CPU(struct perf_output_handle, ctx_handle);
@@ -61,6 +62,18 @@ static const struct attribute_group *etm_pmu_attr_groups[] = {
 	NULL,
 };
 
+static inline struct list_head **
+etm_event_cpu_path_ptr(struct etm_event_data *data, int cpu)
+{
+	return per_cpu_ptr(data->path, cpu);
+}
+
+static inline struct list_head *
+etm_event_cpu_path(struct etm_event_data *data, int cpu)
+{
+	return *etm_event_cpu_path_ptr(data, cpu);
+}
+
 static void etm_event_read(struct perf_event *event) {}
 
 static int etm_addr_filters_alloc(struct perf_event *event)
@@ -120,23 +133,26 @@ static void free_event_data(struct work_struct *work)
 	 */
 	if (event_data->snk_config) {
 		cpu = cpumask_first(mask);
-		sink = coresight_get_sink(event_data->path[cpu]);
+		sink = coresight_get_sink(etm_event_cpu_path(event_data, cpu));
 		if (sink_ops(sink)->free_buffer)
 			sink_ops(sink)->free_buffer(event_data->snk_config);
 	}
 
 	for_each_cpu(cpu, mask) {
-		if (!(IS_ERR_OR_NULL(event_data->path[cpu])))
-			coresight_release_path(event_data->path[cpu]);
+		struct list_head **ppath;
+
+		ppath = etm_event_cpu_path_ptr(event_data, cpu);
+		if (!(IS_ERR_OR_NULL(*ppath)))
+			coresight_release_path(*ppath);
+		*ppath = NULL;
 	}
 
-	kfree(event_data->path);
+	free_percpu(event_data->path);
 	kfree(event_data);
 }
 
 static void *alloc_event_data(int cpu)
 {
-	int size;
 	cpumask_t *mask;
 	struct etm_event_data *event_data;
 
@@ -147,7 +163,6 @@ static void *alloc_event_data(int cpu)
 
 	/* Make sure nothing disappears under us */
 	get_online_cpus();
-	size = num_online_cpus();
 
 	mask = &event_data->mask;
 	if (cpu != -1)
@@ -164,8 +179,8 @@ static void *alloc_event_data(int cpu)
 	 * unused memory when dealing with single CPU trace scenarios is small
 	 * compared to the cost of searching through an optimized array.
 	 */
-	event_data->path = kcalloc(size,
-				   sizeof(struct list_head *), GFP_KERNEL);
+	event_data->path = alloc_percpu(struct list_head *);
+
 	if (!event_data->path) {
 		kfree(event_data);
 		return NULL;
@@ -213,6 +228,7 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,
 
 	/* Setup the path for each CPU in a trace session */
 	for_each_cpu(cpu, mask) {
+		struct list_head *path;
 		struct coresight_device *csdev;
 
 		csdev = per_cpu(csdev_src, cpu);
@@ -224,9 +240,11 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,
 		 * list of devices from source to sink that can be
 		 * referenced later when the path is actually needed.
 		 */
-		event_data->path[cpu] = coresight_build_path(csdev, sink);
-		if (IS_ERR(event_data->path[cpu]))
+		path = coresight_build_path(csdev, sink);
+		if (IS_ERR(path))
 			goto err;
+
+		*etm_event_cpu_path_ptr(event_data, cpu) = path;
 	}
 
 	if (!sink_ops(sink)->alloc_buffer)
@@ -255,6 +273,7 @@ static void etm_event_start(struct perf_event *event, int flags)
 	struct etm_event_data *event_data;
 	struct perf_output_handle *handle = this_cpu_ptr(&ctx_handle);
 	struct coresight_device *sink, *csdev = per_cpu(csdev_src, cpu);
+	struct list_head *path;
 
 	if (!csdev)
 		goto fail;
@@ -267,8 +286,9 @@ static void etm_event_start(struct perf_event *event, int flags)
 	if (!event_data)
 		goto fail;
 
+	path = etm_event_cpu_path(event_data, cpu);
 	/* We need a sink, no need to continue without one */
-	sink = coresight_get_sink(event_data->path[cpu]);
+	sink = coresight_get_sink(path);
 	if (WARN_ON_ONCE(!sink || !sink_ops(sink)->set_buffer))
 		goto fail_end_stop;
 
@@ -278,7 +298,7 @@ static void etm_event_start(struct perf_event *event, int flags)
 		goto fail_end_stop;
 
 	/* Nothing will happen without a path */
-	if (coresight_enable_path(event_data->path[cpu], CS_MODE_PERF))
+	if (coresight_enable_path(path, CS_MODE_PERF))
 		goto fail_end_stop;
 
 	/* Tell the perf core the event is alive */
@@ -306,6 +326,7 @@ static void etm_event_stop(struct perf_event *event, int mode)
 	struct coresight_device *sink, *csdev = per_cpu(csdev_src, cpu);
 	struct perf_output_handle *handle = this_cpu_ptr(&ctx_handle);
 	struct etm_event_data *event_data = perf_get_aux(handle);
+	struct list_head *path;
 
 	if (event->hw.state == PERF_HES_STOPPED)
 		return;
@@ -313,7 +334,11 @@ static void etm_event_stop(struct perf_event *event, int mode)
 	if (!csdev)
 		return;
 
-	sink = coresight_get_sink(event_data->path[cpu]);
+	path = etm_event_cpu_path(event_data, cpu);
+	if (!path)
+		return;
+
+	sink = coresight_get_sink(path);
 	if (!sink)
 		return;
 
@@ -344,7 +369,7 @@ static void etm_event_stop(struct perf_event *event, int mode)
 	}
 
 	/* Disabling the path make its elements available to other sessions */
-	coresight_disable_path(event_data->path[cpu]);
+	coresight_disable_path(path);
 }
 
 static int etm_event_add(struct perf_event *event, int mode)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 347/422] coresight: perf: Disable trace path upon source error
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (345 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 346/422] coresight: perf: Fix per cpu path management Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 348/422] coresight: tmc-etr: Handle driver mode specific ETR buffers Greg Kroah-Hartman
                   ` (78 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Mathieu Poirier, Suzuki K Poulose,
	Sasha Levin

From: Suzuki K Poulose <suzuki.poulose@arm.com>

[ Upstream commit 4f8ef21007531c3d7cb5b826e7b2c8999b65ecae ]

We enable the trace path, before activating the source.
If we fail to enable the source, we must disable the path
to make sure it is available for another session.

Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/hwtracing/coresight/coresight-etm-perf.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/hwtracing/coresight/coresight-etm-perf.c b/drivers/hwtracing/coresight/coresight-etm-perf.c
index 4b53d55788a07..c3c6452015142 100644
--- a/drivers/hwtracing/coresight/coresight-etm-perf.c
+++ b/drivers/hwtracing/coresight/coresight-etm-perf.c
@@ -306,11 +306,13 @@ static void etm_event_start(struct perf_event *event, int flags)
 
 	/* Finally enable the tracer */
 	if (source_ops(csdev)->enable(csdev, event, CS_MODE_PERF))
-		goto fail_end_stop;
+		goto fail_disable_path;
 
 out:
 	return;
 
+fail_disable_path:
+	coresight_disable_path(path);
 fail_end_stop:
 	perf_aux_output_flag(handle, PERF_AUX_FLAG_TRUNCATED);
 	perf_aux_output_end(handle, 0);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 348/422] coresight: tmc-etr: Handle driver mode specific ETR buffers
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (346 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 347/422] coresight: perf: Disable trace path upon source error Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 349/422] coresight: etm4x: Configure EL2 exception level when kernel is running in HYP Greg Kroah-Hartman
                   ` (77 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Mathieu Poirier, Suzuki K Poulose,
	Sasha Levin

From: Suzuki K Poulose <suzuki.poulose@arm.com>

[ Upstream commit 96a7f644006ecc05eaaa1a5d09373d0ee63beb0a ]

Since the ETR could be driven either by SYSFS or by perf, it
becomes complicated how we deal with the buffers used for each
of these modes. The ETR driver cannot simply free the current
attached buffer without knowing the provider (i.e, sysfs vs perf).

To solve this issue, we provide:
1) the driver-mode specific etr buffer to be retained in the drvdata
2) the etr_buf for a session should be passed on when enabling the
   hardware, which will be stored in drvdata->etr_buf. This will be
   replaced (not free'd) as soon as the hardware is disabled, after
   necessary sync operation.

The advantages of this are :

1) The common code path doesn't need to worry about how to dispose
   an existing buffer, if it is about to start a new session with a
   different buffer, possibly in a different mode.
2) The driver mode can control its buffers and can get access to the
   saved session even when the hardware is operating in a different
   mode. (e.g, we can still access a trace buffer from a sysfs mode
   even if the etr is now used in perf mode, without disrupting the
   current session.)

Towards this, we introduce a sysfs specific data which will hold the
etr_buf used for sysfs mode of operation, controlled solely by the
sysfs mode handling code.

Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../hwtracing/coresight/coresight-tmc-etr.c   | 58 ++++++++++++-------
 drivers/hwtracing/coresight/coresight-tmc.h   |  2 +
 2 files changed, 40 insertions(+), 20 deletions(-)

diff --git a/drivers/hwtracing/coresight/coresight-tmc-etr.c b/drivers/hwtracing/coresight/coresight-tmc-etr.c
index 11963647e19ae..2d6f428176ff8 100644
--- a/drivers/hwtracing/coresight/coresight-tmc-etr.c
+++ b/drivers/hwtracing/coresight/coresight-tmc-etr.c
@@ -895,10 +895,15 @@ static void tmc_sync_etr_buf(struct tmc_drvdata *drvdata)
 		tmc_etr_buf_insert_barrier_packet(etr_buf, etr_buf->offset);
 }
 
-static void tmc_etr_enable_hw(struct tmc_drvdata *drvdata)
+static void tmc_etr_enable_hw(struct tmc_drvdata *drvdata,
+			      struct etr_buf *etr_buf)
 {
 	u32 axictl, sts;
-	struct etr_buf *etr_buf = drvdata->etr_buf;
+
+	/* Callers should provide an appropriate buffer for use */
+	if (WARN_ON(!etr_buf || drvdata->etr_buf))
+		return;
+	drvdata->etr_buf = etr_buf;
 
 	/*
 	 * If this ETR is connected to a CATU, enable it before we turn
@@ -960,13 +965,16 @@ static void tmc_etr_enable_hw(struct tmc_drvdata *drvdata)
  * also updating the @bufpp on where to find it. Since the trace data
  * starts at anywhere in the buffer, depending on the RRP, we adjust the
  * @len returned to handle buffer wrapping around.
+ *
+ * We are protected here by drvdata->reading != 0, which ensures the
+ * sysfs_buf stays alive.
  */
 ssize_t tmc_etr_get_sysfs_trace(struct tmc_drvdata *drvdata,
 				loff_t pos, size_t len, char **bufpp)
 {
 	s64 offset;
 	ssize_t actual = len;
-	struct etr_buf *etr_buf = drvdata->etr_buf;
+	struct etr_buf *etr_buf = drvdata->sysfs_buf;
 
 	if (pos + actual > etr_buf->len)
 		actual = etr_buf->len - pos;
@@ -996,7 +1004,14 @@ tmc_etr_free_sysfs_buf(struct etr_buf *buf)
 
 static void tmc_etr_sync_sysfs_buf(struct tmc_drvdata *drvdata)
 {
-	tmc_sync_etr_buf(drvdata);
+	struct etr_buf *etr_buf = drvdata->etr_buf;
+
+	if (WARN_ON(drvdata->sysfs_buf != etr_buf)) {
+		tmc_etr_free_sysfs_buf(drvdata->sysfs_buf);
+		drvdata->sysfs_buf = NULL;
+	} else {
+		tmc_sync_etr_buf(drvdata);
+	}
 }
 
 static void tmc_etr_disable_hw(struct tmc_drvdata *drvdata)
@@ -1017,6 +1032,8 @@ static void tmc_etr_disable_hw(struct tmc_drvdata *drvdata)
 
 	/* Disable CATU device if this ETR is connected to one */
 	tmc_etr_disable_catu(drvdata);
+	/* Reset the ETR buf used by hardware */
+	drvdata->etr_buf = NULL;
 }
 
 static int tmc_enable_etr_sink_sysfs(struct coresight_device *csdev)
@@ -1024,7 +1041,7 @@ static int tmc_enable_etr_sink_sysfs(struct coresight_device *csdev)
 	int ret = 0;
 	unsigned long flags;
 	struct tmc_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
-	struct etr_buf *new_buf = NULL, *free_buf = NULL;
+	struct etr_buf *sysfs_buf = NULL, *new_buf = NULL, *free_buf = NULL;
 
 	/*
 	 * If we are enabling the ETR from disabled state, we need to make
@@ -1035,7 +1052,8 @@ static int tmc_enable_etr_sink_sysfs(struct coresight_device *csdev)
 	 * with the lock released.
 	 */
 	spin_lock_irqsave(&drvdata->spinlock, flags);
-	if (!drvdata->etr_buf || (drvdata->etr_buf->size != drvdata->size)) {
+	sysfs_buf = READ_ONCE(drvdata->sysfs_buf);
+	if (!sysfs_buf || (sysfs_buf->size != drvdata->size)) {
 		spin_unlock_irqrestore(&drvdata->spinlock, flags);
 
 		/* Allocate memory with the locks released */
@@ -1064,14 +1082,14 @@ static int tmc_enable_etr_sink_sysfs(struct coresight_device *csdev)
 	 * If we don't have a buffer or it doesn't match the requested size,
 	 * use the buffer allocated above. Otherwise reuse the existing buffer.
 	 */
-	if (!drvdata->etr_buf ||
-	    (new_buf && drvdata->etr_buf->size != new_buf->size)) {
-		free_buf = drvdata->etr_buf;
-		drvdata->etr_buf = new_buf;
+	sysfs_buf = READ_ONCE(drvdata->sysfs_buf);
+	if (!sysfs_buf || (new_buf && sysfs_buf->size != new_buf->size)) {
+		free_buf = sysfs_buf;
+		drvdata->sysfs_buf = new_buf;
 	}
 
 	drvdata->mode = CS_MODE_SYSFS;
-	tmc_etr_enable_hw(drvdata);
+	tmc_etr_enable_hw(drvdata, drvdata->sysfs_buf);
 out:
 	spin_unlock_irqrestore(&drvdata->spinlock, flags);
 
@@ -1156,13 +1174,13 @@ int tmc_read_prepare_etr(struct tmc_drvdata *drvdata)
 		goto out;
 	}
 
-	/* If drvdata::etr_buf is NULL the trace data has been read already */
-	if (drvdata->etr_buf == NULL) {
+	/* If sysfs_buf is NULL the trace data has been read already */
+	if (!drvdata->sysfs_buf) {
 		ret = -EINVAL;
 		goto out;
 	}
 
-	/* Disable the TMC if need be */
+	/* Disable the TMC if we are trying to read from a running session */
 	if (drvdata->mode == CS_MODE_SYSFS)
 		tmc_etr_disable_hw(drvdata);
 
@@ -1176,7 +1194,7 @@ out:
 int tmc_read_unprepare_etr(struct tmc_drvdata *drvdata)
 {
 	unsigned long flags;
-	struct etr_buf *etr_buf = NULL;
+	struct etr_buf *sysfs_buf = NULL;
 
 	/* config types are set a boot time and never change */
 	if (WARN_ON_ONCE(drvdata->config_type != TMC_CONFIG_TYPE_ETR))
@@ -1191,22 +1209,22 @@ int tmc_read_unprepare_etr(struct tmc_drvdata *drvdata)
 		 * buffer. Since the tracer is still enabled drvdata::buf can't
 		 * be NULL.
 		 */
-		tmc_etr_enable_hw(drvdata);
+		tmc_etr_enable_hw(drvdata, drvdata->sysfs_buf);
 	} else {
 		/*
 		 * The ETR is not tracing and the buffer was just read.
 		 * As such prepare to free the trace buffer.
 		 */
-		etr_buf =  drvdata->etr_buf;
-		drvdata->etr_buf = NULL;
+		sysfs_buf = drvdata->sysfs_buf;
+		drvdata->sysfs_buf = NULL;
 	}
 
 	drvdata->reading = false;
 	spin_unlock_irqrestore(&drvdata->spinlock, flags);
 
 	/* Free allocated memory out side of the spinlock */
-	if (etr_buf)
-		tmc_free_etr_buf(etr_buf);
+	if (sysfs_buf)
+		tmc_etr_free_sysfs_buf(sysfs_buf);
 
 	return 0;
 }
diff --git a/drivers/hwtracing/coresight/coresight-tmc.h b/drivers/hwtracing/coresight/coresight-tmc.h
index 7027bd60c4cc8..872f63e3651ba 100644
--- a/drivers/hwtracing/coresight/coresight-tmc.h
+++ b/drivers/hwtracing/coresight/coresight-tmc.h
@@ -170,6 +170,7 @@ struct etr_buf {
  * @trigger_cntr: amount of words to store after a trigger.
  * @etr_caps:	Bitmask of capabilities of the TMC ETR, inferred from the
  *		device configuration register (DEVID)
+ * @sysfs_data:	SYSFS buffer for ETR.
  */
 struct tmc_drvdata {
 	void __iomem		*base;
@@ -189,6 +190,7 @@ struct tmc_drvdata {
 	enum tmc_mem_intf_width	memwidth;
 	u32			trigger_cntr;
 	u32			etr_caps;
+	struct etr_buf		*sysfs_buf;
 };
 
 struct etr_buf_operations {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 349/422] coresight: etm4x: Configure EL2 exception level when kernel is running in HYP
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (347 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 348/422] coresight: tmc-etr: Handle driver mode specific ETR buffers Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 350/422] coresight: tmc: Fix byte-address alignment for RRP Greg Kroah-Hartman
                   ` (76 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Tomasz Nowicki, Mathieu Poirier, Sasha Levin

From: Tomasz Nowicki <tnowicki@caviumnetworks.com>

[ Upstream commit b860801e3237ec4c74cf8de0be4816996757ae5c ]

For non-VHE systems host kernel runs at EL1 and jumps to EL2 whenever
hypervisor code should be executed. In this case ETM4x driver must
restrict configuration to EL1 when it setups kernel tracing.
However, there is no separate hypervisor privilege level when VHE
is enabled, the host kernel runs at EL2.

This patch fixes configuration of TRCACATRn register for VHE systems
so that ETM_EXLEVEL_NS_HYP bit is used instead of ETM_EXLEVEL_NS_OS
to on/off kernel tracing. At the same time, it moves common code
to new helper.

Signed-off-by: Tomasz Nowicki <tnowicki@caviumnetworks.com>
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/hwtracing/coresight/coresight-etm4x.c | 40 +++++++++----------
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/drivers/hwtracing/coresight/coresight-etm4x.c b/drivers/hwtracing/coresight/coresight-etm4x.c
index e45b5ec2f4512..b7bc08cf90c69 100644
--- a/drivers/hwtracing/coresight/coresight-etm4x.c
+++ b/drivers/hwtracing/coresight/coresight-etm4x.c
@@ -28,6 +28,7 @@
 #include <linux/pm_runtime.h>
 #include <asm/sections.h>
 #include <asm/local.h>
+#include <asm/virt.h>
 
 #include "coresight-etm4x.h"
 #include "coresight-etm-perf.h"
@@ -616,7 +617,7 @@ static void etm4_set_default_config(struct etmv4_config *config)
 	config->vinst_ctrl |= BIT(0);
 }
 
-static u64 etm4_get_access_type(struct etmv4_config *config)
+static u64 etm4_get_ns_access_type(struct etmv4_config *config)
 {
 	u64 access_type = 0;
 
@@ -627,17 +628,26 @@ static u64 etm4_get_access_type(struct etmv4_config *config)
 	 *   Bit[13] Exception level 1 - OS
 	 *   Bit[14] Exception level 2 - Hypervisor
 	 *   Bit[15] Never implemented
-	 *
-	 * Always stay away from hypervisor mode.
 	 */
-	access_type = ETM_EXLEVEL_NS_HYP;
-
-	if (config->mode & ETM_MODE_EXCL_KERN)
-		access_type |= ETM_EXLEVEL_NS_OS;
+	if (!is_kernel_in_hyp_mode()) {
+		/* Stay away from hypervisor mode for non-VHE */
+		access_type =  ETM_EXLEVEL_NS_HYP;
+		if (config->mode & ETM_MODE_EXCL_KERN)
+			access_type |= ETM_EXLEVEL_NS_OS;
+	} else if (config->mode & ETM_MODE_EXCL_KERN) {
+		access_type = ETM_EXLEVEL_NS_HYP;
+	}
 
 	if (config->mode & ETM_MODE_EXCL_USER)
 		access_type |= ETM_EXLEVEL_NS_APP;
 
+	return access_type;
+}
+
+static u64 etm4_get_access_type(struct etmv4_config *config)
+{
+	u64 access_type = etm4_get_ns_access_type(config);
+
 	/*
 	 * EXLEVEL_S, bits[11:8], don't trace anything happening
 	 * in secure state.
@@ -891,20 +901,10 @@ void etm4_config_trace_mode(struct etmv4_config *config)
 
 	addr_acc = config->addr_acc[ETM_DEFAULT_ADDR_COMP];
 	/* clear default config */
-	addr_acc &= ~(ETM_EXLEVEL_NS_APP | ETM_EXLEVEL_NS_OS);
+	addr_acc &= ~(ETM_EXLEVEL_NS_APP | ETM_EXLEVEL_NS_OS |
+		      ETM_EXLEVEL_NS_HYP);
 
-	/*
-	 * EXLEVEL_NS, bits[15:12]
-	 * The Exception levels are:
-	 *   Bit[12] Exception level 0 - Application
-	 *   Bit[13] Exception level 1 - OS
-	 *   Bit[14] Exception level 2 - Hypervisor
-	 *   Bit[15] Never implemented
-	 */
-	if (mode & ETM_MODE_EXCL_KERN)
-		addr_acc |= ETM_EXLEVEL_NS_OS;
-	else
-		addr_acc |= ETM_EXLEVEL_NS_APP;
+	addr_acc |= etm4_get_ns_access_type(config);
 
 	config->addr_acc[ETM_DEFAULT_ADDR_COMP] = addr_acc;
 	config->addr_acc[ETM_DEFAULT_ADDR_COMP + 1] = addr_acc;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 350/422] coresight: tmc: Fix byte-address alignment for RRP
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (348 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 349/422] coresight: etm4x: Configure EL2 exception level when kernel is running in HYP Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 351/422] coresight: dynamic-replicator: Handle multiple connections Greg Kroah-Hartman
                   ` (75 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Mathieu Poirier, Mike Leach, Leo Yan,
	Sasha Levin

From: Leo Yan <leo.yan@linaro.org>

[ Upstream commit e7753f3937610633a540f2be81be87531f96ff04 ]

>From the comment in the code, it claims the requirement for byte-address
alignment for RRP register: 'for 32-bit, 64-bit and 128-bit wide trace
memory, the four LSBs must be 0s. For 256-bit wide trace memory, the
five LSBs must be 0s'.  This isn't consistent with the program, the
program sets five LSBs as zeros for 32/64/128-bit wide trace memory and
set six LSBs zeros for 256-bit wide trace memory.

After checking with the CoreSight Trace Memory Controller technical
reference manual (ARM DDI 0461B, section 3.3.4 RAM Read Pointer
Register), it proves the comment is right and the program does wrong
setting.

This patch fixes byte-address alignment for RRP by following correct
definition in the technical reference manual.

Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: Mike Leach <mike.leach@linaro.org>
Signed-off-by: Leo Yan <leo.yan@linaro.org>
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/hwtracing/coresight/coresight-tmc-etf.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/hwtracing/coresight/coresight-tmc-etf.c b/drivers/hwtracing/coresight/coresight-tmc-etf.c
index 0549249f4b398..e31061308e19e 100644
--- a/drivers/hwtracing/coresight/coresight-tmc-etf.c
+++ b/drivers/hwtracing/coresight/coresight-tmc-etf.c
@@ -438,10 +438,10 @@ static void tmc_update_etf_buffer(struct coresight_device *csdev,
 		case TMC_MEM_INTF_WIDTH_32BITS:
 		case TMC_MEM_INTF_WIDTH_64BITS:
 		case TMC_MEM_INTF_WIDTH_128BITS:
-			mask = GENMASK(31, 5);
+			mask = GENMASK(31, 4);
 			break;
 		case TMC_MEM_INTF_WIDTH_256BITS:
-			mask = GENMASK(31, 6);
+			mask = GENMASK(31, 5);
 			break;
 		}
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 351/422] coresight: dynamic-replicator: Handle multiple connections
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (349 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 350/422] coresight: tmc: Fix byte-address alignment for RRP Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 352/422] slimbus: ngd: register ngd driver only once Greg Kroah-Hartman
                   ` (74 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Mathieu Poirier, Suzuki K Poulose,
	Sasha Levin

From: Suzuki K Poulose <suzuki.poulose@arm.com>

[ Upstream commit 30af4fb619e5126cb3152072e687b377fc9398d6 ]

When a replicator port is enabled, we block the traffic
on the other port and route all traffic to the new enabled
port. If there are two active trace sessions each targeting
the two different paths from the replicator, the second session
will disable the first session and route all the data to the
second path.
                    ETR
                 /
e.g, replicator
                 \
                    ETB

If CPU0 is operated in sysfs mode to ETR and CPU1 is operated
in perf mode to ETB, depending on the order in which the
replicator is enabled one device is blocked.

Ideally we need trace-id for the session to make the
right choice. That implies we need a trace-id allocation
logic for the coresight subsystem and use that to route
the traffic. The short term solution is to only manage
the "target port" and leave the other port untouched.
That leaves both the paths unaffected, except that some
unwanted traffic may be pushed to the paths (if the Trace-IDs
are not far enough), which is still fine and can be filtered
out while processing rather than silently blocking the data.

Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../coresight/coresight-dynamic-replicator.c  | 64 ++++++++++++++-----
 1 file changed, 47 insertions(+), 17 deletions(-)

diff --git a/drivers/hwtracing/coresight/coresight-dynamic-replicator.c b/drivers/hwtracing/coresight/coresight-dynamic-replicator.c
index f6d0571ab9dd5..d31f1d8758b24 100644
--- a/drivers/hwtracing/coresight/coresight-dynamic-replicator.c
+++ b/drivers/hwtracing/coresight/coresight-dynamic-replicator.c
@@ -34,26 +34,42 @@ struct replicator_state {
 	struct coresight_device	*csdev;
 };
 
+/*
+ * replicator_reset : Reset the replicator configuration to sane values.
+ */
+static void replicator_reset(struct replicator_state *drvdata)
+{
+	CS_UNLOCK(drvdata->base);
+
+	writel_relaxed(0xff, drvdata->base + REPLICATOR_IDFILTER0);
+	writel_relaxed(0xff, drvdata->base + REPLICATOR_IDFILTER1);
+
+	CS_LOCK(drvdata->base);
+}
+
 static int replicator_enable(struct coresight_device *csdev, int inport,
 			      int outport)
 {
+	u32 reg;
 	struct replicator_state *drvdata = dev_get_drvdata(csdev->dev.parent);
 
+	switch (outport) {
+	case 0:
+		reg = REPLICATOR_IDFILTER0;
+		break;
+	case 1:
+		reg = REPLICATOR_IDFILTER1;
+		break;
+	default:
+		WARN_ON(1);
+		return -EINVAL;
+	}
+
 	CS_UNLOCK(drvdata->base);
 
-	/*
-	 * Ensure that the other port is disabled
-	 * 0x00 - passing through the replicator unimpeded
-	 * 0xff - disable (or impede) the flow of ATB data
-	 */
-	if (outport == 0) {
-		writel_relaxed(0x00, drvdata->base + REPLICATOR_IDFILTER0);
-		writel_relaxed(0xff, drvdata->base + REPLICATOR_IDFILTER1);
-	} else {
-		writel_relaxed(0x00, drvdata->base + REPLICATOR_IDFILTER1);
-		writel_relaxed(0xff, drvdata->base + REPLICATOR_IDFILTER0);
-	}
 
+	/* Ensure that the outport is enabled. */
+	writel_relaxed(0x00, drvdata->base + reg);
 	CS_LOCK(drvdata->base);
 
 	dev_info(drvdata->dev, "REPLICATOR enabled\n");
@@ -63,15 +79,25 @@ static int replicator_enable(struct coresight_device *csdev, int inport,
 static void replicator_disable(struct coresight_device *csdev, int inport,
 				int outport)
 {
+	u32 reg;
 	struct replicator_state *drvdata = dev_get_drvdata(csdev->dev.parent);
 
+	switch (outport) {
+	case 0:
+		reg = REPLICATOR_IDFILTER0;
+		break;
+	case 1:
+		reg = REPLICATOR_IDFILTER1;
+		break;
+	default:
+		WARN_ON(1);
+		return;
+	}
+
 	CS_UNLOCK(drvdata->base);
 
 	/* disable the flow of ATB data through port */
-	if (outport == 0)
-		writel_relaxed(0xff, drvdata->base + REPLICATOR_IDFILTER0);
-	else
-		writel_relaxed(0xff, drvdata->base + REPLICATOR_IDFILTER1);
+	writel_relaxed(0xff, drvdata->base + reg);
 
 	CS_LOCK(drvdata->base);
 
@@ -156,7 +182,11 @@ static int replicator_probe(struct amba_device *adev, const struct amba_id *id)
 	desc.groups = replicator_groups;
 	drvdata->csdev = coresight_register(&desc);
 
-	return PTR_ERR_OR_ZERO(drvdata->csdev);
+	if (!IS_ERR(drvdata->csdev)) {
+		replicator_reset(drvdata);
+		return 0;
+	}
+	return PTR_ERR(drvdata->csdev);
 }
 
 #ifdef CONFIG_PM
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 352/422] slimbus: ngd: register ngd driver only once.
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (350 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 351/422] coresight: dynamic-replicator: Handle multiple connections Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-20 12:31   ` Pavel Machek
  2019-11-19  5:19 ` [PATCH 4.19 353/422] slimbus: ngd: return proper error code instead of zero Greg Kroah-Hartman
                   ` (73 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Srinivas Kandagatla, Sasha Levin

From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

[ Upstream commit 1830dad34c070161fda2ff1db77b39ffa78aa380 ]

Move ngd platform driver out of loop so that it registers only once.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/slimbus/qcom-ngd-ctrl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/slimbus/qcom-ngd-ctrl.c b/drivers/slimbus/qcom-ngd-ctrl.c
index f63d1b8a09335..a9abde2f4088b 100644
--- a/drivers/slimbus/qcom-ngd-ctrl.c
+++ b/drivers/slimbus/qcom-ngd-ctrl.c
@@ -1346,7 +1346,6 @@ static int of_qcom_slim_ngd_register(struct device *parent,
 		ngd->base = ctrl->base + ngd->id * data->offset +
 					(ngd->id - 1) * data->size;
 		ctrl->ngd = ngd;
-		platform_driver_register(&qcom_slim_ngd_driver);
 
 		return 0;
 	}
@@ -1445,6 +1444,7 @@ static int qcom_slim_ngd_ctrl_probe(struct platform_device *pdev)
 	init_completion(&ctrl->reconf);
 	init_completion(&ctrl->qmi.qmi_comp);
 
+	platform_driver_register(&qcom_slim_ngd_driver);
 	return of_qcom_slim_ngd_register(dev, ctrl);
 }
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 353/422] slimbus: ngd: return proper error code instead of zero
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (351 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 352/422] slimbus: ngd: register ngd driver only once Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-20 12:36   ` Pavel Machek
  2019-11-19  5:19 ` [PATCH 4.19 354/422] silmbus: ngd: register controller after power up Greg Kroah-Hartman
                   ` (72 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Srinivas Kandagatla, Sasha Levin

From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

[ Upstream commit 9652e6aa62a1836494ebb8dbd402587c083b568c ]

It looks like there is a typo in probe return. Fix it.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/slimbus/qcom-ngd-ctrl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/slimbus/qcom-ngd-ctrl.c b/drivers/slimbus/qcom-ngd-ctrl.c
index a9abde2f4088b..e587be9064e74 100644
--- a/drivers/slimbus/qcom-ngd-ctrl.c
+++ b/drivers/slimbus/qcom-ngd-ctrl.c
@@ -1393,7 +1393,7 @@ wq_err:
 	if (ctrl->mwq)
 		destroy_workqueue(ctrl->mwq);
 
-	return 0;
+	return ret;
 }
 
 static int qcom_slim_ngd_ctrl_probe(struct platform_device *pdev)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 354/422] silmbus: ngd: register controller after power up.
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (352 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 353/422] slimbus: ngd: return proper error code instead of zero Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 355/422] misc: kgdbts: Fix restrict error Greg Kroah-Hartman
                   ` (71 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Srinivas Kandagatla, Sasha Levin

From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

[ Upstream commit 94fe5f2b45c4108885e4b71f6b181068632ec904 ]

Register slimbus controller only after finishing powerup sequnce so that we
do not endup in situation where core starts sending transactions before
the controller is ready.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/slimbus/qcom-ngd-ctrl.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/slimbus/qcom-ngd-ctrl.c b/drivers/slimbus/qcom-ngd-ctrl.c
index e587be9064e74..d72f8eed2e8b7 100644
--- a/drivers/slimbus/qcom-ngd-ctrl.c
+++ b/drivers/slimbus/qcom-ngd-ctrl.c
@@ -1234,8 +1234,17 @@ static int qcom_slim_ngd_enable(struct qcom_slim_ngd_ctrl *ctrl, bool enable)
 			pm_runtime_resume(ctrl->dev);
 		pm_runtime_mark_last_busy(ctrl->dev);
 		pm_runtime_put(ctrl->dev);
+
+		ret = slim_register_controller(&ctrl->ctrl);
+		if (ret) {
+			dev_err(ctrl->dev, "error adding slim controller\n");
+			return ret;
+		}
+
+		dev_info(ctrl->dev, "SLIM controller Registered\n");
 	} else {
 		qcom_slim_qmi_exit(ctrl);
+		slim_unregister_controller(&ctrl->ctrl);
 	}
 
 	return 0;
@@ -1360,11 +1369,6 @@ static int qcom_slim_ngd_probe(struct platform_device *pdev)
 	int ret;
 
 	ctrl->ctrl.dev = dev;
-	ret = slim_register_controller(&ctrl->ctrl);
-	if (ret) {
-		dev_err(dev, "error adding slim controller\n");
-		return ret;
-	}
 
 	pm_runtime_use_autosuspend(dev);
 	pm_runtime_set_autosuspend_delay(dev, QCOM_SLIM_NGD_AUTOSUSPEND);
@@ -1374,7 +1378,7 @@ static int qcom_slim_ngd_probe(struct platform_device *pdev)
 	ret = qcom_slim_ngd_qmi_svc_event_init(ctrl);
 	if (ret) {
 		dev_err(&pdev->dev, "QMI service registration failed:%d", ret);
-		goto err;
+		return ret;
 	}
 
 	INIT_WORK(&ctrl->m_work, qcom_slim_ngd_master_worker);
@@ -1386,8 +1390,6 @@ static int qcom_slim_ngd_probe(struct platform_device *pdev)
 	}
 
 	return 0;
-err:
-	slim_unregister_controller(&ctrl->ctrl);
 wq_err:
 	qcom_slim_ngd_qmi_svc_event_deinit(&ctrl->qmi);
 	if (ctrl->mwq)
@@ -1460,7 +1462,7 @@ static int qcom_slim_ngd_remove(struct platform_device *pdev)
 	struct qcom_slim_ngd_ctrl *ctrl = platform_get_drvdata(pdev);
 
 	pm_runtime_disable(&pdev->dev);
-	slim_unregister_controller(&ctrl->ctrl);
+	qcom_slim_ngd_enable(ctrl, false);
 	qcom_slim_ngd_exit_dma(ctrl);
 	qcom_slim_ngd_qmi_svc_event_deinit(&ctrl->qmi);
 	if (ctrl->mwq)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 355/422] misc: kgdbts: Fix restrict error
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (353 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 354/422] silmbus: ngd: register controller after power up Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 356/422] misc: genwqe: should return proper error value Greg Kroah-Hartman
                   ` (70 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Laura Abbott, Daniel Thompson, Sasha Levin

From: Laura Abbott <labbott@redhat.com>

[ Upstream commit fa0218ef733e6f247a1a3986e3eb12460064ac77 ]

kgdbts current fails when compiled with restrict:

drivers/misc/kgdbts.c: In function ‘configure_kgdbts’:
drivers/misc/kgdbts.c:1070:2: error: ‘strcpy’ source argument is the same as destination [-Werror=restrict]
  strcpy(config, opt);
  ^~~~~~~~~~~~~~~~~~~

As the error says, config is being used in both the source and destination.
Refactor the code to avoid the extra copy and put the parsing closer to
the actual location.

Signed-off-by: Laura Abbott <labbott@redhat.com>
Acked-by: Daniel Thompson <daniel.thompson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/misc/kgdbts.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c
index eb4d90b7d99e1..8b01257783dd8 100644
--- a/drivers/misc/kgdbts.c
+++ b/drivers/misc/kgdbts.c
@@ -985,6 +985,12 @@ static void kgdbts_run_tests(void)
 	int nmi_sleep = 0;
 	int i;
 
+	verbose = 0;
+	if (strstr(config, "V1"))
+		verbose = 1;
+	if (strstr(config, "V2"))
+		verbose = 2;
+
 	ptr = strchr(config, 'F');
 	if (ptr)
 		fork_test = simple_strtol(ptr + 1, NULL, 10);
@@ -1068,13 +1074,6 @@ static int kgdbts_option_setup(char *opt)
 		return -ENOSPC;
 	}
 	strcpy(config, opt);
-
-	verbose = 0;
-	if (strstr(config, "V1"))
-		verbose = 1;
-	if (strstr(config, "V2"))
-		verbose = 2;
-
 	return 0;
 }
 
@@ -1086,9 +1085,6 @@ static int configure_kgdbts(void)
 
 	if (!strlen(config) || isspace(config[0]))
 		goto noconfig;
-	err = kgdbts_option_setup(config);
-	if (err)
-		goto noconfig;
 
 	final_ack = 0;
 	run_plant_and_detach_test(1);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 356/422] misc: genwqe: should return proper error value.
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (354 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 355/422] misc: kgdbts: Fix restrict error Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 357/422] vmbus: keep pointer to ring buffer page Greg Kroah-Hartman
                   ` (69 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, zhong jiang, Sasha Levin

From: zhong jiang <zhongjiang@huawei.com>

[ Upstream commit 02241995b004faa7d9ff628e97f24056190853f8 ]

The function should return -EFAULT when copy_from_user fails. Even
though the caller does not distinguish them. but we should keep backward
compatibility.

Signed-off-by: zhong jiang <zhongjiang@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/misc/genwqe/card_utils.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/misc/genwqe/card_utils.c b/drivers/misc/genwqe/card_utils.c
index f68435df76d48..22301bba8c495 100644
--- a/drivers/misc/genwqe/card_utils.c
+++ b/drivers/misc/genwqe/card_utils.c
@@ -298,7 +298,7 @@ static int genwqe_sgl_size(int num_pages)
 int genwqe_alloc_sync_sgl(struct genwqe_dev *cd, struct genwqe_sgl *sgl,
 			  void __user *user_addr, size_t user_size, int write)
 {
-	int rc;
+	int ret = -ENOMEM;
 	struct pci_dev *pci_dev = cd->pci_dev;
 
 	sgl->fpage_offs = offset_in_page((unsigned long)user_addr);
@@ -318,7 +318,7 @@ int genwqe_alloc_sync_sgl(struct genwqe_dev *cd, struct genwqe_sgl *sgl,
 	if (get_order(sgl->sgl_size) > MAX_ORDER) {
 		dev_err(&pci_dev->dev,
 			"[%s] err: too much memory requested!\n", __func__);
-		return -ENOMEM;
+		return ret;
 	}
 
 	sgl->sgl = __genwqe_alloc_consistent(cd, sgl->sgl_size,
@@ -326,7 +326,7 @@ int genwqe_alloc_sync_sgl(struct genwqe_dev *cd, struct genwqe_sgl *sgl,
 	if (sgl->sgl == NULL) {
 		dev_err(&pci_dev->dev,
 			"[%s] err: no memory available!\n", __func__);
-		return -ENOMEM;
+		return ret;
 	}
 
 	/* Only use buffering on incomplete pages */
@@ -339,7 +339,7 @@ int genwqe_alloc_sync_sgl(struct genwqe_dev *cd, struct genwqe_sgl *sgl,
 		/* Sync with user memory */
 		if (copy_from_user(sgl->fpage + sgl->fpage_offs,
 				   user_addr, sgl->fpage_size)) {
-			rc = -EFAULT;
+			ret = -EFAULT;
 			goto err_out;
 		}
 	}
@@ -352,7 +352,7 @@ int genwqe_alloc_sync_sgl(struct genwqe_dev *cd, struct genwqe_sgl *sgl,
 		/* Sync with user memory */
 		if (copy_from_user(sgl->lpage, user_addr + user_size -
 				   sgl->lpage_size, sgl->lpage_size)) {
-			rc = -EFAULT;
+			ret = -EFAULT;
 			goto err_out2;
 		}
 	}
@@ -374,7 +374,8 @@ int genwqe_alloc_sync_sgl(struct genwqe_dev *cd, struct genwqe_sgl *sgl,
 	sgl->sgl = NULL;
 	sgl->sgl_dma_addr = 0;
 	sgl->sgl_size = 0;
-	return -ENOMEM;
+
+	return ret;
 }
 
 int genwqe_setup_sgl(struct genwqe_dev *cd, struct genwqe_sgl *sgl,
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 357/422] vmbus: keep pointer to ring buffer page
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (355 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 356/422] misc: genwqe: should return proper error value Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 358/422] vfio/pci: Fix potential memory leak in vfio_msi_cap_len Greg Kroah-Hartman
                   ` (68 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Stephen Hemminger, Sasha Levin

From: Stephen Hemminger <stephen@networkplumber.org>

[ Upstream commit 52a42c2a90226dc61c99bbd0cb096deeb52c334b ]

Avoid going from struct page to virt address (and back) by just
keeping pointer to the allocated pages instead of virt address.

Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/hv/channel.c         | 20 +++++++++-----------
 drivers/uio/uio_hv_generic.c |  5 +++--
 include/linux/hyperv.h       |  2 +-
 3 files changed, 13 insertions(+), 14 deletions(-)

diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
index fdb0f832fadef..5e515533e9cdb 100644
--- a/drivers/hv/channel.c
+++ b/drivers/hv/channel.c
@@ -91,11 +91,14 @@ int vmbus_open(struct vmbus_channel *newchannel, u32 send_ringbuffer_size,
 	unsigned long flags;
 	int ret, err = 0;
 	struct page *page;
+	unsigned int order;
 
 	if (send_ringbuffer_size % PAGE_SIZE ||
 	    recv_ringbuffer_size % PAGE_SIZE)
 		return -EINVAL;
 
+	order = get_order(send_ringbuffer_size + recv_ringbuffer_size);
+
 	spin_lock_irqsave(&newchannel->lock, flags);
 	if (newchannel->state == CHANNEL_OPEN_STATE) {
 		newchannel->state = CHANNEL_OPENING_STATE;
@@ -110,21 +113,17 @@ int vmbus_open(struct vmbus_channel *newchannel, u32 send_ringbuffer_size,
 
 	/* Allocate the ring buffer */
 	page = alloc_pages_node(cpu_to_node(newchannel->target_cpu),
-				GFP_KERNEL|__GFP_ZERO,
-				get_order(send_ringbuffer_size +
-				recv_ringbuffer_size));
+				GFP_KERNEL|__GFP_ZERO, order);
 
 	if (!page)
-		page = alloc_pages(GFP_KERNEL|__GFP_ZERO,
-				   get_order(send_ringbuffer_size +
-					     recv_ringbuffer_size));
+		page = alloc_pages(GFP_KERNEL|__GFP_ZERO, order);
 
 	if (!page) {
 		err = -ENOMEM;
 		goto error_set_chnstate;
 	}
 
-	newchannel->ringbuffer_pages = page_address(page);
+	newchannel->ringbuffer_page = page;
 	newchannel->ringbuffer_pagecount = (send_ringbuffer_size +
 					   recv_ringbuffer_size) >> PAGE_SHIFT;
 
@@ -239,8 +238,7 @@ error_free_gpadl:
 error_free_pages:
 	hv_ringbuffer_cleanup(&newchannel->outbound);
 	hv_ringbuffer_cleanup(&newchannel->inbound);
-	__free_pages(page,
-		     get_order(send_ringbuffer_size + recv_ringbuffer_size));
+	__free_pages(page, order);
 error_set_chnstate:
 	newchannel->state = CHANNEL_OPEN_STATE;
 	return err;
@@ -666,8 +664,8 @@ static int vmbus_close_internal(struct vmbus_channel *channel)
 	hv_ringbuffer_cleanup(&channel->outbound);
 	hv_ringbuffer_cleanup(&channel->inbound);
 
-	free_pages((unsigned long)channel->ringbuffer_pages,
-		get_order(channel->ringbuffer_pagecount * PAGE_SIZE));
+	__free_pages(channel->ringbuffer_page,
+		     get_order(channel->ringbuffer_pagecount << PAGE_SHIFT));
 
 out:
 	return ret;
diff --git a/drivers/uio/uio_hv_generic.c b/drivers/uio/uio_hv_generic.c
index e401be8321ab5..170fa1f8f00e0 100644
--- a/drivers/uio/uio_hv_generic.c
+++ b/drivers/uio/uio_hv_generic.c
@@ -131,11 +131,12 @@ static int hv_uio_ring_mmap(struct file *filp, struct kobject *kobj,
 		= container_of(kobj, struct vmbus_channel, kobj);
 	struct hv_device *dev = channel->primary_channel->device_obj;
 	u16 q_idx = channel->offermsg.offer.sub_channel_index;
+	void *ring_buffer = page_address(channel->ringbuffer_page);
 
 	dev_dbg(&dev->device, "mmap channel %u pages %#lx at %#lx\n",
 		q_idx, vma_pages(vma), vma->vm_pgoff);
 
-	return vm_iomap_memory(vma, virt_to_phys(channel->ringbuffer_pages),
+	return vm_iomap_memory(vma, virt_to_phys(ring_buffer),
 			       channel->ringbuffer_pagecount << PAGE_SHIFT);
 }
 
@@ -224,7 +225,7 @@ hv_uio_probe(struct hv_device *dev,
 	/* mem resources */
 	pdata->info.mem[TXRX_RING_MAP].name = "txrx_rings";
 	pdata->info.mem[TXRX_RING_MAP].addr
-		= (uintptr_t)dev->channel->ringbuffer_pages;
+		= (uintptr_t)page_address(dev->channel->ringbuffer_page);
 	pdata->info.mem[TXRX_RING_MAP].size
 		= dev->channel->ringbuffer_pagecount << PAGE_SHIFT;
 	pdata->info.mem[TXRX_RING_MAP].memtype = UIO_MEM_LOGICAL;
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
index bbde887ed3931..c43e694fef7dd 100644
--- a/include/linux/hyperv.h
+++ b/include/linux/hyperv.h
@@ -739,7 +739,7 @@ struct vmbus_channel {
 	u32 ringbuffer_gpadlhandle;
 
 	/* Allocated memory for ring buffer */
-	void *ringbuffer_pages;
+	struct page *ringbuffer_page;
 	u32 ringbuffer_pagecount;
 	struct hv_ring_buffer_info outbound;	/* send to parent */
 	struct hv_ring_buffer_info inbound;	/* receive from parent */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 358/422] vfio/pci: Fix potential memory leak in vfio_msi_cap_len
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (356 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 357/422] vmbus: keep pointer to ring buffer page Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 359/422] vfio/pci: Mask buggy SR-IOV VF INTx support Greg Kroah-Hartman
                   ` (67 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Li Qiang, Eric Auger,
	Alex Williamson, Sasha Levin

From: Li Qiang <liq3ea@gmail.com>

[ Upstream commit 30ea32ab1951c80c6113f300fce2c70cd12659e4 ]

Free allocated vdev->msi_perm in error path.

Signed-off-by: Li Qiang <liq3ea@gmail.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/vfio/pci/vfio_pci_config.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/vfio/pci/vfio_pci_config.c b/drivers/vfio/pci/vfio_pci_config.c
index 115a36f6f4039..62023b4a373b4 100644
--- a/drivers/vfio/pci/vfio_pci_config.c
+++ b/drivers/vfio/pci/vfio_pci_config.c
@@ -1180,8 +1180,10 @@ static int vfio_msi_cap_len(struct vfio_pci_device *vdev, u8 pos)
 		return -ENOMEM;
 
 	ret = init_pci_cap_msi_perm(vdev->msi_perm, len, flags);
-	if (ret)
+	if (ret) {
+		kfree(vdev->msi_perm);
 		return ret;
+	}
 
 	return len;
 }
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 359/422] vfio/pci: Mask buggy SR-IOV VF INTx support
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (357 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 358/422] vfio/pci: Fix potential memory leak in vfio_msi_cap_len Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 360/422] iw_cxgb4: Use proper enumerated type in c4iw_bar2_addrs Greg Kroah-Hartman
                   ` (66 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Gage Eads, Ashok Raj,
	Alex Williamson, Sasha Levin

From: Alex Williamson <alex.williamson@redhat.com>

[ Upstream commit db04264fe9bc0f2b62e036629f9afb530324b693 ]

The SR-IOV spec requires that VFs must report zero for the INTx pin
register as VFs are precluded from INTx support.  It's much easier for
the host kernel to understand whether a device is a VF and therefore
whether a non-zero pin register value is bogus than it is to do the
same in userspace.  Override the INTx count for such devices and
virtualize the pin register to provide a consistent view of the device
to the user.

As this is clearly a spec violation, warn about it to support hardware
validation, but also provide a known whitelist as it doesn't do much
good to continue complaining if the hardware vendor doesn't plan to
fix it.

Known devices with this issue: 8086:270c

Tested-by: Gage Eads <gage.eads@intel.com>
Reviewed-by: Ashok Raj <ashok.raj@intel.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/vfio/pci/vfio_pci.c        |  8 ++++++--
 drivers/vfio/pci/vfio_pci_config.c | 27 +++++++++++++++++++++++++++
 2 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/drivers/vfio/pci/vfio_pci.c b/drivers/vfio/pci/vfio_pci.c
index a92c2868d9021..0a6eb53e79fbf 100644
--- a/drivers/vfio/pci/vfio_pci.c
+++ b/drivers/vfio/pci/vfio_pci.c
@@ -443,10 +443,14 @@ static int vfio_pci_get_irq_count(struct vfio_pci_device *vdev, int irq_type)
 {
 	if (irq_type == VFIO_PCI_INTX_IRQ_INDEX) {
 		u8 pin;
+
+		if (!IS_ENABLED(CONFIG_VFIO_PCI_INTX) ||
+		    vdev->nointx || vdev->pdev->is_virtfn)
+			return 0;
+
 		pci_read_config_byte(vdev->pdev, PCI_INTERRUPT_PIN, &pin);
-		if (IS_ENABLED(CONFIG_VFIO_PCI_INTX) && !vdev->nointx && pin)
-			return 1;
 
+		return pin ? 1 : 0;
 	} else if (irq_type == VFIO_PCI_MSI_IRQ_INDEX) {
 		u8 pos;
 		u16 flags;
diff --git a/drivers/vfio/pci/vfio_pci_config.c b/drivers/vfio/pci/vfio_pci_config.c
index 62023b4a373b4..423ea1f98441a 100644
--- a/drivers/vfio/pci/vfio_pci_config.c
+++ b/drivers/vfio/pci/vfio_pci_config.c
@@ -1611,6 +1611,15 @@ static int vfio_ecap_init(struct vfio_pci_device *vdev)
 	return 0;
 }
 
+/*
+ * Nag about hardware bugs, hopefully to have vendors fix them, but at least
+ * to collect a list of dependencies for the VF INTx pin quirk below.
+ */
+static const struct pci_device_id known_bogus_vf_intx_pin[] = {
+	{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x270c) },
+	{}
+};
+
 /*
  * For each device we allocate a pci_config_map that indicates the
  * capability occupying each dword and thus the struct perm_bits we
@@ -1676,6 +1685,24 @@ int vfio_config_init(struct vfio_pci_device *vdev)
 	if (pdev->is_virtfn) {
 		*(__le16 *)&vconfig[PCI_VENDOR_ID] = cpu_to_le16(pdev->vendor);
 		*(__le16 *)&vconfig[PCI_DEVICE_ID] = cpu_to_le16(pdev->device);
+
+		/*
+		 * Per SR-IOV spec rev 1.1, 3.4.1.18 the interrupt pin register
+		 * does not apply to VFs and VFs must implement this register
+		 * as read-only with value zero.  Userspace is not readily able
+		 * to identify whether a device is a VF and thus that the pin
+		 * definition on the device is bogus should it violate this
+		 * requirement.  We already virtualize the pin register for
+		 * other purposes, so we simply need to replace the bogus value
+		 * and consider VFs when we determine INTx IRQ count.
+		 */
+		if (vconfig[PCI_INTERRUPT_PIN] &&
+		    !pci_match_id(known_bogus_vf_intx_pin, pdev))
+			pci_warn(pdev,
+				 "Hardware bug: VF reports bogus INTx pin %d\n",
+				 vconfig[PCI_INTERRUPT_PIN]);
+
+		vconfig[PCI_INTERRUPT_PIN] = 0; /* Gratuitous for good VFs */
 	}
 
 	if (!IS_ENABLED(CONFIG_VFIO_PCI_INTX) || vdev->nointx)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 360/422] iw_cxgb4: Use proper enumerated type in c4iw_bar2_addrs
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (358 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 359/422] vfio/pci: Mask buggy SR-IOV VF INTx support Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 361/422] scsi: libsas: always unregister the old device if going to discover new Greg Kroah-Hartman
                   ` (65 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Nick Desaulniers, Nathan Chancellor,
	Steve Wise, Jason Gunthorpe, Sasha Levin

From: Nathan Chancellor <natechancellor@gmail.com>

[ Upstream commit 1b571086e869395b6a11ab24186b0104fe05c057 ]

Clang warns when one enumerated type is implicitly converted to another.

drivers/infiniband/hw/cxgb4/qp.c:287:8: warning: implicit conversion
from enumeration type 'enum t4_bar2_qtype' to different enumeration type
'enum cxgb4_bar2_qtype' [-Wenum-conversion]
                                                 T4_BAR2_QTYPE_EGRESS,
                                                 ^~~~~~~~~~~~~~~~~~~~

c4iw_bar2_addrs expects a value from enum cxgb4_bar2_qtype so use the
corresponding values from that type so Clang is satisfied without changing
the meaning of the code.

T4_BAR2_QTYPE_EGRESS = CXGB4_BAR2_QTYPE_EGRESS = 0
T4_BAR2_QTYPE_INGRESS = CXGB4_BAR2_QTYPE_INGRESS = 1

Reported-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Acked-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/hw/cxgb4/cq.c | 2 +-
 drivers/infiniband/hw/cxgb4/qp.c | 7 ++++---
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/infiniband/hw/cxgb4/cq.c b/drivers/infiniband/hw/cxgb4/cq.c
index 6d30427940942..1fd8798d91a73 100644
--- a/drivers/infiniband/hw/cxgb4/cq.c
+++ b/drivers/infiniband/hw/cxgb4/cq.c
@@ -161,7 +161,7 @@ static int create_cq(struct c4iw_rdev *rdev, struct t4_cq *cq,
 	cq->gts = rdev->lldi.gts_reg;
 	cq->rdev = rdev;
 
-	cq->bar2_va = c4iw_bar2_addrs(rdev, cq->cqid, T4_BAR2_QTYPE_INGRESS,
+	cq->bar2_va = c4iw_bar2_addrs(rdev, cq->cqid, CXGB4_BAR2_QTYPE_INGRESS,
 				      &cq->bar2_qid,
 				      user ? &cq->bar2_pa : NULL);
 	if (user && !cq->bar2_pa) {
diff --git a/drivers/infiniband/hw/cxgb4/qp.c b/drivers/infiniband/hw/cxgb4/qp.c
index 347fe18b1a41c..a9e3a11bea54a 100644
--- a/drivers/infiniband/hw/cxgb4/qp.c
+++ b/drivers/infiniband/hw/cxgb4/qp.c
@@ -279,12 +279,13 @@ static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
 
 	wq->db = rdev->lldi.db_reg;
 
-	wq->sq.bar2_va = c4iw_bar2_addrs(rdev, wq->sq.qid, T4_BAR2_QTYPE_EGRESS,
+	wq->sq.bar2_va = c4iw_bar2_addrs(rdev, wq->sq.qid,
+					 CXGB4_BAR2_QTYPE_EGRESS,
 					 &wq->sq.bar2_qid,
 					 user ? &wq->sq.bar2_pa : NULL);
 	if (need_rq)
 		wq->rq.bar2_va = c4iw_bar2_addrs(rdev, wq->rq.qid,
-						 T4_BAR2_QTYPE_EGRESS,
+						 CXGB4_BAR2_QTYPE_EGRESS,
 						 &wq->rq.bar2_qid,
 						 user ? &wq->rq.bar2_pa : NULL);
 
@@ -2572,7 +2573,7 @@ static int alloc_srq_queue(struct c4iw_srq *srq, struct c4iw_dev_ucontext *uctx,
 	memset(wq->queue, 0, wq->memsize);
 	pci_unmap_addr_set(wq, mapping, wq->dma_addr);
 
-	wq->bar2_va = c4iw_bar2_addrs(rdev, wq->qid, T4_BAR2_QTYPE_EGRESS,
+	wq->bar2_va = c4iw_bar2_addrs(rdev, wq->qid, CXGB4_BAR2_QTYPE_EGRESS,
 				      &wq->bar2_qid,
 			user ? &wq->bar2_pa : NULL);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 361/422] scsi: libsas: always unregister the old device if going to discover new
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (359 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 360/422] iw_cxgb4: Use proper enumerated type in c4iw_bar2_addrs Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 362/422] f2fs: fix remount problem of option io_bits Greg Kroah-Hartman
                   ` (64 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Jason Yan, chenxiang, John Garry,
	Johannes Thumshirn, Ewan Milne, Christoph Hellwig, Tomas Henzl,
	Dan Williams, Hannes Reinecke, Martin K. Petersen, Sasha Levin

From: Jason Yan <yanaijie@huawei.com>

[ Upstream commit 32c850bf587f993b2620b91e5af8a64a7813f504 ]

If we went into sas_rediscover_dev() the attached_sas_addr was already insured
not to be zero. So it's unnecessary to check if the attached_sas_addr is zero.

And although if the sas address is not changed, we always have to unregister
the old device when we are going to register a new one. We cannot just leave
the device there and bring up the new.

Signed-off-by: Jason Yan <yanaijie@huawei.com>
CC: chenxiang <chenxiang66@hisilicon.com>
CC: John Garry <john.garry@huawei.com>
CC: Johannes Thumshirn <jthumshirn@suse.de>
CC: Ewan Milne <emilne@redhat.com>
CC: Christoph Hellwig <hch@lst.de>
CC: Tomas Henzl <thenzl@redhat.com>
CC: Dan Williams <dan.j.williams@intel.com>
CC: Hannes Reinecke <hare@suse.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/libsas/sas_expander.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
index b141d1061f38e..2ee9c4ec7a541 100644
--- a/drivers/scsi/libsas/sas_expander.c
+++ b/drivers/scsi/libsas/sas_expander.c
@@ -2062,14 +2062,11 @@ static int sas_rediscover_dev(struct domain_device *dev, int phy_id, bool last)
 		return res;
 	}
 
-	/* delete the old link */
-	if (SAS_ADDR(phy->attached_sas_addr) &&
-	    SAS_ADDR(sas_addr) != SAS_ADDR(phy->attached_sas_addr)) {
-		SAS_DPRINTK("ex %016llx phy 0x%x replace %016llx\n",
-			    SAS_ADDR(dev->sas_addr), phy_id,
-			    SAS_ADDR(phy->attached_sas_addr));
-		sas_unregister_devs_sas_addr(dev, phy_id, last);
-	}
+	/* we always have to delete the old device when we went here */
+	SAS_DPRINTK("ex %016llx phy 0x%x replace %016llx\n",
+		    SAS_ADDR(dev->sas_addr), phy_id,
+		    SAS_ADDR(phy->attached_sas_addr));
+	sas_unregister_devs_sas_addr(dev, phy_id, last);
 
 	return sas_discover_new(dev, phy_id);
 }
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 362/422] f2fs: fix remount problem of option io_bits
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (360 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 361/422] scsi: libsas: always unregister the old device if going to discover new Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 363/422] phy: lantiq: Fix compile warning Greg Kroah-Hartman
                   ` (63 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Chengguang Xu, Chao Yu, Jaegeuk Kim,
	Sasha Levin

From: Chengguang Xu <cgxu519@gmx.com>

[ Upstream commit c6b1867b1da3b1203b4c49988afeebdcbdf65499 ]

Currently we show mount option "io_bits=%u" as "io_size=%uKB",
it will cause option parsing problem(unrecognized mount option)
in remount.

Signed-off-by: Chengguang Xu <cgxu519@gmx.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/f2fs/super.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index c5d28e92d146e..b05e10c332b7e 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -1336,7 +1336,8 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
 				from_kgid_munged(&init_user_ns,
 					F2FS_OPTION(sbi).s_resgid));
 	if (F2FS_IO_SIZE_BITS(sbi))
-		seq_printf(seq, ",io_size=%uKB", F2FS_IO_SIZE_KB(sbi));
+		seq_printf(seq, ",io_bits=%u",
+				F2FS_OPTION(sbi).write_io_size_bits);
 #ifdef CONFIG_F2FS_FAULT_INJECTION
 	if (test_opt(sbi, FAULT_INJECTION)) {
 		seq_printf(seq, ",fault_injection=%u",
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 363/422] phy: lantiq: Fix compile warning
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (361 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 362/422] f2fs: fix remount problem of option io_bits Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 364/422] ARM: dts: meson8b: odroidc1: enable the SAR ADC Greg Kroah-Hartman
                   ` (62 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Hauke Mehrtens,
	Kishon Vijay Abraham I, Sasha Levin

From: Hauke Mehrtens <hauke@hauke-m.de>

[ Upstream commit 3a00dae006623d799266d85f28b5f76ef07d6b6c ]

This local variable is unused, remove it.

Fixes: dea54fbad332 ("phy: Add an USB PHY driver for the Lantiq SoCs using the RCU module")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/phy/lantiq/phy-lantiq-rcu-usb2.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/phy/lantiq/phy-lantiq-rcu-usb2.c b/drivers/phy/lantiq/phy-lantiq-rcu-usb2.c
index 986224fca9e91..5a180f71d8d4d 100644
--- a/drivers/phy/lantiq/phy-lantiq-rcu-usb2.c
+++ b/drivers/phy/lantiq/phy-lantiq-rcu-usb2.c
@@ -156,7 +156,6 @@ static int ltq_rcu_usb2_of_parse(struct ltq_rcu_usb2_priv *priv,
 {
 	struct device *dev = priv->dev;
 	const __be32 *offset;
-	int ret;
 
 	priv->reg_bits = of_device_get_match_data(dev);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 364/422] ARM: dts: meson8b: odroidc1: enable the SAR ADC
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (362 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 363/422] phy: lantiq: Fix compile warning Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 365/422] arm64: dts: fsl: Fix I2C and SPI bus warnings Greg Kroah-Hartman
                   ` (61 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Martin Blumenstingl, Kevin Hilman,
	Sasha Levin

From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>

[ Upstream commit fd6643142a0c5ab4d423ed7173a0be414d509214 ]

Odroid-C1 exposes ADC channels 0 and 1 on the GPIO headers. NOTE: Due
to the SoC design these are limited to 1.8V (instead of 3.3V like all
other pins).
Enable the SAR ADC to enable voltage measurements on these pins.

Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/meson8b-odroidc1.dts | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/meson8b-odroidc1.dts b/arch/arm/boot/dts/meson8b-odroidc1.dts
index 8fdeeffecbdbc..8a09071d712a5 100644
--- a/arch/arm/boot/dts/meson8b-odroidc1.dts
+++ b/arch/arm/boot/dts/meson8b-odroidc1.dts
@@ -153,6 +153,11 @@
 	pinctrl-names = "default";
 };
 
+&saradc {
+	status = "okay";
+	vref-supply = <&vcc_1v8>;
+};
+
 &sdio {
 	status = "okay";
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 365/422] arm64: dts: fsl: Fix I2C and SPI bus warnings
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (363 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 364/422] ARM: dts: meson8b: odroidc1: enable the SAR ADC Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 366/422] ARM: dts: imx51-zii-rdu1: Fix the rtc compatible string Greg Kroah-Hartman
                   ` (60 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Shawn Guo, Li Yang, Rob Herring, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit b739c177e1aeab532f355493439a1901b85be38c ]

dtc has new checks for I2C and SPI buses. Fix the SPI bus node names
and warnings in unit-addresses.

arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dtb: Warning (i2c_bus_reg): /soc/i2c@2180000/eeprom@57: I2C bus unit address format error, expected "53"
arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dtb: Warning (i2c_bus_reg): /soc/i2c@2180000/eeprom@56: I2C bus unit address format error, expected "52"

Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Li Yang <leoyang.li@nxp.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Acked-by: Li Yang <leoyang.li@nxp.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/freescale/fsl-ls1012a.dtsi    | 2 +-
 arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi    | 6 +++---
 arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dts | 4 ++--
 arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi    | 4 ++--
 arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi    | 4 ++--
 5 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1012a.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls1012a.dtsi
index 68ac78c4564dc..5da732f82fa0c 100644
--- a/arch/arm64/boot/dts/freescale/fsl-ls1012a.dtsi
+++ b/arch/arm64/boot/dts/freescale/fsl-ls1012a.dtsi
@@ -337,7 +337,7 @@
 			status = "disabled";
 		};
 
-		dspi: dspi@2100000 {
+		dspi: spi@2100000 {
 			compatible = "fsl,ls1012a-dspi", "fsl,ls1021a-v1.0-dspi";
 			#address-cells = <1>;
 			#size-cells = <0>;
diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi
index 7881e3d81a9ab..b9c0f2de8f12c 100644
--- a/arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi
+++ b/arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi
@@ -284,7 +284,7 @@
 			interrupts = <0 43 0x4>;
 		};
 
-		qspi: quadspi@1550000 {
+		qspi: spi@1550000 {
 			compatible = "fsl,ls1043a-qspi", "fsl,ls1021a-qspi";
 			#address-cells = <1>;
 			#size-cells = <0>;
@@ -382,7 +382,7 @@
 			ranges = <0x0 0x5 0x00000000 0x8000000>;
 		};
 
-		dspi0: dspi@2100000 {
+		dspi0: spi@2100000 {
 			compatible = "fsl,ls1043a-dspi", "fsl,ls1021a-v1.0-dspi";
 			#address-cells = <1>;
 			#size-cells = <0>;
@@ -395,7 +395,7 @@
 			status = "disabled";
 		};
 
-		dspi1: dspi@2110000 {
+		dspi1: spi@2110000 {
 			compatible = "fsl,ls1043a-dspi", "fsl,ls1021a-v1.0-dspi";
 			#address-cells = <1>;
 			#size-cells = <0>;
diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dts b/arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dts
index 440e111651d53..a59b48203688a 100644
--- a/arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dts
+++ b/arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dts
@@ -57,12 +57,12 @@
 		reg = <0x4c>;
 	};
 
-	eeprom@56 {
+	eeprom@52 {
 		compatible = "atmel,24c512";
 		reg = <0x52>;
 	};
 
-	eeprom@57 {
+	eeprom@53 {
 		compatible = "atmel,24c512";
 		reg = <0x53>;
 	};
diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi
index ef83786b8b905..de6af453a6e16 100644
--- a/arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi
+++ b/arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi
@@ -202,7 +202,7 @@
 			interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
 		};
 
-		qspi: quadspi@1550000 {
+		qspi: spi@1550000 {
 			compatible = "fsl,ls1021a-qspi";
 			#address-cells = <1>;
 			#size-cells = <0>;
@@ -361,7 +361,7 @@
 			#thermal-sensor-cells = <1>;
 		};
 
-		dspi: dspi@2100000 {
+		dspi: spi@2100000 {
 			compatible = "fsl,ls1021a-v1.0-dspi";
 			#address-cells = <1>;
 			#size-cells = <0>;
diff --git a/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
index 8cb78dd996728..ebe0cd4bf2b7e 100644
--- a/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
+++ b/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
@@ -469,7 +469,7 @@
 			mmu-masters = <&fsl_mc 0x300 0>;
 		};
 
-		dspi: dspi@2100000 {
+		dspi: spi@2100000 {
 			status = "disabled";
 			compatible = "fsl,ls2080a-dspi", "fsl,ls2085a-dspi";
 			#address-cells = <1>;
@@ -595,7 +595,7 @@
 				  3 0 0x5 0x20000000 0x00010000>;
 		};
 
-		qspi: quadspi@20c0000 {
+		qspi: spi@20c0000 {
 			status = "disabled";
 			compatible = "fsl,ls2080a-qspi", "fsl,ls1021a-qspi";
 			#address-cells = <1>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 366/422] ARM: dts: imx51-zii-rdu1: Fix the rtc compatible string
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (364 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 365/422] arm64: dts: fsl: Fix I2C and SPI bus warnings Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 367/422] arm64: tegra: I2C on Tegra194 is not compatible with Tegra114 Greg Kroah-Hartman
                   ` (59 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Chris Healy, Fabio Estevam,
	Lucas Stach, Shawn Guo, Sasha Levin

From: Fabio Estevam <festevam@gmail.com>

[ Upstream commit 1c5f335f61ffb838fc3cc1cec9464067663eb8c8 ]

According to Documentation/devicetree/bindings/rtc/rtc-ds1307.txt the
original compatible "maxim,ds1341" is not a valid entry.

Switch to the documented "dallas,ds1341" compatible.

Reported-by: Chris Healy <cphealy@gmail.com>
Signed-off-by: Fabio Estevam <festevam@gmail.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Tested-by: Chris Healy <cphealy@gmail.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/imx51-zii-rdu1.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/imx51-zii-rdu1.dts b/arch/arm/boot/dts/imx51-zii-rdu1.dts
index 6e80254c4562a..3fb66ddfe93a5 100644
--- a/arch/arm/boot/dts/imx51-zii-rdu1.dts
+++ b/arch/arm/boot/dts/imx51-zii-rdu1.dts
@@ -514,7 +514,7 @@
 	};
 
 	ds1341: rtc@68 {
-		compatible = "maxim,ds1341";
+		compatible = "dallas,ds1341";
 		reg = <0x68>;
 	};
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 367/422] arm64: tegra: I2C on Tegra194 is not compatible with Tegra114
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (365 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 366/422] ARM: dts: imx51-zii-rdu1: Fix the rtc compatible string Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 368/422] ARM: dts: tegra30: fix xcvr-setup-use-fuses Greg Kroah-Hartman
                   ` (58 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Thierry Reding, Sasha Levin

From: Thierry Reding <treding@nvidia.com>

[ Upstream commit d9fd22447ba59a9b53a202fade977e82bfba8d8d ]

Tegra194 contains a version of the I2C controller that is no longer
compatible with the version found in Tegra114.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/nvidia/tegra194.dtsi | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/arch/arm64/boot/dts/nvidia/tegra194.dtsi b/arch/arm64/boot/dts/nvidia/tegra194.dtsi
index a4dfcd19b9e88..9fc14bb9a0aff 100644
--- a/arch/arm64/boot/dts/nvidia/tegra194.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra194.dtsi
@@ -118,7 +118,7 @@
 		};
 
 		gen1_i2c: i2c@3160000 {
-			compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c";
+			compatible = "nvidia,tegra194-i2c";
 			reg = <0x03160000 0x10000>;
 			interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
 			#address-cells = <1>;
@@ -143,7 +143,7 @@
 		};
 
 		cam_i2c: i2c@3180000 {
-			compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c";
+			compatible = "nvidia,tegra194-i2c";
 			reg = <0x03180000 0x10000>;
 			interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
 			#address-cells = <1>;
@@ -157,7 +157,7 @@
 
 		/* shares pads with dpaux1 */
 		dp_aux_ch1_i2c: i2c@3190000 {
-			compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c";
+			compatible = "nvidia,tegra194-i2c";
 			reg = <0x03190000 0x10000>;
 			interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
 			#address-cells = <1>;
@@ -171,7 +171,7 @@
 
 		/* shares pads with dpaux0 */
 		dp_aux_ch0_i2c: i2c@31b0000 {
-			compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c";
+			compatible = "nvidia,tegra194-i2c";
 			reg = <0x031b0000 0x10000>;
 			interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
 			#address-cells = <1>;
@@ -184,7 +184,7 @@
 		};
 
 		gen7_i2c: i2c@31c0000 {
-			compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c";
+			compatible = "nvidia,tegra194-i2c";
 			reg = <0x031c0000 0x10000>;
 			interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
 			#address-cells = <1>;
@@ -197,7 +197,7 @@
 		};
 
 		gen9_i2c: i2c@31e0000 {
-			compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c";
+			compatible = "nvidia,tegra194-i2c";
 			reg = <0x031e0000 0x10000>;
 			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
 			#address-cells = <1>;
@@ -264,7 +264,7 @@
 		};
 
 		gen2_i2c: i2c@c240000 {
-			compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c";
+			compatible = "nvidia,tegra194-i2c";
 			reg = <0x0c240000 0x10000>;
 			interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
 			#address-cells = <1>;
@@ -277,7 +277,7 @@
 		};
 
 		gen8_i2c: i2c@c250000 {
-			compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c";
+			compatible = "nvidia,tegra194-i2c";
 			reg = <0x0c250000 0x10000>;
 			interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
 			#address-cells = <1>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 368/422] ARM: dts: tegra30: fix xcvr-setup-use-fuses
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (366 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 367/422] arm64: tegra: I2C on Tegra194 is not compatible with Tegra114 Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 369/422] ARM: dts: tegra20: restore address order Greg Kroah-Hartman
                   ` (57 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Marcel Ziswiler, Thierry Reding, Sasha Levin

From: Marcel Ziswiler <marcel.ziswiler@toradex.com>

[ Upstream commit 564706f65cda3de52b09e51feb423a43940fe661 ]

There was a dot instead of a comma. Fix this.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/tegra30.dtsi | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/arm/boot/dts/tegra30.dtsi b/arch/arm/boot/dts/tegra30.dtsi
index a6781f6533105..5a04ddefb71f6 100644
--- a/arch/arm/boot/dts/tegra30.dtsi
+++ b/arch/arm/boot/dts/tegra30.dtsi
@@ -896,7 +896,7 @@
 		nvidia,elastic-limit = <16>;
 		nvidia,term-range-adj = <6>;
 		nvidia,xcvr-setup = <51>;
-		nvidia.xcvr-setup-use-fuses;
+		nvidia,xcvr-setup-use-fuses;
 		nvidia,xcvr-lsfslew = <1>;
 		nvidia,xcvr-lsrslew = <1>;
 		nvidia,xcvr-hsslew = <32>;
@@ -933,7 +933,7 @@
 		nvidia,elastic-limit = <16>;
 		nvidia,term-range-adj = <6>;
 		nvidia,xcvr-setup = <51>;
-		nvidia.xcvr-setup-use-fuses;
+		nvidia,xcvr-setup-use-fuses;
 		nvidia,xcvr-lsfslew = <2>;
 		nvidia,xcvr-lsrslew = <2>;
 		nvidia,xcvr-hsslew = <32>;
@@ -969,7 +969,7 @@
 		nvidia,elastic-limit = <16>;
 		nvidia,term-range-adj = <6>;
 		nvidia,xcvr-setup = <51>;
-		nvidia.xcvr-setup-use-fuses;
+		nvidia,xcvr-setup-use-fuses;
 		nvidia,xcvr-lsfslew = <2>;
 		nvidia,xcvr-lsrslew = <2>;
 		nvidia,xcvr-hsslew = <32>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 369/422] ARM: dts: tegra20: restore address order
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (367 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 368/422] ARM: dts: tegra30: fix xcvr-setup-use-fuses Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 370/422] ARM: tegra: apalis_t30: fix mmc1 cmd pull-up Greg Kroah-Hartman
                   ` (56 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Marcel Ziswiler, Stefan Agner,
	Thierry Reding, Sasha Levin

From: Marcel Ziswiler <marcel.ziswiler@toradex.com>

[ Upstream commit 8188391c127ea34d66f37eda6755d0acb51dc600 ]

Commit 6c468f109884 ("ARM: dts: tegra: add Tegra20 NAND flash
controller node") introduced the nand-controller node. However, it got
added at the wrong spot not honoring the address order. Fix this.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Reviewed-by: Stefan Agner <stefan@agner.ch>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/tegra20.dtsi | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/arch/arm/boot/dts/tegra20.dtsi b/arch/arm/boot/dts/tegra20.dtsi
index 15b73bd377f04..80854f7de765c 100644
--- a/arch/arm/boot/dts/tegra20.dtsi
+++ b/arch/arm/boot/dts/tegra20.dtsi
@@ -419,19 +419,6 @@
 		status = "disabled";
 	};
 
-	gmi@70009000 {
-		compatible = "nvidia,tegra20-gmi";
-		reg = <0x70009000 0x1000>;
-		#address-cells = <2>;
-		#size-cells = <1>;
-		ranges = <0 0 0xd0000000 0xfffffff>;
-		clocks = <&tegra_car TEGRA20_CLK_NOR>;
-		clock-names = "gmi";
-		resets = <&tegra_car 42>;
-		reset-names = "gmi";
-		status = "disabled";
-	};
-
 	nand-controller@70008000 {
 		compatible = "nvidia,tegra20-nand";
 		reg = <0x70008000 0x100>;
@@ -447,6 +434,19 @@
 		status = "disabled";
 	};
 
+	gmi@70009000 {
+		compatible = "nvidia,tegra20-gmi";
+		reg = <0x70009000 0x1000>;
+		#address-cells = <2>;
+		#size-cells = <1>;
+		ranges = <0 0 0xd0000000 0xfffffff>;
+		clocks = <&tegra_car TEGRA20_CLK_NOR>;
+		clock-names = "gmi";
+		resets = <&tegra_car 42>;
+		reset-names = "gmi";
+		status = "disabled";
+	};
+
 	pwm: pwm@7000a000 {
 		compatible = "nvidia,tegra20-pwm";
 		reg = <0x7000a000 0x100>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 370/422] ARM: tegra: apalis_t30: fix mmc1 cmd pull-up
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (368 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 369/422] ARM: dts: tegra20: restore address order Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 371/422] ARM: tegra: apalis_t30: fix mcp2515 can controller interrupt polarity Greg Kroah-Hartman
                   ` (55 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Marcel Ziswiler, Thierry Reding, Sasha Levin

From: Marcel Ziswiler <marcel.ziswiler@toradex.com>

[ Upstream commit 1c997fe4becdc6fcbc06e23982ceb65621e6572a ]

Fix MMC1 cmd pin pull-up causing issues on carrier boards without
external pull-up.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/tegra30-apalis.dtsi | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/arm/boot/dts/tegra30-apalis.dtsi b/arch/arm/boot/dts/tegra30-apalis.dtsi
index 2f807d40c1b79..e749e047db7ab 100644
--- a/arch/arm/boot/dts/tegra30-apalis.dtsi
+++ b/arch/arm/boot/dts/tegra30-apalis.dtsi
@@ -171,14 +171,14 @@
 
 			/* Apalis MMC1 */
 			sdmmc3_clk_pa6 {
-				nvidia,pins = "sdmmc3_clk_pa6",
-					      "sdmmc3_cmd_pa7";
+				nvidia,pins = "sdmmc3_clk_pa6";
 				nvidia,function = "sdmmc3";
 				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
 				nvidia,tristate = <TEGRA_PIN_DISABLE>;
 			};
 			sdmmc3_dat0_pb7 {
-				nvidia,pins = "sdmmc3_dat0_pb7",
+				nvidia,pins = "sdmmc3_cmd_pa7",
+					      "sdmmc3_dat0_pb7",
 					      "sdmmc3_dat1_pb6",
 					      "sdmmc3_dat2_pb5",
 					      "sdmmc3_dat3_pb4",
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 371/422] ARM: tegra: apalis_t30: fix mcp2515 can controller interrupt polarity
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (369 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 370/422] ARM: tegra: apalis_t30: fix mmc1 cmd pull-up Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 372/422] ARM: tegra: colibri_t30: " Greg Kroah-Hartman
                   ` (54 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Marcel Ziswiler, Thierry Reding, Sasha Levin

From: Marcel Ziswiler <marcel.ziswiler@toradex.com>

[ Upstream commit b38f6aa4b60a1fcc41f5c469981f8f62d6070ee3 ]

Fix the MCP2515 SPI CAN controller interrupt polarity which according
to its datasheet defaults to low-active aka falling edge.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/tegra30-apalis.dtsi | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/tegra30-apalis.dtsi b/arch/arm/boot/dts/tegra30-apalis.dtsi
index e749e047db7ab..f810bbf8212bd 100644
--- a/arch/arm/boot/dts/tegra30-apalis.dtsi
+++ b/arch/arm/boot/dts/tegra30-apalis.dtsi
@@ -659,7 +659,7 @@
 			reg = <1>;
 			clocks = <&clk16m>;
 			interrupt-parent = <&gpio>;
-			interrupts = <TEGRA_GPIO(W, 3) IRQ_TYPE_EDGE_RISING>;
+			interrupts = <TEGRA_GPIO(W, 3) IRQ_TYPE_EDGE_FALLING>;
 			spi-max-frequency = <10000000>;
 		};
 	};
@@ -674,7 +674,7 @@
 			reg = <0>;
 			clocks = <&clk16m>;
 			interrupt-parent = <&gpio>;
-			interrupts = <TEGRA_GPIO(W, 2) IRQ_TYPE_EDGE_RISING>;
+			interrupts = <TEGRA_GPIO(W, 2) IRQ_TYPE_EDGE_FALLING>;
 			spi-max-frequency = <10000000>;
 		};
 	};
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 372/422] ARM: tegra: colibri_t30: fix mcp2515 can controller interrupt polarity
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (370 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 371/422] ARM: tegra: apalis_t30: fix mcp2515 can controller interrupt polarity Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 373/422] ARM: dts: paz00: fix wakeup gpio keycode Greg Kroah-Hartman
                   ` (53 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Marcel Ziswiler, Thierry Reding, Sasha Levin

From: Marcel Ziswiler <marcel.ziswiler@toradex.com>

[ Upstream commit 503fcd8464fb6cd18073e97dec59b933930655d6 ]

Fix the MCP2515 SPI CAN controller interrupt polarity which according
to its datasheet defaults to low-active aka falling edge.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/tegra30-colibri-eval-v3.dts | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/tegra30-colibri-eval-v3.dts b/arch/arm/boot/dts/tegra30-colibri-eval-v3.dts
index 16e1f387aa6db..a0c550e26738f 100644
--- a/arch/arm/boot/dts/tegra30-colibri-eval-v3.dts
+++ b/arch/arm/boot/dts/tegra30-colibri-eval-v3.dts
@@ -79,7 +79,8 @@
 			reg = <0>;
 			clocks = <&clk16m>;
 			interrupt-parent = <&gpio>;
-			interrupts = <TEGRA_GPIO(S, 0) IRQ_TYPE_EDGE_RISING>;
+			/* CAN_INT */
+			interrupts = <TEGRA_GPIO(S, 0) IRQ_TYPE_EDGE_FALLING>;
 			spi-max-frequency = <10000000>;
 		};
 		spidev0: spi@1 {
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 373/422] ARM: dts: paz00: fix wakeup gpio keycode
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (371 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 372/422] ARM: tegra: colibri_t30: " Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 374/422] net: smsc: fix return type of ndo_start_xmit function Greg Kroah-Hartman
                   ` (52 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Marc Dietrich, Nicolas Chauvet,
	Thierry Reding, Sasha Levin

From: Marc Dietrich <marvin24@gmx.de>

[ Upstream commit ebea2a43fdafdbce918bd7e200b709d6c33b9f3b ]

The power key is controlled solely by the EC, which only tiggeres this
gpio after wakeup.
Fixes immediately return to suspend after wake from LP1.

Signed-off-by: Marc Dietrich <marvin24@gmx.de>
Tested-by: Nicolas Chauvet <kwizart@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/tegra20-paz00.dts | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/arm/boot/dts/tegra20-paz00.dts b/arch/arm/boot/dts/tegra20-paz00.dts
index ef245291924f0..4f9b4a889febe 100644
--- a/arch/arm/boot/dts/tegra20-paz00.dts
+++ b/arch/arm/boot/dts/tegra20-paz00.dts
@@ -524,10 +524,10 @@
 	gpio-keys {
 		compatible = "gpio-keys";
 
-		power {
-			label = "Power";
+		wakeup {
+			label = "Wakeup";
 			gpios = <&gpio TEGRA_GPIO(J, 7) GPIO_ACTIVE_LOW>;
-			linux,code = <KEY_POWER>;
+			linux,code = <KEY_WAKEUP>;
 			wakeup-source;
 		};
 	};
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 374/422] net: smsc: fix return type of ndo_start_xmit function
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (372 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 373/422] ARM: dts: paz00: fix wakeup gpio keycode Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 375/422] net: faraday: " Greg Kroah-Hartman
                   ` (51 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, YueHaibing, David S. Miller, Sasha Levin

From: YueHaibing <yuehaibing@huawei.com>

[ Upstream commit 6323d57f335ce1490d025cacc83fc10b07792130 ]

The method ndo_start_xmit() is defined as returning an 'netdev_tx_t',
which is a typedef for an enum type, so make sure the implementation in
this driver has returns 'netdev_tx_t' value, and change the function
return type to netdev_tx_t.

Found by coccinelle.

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/smsc/smc911x.c  | 3 ++-
 drivers/net/ethernet/smsc/smc91x.c   | 3 ++-
 drivers/net/ethernet/smsc/smsc911x.c | 3 ++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/smsc/smc911x.c b/drivers/net/ethernet/smsc/smc911x.c
index b1b53f6c452f5..8355dfbb8ec3c 100644
--- a/drivers/net/ethernet/smsc/smc911x.c
+++ b/drivers/net/ethernet/smsc/smc911x.c
@@ -513,7 +513,8 @@ static void smc911x_hardware_send_pkt(struct net_device *dev)
  * now, or set the card to generates an interrupt when ready
  * for the packet.
  */
-static int smc911x_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t
+smc911x_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct smc911x_local *lp = netdev_priv(dev);
 	unsigned int free;
diff --git a/drivers/net/ethernet/smsc/smc91x.c b/drivers/net/ethernet/smsc/smc91x.c
index b944828f9ea3d..8d6cff8bd1622 100644
--- a/drivers/net/ethernet/smsc/smc91x.c
+++ b/drivers/net/ethernet/smsc/smc91x.c
@@ -638,7 +638,8 @@ done:	if (!THROTTLE_TX_PKTS)
  * now, or set the card to generates an interrupt when ready
  * for the packet.
  */
-static int smc_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t
+smc_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct smc_local *lp = netdev_priv(dev);
 	void __iomem *ioaddr = lp->base;
diff --git a/drivers/net/ethernet/smsc/smsc911x.c b/drivers/net/ethernet/smsc/smsc911x.c
index f0afb88d7bc2b..ce4bfecc26c7a 100644
--- a/drivers/net/ethernet/smsc/smsc911x.c
+++ b/drivers/net/ethernet/smsc/smsc911x.c
@@ -1786,7 +1786,8 @@ static int smsc911x_stop(struct net_device *dev)
 }
 
 /* Entry point for transmitting a packet */
-static int smsc911x_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t
+smsc911x_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct smsc911x_data *pdata = netdev_priv(dev);
 	unsigned int freespace;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 375/422] net: faraday: fix return type of ndo_start_xmit function
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (373 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 374/422] net: smsc: fix return type of ndo_start_xmit function Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 376/422] PCI/ERR: Run error recovery callbacks for all affected devices Greg Kroah-Hartman
                   ` (50 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, YueHaibing, David S. Miller, Sasha Levin

From: YueHaibing <yuehaibing@huawei.com>

[ Upstream commit 0a715156656bddf4aa92d9868f850aeeb0465fd0 ]

The method ndo_start_xmit() is defined as returning an 'netdev_tx_t',
which is a typedef for an enum type, so make sure the implementation in
this driver has returns 'netdev_tx_t' value, and change the function
return type to netdev_tx_t.

Found by coccinelle.

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/ethernet/faraday/ftgmac100.c | 4 ++--
 drivers/net/ethernet/faraday/ftmac100.c  | 7 ++++---
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c
index f6ed889bc36a2..e4fc38cbe8535 100644
--- a/drivers/net/ethernet/faraday/ftgmac100.c
+++ b/drivers/net/ethernet/faraday/ftgmac100.c
@@ -712,8 +712,8 @@ static bool ftgmac100_prep_tx_csum(struct sk_buff *skb, u32 *csum_vlan)
 	return skb_checksum_help(skb) == 0;
 }
 
-static int ftgmac100_hard_start_xmit(struct sk_buff *skb,
-				     struct net_device *netdev)
+static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb,
+					     struct net_device *netdev)
 {
 	struct ftgmac100 *priv = netdev_priv(netdev);
 	struct ftgmac100_txdes *txdes, *first;
diff --git a/drivers/net/ethernet/faraday/ftmac100.c b/drivers/net/ethernet/faraday/ftmac100.c
index 9015bd911bee9..084f24daf2b5a 100644
--- a/drivers/net/ethernet/faraday/ftmac100.c
+++ b/drivers/net/ethernet/faraday/ftmac100.c
@@ -634,8 +634,8 @@ static void ftmac100_tx_complete(struct ftmac100 *priv)
 		;
 }
 
-static int ftmac100_xmit(struct ftmac100 *priv, struct sk_buff *skb,
-			 dma_addr_t map)
+static netdev_tx_t ftmac100_xmit(struct ftmac100 *priv, struct sk_buff *skb,
+				 dma_addr_t map)
 {
 	struct net_device *netdev = priv->netdev;
 	struct ftmac100_txdes *txdes;
@@ -1015,7 +1015,8 @@ static int ftmac100_stop(struct net_device *netdev)
 	return 0;
 }
 
-static int ftmac100_hard_start_xmit(struct sk_buff *skb, struct net_device *netdev)
+static netdev_tx_t
+ftmac100_hard_start_xmit(struct sk_buff *skb, struct net_device *netdev)
 {
 	struct ftmac100 *priv = netdev_priv(netdev);
 	dma_addr_t map;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 376/422] PCI/ERR: Run error recovery callbacks for all affected devices
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (374 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 375/422] net: faraday: " Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 377/422] f2fs: update i_size after DIO completion Greg Kroah-Hartman
                   ` (49 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Keith Busch, Bjorn Helgaas,
	Sinan Kaya, Sasha Levin

From: Keith Busch <keith.busch@intel.com>

[ Upstream commit bfcb79fca19d267712e425af1dd48812c40dec0c ]

If an Endpoint reported an error with ERR_FATAL, we previously ran driver
error recovery callbacks only for the Endpoint's driver.  But if we reset a
Link to recover from the error, all downstream components are affected,
including the Endpoint, any multi-function peers, and children of those
peers.

Initiate the Link reset from the deepest Downstream Port that is
reliable, and call the error recovery callbacks for all its children.

If a Downstream Port (including a Root Port) reports an error, we assume
the Port itself is reliable and we need to reset its downstream Link.  In
all other cases (Switch Upstream Ports, Endpoints, Bridges, etc), we assume
the Link leading to the component needs to be reset, so we initiate the
reset at the parent Downstream Port.

This allows two other clean-ups.  First, we currently only use a Link
reset, which can only be initiated using a Downstream Port, so we can
remove checks for Endpoints.  Second, the Downstream Port where we initiate
the Link reset is reliable (unlike components downstream from it), so the
special cases for error detect and resume are no longer necessary.

Signed-off-by: Keith Busch <keith.busch@intel.com>
[bhelgaas: changelog]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Sinan Kaya <okaya@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/pci/pcie/err.c | 85 +++++++++++-------------------------------
 1 file changed, 21 insertions(+), 64 deletions(-)

diff --git a/drivers/pci/pcie/err.c b/drivers/pci/pcie/err.c
index 12c1205e1d804..2c3b5bd59b18f 100644
--- a/drivers/pci/pcie/err.c
+++ b/drivers/pci/pcie/err.c
@@ -63,30 +63,12 @@ static int report_error_detected(struct pci_dev *dev, void *data)
 	if (!dev->driver ||
 		!dev->driver->err_handler ||
 		!dev->driver->err_handler->error_detected) {
-		if (result_data->state == pci_channel_io_frozen &&
-			dev->hdr_type != PCI_HEADER_TYPE_BRIDGE) {
-			/*
-			 * In case of fatal recovery, if one of down-
-			 * stream device has no driver. We might be
-			 * unable to recover because a later insmod
-			 * of a driver for this device is unaware of
-			 * its hw state.
-			 */
-			pci_printk(KERN_DEBUG, dev, "device has %s\n",
-				   dev->driver ?
-				   "no AER-aware driver" : "no driver");
-		}
-
 		/*
-		 * If there's any device in the subtree that does not
-		 * have an error_detected callback, returning
-		 * PCI_ERS_RESULT_NO_AER_DRIVER prevents calling of
-		 * the subsequent mmio_enabled/slot_reset/resume
-		 * callbacks of "any" device in the subtree. All the
-		 * devices in the subtree are left in the error state
-		 * without recovery.
+		 * If any device in the subtree does not have an error_detected
+		 * callback, PCI_ERS_RESULT_NO_AER_DRIVER prevents subsequent
+		 * error callbacks of "any" device in the subtree, and will
+		 * exit in the disconnected error state.
 		 */
-
 		if (dev->hdr_type != PCI_HEADER_TYPE_BRIDGE)
 			vote = PCI_ERS_RESULT_NO_AER_DRIVER;
 		else
@@ -184,34 +166,23 @@ static pci_ers_result_t default_reset_link(struct pci_dev *dev)
 
 static pci_ers_result_t reset_link(struct pci_dev *dev, u32 service)
 {
-	struct pci_dev *udev;
 	pci_ers_result_t status;
 	struct pcie_port_service_driver *driver = NULL;
 
-	if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) {
-		/* Reset this port for all subordinates */
-		udev = dev;
-	} else {
-		/* Reset the upstream component (likely downstream port) */
-		udev = dev->bus->self;
-	}
-
-	/* Use the aer driver of the component firstly */
-	driver = pcie_port_find_service(udev, service);
-
+	driver = pcie_port_find_service(dev, service);
 	if (driver && driver->reset_link) {
-		status = driver->reset_link(udev);
-	} else if (udev->has_secondary_link) {
-		status = default_reset_link(udev);
+		status = driver->reset_link(dev);
+	} else if (dev->has_secondary_link) {
+		status = default_reset_link(dev);
 	} else {
 		pci_printk(KERN_DEBUG, dev, "no link-reset support at upstream device %s\n",
-			pci_name(udev));
+			pci_name(dev));
 		return PCI_ERS_RESULT_DISCONNECT;
 	}
 
 	if (status != PCI_ERS_RESULT_RECOVERED) {
 		pci_printk(KERN_DEBUG, dev, "link reset at upstream device %s failed\n",
-			pci_name(udev));
+			pci_name(dev));
 		return PCI_ERS_RESULT_DISCONNECT;
 	}
 
@@ -243,31 +214,7 @@ static pci_ers_result_t broadcast_error_message(struct pci_dev *dev,
 	else
 		result_data.result = PCI_ERS_RESULT_RECOVERED;
 
-	if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) {
-		/*
-		 * If the error is reported by a bridge, we think this error
-		 * is related to the downstream link of the bridge, so we
-		 * do error recovery on all subordinates of the bridge instead
-		 * of the bridge and clear the error status of the bridge.
-		 */
-		if (cb == report_error_detected)
-			dev->error_state = state;
-		pci_walk_bus(dev->subordinate, cb, &result_data);
-		if (cb == report_resume) {
-			pci_aer_clear_device_status(dev);
-			pci_cleanup_aer_uncorrect_error_status(dev);
-			dev->error_state = pci_channel_io_normal;
-		}
-	} else {
-		/*
-		 * If the error is reported by an end point, we think this
-		 * error is related to the upstream link of the end point.
-		 * The error is non fatal so the bus is ok; just invoke
-		 * the callback for the function that logged the error.
-		 */
-		cb(dev, &result_data);
-	}
-
+	pci_walk_bus(dev->subordinate, cb, &result_data);
 	return result_data.result;
 }
 
@@ -347,6 +294,14 @@ void pcie_do_nonfatal_recovery(struct pci_dev *dev)
 
 	state = pci_channel_io_normal;
 
+	/*
+	 * Error recovery runs on all subordinates of the first downstream port.
+	 * If the downstream port detected the error, it is cleared at the end.
+	 */
+	if (!(pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT ||
+	      pci_pcie_type(dev) == PCI_EXP_TYPE_DOWNSTREAM))
+		dev = dev->bus->self;
+
 	status = broadcast_error_message(dev,
 			state,
 			"error_detected",
@@ -378,6 +333,8 @@ void pcie_do_nonfatal_recovery(struct pci_dev *dev)
 				"resume",
 				report_resume);
 
+	pci_aer_clear_device_status(dev);
+	pci_cleanup_aer_uncorrect_error_status(dev);
 	pci_info(dev, "AER: Device recovery successful\n");
 	return;
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 377/422] f2fs: update i_size after DIO completion
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (375 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 376/422] PCI/ERR: Run error recovery callbacks for all affected devices Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 378/422] f2fs: fix to recover inodes project id during POR Greg Kroah-Hartman
                   ` (48 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Chao Yu, Jaegeuk Kim, Sasha Levin

From: Jaegeuk Kim <jaegeuk@kernel.org>

[ Upstream commit 0a4daae5ffea39f5015334e4d18a6a80b447cae4 ]

This is related to
ee70daaba82d ("xfs: update i_size after unwritten conversion in dio completion")

If we update i_size during dio_write, dio_read can read out stale data, which
breaks xfstests/465.

Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/f2fs/data.c | 15 +++++++--------
 fs/f2fs/f2fs.h |  1 +
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index b4a634da1372b..3a2fd66769660 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -889,7 +889,6 @@ static int __allocate_data_block(struct dnode_of_data *dn, int seg_type)
 	struct f2fs_summary sum;
 	struct node_info ni;
 	block_t old_blkaddr;
-	pgoff_t fofs;
 	blkcnt_t count = 1;
 	int err;
 
@@ -918,12 +917,10 @@ alloc:
 					old_blkaddr, old_blkaddr);
 	f2fs_set_data_blkaddr(dn);
 
-	/* update i_size */
-	fofs = f2fs_start_bidx_of_node(ofs_of_node(dn->node_page), dn->inode) +
-							dn->ofs_in_node;
-	if (i_size_read(dn->inode) < ((loff_t)(fofs + 1) << PAGE_SHIFT))
-		f2fs_i_size_write(dn->inode,
-				((loff_t)(fofs + 1) << PAGE_SHIFT));
+	/*
+	 * i_size will be updated by direct_IO. Otherwise, we'll get stale
+	 * data from unwritten block via dio_read.
+	 */
 	return 0;
 }
 
@@ -1089,6 +1086,8 @@ next_block:
 					last_ofs_in_node = dn.ofs_in_node;
 				}
 			} else {
+				WARN_ON(flag != F2FS_GET_BLOCK_PRE_DIO &&
+					flag != F2FS_GET_BLOCK_DIO);
 				err = __allocate_data_block(&dn,
 							map->m_seg_type);
 				if (!err)
@@ -1268,7 +1267,7 @@ static int get_data_block_dio(struct inode *inode, sector_t iblock,
 			struct buffer_head *bh_result, int create)
 {
 	return __get_data_block(inode, iblock, bh_result, create,
-						F2FS_GET_BLOCK_DEFAULT, NULL,
+						F2FS_GET_BLOCK_DIO, NULL,
 						f2fs_rw_hint_to_seg_type(
 							inode->i_write_hint));
 }
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 6d361c8c61306..2dc49a5419070 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -600,6 +600,7 @@ enum {
 	F2FS_GET_BLOCK_DEFAULT,
 	F2FS_GET_BLOCK_FIEMAP,
 	F2FS_GET_BLOCK_BMAP,
+	F2FS_GET_BLOCK_DIO,
 	F2FS_GET_BLOCK_PRE_DIO,
 	F2FS_GET_BLOCK_PRE_AIO,
 	F2FS_GET_BLOCK_PRECACHE,
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 378/422] f2fs: fix to recover inodes project id during POR
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (376 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 377/422] f2fs: update i_size after DIO completion Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 379/422] f2fs: mark inode dirty explicitly in recover_inode() Greg Kroah-Hartman
                   ` (47 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Chao Yu, Jaegeuk Kim, Sasha Levin

From: Chao Yu <yuchao0@huawei.com>

[ Upstream commit f4474aa6e5e901ee4af21f39f1b9115aaaaec503 ]

Testcase to reproduce this bug:
1. mkfs.f2fs -O extra_attr -O project_quota /dev/sdd
2. mount -t f2fs /dev/sdd /mnt/f2fs
3. touch /mnt/f2fs/file
4. sync
5. chattr -p 1 /mnt/f2fs/file
6. xfs_io -f /mnt/f2fs/file -c "fsync"
7. godown /mnt/f2fs
8. umount /mnt/f2fs
9. mount -t f2fs /dev/sdd /mnt/f2fs
10. lsattr -p /mnt/f2fs/file

    0 -----------------N- /mnt/f2fs/file

But actually, we expect the correct result is:

    1 -----------------N- /mnt/f2fs/file

The reason is we didn't recover inode.i_projid field during mount,
fix it.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/f2fs/recovery.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/fs/f2fs/recovery.c b/fs/f2fs/recovery.c
index 2c5d2c25d37e3..01636d996ba41 100644
--- a/fs/f2fs/recovery.c
+++ b/fs/f2fs/recovery.c
@@ -218,6 +218,19 @@ static void recover_inode(struct inode *inode, struct page *page)
 	inode->i_mode = le16_to_cpu(raw->i_mode);
 	i_uid_write(inode, le32_to_cpu(raw->i_uid));
 	i_gid_write(inode, le32_to_cpu(raw->i_gid));
+
+	if (raw->i_inline & F2FS_EXTRA_ATTR) {
+		if (f2fs_sb_has_project_quota(F2FS_I_SB(inode)->sb) &&
+			F2FS_FITS_IN_INODE(raw, le16_to_cpu(raw->i_extra_isize),
+								i_projid)) {
+			projid_t i_projid;
+
+			i_projid = (projid_t)le32_to_cpu(raw->i_projid);
+			F2FS_I(inode)->i_projid =
+				make_kprojid(&init_user_ns, i_projid);
+		}
+	}
+
 	f2fs_i_size_write(inode, le64_to_cpu(raw->i_size));
 	inode->i_atime.tv_sec = le64_to_cpu(raw->i_atime);
 	inode->i_ctime.tv_sec = le64_to_cpu(raw->i_ctime);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 379/422] f2fs: mark inode dirty explicitly in recover_inode()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (377 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 378/422] f2fs: fix to recover inodes project id during POR Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 380/422] RDMA: Fix dependencies for rdma_user_mmap_io Greg Kroah-Hartman
                   ` (46 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Chao Yu, Jaegeuk Kim, Sasha Levin

From: Chao Yu <yuchao0@huawei.com>

[ Upstream commit 4a1728cad6340bfbe17bd17fd158b2165cd99508 ]

Mark inode dirty explicitly in the end of recover_inode() to make sure
that all recoverable fields can be persisted later.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/f2fs/recovery.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/fs/f2fs/recovery.c b/fs/f2fs/recovery.c
index 01636d996ba41..733f005b85d65 100644
--- a/fs/f2fs/recovery.c
+++ b/fs/f2fs/recovery.c
@@ -247,6 +247,8 @@ static void recover_inode(struct inode *inode, struct page *page)
 
 	recover_inline_flags(inode, raw);
 
+	f2fs_mark_inode_dirty_sync(inode, true);
+
 	if (file_enc_name(inode))
 		name = "<encrypted>";
 	else
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 380/422] RDMA: Fix dependencies for rdma_user_mmap_io
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (378 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 379/422] f2fs: mark inode dirty explicitly in recover_inode() Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 381/422] EDAC: Raise the maximum number of memory controllers Greg Kroah-Hartman
                   ` (45 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Arnd Bergmann, Jason Gunthorpe, Sasha Levin

From: Arnd Bergmann <arnd@arndb.de>

[ Upstream commit 46bdf777685677c1cc6b3da9220aace9da690731 ]

The mlx4 driver produces a link error when it is configured
as built-in while CONFIG_INFINIBAND_USER_ACCESS is set to =m:

drivers/infiniband/hw/mlx4/main.o: In function `mlx4_ib_mmap':
main.c:(.text+0x1af4): undefined reference to `rdma_user_mmap_io'

The same function is called from mlx5, which already has a
dependency to ensure we can call it, and from hns, which
appears to suffer from the same problem.

This adds the same dependency that mlx5 uses to the other two.

Fixes: 6745d356ab39 ("RDMA/hns: Use rdma_user_mmap_io")
Fixes: c282da4109e4 ("RDMA/mlx4: Use rdma_user_mmap_io")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/hw/hns/Kconfig  | 1 +
 drivers/infiniband/hw/mlx4/Kconfig | 1 +
 2 files changed, 2 insertions(+)

diff --git a/drivers/infiniband/hw/hns/Kconfig b/drivers/infiniband/hw/hns/Kconfig
index fddb5fdf92de8..21c2100b2ea98 100644
--- a/drivers/infiniband/hw/hns/Kconfig
+++ b/drivers/infiniband/hw/hns/Kconfig
@@ -1,6 +1,7 @@
 config INFINIBAND_HNS
 	tristate "HNS RoCE Driver"
 	depends on NET_VENDOR_HISILICON
+	depends on INFINIBAND_USER_ACCESS || !INFINIBAND_USER_ACCESS
 	depends on ARM64 || (COMPILE_TEST && 64BIT)
 	---help---
 	  This is a RoCE/RDMA driver for the Hisilicon RoCE engine. The engine
diff --git a/drivers/infiniband/hw/mlx4/Kconfig b/drivers/infiniband/hw/mlx4/Kconfig
index db4aa13ebae0c..d1de3285fd885 100644
--- a/drivers/infiniband/hw/mlx4/Kconfig
+++ b/drivers/infiniband/hw/mlx4/Kconfig
@@ -1,6 +1,7 @@
 config MLX4_INFINIBAND
 	tristate "Mellanox ConnectX HCA support"
 	depends on NETDEVICES && ETHERNET && PCI && INET
+	depends on INFINIBAND_USER_ACCESS || !INFINIBAND_USER_ACCESS
 	depends on MAY_USE_DEVLINK
 	select NET_VENDOR_MELLANOX
 	select MLX4_CORE
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 381/422] EDAC: Raise the maximum number of memory controllers
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (379 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 380/422] RDMA: Fix dependencies for rdma_user_mmap_io Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 382/422] ARM: dts: realview: Fix SPI controller node names Greg Kroah-Hartman
                   ` (44 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Justin Ernst, Borislav Petkov,
	Russ Anderson, Mauro Carvalho Chehab, linux-edac, Sasha Levin

From: Justin Ernst <justin.ernst@hpe.com>

[ Upstream commit 6b58859419554fb824e09cfdd73151a195473cbc ]

We observe an oops in the skx_edac module during boot:

  EDAC MC0: Giving out device to module skx_edac controller Skylake Socket#0 IMC#0
  EDAC MC1: Giving out device to module skx_edac controller Skylake Socket#0 IMC#1
  EDAC MC2: Giving out device to module skx_edac controller Skylake Socket#1 IMC#0
  ...
  EDAC MC13: Giving out device to module skx_edac controller Skylake Socket#0 IMC#1
  EDAC MC14: Giving out device to module skx_edac controller Skylake Socket#1 IMC#0
  EDAC MC15: Giving out device to module skx_edac controller Skylake Socket#1 IMC#1
  Too many memory controllers: 16
  EDAC MC: Removed device 0 for skx_edac Skylake Socket#0 IMC#0

We observe there are two memory controllers per socket, with a limit
of 16. Raise the maximum number of memory controllers from 16 to 2 *
MAX_NUMNODES (1024).

[ bp: This is just a band-aid fix until we've sorted out the whole issue
  with the bus_type association and handling in EDAC and can get rid of
  this arbitrary limit. ]

Signed-off-by: Justin Ernst <justin.ernst@hpe.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Russ Anderson <russ.anderson@hpe.com>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: linux-edac@vger.kernel.org
Link: https://lkml.kernel.org/r/20180925143449.284634-1-justin.ernst@hpe.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/linux/edac.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/linux/edac.h b/include/linux/edac.h
index bffb97828ed67..958d69332c1d5 100644
--- a/include/linux/edac.h
+++ b/include/linux/edac.h
@@ -17,6 +17,7 @@
 #include <linux/completion.h>
 #include <linux/workqueue.h>
 #include <linux/debugfs.h>
+#include <linux/numa.h>
 
 #define EDAC_DEVICE_NAME_LEN	31
 
@@ -670,6 +671,6 @@ struct mem_ctl_info {
 /*
  * Maximum number of memory controllers in the coherent fabric.
  */
-#define EDAC_MAX_MCS	16
+#define EDAC_MAX_MCS	2 * MAX_NUMNODES
 
 #endif
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 382/422] ARM: dts: realview: Fix SPI controller node names
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (380 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 381/422] EDAC: Raise the maximum number of memory controllers Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 383/422] firmware: dell_rbu: Make payload memory uncachable Greg Kroah-Hartman
                   ` (43 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Linus Walleij, Rob Herring, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit 016add12977bcc30f77d7e48fc9a3a024cb46645 ]

SPI controller nodes should be named 'spi' rather than 'ssp'. Fixing the
name enables dtc SPI bus checks.

Cc: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/arm-realview-eb.dtsi    | 2 +-
 arch/arm/boot/dts/arm-realview-pb1176.dts | 2 +-
 arch/arm/boot/dts/arm-realview-pb11mp.dts | 2 +-
 arch/arm/boot/dts/arm-realview-pbx.dtsi   | 2 +-
 arch/arm/boot/dts/versatile-ab.dts        | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/arm/boot/dts/arm-realview-eb.dtsi b/arch/arm/boot/dts/arm-realview-eb.dtsi
index a917cf8825ca8..0e4c7c4c8c093 100644
--- a/arch/arm/boot/dts/arm-realview-eb.dtsi
+++ b/arch/arm/boot/dts/arm-realview-eb.dtsi
@@ -371,7 +371,7 @@
 			clock-names = "uartclk", "apb_pclk";
 		};
 
-		ssp: ssp@1000d000 {
+		ssp: spi@1000d000 {
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0x1000d000 0x1000>;
 			clocks = <&sspclk>, <&pclk>;
diff --git a/arch/arm/boot/dts/arm-realview-pb1176.dts b/arch/arm/boot/dts/arm-realview-pb1176.dts
index f935b72d3d964..f2a1d25eb6cf3 100644
--- a/arch/arm/boot/dts/arm-realview-pb1176.dts
+++ b/arch/arm/boot/dts/arm-realview-pb1176.dts
@@ -380,7 +380,7 @@
 			clock-names = "apb_pclk";
 		};
 
-		pb1176_ssp: ssp@1010b000 {
+		pb1176_ssp: spi@1010b000 {
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0x1010b000 0x1000>;
 			interrupt-parent = <&intc_dc1176>;
diff --git a/arch/arm/boot/dts/arm-realview-pb11mp.dts b/arch/arm/boot/dts/arm-realview-pb11mp.dts
index 36203288de426..7f9cbdf33a510 100644
--- a/arch/arm/boot/dts/arm-realview-pb11mp.dts
+++ b/arch/arm/boot/dts/arm-realview-pb11mp.dts
@@ -523,7 +523,7 @@
 			clock-names = "uartclk", "apb_pclk";
 		};
 
-		ssp@1000d000 {
+		spi@1000d000 {
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0x1000d000 0x1000>;
 			interrupt-parent = <&intc_pb11mp>;
diff --git a/arch/arm/boot/dts/arm-realview-pbx.dtsi b/arch/arm/boot/dts/arm-realview-pbx.dtsi
index 10868ba3277f5..a5676697ff3b7 100644
--- a/arch/arm/boot/dts/arm-realview-pbx.dtsi
+++ b/arch/arm/boot/dts/arm-realview-pbx.dtsi
@@ -362,7 +362,7 @@
 			clock-names = "uartclk", "apb_pclk";
 		};
 
-		ssp: ssp@1000d000 {
+		ssp: spi@1000d000 {
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0x1000d000 0x1000>;
 			clocks = <&sspclk>, <&pclk>;
diff --git a/arch/arm/boot/dts/versatile-ab.dts b/arch/arm/boot/dts/versatile-ab.dts
index 5f61d36090270..6f4f60ba5429c 100644
--- a/arch/arm/boot/dts/versatile-ab.dts
+++ b/arch/arm/boot/dts/versatile-ab.dts
@@ -373,7 +373,7 @@
 			clock-names = "apb_pclk";
 		};
 
-		ssp@101f4000 {
+		spi@101f4000 {
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0x101f4000 0x1000>;
 			interrupts = <11>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 383/422] firmware: dell_rbu: Make payload memory uncachable
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (381 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 382/422] ARM: dts: realview: Fix SPI controller node names Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-20 13:28   ` Pavel Machek
  2019-11-19  5:19 ` [PATCH 4.19 384/422] Bluetooth: hci_serdev: clear HCI_UART_PROTO_READY to avoid closing proto races Greg Kroah-Hartman
                   ` (42 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Stuart Hayes, Andy Shevchenko, Sasha Levin

From: Stuart Hayes <stuart.w.hayes@gmail.com>

[ Upstream commit 6aecee6ad41cf97c0270f72da032c10eef025bf0 ]

The dell_rbu driver takes firmware update payloads and puts them in memory so
the system BIOS can find them after a reboot.  This sometimes fails (though
rarely), because the memory containing the payload is in the CPU cache but
never gets written back to main memory before the system is rebooted (CPU
cache contents are lost on reboot).

With this patch, the payload memory will be changed to uncachable to ensure
that the payload is actually in main memory before the system is rebooted.

Signed-off-by: Stuart Hayes <stuart.w.hayes@gmail.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/firmware/dell_rbu.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/firmware/dell_rbu.c b/drivers/firmware/dell_rbu.c
index fb8af5cb7c9bf..ccefa84f73057 100644
--- a/drivers/firmware/dell_rbu.c
+++ b/drivers/firmware/dell_rbu.c
@@ -45,6 +45,7 @@
 #include <linux/moduleparam.h>
 #include <linux/firmware.h>
 #include <linux/dma-mapping.h>
+#include <asm/set_memory.h>
 
 MODULE_AUTHOR("Abhay Salunke <abhay_salunke@dell.com>");
 MODULE_DESCRIPTION("Driver for updating BIOS image on DELL systems");
@@ -181,6 +182,11 @@ static int create_packet(void *data, size_t length)
 			packet_data_temp_buf = NULL;
 		}
 	}
+	/*
+	 * set to uncachable or it may never get written back before reboot
+	 */
+	set_memory_uc((unsigned long)packet_data_temp_buf, 1 << ordernum);
+
 	spin_lock(&rbu_data.lock);
 
 	newpacket->data = packet_data_temp_buf;
@@ -349,6 +355,8 @@ static void packet_empty_list(void)
 		 * to make sure there are no stale RBU packets left in memory
 		 */
 		memset(newpacket->data, 0, rbu_data.packetsize);
+		set_memory_wb((unsigned long)newpacket->data,
+			1 << newpacket->ordernum);
 		free_pages((unsigned long) newpacket->data,
 			newpacket->ordernum);
 		kfree(newpacket);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 384/422] Bluetooth: hci_serdev: clear HCI_UART_PROTO_READY to avoid closing proto races
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (382 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 383/422] firmware: dell_rbu: Make payload memory uncachable Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 385/422] Bluetooth: L2CAP: Detect if remote is not able to use the whole MPS Greg Kroah-Hartman
                   ` (41 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Balakrishna Godavarthi,
	Marcel Holtmann, Sasha Levin

From: Balakrishna Godavarthi <bgodavar@codeaurora.org>

[ Upstream commit 7cf7846d27bfc9731e449857db3eec5e0e9701ba ]

Clearing HCI_UART_PROTO_READY will avoid usage of proto function pointers
before running the proto close function pointer. There is chance of kernel
crash, due to usage of non proto close function pointers after proto close.

Signed-off-by: Balakrishna Godavarthi <bgodavar@codeaurora.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/bluetooth/hci_serdev.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/bluetooth/hci_serdev.c b/drivers/bluetooth/hci_serdev.c
index aa2543b3c2869..46e20444ba19b 100644
--- a/drivers/bluetooth/hci_serdev.c
+++ b/drivers/bluetooth/hci_serdev.c
@@ -368,6 +368,7 @@ void hci_uart_unregister_device(struct hci_uart *hu)
 {
 	struct hci_dev *hdev = hu->hdev;
 
+	clear_bit(HCI_UART_PROTO_READY, &hu->flags);
 	hci_unregister_dev(hdev);
 	hci_free_dev(hdev);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 385/422] Bluetooth: L2CAP: Detect if remote is not able to use the whole MPS
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (383 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 384/422] Bluetooth: hci_serdev: clear HCI_UART_PROTO_READY to avoid closing proto races Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 386/422] Bluetooth: btrsi: fix bt tx timeout issue Greg Kroah-Hartman
                   ` (40 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Luiz Augusto von Dentz,
	Marcel Holtmann, Sasha Levin

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

[ Upstream commit a5c3021bb62b970713550db3f7fd08aa70665d7e ]

If the remote is not able to fully utilize the MPS choosen recalculate
the credits based on the actual amount it is sending that way it can
still send packets of MTU size without credits dropping to 0.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/bluetooth/l2cap_core.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index 260ef5426e0ca..974c1b8a689c1 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -6819,6 +6819,16 @@ static int l2cap_le_data_rcv(struct l2cap_chan *chan, struct sk_buff *skb)
 		chan->sdu_len = sdu_len;
 		chan->sdu_last_frag = skb;
 
+		/* Detect if remote is not able to use the selected MPS */
+		if (skb->len + L2CAP_SDULEN_SIZE < chan->mps) {
+			u16 mps_len = skb->len + L2CAP_SDULEN_SIZE;
+
+			/* Adjust the number of credits */
+			BT_DBG("chan->mps %u -> %u", chan->mps, mps_len);
+			chan->mps = mps_len;
+			l2cap_chan_le_send_credits(chan);
+		}
+
 		return 0;
 	}
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 386/422] Bluetooth: btrsi: fix bt tx timeout issue
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (384 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 385/422] Bluetooth: L2CAP: Detect if remote is not able to use the whole MPS Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 387/422] x86/hyperv: Suppress "PCI: Fatal: No config space access function found" Greg Kroah-Hartman
                   ` (39 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sanjay Kumar Konduri,
	Siva Rebbagondla, Marcel Holtmann, Sasha Levin

From: Sanjay Kumar Konduri <sanjay.konduri@redpinesignals.com>

[ Upstream commit 7cbfd1e2aad410d96fa6162aeb3f9cff1fecfc58 ]

observed sometimes data is coming with unaligned address from kernel
BT stack. If unaligned address is passed, some data in payload is
stripped when packet is loading to firmware and this results, BT
connection timeout is happening.

sh# hciconfig hci0 up
Can't init device hci0: hci0 command 0x0c03 tx timeout

Fixed this by moving the data to aligned address.

Signed-off-by: Sanjay Kumar Konduri <sanjay.konduri@redpinesignals.com>
Signed-off-by: Siva Rebbagondla <siva.rebbagondla@redpinesignals.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/bluetooth/btrsi.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/bluetooth/btrsi.c b/drivers/bluetooth/btrsi.c
index 60d1419590bab..3951f7b238404 100644
--- a/drivers/bluetooth/btrsi.c
+++ b/drivers/bluetooth/btrsi.c
@@ -21,8 +21,9 @@
 #include <net/rsi_91x.h>
 #include <net/genetlink.h>
 
-#define RSI_HEADROOM_FOR_BT_HAL	16
+#define RSI_DMA_ALIGN	8
 #define RSI_FRAME_DESC_SIZE	16
+#define RSI_HEADROOM_FOR_BT_HAL	(RSI_FRAME_DESC_SIZE + RSI_DMA_ALIGN)
 
 struct rsi_hci_adapter {
 	void *priv;
@@ -70,6 +71,16 @@ static int rsi_hci_send_pkt(struct hci_dev *hdev, struct sk_buff *skb)
 		bt_cb(new_skb)->pkt_type = hci_skb_pkt_type(skb);
 		kfree_skb(skb);
 		skb = new_skb;
+		if (!IS_ALIGNED((unsigned long)skb->data, RSI_DMA_ALIGN)) {
+			u8 *skb_data = skb->data;
+			int skb_len = skb->len;
+
+			skb_push(skb, RSI_DMA_ALIGN);
+			skb_pull(skb, PTR_ALIGN(skb->data,
+						RSI_DMA_ALIGN) - skb->data);
+			memmove(skb->data, skb_data, skb_len);
+			skb_trim(skb, skb_len);
+		}
 	}
 
 	return h_adapter->proto_ops->coex_send_pkt(h_adapter->priv, skb,
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 387/422] x86/hyperv: Suppress "PCI: Fatal: No config space access function found"
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (385 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 386/422] Bluetooth: btrsi: fix bt tx timeout issue Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 388/422] crypto: s5p-sss: Fix race in error handling Greg Kroah-Hartman
                   ` (38 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Dexuan Cui, Thomas Gleixner,
	Michael Kelley, H. Peter Anvin, KY Srinivasan, Haiyang Zhang,
	Stephen Hemminger, devel, Olaf Aepfle, Andy Whitcroft,
	Jason Wang, Vitaly Kuznetsov, Marcelo Cerri, Josh Poulson,
	Sasha Levin

From: Dexuan Cui <decui@microsoft.com>

[ Upstream commit 2f285f46240d67060061d153786740d4df53cd78 ]

A Generation-2 Linux VM on Hyper-V doesn't have the legacy PCI bus, and
users always see the scary warning, which is actually harmless.

Suppress it.

Signed-off-by: Dexuan Cui <decui@microsoft.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Michael Kelley <mikelley@microsoft.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: KY Srinivasan <kys@microsoft.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Cc: Stephen Hemminger <sthemmin@microsoft.com>
Cc: "devel@linuxdriverproject.org" <devel@linuxdriverproject.org>
Cc: Olaf Aepfle <olaf@aepfle.de>
Cc: Andy Whitcroft <apw@canonical.com>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
Cc: Marcelo Cerri <marcelo.cerri@canonical.com>
Cc: Josh Poulson <jopoulso@microsoft.com>
Link: https://lkml.kernel.org/r/ <KU1P153MB0166D977DC930996C4BF538ABF1D0@KU1P153MB0166.APCP153.PROD.OUTLOOK.COM
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/x86/hyperv/hv_init.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c
index 3fb8551552862..8a9cff1f129dc 100644
--- a/arch/x86/hyperv/hv_init.c
+++ b/arch/x86/hyperv/hv_init.c
@@ -17,6 +17,7 @@
  *
  */
 
+#include <linux/efi.h>
 #include <linux/types.h>
 #include <asm/apic.h>
 #include <asm/desc.h>
@@ -257,6 +258,22 @@ static int hv_cpu_die(unsigned int cpu)
 	return 0;
 }
 
+static int __init hv_pci_init(void)
+{
+	int gen2vm = efi_enabled(EFI_BOOT);
+
+	/*
+	 * For Generation-2 VM, we exit from pci_arch_init() by returning 0.
+	 * The purpose is to suppress the harmless warning:
+	 * "PCI: Fatal: No config space access function found"
+	 */
+	if (gen2vm)
+		return 0;
+
+	/* For Generation-1 VM, we'll proceed in pci_arch_init().  */
+	return 1;
+}
+
 /*
  * This function is to be invoked early in the boot sequence after the
  * hypervisor has been detected.
@@ -333,6 +350,8 @@ void __init hyperv_init(void)
 
 	hv_apic_init();
 
+	x86_init.pci.arch_init = hv_pci_init;
+
 	/*
 	 * Register Hyper-V specific clocksource.
 	 */
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 388/422] crypto: s5p-sss: Fix race in error handling
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (386 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 387/422] x86/hyperv: Suppress "PCI: Fatal: No config space access function found" Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 389/422] crypto: s5p-sss: Fix Fix argument list alignment Greg Kroah-Hartman
                   ` (37 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Christoph Manszewski,
	Kamil Konieczny, Krzysztof Kozlowski, Herbert Xu, Sasha Levin

From: Christoph Manszewski <c.manszewski@samsung.com>

[ Upstream commit 5842cd44786055231b233ed5ed98cdb63ffb7db3 ]

Remove a race condition introduced by error path in functions:
s5p_aes_interrupt and s5p_aes_crypt_start. Setting the busy field of
struct s5p_aes_dev to false made it possible for s5p_tasklet_cb to
change the req field, before s5p_aes_complete was called.

Change the first parameter of s5p_aes_complete to struct
ablkcipher_request. Before spin_unlock, make a copy of the currently
handled request, to ensure s5p_aes_complete function call with the
correct request.

Signed-off-by: Christoph Manszewski <c.manszewski@samsung.com>
Acked-by: Kamil Konieczny <k.konieczny@partner.samsung.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/crypto/s5p-sss.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/crypto/s5p-sss.c b/drivers/crypto/s5p-sss.c
index faa282074e5aa..9021ad9df0c45 100644
--- a/drivers/crypto/s5p-sss.c
+++ b/drivers/crypto/s5p-sss.c
@@ -475,9 +475,9 @@ static void s5p_sg_done(struct s5p_aes_dev *dev)
 }
 
 /* Calls the completion. Cannot be called with dev->lock hold. */
-static void s5p_aes_complete(struct s5p_aes_dev *dev, int err)
+static void s5p_aes_complete(struct ablkcipher_request *req, int err)
 {
-	dev->req->base.complete(&dev->req->base, err);
+	req->base.complete(&req->base, err);
 }
 
 static void s5p_unset_outdata(struct s5p_aes_dev *dev)
@@ -655,6 +655,7 @@ static irqreturn_t s5p_aes_interrupt(int irq, void *dev_id)
 {
 	struct platform_device *pdev = dev_id;
 	struct s5p_aes_dev *dev = platform_get_drvdata(pdev);
+	struct ablkcipher_request *req;
 	int err_dma_tx = 0;
 	int err_dma_rx = 0;
 	int err_dma_hx = 0;
@@ -727,7 +728,7 @@ static irqreturn_t s5p_aes_interrupt(int irq, void *dev_id)
 
 		spin_unlock_irqrestore(&dev->lock, flags);
 
-		s5p_aes_complete(dev, 0);
+		s5p_aes_complete(dev->req, 0);
 		/* Device is still busy */
 		tasklet_schedule(&dev->tasklet);
 	} else {
@@ -752,11 +753,12 @@ static irqreturn_t s5p_aes_interrupt(int irq, void *dev_id)
 error:
 	s5p_sg_done(dev);
 	dev->busy = false;
+	req = dev->req;
 	if (err_dma_hx == 1)
 		s5p_set_dma_hashdata(dev, dev->hash_sg_iter);
 
 	spin_unlock_irqrestore(&dev->lock, flags);
-	s5p_aes_complete(dev, err);
+	s5p_aes_complete(req, err);
 
 hash_irq_end:
 	/*
@@ -1983,7 +1985,7 @@ indata_error:
 	s5p_sg_done(dev);
 	dev->busy = false;
 	spin_unlock_irqrestore(&dev->lock, flags);
-	s5p_aes_complete(dev, err);
+	s5p_aes_complete(req, err);
 }
 
 static void s5p_tasklet_cb(unsigned long data)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 389/422] crypto: s5p-sss: Fix Fix argument list alignment
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (387 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 388/422] crypto: s5p-sss: Fix race in error handling Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-20 13:33   ` Pavel Machek
  2019-11-19  5:19 ` [PATCH 4.19 390/422] crypto: fix a memory leak in rsa-kcs1pads encryption mode Greg Kroah-Hartman
                   ` (36 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Christoph Manszewski,
	Krzysztof Kozlowski, Kamil Konieczny, Herbert Xu, Sasha Levin

From: Christoph Manszewski <c.manszewski@samsung.com>

[ Upstream commit 6c12b6ba45490eeb820fdceccf5a53f42a26799c ]

Fix misalignment of continued argument list.

Signed-off-by: Christoph Manszewski <c.manszewski@samsung.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Acked-by: Kamil Konieczny <k.konieczny@partner.samsung.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/crypto/s5p-sss.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/crypto/s5p-sss.c b/drivers/crypto/s5p-sss.c
index 9021ad9df0c45..b7216935236f0 100644
--- a/drivers/crypto/s5p-sss.c
+++ b/drivers/crypto/s5p-sss.c
@@ -491,7 +491,7 @@ static void s5p_unset_indata(struct s5p_aes_dev *dev)
 }
 
 static int s5p_make_sg_cpy(struct s5p_aes_dev *dev, struct scatterlist *src,
-			    struct scatterlist **dst)
+			   struct scatterlist **dst)
 {
 	void *pages;
 	int len;
@@ -1889,7 +1889,7 @@ static int s5p_set_indata_start(struct s5p_aes_dev *dev,
 }
 
 static int s5p_set_outdata_start(struct s5p_aes_dev *dev,
-				struct ablkcipher_request *req)
+				 struct ablkcipher_request *req)
 {
 	struct scatterlist *sg;
 	int err;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 390/422] crypto: fix a memory leak in rsa-kcs1pads encryption mode
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (388 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 389/422] crypto: s5p-sss: Fix Fix argument list alignment Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 391/422] iwlwifi: dbg: dont crash if the firmware crashes in the middle of a debug dump Greg Kroah-Hartman
                   ` (35 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Herbert Xu, linux-crypto,
	David S. Miller, Dan Aloni, Sasha Levin

From: Dan Aloni <dan@kernelim.com>

[ Upstream commit 3944f139d5592790b70bc64f197162e643a8512b ]

The encryption mode of pkcs1pad never uses out_sg and out_buf, so
there's no need to allocate the buffer, which presently is not even
being freed.

CC: Herbert Xu <herbert@gondor.apana.org.au>
CC: linux-crypto@vger.kernel.org
CC: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Dan Aloni <dan@kernelim.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 crypto/rsa-pkcs1pad.c | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/crypto/rsa-pkcs1pad.c b/crypto/rsa-pkcs1pad.c
index 9893dbfc1af45..812476e468213 100644
--- a/crypto/rsa-pkcs1pad.c
+++ b/crypto/rsa-pkcs1pad.c
@@ -261,15 +261,6 @@ static int pkcs1pad_encrypt(struct akcipher_request *req)
 	pkcs1pad_sg_set_buf(req_ctx->in_sg, req_ctx->in_buf,
 			ctx->key_size - 1 - req->src_len, req->src);
 
-	req_ctx->out_buf = kmalloc(ctx->key_size, GFP_KERNEL);
-	if (!req_ctx->out_buf) {
-		kfree(req_ctx->in_buf);
-		return -ENOMEM;
-	}
-
-	pkcs1pad_sg_set_buf(req_ctx->out_sg, req_ctx->out_buf,
-			ctx->key_size, NULL);
-
 	akcipher_request_set_tfm(&req_ctx->child_req, ctx->child);
 	akcipher_request_set_callback(&req_ctx->child_req, req->base.flags,
 			pkcs1pad_encrypt_sign_complete_cb, req);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 391/422] iwlwifi: dbg: dont crash if the firmware crashes in the middle of a debug dump
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (389 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 390/422] crypto: fix a memory leak in rsa-kcs1pads encryption mode Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 392/422] iwlwifi: fix non_shared_ant for 22000 devices Greg Kroah-Hartman
                   ` (34 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Emmanuel Grumbach, Luca Coelho, Sasha Levin

From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>

[ Upstream commit 79f25b10c9da3dbc953e47033d0494e51580ac3b ]

We can dump data from the firmware either when it crashes,
or when the firmware is alive.
Not all the data is available if the firmware is running
(like the Tx / Rx FIFOs which are available only when the
firmware is halted), so we first check that the firmware
is alive to compute the required size for the dump and then
fill the buffer with the data.

When we allocate the buffer, we test the STATUS_FW_ERROR
bit to check if the firmware is alive or not. This bit
can be changed during the course of the dump since it is
modified in the interrupt handler.

We hit a case where we allocate the buffer while the
firmware is sill working, and while we start to fill the
buffer, the firmware crashes. Then we test STATUS_FW_ERROR
again and decide to fill the buffer with data like the
FIFOs even if no room was allocated for this data in the
buffer. This means that we overflow the buffer that was
allocated leading to memory corruption.

To fix this, test the STATUS_FW_ERROR bit only once and
rely on local variables to check if we should dump fifos
or other firmware components.

Fixes: 04fd2c28226f ("iwlwifi: mvm: add rxf and txf to dump data")
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
index 8070b2d4c46fe..3443cbdbab4ae 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
+++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
@@ -824,7 +824,7 @@ void iwl_fw_error_dump(struct iwl_fw_runtime *fwrt)
 	}
 
 	/* We only dump the FIFOs if the FW is in error state */
-	if (test_bit(STATUS_FW_ERROR, &fwrt->trans->status)) {
+	if (fifo_data_len) {
 		iwl_fw_dump_fifos(fwrt, &dump_data);
 		if (radio_len)
 			iwl_read_radio_regs(fwrt, &dump_data);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 392/422] iwlwifi: fix non_shared_ant for 22000 devices
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (390 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 391/422] iwlwifi: dbg: dont crash if the firmware crashes in the middle of a debug dump Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 393/422] iwlwifi: pcie: read correct prph address for newer devices Greg Kroah-Hartman
                   ` (33 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Erel Geron, Luca Coelho, Sasha Levin

From: Erel Geron <erelx.geron@intel.com>

[ Upstream commit a40287727d9b737e183959fd31a4e0c55f312853 ]

The non-shared antenna was wrong for 22000 device series.
Fix it to ANT_B for correct antenna preference by coex in MVM driver.

Fixes: e34d975e40ff ("iwlwifi: Add a000 HW family support")
Signed-off-by: Erel Geron <erelx.geron@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/intel/iwlwifi/cfg/22000.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c
index b4347806a59ed..a0de61aa0feff 100644
--- a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c
+++ b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c
@@ -143,7 +143,7 @@ static const struct iwl_ht_params iwl_22000_ht_params = {
 	.ucode_api_min = IWL_22000_UCODE_API_MIN,			\
 	.led_mode = IWL_LED_RF_STATE,					\
 	.nvm_hw_section_num = NVM_HW_SECTION_NUM_FAMILY_22000,		\
-	.non_shared_ant = ANT_A,					\
+	.non_shared_ant = ANT_B,					\
 	.dccm_offset = IWL_22000_DCCM_OFFSET,				\
 	.dccm_len = IWL_22000_DCCM_LEN,					\
 	.dccm2_offset = IWL_22000_DCCM2_OFFSET,				\
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 393/422] iwlwifi: pcie: read correct prph address for newer devices
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (391 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 392/422] iwlwifi: fix non_shared_ant for 22000 devices Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 394/422] iwlwifi: api: annotate compressed BA notif array sizes Greg Kroah-Hartman
                   ` (32 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sara Sharon, Luca Coelho, Sasha Levin

From: Sara Sharon <sara.sharon@intel.com>

[ Upstream commit 84fb372c892e231e9a2ffdaa5c2df52d94aa536c ]

For newer devices we have higher range of periphery
addresses. Currently it is masked out, so we end up
reading another address.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
index 7d319b6863feb..954f932e9c88e 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
@@ -1830,18 +1830,30 @@ static u32 iwl_trans_pcie_read32(struct iwl_trans *trans, u32 ofs)
 	return readl(IWL_TRANS_GET_PCIE_TRANS(trans)->hw_base + ofs);
 }
 
+static u32 iwl_trans_pcie_prph_msk(struct iwl_trans *trans)
+{
+	if (trans->cfg->device_family >= IWL_DEVICE_FAMILY_22560)
+		return 0x00FFFFFF;
+	else
+		return 0x000FFFFF;
+}
+
 static u32 iwl_trans_pcie_read_prph(struct iwl_trans *trans, u32 reg)
 {
+	u32 mask = iwl_trans_pcie_prph_msk(trans);
+
 	iwl_trans_pcie_write32(trans, HBUS_TARG_PRPH_RADDR,
-			       ((reg & 0x000FFFFF) | (3 << 24)));
+			       ((reg & mask) | (3 << 24)));
 	return iwl_trans_pcie_read32(trans, HBUS_TARG_PRPH_RDAT);
 }
 
 static void iwl_trans_pcie_write_prph(struct iwl_trans *trans, u32 addr,
 				      u32 val)
 {
+	u32 mask = iwl_trans_pcie_prph_msk(trans);
+
 	iwl_trans_pcie_write32(trans, HBUS_TARG_PRPH_WADDR,
-			       ((addr & 0x000FFFFF) | (3 << 24)));
+			       ((addr & mask) | (3 << 24)));
 	iwl_trans_pcie_write32(trans, HBUS_TARG_PRPH_WDAT, val);
 }
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 394/422] iwlwifi: api: annotate compressed BA notif array sizes
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (392 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 393/422] iwlwifi: pcie: read correct prph address for newer devices Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 395/422] iwlwifi: pcie: gen2: build A-MSDU only for GSO Greg Kroah-Hartman
                   ` (31 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Johannes Berg, Luca Coelho, Sasha Levin

From: Johannes Berg <johannes.berg@intel.com>

[ Upstream commit 6f68cc367ab6578a33cca21b6056804165621f00 ]

Annotate the compressed BA notification array sizes and
make both of them 0-length since the length of 1 is just
confusing - it may be different than that and the offset
to the second one needs to be calculated in the C code
anyhow.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/intel/iwlwifi/fw/api/tx.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/tx.h b/drivers/net/wireless/intel/iwlwifi/fw/api/tx.h
index 514b86123d3d3..80853f6cbd6d2 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/api/tx.h
+++ b/drivers/net/wireless/intel/iwlwifi/fw/api/tx.h
@@ -747,9 +747,9 @@ enum iwl_mvm_ba_resp_flags {
  * @tfd_cnt: number of TFD-Q elements
  * @ra_tid_cnt: number of RATID-Q elements
  * @tfd: array of TFD queue status updates. See &iwl_mvm_compressed_ba_tfd
- *	for details.
+ *	for details. Length in @tfd_cnt.
  * @ra_tid: array of RA-TID queue status updates. For debug purposes only. See
- *	&iwl_mvm_compressed_ba_ratid for more details.
+ *	&iwl_mvm_compressed_ba_ratid for more details. Length in @ra_tid_cnt.
  */
 struct iwl_mvm_compressed_ba_notif {
 	__le32 flags;
@@ -766,7 +766,7 @@ struct iwl_mvm_compressed_ba_notif {
 	__le32 tx_rate;
 	__le16 tfd_cnt;
 	__le16 ra_tid_cnt;
-	struct iwl_mvm_compressed_ba_tfd tfd[1];
+	struct iwl_mvm_compressed_ba_tfd tfd[0];
 	struct iwl_mvm_compressed_ba_ratid ra_tid[0];
 } __packed; /* COMPRESSED_BA_RES_API_S_VER_4 */
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 395/422] iwlwifi: pcie: gen2: build A-MSDU only for GSO
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (393 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 394/422] iwlwifi: api: annotate compressed BA notif array sizes Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 396/422] iwlwifi: pcie: fit reclaim msg to MAX_MSG_LEN Greg Kroah-Hartman
                   ` (30 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Johannes Berg, Luca Coelho, Sasha Levin

From: Johannes Berg <johannes.berg@intel.com>

[ Upstream commit 53f474e6a8d74d5dc0c3a015d889471f9a157685 ]

If the incoming frame should be an A-MSDU, it may already be one,
for example in the case of NAN multicast being encapsulated in an
A-MSDU. Thus, use the GSO algorithm to build A-MSDU only if the
skb actually contains GSO data.

Fixes: 6ffe5de35b05 ("iwlwifi: pcie: add AMSDU to gen2")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c b/drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c
index b99f33ff91230..61ffa1d1a00d7 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c
@@ -526,7 +526,12 @@ struct iwl_tfh_tfd *iwl_pcie_gen2_build_tfd(struct iwl_trans *trans,
 
 	hdr_len = ieee80211_hdrlen(hdr->frame_control);
 
-	if (amsdu)
+	/*
+	 * Only build A-MSDUs here if doing so by GSO, otherwise it may be
+	 * an A-MSDU for other reasons, e.g. NAN or an A-MSDU having been
+	 * built in the higher layers already.
+	 */
+	if (amsdu && skb_shinfo(skb)->gso_size)
 		return iwl_pcie_gen2_build_tx_amsdu(trans, txq, dev_cmd, skb,
 						    out_meta, hdr_len, len);
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 396/422] iwlwifi: pcie: fit reclaim msg to MAX_MSG_LEN
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (394 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 395/422] iwlwifi: pcie: gen2: build A-MSDU only for GSO Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 397/422] iwlwifi: mvm: use correct FIFO length Greg Kroah-Hartman
                   ` (29 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Golan Ben Ami, Luca Coelho, Sasha Levin

From: Golan Ben Ami <golan.ben.ami@intel.com>

[ Upstream commit 81f0c66187e1ebb7b63529d82faf7ff1e0ef428a ]

Today, the length of a debug message in iwl_trans_pcie_reclaim
may pass the MAX_MSG_LEN, which is 110.
An example for this kind of message is:

'iwl_trans_pcie_reclaim: Read index for DMA queue txq id (2),
last_to_free 65535 is out of range [0-65536] 2 2.'

Cut the message a bit so it will fit the allowed MAX_MSG_LEN.

Signed-off-by: Golan Ben Ami <golan.ben.ami@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/intel/iwlwifi/pcie/tx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
index 42fdb7970cfdc..2fec394a988c1 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
@@ -1103,7 +1103,7 @@ void iwl_trans_pcie_reclaim(struct iwl_trans *trans, int txq_id, int ssn,
 
 	if (!iwl_queue_used(txq, last_to_free)) {
 		IWL_ERR(trans,
-			"%s: Read index for DMA queue txq id (%d), last_to_free %d is out of range [0-%d] %d %d.\n",
+			"%s: Read index for txq id (%d), last_to_free %d is out of range [0-%d] %d %d.\n",
 			__func__, txq_id, last_to_free,
 			trans->cfg->base_params->max_tfd_queue_size,
 			txq->write_ptr, txq->read_ptr);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 397/422] iwlwifi: mvm: use correct FIFO length
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (395 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 396/422] iwlwifi: pcie: fit reclaim msg to MAX_MSG_LEN Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 398/422] iwlwifi: mvm: Allow TKIP for AP mode Greg Kroah-Hartman
                   ` (28 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Sara Sharon, Luca Coelho, Sasha Levin

From: Sara Sharon <sara.sharon@intel.com>

[ Upstream commit 7126b6f2bbdf8e25f85e7ca6d91d49ea4ce9f6a6 ]

Current FIFO size calculation is wrong for two reasons:
- We access lmac 0 by default
- We don't take 11ax into consideration.
Fix both.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../net/wireless/intel/iwlwifi/mvm/mac-ctxt.c |  4 ++
 drivers/net/wireless/intel/iwlwifi/mvm/tx.c   | 47 +++++++++++++------
 2 files changed, 36 insertions(+), 15 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
index b3fd20502abb3..d90d58309bf0e 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
@@ -85,6 +85,10 @@ const u8 iwl_mvm_ac_to_gen2_tx_fifo[] = {
 	IWL_GEN2_EDCA_TX_FIFO_VI,
 	IWL_GEN2_EDCA_TX_FIFO_BE,
 	IWL_GEN2_EDCA_TX_FIFO_BK,
+	IWL_GEN2_TRIG_TX_FIFO_VO,
+	IWL_GEN2_TRIG_TX_FIFO_VI,
+	IWL_GEN2_TRIG_TX_FIFO_BE,
+	IWL_GEN2_TRIG_TX_FIFO_BK,
 };
 
 struct iwl_mvm_mac_iface_iterator_data {
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
index cb2e52e7f46c9..449e3d32811a6 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
@@ -778,6 +778,36 @@ iwl_mvm_tx_tso_segment(struct sk_buff *skb, unsigned int num_subframes,
 	return 0;
 }
 
+static unsigned int iwl_mvm_max_amsdu_size(struct iwl_mvm *mvm,
+					   struct ieee80211_sta *sta,
+					   unsigned int tid)
+{
+	struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
+	enum nl80211_band band = mvmsta->vif->bss_conf.chandef.chan->band;
+	u8 ac = tid_to_mac80211_ac[tid];
+	unsigned int txf;
+	int lmac = IWL_LMAC_24G_INDEX;
+
+	if (iwl_mvm_is_cdb_supported(mvm) &&
+	    band == NL80211_BAND_5GHZ)
+		lmac = IWL_LMAC_5G_INDEX;
+
+	/* For HE redirect to trigger based fifos */
+	if (sta->he_cap.has_he && !WARN_ON(!iwl_mvm_has_new_tx_api(mvm)))
+		ac += 4;
+
+	txf = iwl_mvm_mac_ac_to_tx_fifo(mvm, ac);
+
+	/*
+	 * Don't send an AMSDU that will be longer than the TXF.
+	 * Add a security margin of 256 for the TX command + headers.
+	 * We also want to have the start of the next packet inside the
+	 * fifo to be able to send bursts.
+	 */
+	return min_t(unsigned int, mvmsta->max_amsdu_len,
+		     mvm->fwrt.smem_cfg.lmac[lmac].txfifo_size[txf] - 256);
+}
+
 static int iwl_mvm_tx_tso(struct iwl_mvm *mvm, struct sk_buff *skb,
 			  struct ieee80211_tx_info *info,
 			  struct ieee80211_sta *sta,
@@ -790,7 +820,7 @@ static int iwl_mvm_tx_tso(struct iwl_mvm *mvm, struct sk_buff *skb,
 	u16 snap_ip_tcp, pad;
 	unsigned int dbg_max_amsdu_len;
 	netdev_features_t netdev_flags = NETIF_F_CSUM_MASK | NETIF_F_SG;
-	u8 tid, txf;
+	u8 tid;
 
 	snap_ip_tcp = 8 + skb_transport_header(skb) - skb_network_header(skb) +
 		tcp_hdrlen(skb);
@@ -829,20 +859,7 @@ static int iwl_mvm_tx_tso(struct iwl_mvm *mvm, struct sk_buff *skb,
 	    !(mvmsta->amsdu_enabled & BIT(tid)))
 		return iwl_mvm_tx_tso_segment(skb, 1, netdev_flags, mpdus_skb);
 
-	max_amsdu_len = mvmsta->max_amsdu_len;
-
-	/* the Tx FIFO to which this A-MSDU will be routed */
-	txf = iwl_mvm_mac_ac_to_tx_fifo(mvm, tid_to_mac80211_ac[tid]);
-
-	/*
-	 * Don't send an AMSDU that will be longer than the TXF.
-	 * Add a security margin of 256 for the TX command + headers.
-	 * We also want to have the start of the next packet inside the
-	 * fifo to be able to send bursts.
-	 */
-	max_amsdu_len = min_t(unsigned int, max_amsdu_len,
-			      mvm->fwrt.smem_cfg.lmac[0].txfifo_size[txf] -
-			      256);
+	max_amsdu_len = iwl_mvm_max_amsdu_size(mvm, sta, tid);
 
 	if (unlikely(dbg_max_amsdu_len))
 		max_amsdu_len = min_t(unsigned int, max_amsdu_len,
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 398/422] iwlwifi: mvm: Allow TKIP for AP mode
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (396 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 397/422] iwlwifi: mvm: use correct FIFO length Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 399/422] scsi: NCR5380: Clear all unissued commands on host reset Greg Kroah-Hartman
                   ` (27 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Ilan Peer, Luca Coelho, Sasha Levin

From: Ilan Peer <ilan.peer@intel.com>

[ Upstream commit 6f3df8c1192c873a6ad9a76328920f6f85af90a8 ]

Support for setting keys for TKIP cipher suite was mistakenly removed
for AP mode. Fix this.

Fixes: 85aeb58cec1a ("iwlwifi: mvm: Enable security on new TX API")
Signed-off-by: Ilan Peer <ilan.peer@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/intel/iwlwifi/mvm/sta.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
index 18db1ed92d9b0..04ea516bddcc0 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
@@ -3133,10 +3133,6 @@ static int __iwl_mvm_set_sta_key(struct iwl_mvm *mvm,
 
 	switch (keyconf->cipher) {
 	case WLAN_CIPHER_SUITE_TKIP:
-		if (vif->type == NL80211_IFTYPE_AP) {
-			ret = -EINVAL;
-			break;
-		}
 		addr = iwl_mvm_get_mac_addr(mvm, vif, sta);
 		/* get phase 1 key from mac80211 */
 		ieee80211_get_key_rx_seq(keyconf, 0, &seq);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 399/422] scsi: NCR5380: Clear all unissued commands on host reset
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (397 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 398/422] iwlwifi: mvm: Allow TKIP for AP mode Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 400/422] scsi: NCR5380: Have NCR5380_select() return a bool Greg Kroah-Hartman
                   ` (26 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Hannes Reinecke, Johannes Thumshirn,
	Ondrey Zary, Finn Thain, Martin K. Petersen, Sasha Levin

From: Hannes Reinecke <hare@suse.com>

[ Upstream commit 1aeeeed7f03c576f096eede7b0384f99a98f588c ]

When doing a host reset we should be clearing all outstanding commands, not
just the command triggering the reset.

[mkp: adjusted Hannes' SoB address]

Signed-off-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Cc: Ondrey Zary <linux@rainbow-software.org>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/NCR5380.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index 5160d6214a36b..d0bbb20518048 100644
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -2303,7 +2303,7 @@ static int NCR5380_host_reset(struct scsi_cmnd *cmd)
 	spin_lock_irqsave(&hostdata->lock, flags);
 
 #if (NDEBUG & NDEBUG_ANY)
-	scmd_printk(KERN_INFO, cmd, __func__);
+	shost_printk(KERN_INFO, instance, __func__);
 #endif
 	NCR5380_dprint(NDEBUG_ANY, instance);
 	NCR5380_dprint_phase(NDEBUG_ANY, instance);
@@ -2321,10 +2321,13 @@ static int NCR5380_host_reset(struct scsi_cmnd *cmd)
 	 * commands!
 	 */
 
-	if (list_del_cmd(&hostdata->unissued, cmd)) {
+	list_for_each_entry(ncmd, &hostdata->unissued, list) {
+		struct scsi_cmnd *cmd = NCR5380_to_scmd(ncmd);
+
 		cmd->result = DID_RESET << 16;
 		cmd->scsi_done(cmd);
 	}
+	INIT_LIST_HEAD(&hostdata->unissued);
 
 	if (hostdata->selecting) {
 		hostdata->selecting->result = DID_RESET << 16;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 400/422] scsi: NCR5380: Have NCR5380_select() return a bool
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (398 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 399/422] scsi: NCR5380: Clear all unissued commands on host reset Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 401/422] scsi: NCR5380: Withhold disconnect privilege for REQUEST SENSE Greg Kroah-Hartman
                   ` (25 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Michael Schmitz, Finn Thain,
	Martin K. Petersen, Sasha Levin

From: Finn Thain <fthain@telegraphics.com.au>

[ Upstream commit dad8261e643849ea134c7cd5c8e794e31d93b9eb ]

The return value is taken to mean "retry" or "don't retry". Change it to bool
to improve readability. Fix related comments. No functional change.

Tested-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/NCR5380.c | 46 +++++++++++++++++++-----------------------
 drivers/scsi/NCR5380.h |  2 +-
 2 files changed, 22 insertions(+), 26 deletions(-)

diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index d0bbb20518048..d600d3e94ba4a 100644
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -904,20 +904,16 @@ static irqreturn_t __maybe_unused NCR5380_intr(int irq, void *dev_id)
 	return IRQ_RETVAL(handled);
 }
 
-/*
- * Function : int NCR5380_select(struct Scsi_Host *instance,
- * struct scsi_cmnd *cmd)
- *
- * Purpose : establishes I_T_L or I_T_L_Q nexus for new or existing command,
- * including ARBITRATION, SELECTION, and initial message out for
- * IDENTIFY and queue messages.
+/**
+ * NCR5380_select - attempt arbitration and selection for a given command
+ * @instance: the Scsi_Host instance
+ * @cmd: the scsi_cmnd to execute
  *
- * Inputs : instance - instantiation of the 5380 driver on which this
- * target lives, cmd - SCSI command to execute.
+ * This routine establishes an I_T_L nexus for a SCSI command. This involves
+ * ARBITRATION, SELECTION and MESSAGE OUT phases and an IDENTIFY message.
  *
- * Returns cmd if selection failed but should be retried,
- * NULL if selection failed and should not be retried, or
- * NULL if selection succeeded (hostdata->connected == cmd).
+ * Returns true if the operation should be retried.
+ * Returns false if it should not be retried.
  *
  * Side effects :
  * If bus busy, arbitration failed, etc, NCR5380_select() will exit
@@ -925,16 +921,15 @@ static irqreturn_t __maybe_unused NCR5380_intr(int irq, void *dev_id)
  * SELECT_ENABLE will be set appropriately, the NCR5380
  * will cease to drive any SCSI bus signals.
  *
- * If successful : I_T_L or I_T_L_Q nexus will be established,
- * instance->connected will be set to cmd.
+ * If successful : the I_T_L nexus will be established, and
+ * hostdata->connected will be set to cmd.
  * SELECT interrupt will be disabled.
  *
  * If failed (no target) : cmd->scsi_done() will be called, and the
  * cmd->result host byte set to DID_BAD_TARGET.
  */
 
-static struct scsi_cmnd *NCR5380_select(struct Scsi_Host *instance,
-                                        struct scsi_cmnd *cmd)
+static bool NCR5380_select(struct Scsi_Host *instance, struct scsi_cmnd *cmd)
 	__releases(&hostdata->lock) __acquires(&hostdata->lock)
 {
 	struct NCR5380_hostdata *hostdata = shost_priv(instance);
@@ -942,6 +937,7 @@ static struct scsi_cmnd *NCR5380_select(struct Scsi_Host *instance,
 	unsigned char *data;
 	int len;
 	int err;
+	bool ret = true;
 
 	NCR5380_dprint(NDEBUG_ARBITRATION, instance);
 	dsprintk(NDEBUG_ARBITRATION, instance, "starting arbitration, id = %d\n",
@@ -950,7 +946,7 @@ static struct scsi_cmnd *NCR5380_select(struct Scsi_Host *instance,
 	/*
 	 * Arbitration and selection phases are slow and involve dropping the
 	 * lock, so we have to watch out for EH. An exception handler may
-	 * change 'selecting' to NULL. This function will then return NULL
+	 * change 'selecting' to NULL. This function will then return false
 	 * so that the caller will forget about 'cmd'. (During information
 	 * transfer phases, EH may change 'connected' to NULL.)
 	 */
@@ -986,7 +982,7 @@ static struct scsi_cmnd *NCR5380_select(struct Scsi_Host *instance,
 	if (!hostdata->selecting) {
 		/* Command was aborted */
 		NCR5380_write(MODE_REG, MR_BASE);
-		return NULL;
+		return false;
 	}
 	if (err < 0) {
 		NCR5380_write(MODE_REG, MR_BASE);
@@ -1035,7 +1031,7 @@ static struct scsi_cmnd *NCR5380_select(struct Scsi_Host *instance,
 	if (!hostdata->selecting) {
 		NCR5380_write(MODE_REG, MR_BASE);
 		NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
-		return NULL;
+		return false;
 	}
 
 	dsprintk(NDEBUG_ARBITRATION, instance, "won arbitration\n");
@@ -1118,13 +1114,13 @@ static struct scsi_cmnd *NCR5380_select(struct Scsi_Host *instance,
 
 		/* Can't touch cmd if it has been reclaimed by the scsi ML */
 		if (!hostdata->selecting)
-			return NULL;
+			return false;
 
 		cmd->result = DID_BAD_TARGET << 16;
 		complete_cmd(instance, cmd);
 		dsprintk(NDEBUG_SELECTION, instance,
 			"target did not respond within 250ms\n");
-		cmd = NULL;
+		ret = false;
 		goto out;
 	}
 
@@ -1156,7 +1152,7 @@ static struct scsi_cmnd *NCR5380_select(struct Scsi_Host *instance,
 	}
 	if (!hostdata->selecting) {
 		do_abort(instance);
-		return NULL;
+		return false;
 	}
 
 	dsprintk(NDEBUG_SELECTION, instance, "target %d selected, going into MESSAGE OUT phase.\n",
@@ -1172,7 +1168,7 @@ static struct scsi_cmnd *NCR5380_select(struct Scsi_Host *instance,
 		cmd->result = DID_ERROR << 16;
 		complete_cmd(instance, cmd);
 		dsprintk(NDEBUG_SELECTION, instance, "IDENTIFY message transfer failed\n");
-		cmd = NULL;
+		ret = false;
 		goto out;
 	}
 
@@ -1187,13 +1183,13 @@ static struct scsi_cmnd *NCR5380_select(struct Scsi_Host *instance,
 
 	initialize_SCp(cmd);
 
-	cmd = NULL;
+	ret = false;
 
 out:
 	if (!hostdata->selecting)
 		return NULL;
 	hostdata->selecting = NULL;
-	return cmd;
+	return ret;
 }
 
 /*
diff --git a/drivers/scsi/NCR5380.h b/drivers/scsi/NCR5380.h
index 8a6d002e67894..5935fd6d1a058 100644
--- a/drivers/scsi/NCR5380.h
+++ b/drivers/scsi/NCR5380.h
@@ -275,7 +275,7 @@ static irqreturn_t NCR5380_intr(int irq, void *dev_id);
 static void NCR5380_main(struct work_struct *work);
 static const char *NCR5380_info(struct Scsi_Host *instance);
 static void NCR5380_reselect(struct Scsi_Host *instance);
-static struct scsi_cmnd *NCR5380_select(struct Scsi_Host *, struct scsi_cmnd *);
+static bool NCR5380_select(struct Scsi_Host *, struct scsi_cmnd *);
 static int NCR5380_transfer_dma(struct Scsi_Host *instance, unsigned char *phase, int *count, unsigned char **data);
 static int NCR5380_transfer_pio(struct Scsi_Host *instance, unsigned char *phase, int *count, unsigned char **data);
 static int NCR5380_poll_politely2(struct NCR5380_hostdata *,
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 401/422] scsi: NCR5380: Withhold disconnect privilege for REQUEST SENSE
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (399 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 400/422] scsi: NCR5380: Have NCR5380_select() return a bool Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:19 ` [PATCH 4.19 402/422] scsi: NCR5380: Use DRIVER_SENSE to indicate valid sense data Greg Kroah-Hartman
                   ` (24 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Michael Schmitz, Finn Thain,
	Martin K. Petersen, Sasha Levin

From: Finn Thain <fthain@telegraphics.com.au>

[ Upstream commit 7c8ed783c2faa1e3f741844ffac41340338ea0f4 ]

This is mostly needed because an AztecMonster II target has been observed
disconnecting REQUEST SENSE commands and then failing to reselect properly.

Suggested-by: Michael Schmitz <schmitzmic@gmail.com>
Tested-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/NCR5380.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index d600d3e94ba4a..144bb0c2b3064 100644
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -938,6 +938,8 @@ static bool NCR5380_select(struct Scsi_Host *instance, struct scsi_cmnd *cmd)
 	int len;
 	int err;
 	bool ret = true;
+	bool can_disconnect = instance->irq != NO_IRQ &&
+			      cmd->cmnd[0] != REQUEST_SENSE;
 
 	NCR5380_dprint(NDEBUG_ARBITRATION, instance);
 	dsprintk(NDEBUG_ARBITRATION, instance, "starting arbitration, id = %d\n",
@@ -1157,7 +1159,7 @@ static bool NCR5380_select(struct Scsi_Host *instance, struct scsi_cmnd *cmd)
 
 	dsprintk(NDEBUG_SELECTION, instance, "target %d selected, going into MESSAGE OUT phase.\n",
 	         scmd_id(cmd));
-	tmp[0] = IDENTIFY(((instance->irq == NO_IRQ) ? 0 : 1), cmd->device->lun);
+	tmp[0] = IDENTIFY(can_disconnect, cmd->device->lun);
 
 	len = 1;
 	data = tmp;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 402/422] scsi: NCR5380: Use DRIVER_SENSE to indicate valid sense data
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (400 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 401/422] scsi: NCR5380: Withhold disconnect privilege for REQUEST SENSE Greg Kroah-Hartman
@ 2019-11-19  5:19 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 403/422] scsi: NCR5380: Check for invalid reselection target Greg Kroah-Hartman
                   ` (23 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Michael Schmitz, Finn Thain,
	Martin K. Petersen, Sasha Levin

From: Finn Thain <fthain@telegraphics.com.au>

[ Upstream commit 070356513963be6196142acff56acc8359069fa1 ]

When sense data is valid, call set_driver_byte(cmd, DRIVER_SENSE).  Otherwise
some callers of scsi_execute() will ignore sense data.  Don't set DID_ERROR or
DID_RESET just because sense data is missing.

Tested-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/NCR5380.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index 144bb0c2b3064..90136942f4882 100644
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -513,11 +513,12 @@ static void complete_cmd(struct Scsi_Host *instance,
 
 	if (hostdata->sensing == cmd) {
 		/* Autosense processing ends here */
-		if ((cmd->result & 0xff) != SAM_STAT_GOOD) {
+		if (status_byte(cmd->result) != GOOD) {
 			scsi_eh_restore_cmnd(cmd, &hostdata->ses);
-			set_host_byte(cmd, DID_ERROR);
-		} else
+		} else {
 			scsi_eh_restore_cmnd(cmd, &hostdata->ses);
+			set_driver_byte(cmd, DRIVER_SENSE);
+		}
 		hostdata->sensing = NULL;
 	}
 
@@ -2265,7 +2266,6 @@ static int NCR5380_abort(struct scsi_cmnd *cmd)
 	if (list_del_cmd(&hostdata->autosense, cmd)) {
 		dsprintk(NDEBUG_ABORT, instance,
 		         "abort: removed %p from sense queue\n", cmd);
-		set_host_byte(cmd, DID_ERROR);
 		complete_cmd(instance, cmd);
 	}
 
@@ -2344,7 +2344,6 @@ static int NCR5380_host_reset(struct scsi_cmnd *cmd)
 	list_for_each_entry(ncmd, &hostdata->autosense, list) {
 		struct scsi_cmnd *cmd = NCR5380_to_scmd(ncmd);
 
-		set_host_byte(cmd, DID_RESET);
 		cmd->scsi_done(cmd);
 	}
 	INIT_LIST_HEAD(&hostdata->autosense);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 403/422] scsi: NCR5380: Check for invalid reselection target
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (401 preceding siblings ...)
  2019-11-19  5:19 ` [PATCH 4.19 402/422] scsi: NCR5380: Use DRIVER_SENSE to indicate valid sense data Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 404/422] scsi: NCR5380: Dont clear busy flag when abort fails Greg Kroah-Hartman
                   ` (22 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Michael Schmitz, Finn Thain,
	Martin K. Petersen, Sasha Levin

From: Finn Thain <fthain@telegraphics.com.au>

[ Upstream commit 7ef55f6744c45e3d7c85a3f74ada39b67ac741dd ]

The X3T9.2 specification (draft) says, under "6.1.4.1 RESELECTION", that "the
initiator shall not respond to a RESELECTION phase if other than two SCSI ID
bits are on the DATA BUS." This issue (too many bits set) has been observed in
the wild, so add a check.

Tested-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/NCR5380.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index 90136942f4882..c67f476447372 100644
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -2008,6 +2008,11 @@ static void NCR5380_reselect(struct Scsi_Host *instance)
 	NCR5380_write(MODE_REG, MR_BASE);
 
 	target_mask = NCR5380_read(CURRENT_SCSI_DATA_REG) & ~(hostdata->id_mask);
+	if (!target_mask || target_mask & (target_mask - 1)) {
+		shost_printk(KERN_WARNING, instance,
+			     "reselect: bad target_mask 0x%02x\n", target_mask);
+		return;
+	}
 
 	dsprintk(NDEBUG_RESELECTION, instance, "reselect\n");
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 404/422] scsi: NCR5380: Dont clear busy flag when abort fails
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (402 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 403/422] scsi: NCR5380: Check for invalid reselection target Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 405/422] scsi: NCR5380: Dont call dsprintk() following reselection interrupt Greg Kroah-Hartman
                   ` (21 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Michael Schmitz, Finn Thain,
	Martin K. Petersen, Sasha Levin

From: Finn Thain <fthain@telegraphics.com.au>

[ Upstream commit 45ddc1b24806cc8f1a09f23dd4e7b6e4a8ae36e1 ]

When NCR5380_abort() returns FAILED, the driver forgets that the target is
still busy. Hence, further commands may be sent to the target, which may fail
during selection and produce the error message, "reselection after won
arbitration?". Prevent this by leaving the busy flag set when NCR5380_abort()
fails.

Tested-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/NCR5380.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index c67f476447372..227ceb5197555 100644
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -522,8 +522,6 @@ static void complete_cmd(struct Scsi_Host *instance,
 		hostdata->sensing = NULL;
 	}
 
-	hostdata->busy[scmd_id(cmd)] &= ~(1 << cmd->device->lun);
-
 	cmd->scsi_done(cmd);
 }
 
@@ -1711,6 +1709,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
 				cmd->result = DID_ERROR << 16;
 				complete_cmd(instance, cmd);
 				hostdata->connected = NULL;
+				hostdata->busy[scmd_id(cmd)] &= ~(1 << cmd->device->lun);
 				return;
 #endif
 			case PHASE_DATAIN:
@@ -1793,6 +1792,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
 					         cmd, scmd_id(cmd), cmd->device->lun);
 
 					hostdata->connected = NULL;
+					hostdata->busy[scmd_id(cmd)] &= ~(1 << cmd->device->lun);
 
 					cmd->result &= ~0xffff;
 					cmd->result |= cmd->SCp.Status;
@@ -1946,6 +1946,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
 				NCR5380_transfer_pio(instance, &phase, &len, &data);
 				if (msgout == ABORT) {
 					hostdata->connected = NULL;
+					hostdata->busy[scmd_id(cmd)] &= ~(1 << cmd->device->lun);
 					cmd->result = DID_ERROR << 16;
 					complete_cmd(instance, cmd);
 					maybe_release_dma_irq(instance);
@@ -2100,13 +2101,16 @@ static void NCR5380_reselect(struct Scsi_Host *instance)
 		dsprintk(NDEBUG_RESELECTION | NDEBUG_QUEUES, instance,
 		         "reselect: removed %p from disconnected queue\n", tmp);
 	} else {
+		int target = ffs(target_mask) - 1;
+
 		shost_printk(KERN_ERR, instance, "target bitmask 0x%02x lun %d not in disconnected queue.\n",
 		             target_mask, lun);
 		/*
 		 * Since we have an established nexus that we can't do anything
 		 * with, we must abort it.
 		 */
-		do_abort(instance);
+		if (do_abort(instance) == 0)
+			hostdata->busy[target] &= ~(1 << lun);
 		return;
 	}
 
@@ -2277,8 +2281,10 @@ static int NCR5380_abort(struct scsi_cmnd *cmd)
 out:
 	if (result == FAILED)
 		dsprintk(NDEBUG_ABORT, instance, "abort: failed to abort %p\n", cmd);
-	else
+	else {
+		hostdata->busy[scmd_id(cmd)] &= ~(1 << cmd->device->lun);
 		dsprintk(NDEBUG_ABORT, instance, "abort: successfully aborted %p\n", cmd);
+	}
 
 	queue_work(hostdata->work_q, &hostdata->main_task);
 	maybe_release_dma_irq(instance);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 405/422] scsi: NCR5380: Dont call dsprintk() following reselection interrupt
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (403 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 404/422] scsi: NCR5380: Dont clear busy flag when abort fails Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 406/422] scsi: NCR5380: Handle BUS FREE during reselection Greg Kroah-Hartman
                   ` (20 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Michael Schmitz, Finn Thain,
	Martin K. Petersen, Sasha Levin

From: Finn Thain <fthain@telegraphics.com.au>

[ Upstream commit 08267216b3f8aa5adc204bdccf8deb72c1cd7665 ]

The X3T9.2 specification (draft) says, under "6.1.4.1 RESELECTION",

    ... The reselected initiator shall then assert the BSY signal
    within a selection abort time of its most recent detection of being
    reselected; this is required for correct operation of the time-out
    procedure.

The selection abort time is only 200 us which may be insufficient time for a
printk() call. Move the diagnostics to the error paths.

Tested-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/NCR5380.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index 227ceb5197555..5c3ffb466bb10 100644
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -2015,8 +2015,6 @@ static void NCR5380_reselect(struct Scsi_Host *instance)
 		return;
 	}
 
-	dsprintk(NDEBUG_RESELECTION, instance, "reselect\n");
-
 	/*
 	 * At this point, we have detected that our SCSI ID is on the bus,
 	 * SEL is true and BSY was false for at least one bus settle delay
@@ -2029,6 +2027,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance)
 	NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE | ICR_ASSERT_BSY);
 	if (NCR5380_poll_politely(hostdata,
 	                          STATUS_REG, SR_SEL, 0, 2 * HZ) < 0) {
+		shost_printk(KERN_ERR, instance, "reselect: !SEL timeout\n");
 		NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
 		return;
 	}
@@ -2040,6 +2039,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance)
 
 	if (NCR5380_poll_politely(hostdata,
 	                          STATUS_REG, SR_REQ, SR_REQ, 2 * HZ) < 0) {
+		shost_printk(KERN_ERR, instance, "reselect: REQ timeout\n");
 		do_abort(instance);
 		return;
 	}
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 406/422] scsi: NCR5380: Handle BUS FREE during reselection
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (404 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 405/422] scsi: NCR5380: Dont call dsprintk() following reselection interrupt Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 407/422] scsi: NCR5380: Check for bus reset Greg Kroah-Hartman
                   ` (19 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Michael Schmitz, Finn Thain,
	Martin K. Petersen, Sasha Levin

From: Finn Thain <fthain@telegraphics.com.au>

[ Upstream commit ca694afad707cb3ae2fdef3b28454444d9ac726e ]

The X3T9.2 specification (draft) says, under "6.1.4.2 RESELECTION time-out
procedure", that a target may assert RST or go to BUS FREE phase if the
initiator does not respond within 200 us. Something like this has been
observed with AztecMonster II target. When it happens, all we can do is wait
for the target to try again.

Tested-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/NCR5380.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index 5c3ffb466bb10..bce6c990d060a 100644
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -2039,6 +2039,9 @@ static void NCR5380_reselect(struct Scsi_Host *instance)
 
 	if (NCR5380_poll_politely(hostdata,
 	                          STATUS_REG, SR_REQ, SR_REQ, 2 * HZ) < 0) {
+		if ((NCR5380_read(STATUS_REG) & (SR_BSY | SR_SEL)) == 0)
+			/* BUS FREE phase */
+			return;
 		shost_printk(KERN_ERR, instance, "reselect: REQ timeout\n");
 		do_abort(instance);
 		return;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 407/422] scsi: NCR5380: Check for bus reset
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (405 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 406/422] scsi: NCR5380: Handle BUS FREE during reselection Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 408/422] arm64: dts: amd: Fix SPI bus warnings Greg Kroah-Hartman
                   ` (18 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Michael Schmitz, Finn Thain,
	Martin K. Petersen, Sasha Levin

From: Finn Thain <fthain@telegraphics.com.au>

[ Upstream commit 6b0e87a6aafe12d75c2bea6fc8e49e88b98b3083 ]

The SR_RST bit isn't latched. Hence, detecting a bus reset isn't reliable.
When it is detected, the right thing to do is to drop all connected and
disconnected commands. The code for that is already present so refactor it and
call it when SR_RST is set.

Tested-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/NCR5380.c | 74 +++++++++++++++++++++++++-----------------
 1 file changed, 45 insertions(+), 29 deletions(-)

diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index bce6c990d060a..8ec68dcc0cc4a 100644
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -131,6 +131,7 @@
 
 static int do_abort(struct Scsi_Host *);
 static void do_reset(struct Scsi_Host *);
+static void bus_reset_cleanup(struct Scsi_Host *);
 
 /**
  * initialize_SCp - init the scsi pointer field
@@ -885,7 +886,14 @@ static irqreturn_t __maybe_unused NCR5380_intr(int irq, void *dev_id)
 			/* Probably Bus Reset */
 			NCR5380_read(RESET_PARITY_INTERRUPT_REG);
 
-			dsprintk(NDEBUG_INTR, instance, "unknown interrupt\n");
+			if (sr & SR_RST) {
+				/* Certainly Bus Reset */
+				shost_printk(KERN_WARNING, instance,
+					     "bus reset interrupt\n");
+				bus_reset_cleanup(instance);
+			} else {
+				dsprintk(NDEBUG_INTR, instance, "unknown interrupt\n");
+			}
 #ifdef SUN3_SCSI_VME
 			dregs->csr |= CSR_DMA_ENABLE;
 #endif
@@ -2297,31 +2305,12 @@ out:
 }
 
 
-/**
- * NCR5380_host_reset - reset the SCSI host
- * @cmd: SCSI command undergoing EH
- *
- * Returns SUCCESS
- */
-
-static int NCR5380_host_reset(struct scsi_cmnd *cmd)
+static void bus_reset_cleanup(struct Scsi_Host *instance)
 {
-	struct Scsi_Host *instance = cmd->device->host;
 	struct NCR5380_hostdata *hostdata = shost_priv(instance);
 	int i;
-	unsigned long flags;
 	struct NCR5380_cmd *ncmd;
 
-	spin_lock_irqsave(&hostdata->lock, flags);
-
-#if (NDEBUG & NDEBUG_ANY)
-	shost_printk(KERN_INFO, instance, __func__);
-#endif
-	NCR5380_dprint(NDEBUG_ANY, instance);
-	NCR5380_dprint_phase(NDEBUG_ANY, instance);
-
-	do_reset(instance);
-
 	/* reset NCR registers */
 	NCR5380_write(MODE_REG, MR_BASE);
 	NCR5380_write(TARGET_COMMAND_REG, 0);
@@ -2333,14 +2322,6 @@ static int NCR5380_host_reset(struct scsi_cmnd *cmd)
 	 * commands!
 	 */
 
-	list_for_each_entry(ncmd, &hostdata->unissued, list) {
-		struct scsi_cmnd *cmd = NCR5380_to_scmd(ncmd);
-
-		cmd->result = DID_RESET << 16;
-		cmd->scsi_done(cmd);
-	}
-	INIT_LIST_HEAD(&hostdata->unissued);
-
 	if (hostdata->selecting) {
 		hostdata->selecting->result = DID_RESET << 16;
 		complete_cmd(instance, hostdata->selecting);
@@ -2374,6 +2355,41 @@ static int NCR5380_host_reset(struct scsi_cmnd *cmd)
 
 	queue_work(hostdata->work_q, &hostdata->main_task);
 	maybe_release_dma_irq(instance);
+}
+
+/**
+ * NCR5380_host_reset - reset the SCSI host
+ * @cmd: SCSI command undergoing EH
+ *
+ * Returns SUCCESS
+ */
+
+static int NCR5380_host_reset(struct scsi_cmnd *cmd)
+{
+	struct Scsi_Host *instance = cmd->device->host;
+	struct NCR5380_hostdata *hostdata = shost_priv(instance);
+	unsigned long flags;
+	struct NCR5380_cmd *ncmd;
+
+	spin_lock_irqsave(&hostdata->lock, flags);
+
+#if (NDEBUG & NDEBUG_ANY)
+	shost_printk(KERN_INFO, instance, __func__);
+#endif
+	NCR5380_dprint(NDEBUG_ANY, instance);
+	NCR5380_dprint_phase(NDEBUG_ANY, instance);
+
+	list_for_each_entry(ncmd, &hostdata->unissued, list) {
+		struct scsi_cmnd *scmd = NCR5380_to_scmd(ncmd);
+
+		scmd->result = DID_RESET << 16;
+		scmd->scsi_done(scmd);
+	}
+	INIT_LIST_HEAD(&hostdata->unissued);
+
+	do_reset(instance);
+	bus_reset_cleanup(instance);
+
 	spin_unlock_irqrestore(&hostdata->lock, flags);
 
 	return SUCCESS;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 408/422] arm64: dts: amd: Fix SPI bus warnings
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (406 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 407/422] scsi: NCR5380: Check for bus reset Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 409/422] arm64: dts: lg: Fix SPI controller node names Greg Kroah-Hartman
                   ` (17 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Brijesh Singh, Suravee Suthikulpanit,
	Tom Lendacky, Rob Herring, Arnd Bergmann, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit e9f0878c4b2004ac19581274c1ae4c61ae3ca70e ]

dtc has new checks for SPI buses. Fix the warnings in node names.

arch/arm64/boot/dts/amd/amd-overdrive.dtb: Warning (spi_bus_bridge): /smb/ssp@e1030000: node name for SPI buses should be 'spi'
arch/arm64/boot/dts/amd/amd-overdrive-rev-b0.dtb: Warning (spi_bus_bridge): /smb/ssp@e1030000: node name for SPI buses should be 'spi'
arch/arm64/boot/dts/amd/amd-overdrive-rev-b1.dtb: Warning (spi_bus_bridge): /smb/ssp@e1030000: node name for SPI buses should be 'spi'

Cc: Brijesh Singh <brijeshkumar.singh@amd.com>
Cc: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/amd/amd-seattle-soc.dtsi | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/boot/dts/amd/amd-seattle-soc.dtsi b/arch/arm64/boot/dts/amd/amd-seattle-soc.dtsi
index 125f4deb52fe9..b664e7af74eb3 100644
--- a/arch/arm64/boot/dts/amd/amd-seattle-soc.dtsi
+++ b/arch/arm64/boot/dts/amd/amd-seattle-soc.dtsi
@@ -107,7 +107,7 @@
 			clock-names = "uartclk", "apb_pclk";
 		};
 
-		spi0: ssp@e1020000 {
+		spi0: spi@e1020000 {
 			status = "disabled";
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0 0xe1020000 0 0x1000>;
@@ -117,7 +117,7 @@
 			clock-names = "apb_pclk";
 		};
 
-		spi1: ssp@e1030000 {
+		spi1: spi@e1030000 {
 			status = "disabled";
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0 0xe1030000 0 0x1000>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 409/422] arm64: dts: lg: Fix SPI controller node names
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (407 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 408/422] arm64: dts: amd: Fix SPI bus warnings Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 410/422] ARM: dts: lpc32xx: " Greg Kroah-Hartman
                   ` (16 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Chanho Min, Rob Herring,
	Arnd Bergmann, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit 09bae3b64cb580c95329bd8d16f08f0a5cb81ec9 ]

SPI controller nodes should be named 'spi' rather than 'ssp'. Fixing the
name enables dtc SPI bus checks.

Cc: Chanho Min <chanho.min@lge.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/boot/dts/lg/lg1312.dtsi | 4 ++--
 arch/arm64/boot/dts/lg/lg1313.dtsi | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/arm64/boot/dts/lg/lg1312.dtsi b/arch/arm64/boot/dts/lg/lg1312.dtsi
index 860c8fb107950..4bde7b6f2b113 100644
--- a/arch/arm64/boot/dts/lg/lg1312.dtsi
+++ b/arch/arm64/boot/dts/lg/lg1312.dtsi
@@ -168,14 +168,14 @@
 			clock-names = "apb_pclk";
 			status="disabled";
 		};
-		spi0: ssp@fe800000 {
+		spi0: spi@fe800000 {
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0x0 0xfe800000 0x1000>;
 			interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&clk_bus>;
 			clock-names = "apb_pclk";
 		};
-		spi1: ssp@fe900000 {
+		spi1: spi@fe900000 {
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0x0 0xfe900000 0x1000>;
 			interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
diff --git a/arch/arm64/boot/dts/lg/lg1313.dtsi b/arch/arm64/boot/dts/lg/lg1313.dtsi
index 1887af654a7db..16ced1ff1ad36 100644
--- a/arch/arm64/boot/dts/lg/lg1313.dtsi
+++ b/arch/arm64/boot/dts/lg/lg1313.dtsi
@@ -168,14 +168,14 @@
 			clock-names = "apb_pclk";
 			status="disabled";
 		};
-		spi0: ssp@fe800000 {
+		spi0: spi@fe800000 {
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0x0 0xfe800000 0x1000>;
 			interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&clk_bus>;
 			clock-names = "apb_pclk";
 		};
-		spi1: ssp@fe900000 {
+		spi1: spi@fe900000 {
 			compatible = "arm,pl022", "arm,primecell";
 			reg = <0x0 0xfe900000 0x1000>;
 			interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 410/422] ARM: dts: lpc32xx: Fix SPI controller node names
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (408 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 409/422] arm64: dts: lg: Fix SPI controller node names Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 411/422] rtc: isl1208: avoid possible sysfs race Greg Kroah-Hartman
                   ` (15 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Vladimir Zapolskiy, Sylvain Lemieux,
	Rob Herring, Arnd Bergmann, Sasha Levin

From: Rob Herring <robh@kernel.org>

[ Upstream commit 11236ef582b8d66290bb3b3710e03ca1d85d8ad8 ]

SPI controller nodes should be named 'spi' rather than 'ssp'. Fixing the
name enables dtc SPI bus checks.

Cc: Vladimir Zapolskiy <vz@mleia.com>
Cc: Sylvain Lemieux <slemieux.tyco@gmail.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm/boot/dts/lpc32xx.dtsi | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/lpc32xx.dtsi b/arch/arm/boot/dts/lpc32xx.dtsi
index 4981741377f3a..ed0d6fb20122a 100644
--- a/arch/arm/boot/dts/lpc32xx.dtsi
+++ b/arch/arm/boot/dts/lpc32xx.dtsi
@@ -179,7 +179,7 @@
 			 * ssp0 and spi1 are shared pins;
 			 * enable one in your board dts, as needed.
 			 */
-			ssp0: ssp@20084000 {
+			ssp0: spi@20084000 {
 				compatible = "arm,pl022", "arm,primecell";
 				reg = <0x20084000 0x1000>;
 				interrupts = <20 IRQ_TYPE_LEVEL_HIGH>;
@@ -199,7 +199,7 @@
 			 * ssp1 and spi2 are shared pins;
 			 * enable one in your board dts, as needed.
 			 */
-			ssp1: ssp@2008c000 {
+			ssp1: spi@2008c000 {
 				compatible = "arm,pl022", "arm,primecell";
 				reg = <0x2008c000 0x1000>;
 				interrupts = <21 IRQ_TYPE_LEVEL_HIGH>;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 411/422] rtc: isl1208: avoid possible sysfs race
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (409 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 410/422] ARM: dts: lpc32xx: " Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 412/422] rtc: tx4939: fixup nvmem name and register size Greg Kroah-Hartman
                   ` (14 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Denis Osterland, Alexandre Belloni,
	Sasha Levin

From: Alexandre Belloni <alexandre.belloni@bootlin.com>

[ Upstream commit 1b4c794fda583edabe864ac466e9cd43c707be80 ]

Use rtc_add_group to add the common sysfs group to avoid a possible race
condition.

[Denis.Osterland@diehl.com: use to_i2c_client(dev->parent)]
Signed-off-by: Denis Osterland <Denis.Osterland@diehl.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>

The move of atrim, dtrim usr sysfs properties from i2c device
to rtc device require to access them via dev->parent.
This patch also aligns timestamp0.

Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/rtc/rtc-isl1208.c | 27 ++++++++++-----------------
 1 file changed, 10 insertions(+), 17 deletions(-)

diff --git a/drivers/rtc/rtc-isl1208.c b/drivers/rtc/rtc-isl1208.c
index ea18a8f4bce06..033f65aef5788 100644
--- a/drivers/rtc/rtc-isl1208.c
+++ b/drivers/rtc/rtc-isl1208.c
@@ -518,7 +518,7 @@ static ssize_t timestamp0_store(struct device *dev,
 				struct device_attribute *attr,
 				const char *buf, size_t count)
 {
-	struct i2c_client *client = dev_get_drvdata(dev);
+	struct i2c_client *client = to_i2c_client(dev->parent);
 	int sr;
 
 	sr = isl1208_i2c_get_sr(client);
@@ -540,7 +540,7 @@ static ssize_t timestamp0_store(struct device *dev,
 static ssize_t timestamp0_show(struct device *dev,
 			       struct device_attribute *attr, char *buf)
 {
-	struct i2c_client *client = dev_get_drvdata(dev);
+	struct i2c_client *client = to_i2c_client(dev->parent);
 	u8 regs[ISL1219_EVT_SECTION_LEN] = { 0, };
 	struct rtc_time tm;
 	int sr;
@@ -650,7 +650,7 @@ static ssize_t
 isl1208_sysfs_show_atrim(struct device *dev,
 			 struct device_attribute *attr, char *buf)
 {
-	int atr = isl1208_i2c_get_atr(to_i2c_client(dev));
+	int atr = isl1208_i2c_get_atr(to_i2c_client(dev->parent));
 	if (atr < 0)
 		return atr;
 
@@ -663,7 +663,7 @@ static ssize_t
 isl1208_sysfs_show_dtrim(struct device *dev,
 			 struct device_attribute *attr, char *buf)
 {
-	int dtr = isl1208_i2c_get_dtr(to_i2c_client(dev));
+	int dtr = isl1208_i2c_get_dtr(to_i2c_client(dev->parent));
 	if (dtr < 0)
 		return dtr;
 
@@ -676,7 +676,7 @@ static ssize_t
 isl1208_sysfs_show_usr(struct device *dev,
 		       struct device_attribute *attr, char *buf)
 {
-	int usr = isl1208_i2c_get_usr(to_i2c_client(dev));
+	int usr = isl1208_i2c_get_usr(to_i2c_client(dev->parent));
 	if (usr < 0)
 		return usr;
 
@@ -701,7 +701,10 @@ isl1208_sysfs_store_usr(struct device *dev,
 	if (usr < 0 || usr > 0xffff)
 		return -EINVAL;
 
-	return isl1208_i2c_set_usr(to_i2c_client(dev), usr) ? -EIO : count;
+	if (isl1208_i2c_set_usr(to_i2c_client(dev->parent), usr))
+		return -EIO;
+
+	return count;
 }
 
 static DEVICE_ATTR(usr, S_IRUGO | S_IWUSR, isl1208_sysfs_show_usr,
@@ -765,7 +768,6 @@ isl1208_probe(struct i2c_client *client, const struct i2c_device_id *id)
 	rtc->ops = &isl1208_rtc_ops;
 
 	i2c_set_clientdata(client, rtc);
-	dev_set_drvdata(&rtc->dev, client);
 
 	rc = isl1208_i2c_get_sr(client);
 	if (rc < 0) {
@@ -804,7 +806,7 @@ isl1208_probe(struct i2c_client *client, const struct i2c_device_id *id)
 		evdet_irq = of_irq_get_byname(np, "evdet");
 	}
 
-	rc = sysfs_create_group(&client->dev.kobj, &isl1208_rtc_sysfs_files);
+	rc = rtc_add_group(rtc, &isl1208_rtc_sysfs_files);
 	if (rc)
 		return rc;
 
@@ -821,14 +823,6 @@ isl1208_probe(struct i2c_client *client, const struct i2c_device_id *id)
 	return rtc_register_device(rtc);
 }
 
-static int
-isl1208_remove(struct i2c_client *client)
-{
-	sysfs_remove_group(&client->dev.kobj, &isl1208_rtc_sysfs_files);
-
-	return 0;
-}
-
 static const struct i2c_device_id isl1208_id[] = {
 	{ "isl1208", TYPE_ISL1208 },
 	{ "isl1218", TYPE_ISL1218 },
@@ -851,7 +845,6 @@ static struct i2c_driver isl1208_driver = {
 		.of_match_table = of_match_ptr(isl1208_of_match),
 	},
 	.probe = isl1208_probe,
-	.remove = isl1208_remove,
 	.id_table = isl1208_id,
 };
 
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 412/422] rtc: tx4939: fixup nvmem name and register size
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (410 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 411/422] rtc: isl1208: avoid possible sysfs race Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 413/422] rtc: armada38x: fix possible race condition Greg Kroah-Hartman
                   ` (13 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Alexandre Belloni, Sasha Levin

From: Alexandre Belloni <alexandre.belloni@bootlin.com>

[ Upstream commit 2ab78755e93a10f6216c860a2012f3592f395603 ]

The default word_size and stride of 1 are correct for the tx4939. Also fix
the nvmem folder name.

Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/rtc/rtc-tx4939.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/rtc/rtc-tx4939.c b/drivers/rtc/rtc-tx4939.c
index 08dbefc79520e..61c110b2045f8 100644
--- a/drivers/rtc/rtc-tx4939.c
+++ b/drivers/rtc/rtc-tx4939.c
@@ -253,9 +253,7 @@ static int __init tx4939_rtc_probe(struct platform_device *pdev)
 	struct resource *res;
 	int irq, ret;
 	struct nvmem_config nvmem_cfg = {
-		.name = "rv8803_nvram",
-		.word_size = 4,
-		.stride = 4,
+		.name = "tx4939_nvram",
 		.size = TX4939_RTC_REG_RAMSIZE,
 		.reg_read = tx4939_nvram_read,
 		.reg_write = tx4939_nvram_write,
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 413/422] rtc: armada38x: fix possible race condition
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (411 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 412/422] rtc: tx4939: fixup nvmem name and register size Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 414/422] netfilter: masquerade: dont flush all conntracks if only one address deleted on device Greg Kroah-Hartman
                   ` (12 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Alexandre Belloni, Sasha Levin

From: Alexandre Belloni <alexandre.belloni@bootlin.com>

[ Upstream commit 7d61cbb945a753af08e247b5f10bdd5dbb8d6c80 ]

The IRQ is requested before the struct rtc is allocated and registered, but
this struct is used in the IRQ handler. This may lead to a NULL pointer
dereference.

Switch to devm_rtc_allocate_device/rtc_register_device to allocate the rtc
before requesting the IRQ.

Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/rtc/rtc-armada38x.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/rtc/rtc-armada38x.c b/drivers/rtc/rtc-armada38x.c
index bde53c8ccee2c..b74338d6dde60 100644
--- a/drivers/rtc/rtc-armada38x.c
+++ b/drivers/rtc/rtc-armada38x.c
@@ -514,7 +514,6 @@ MODULE_DEVICE_TABLE(of, armada38x_rtc_of_match_table);
 
 static __init int armada38x_rtc_probe(struct platform_device *pdev)
 {
-	const struct rtc_class_ops *ops;
 	struct resource *res;
 	struct armada38x_rtc *rtc;
 	const struct of_device_id *match;
@@ -551,6 +550,11 @@ static __init int armada38x_rtc_probe(struct platform_device *pdev)
 		dev_err(&pdev->dev, "no irq\n");
 		return rtc->irq;
 	}
+
+	rtc->rtc_dev = devm_rtc_allocate_device(&pdev->dev);
+	if (IS_ERR(rtc->rtc_dev))
+		return PTR_ERR(rtc->rtc_dev);
+
 	if (devm_request_irq(&pdev->dev, rtc->irq, armada38x_rtc_alarm_irq,
 				0, pdev->name, rtc) < 0) {
 		dev_warn(&pdev->dev, "Interrupt not available.\n");
@@ -560,28 +564,24 @@ static __init int armada38x_rtc_probe(struct platform_device *pdev)
 
 	if (rtc->irq != -1) {
 		device_init_wakeup(&pdev->dev, 1);
-		ops = &armada38x_rtc_ops;
+		rtc->rtc_dev->ops = &armada38x_rtc_ops;
 	} else {
 		/*
 		 * If there is no interrupt available then we can't
 		 * use the alarm
 		 */
-		ops = &armada38x_rtc_ops_noirq;
+		rtc->rtc_dev->ops = &armada38x_rtc_ops_noirq;
 	}
 	rtc->data = (struct armada38x_rtc_data *)match->data;
 
-
 	/* Update RTC-MBUS bridge timing parameters */
 	rtc->data->update_mbus_timing(rtc);
 
-	rtc->rtc_dev = devm_rtc_device_register(&pdev->dev, pdev->name,
-						ops, THIS_MODULE);
-	if (IS_ERR(rtc->rtc_dev)) {
-		ret = PTR_ERR(rtc->rtc_dev);
+	ret = rtc_register_device(rtc->rtc_dev);
+	if (ret)
 		dev_err(&pdev->dev, "Failed to register RTC device: %d\n", ret);
-		return ret;
-	}
-	return 0;
+
+	return ret;
 }
 
 #ifdef CONFIG_PM_SLEEP
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 414/422] netfilter: masquerade: dont flush all conntracks if only one address deleted on device
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (412 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 413/422] rtc: armada38x: fix possible race condition Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 415/422] usb: xhci-mtk: fix ISOC error when interval is zero Greg Kroah-Hartman
                   ` (11 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Tan Hu, Pablo Neira Ayuso, Sasha Levin

From: Tan Hu <tan.hu@zte.com.cn>

[ Upstream commit 097f95d319f817e651bd51f8846aced92a55a6a1 ]

We configured iptables as below, which only allowed incoming data on
established connections:

iptables -t mangle -A PREROUTING -m state --state ESTABLISHED -j ACCEPT
iptables -t mangle -P PREROUTING DROP

When deleting a secondary address, current masquerade implements would
flush all conntracks on this device. All the established connections on
primary address also be deleted, then subsequent incoming data on the
connections would be dropped wrongly because it was identified as NEW
connection.

So when an address was delete, it should only flush connections related
with the address.

Signed-off-by: Tan Hu <tan.hu@zte.com.cn>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/ipv4/netfilter/nf_nat_masquerade_ipv4.c | 22 ++++++++++++++++++---
 net/ipv6/netfilter/nf_nat_masquerade_ipv6.c | 19 +++++++++++++++---
 2 files changed, 35 insertions(+), 6 deletions(-)

diff --git a/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c b/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c
index 4c7fcd32f8e62..41327bb990932 100644
--- a/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c
+++ b/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c
@@ -104,12 +104,26 @@ static int masq_device_event(struct notifier_block *this,
 	return NOTIFY_DONE;
 }
 
+static int inet_cmp(struct nf_conn *ct, void *ptr)
+{
+	struct in_ifaddr *ifa = (struct in_ifaddr *)ptr;
+	struct net_device *dev = ifa->ifa_dev->dev;
+	struct nf_conntrack_tuple *tuple;
+
+	if (!device_cmp(ct, (void *)(long)dev->ifindex))
+		return 0;
+
+	tuple = &ct->tuplehash[IP_CT_DIR_REPLY].tuple;
+
+	return ifa->ifa_address == tuple->dst.u3.ip;
+}
+
 static int masq_inet_event(struct notifier_block *this,
 			   unsigned long event,
 			   void *ptr)
 {
 	struct in_device *idev = ((struct in_ifaddr *)ptr)->ifa_dev;
-	struct netdev_notifier_info info;
+	struct net *net = dev_net(idev->dev);
 
 	/* The masq_dev_notifier will catch the case of the device going
 	 * down.  So if the inetdev is dead and being destroyed we have
@@ -119,8 +133,10 @@ static int masq_inet_event(struct notifier_block *this,
 	if (idev->dead)
 		return NOTIFY_DONE;
 
-	netdev_notifier_info_init(&info, idev->dev);
-	return masq_device_event(this, event, &info);
+	if (event == NETDEV_DOWN)
+		nf_ct_iterate_cleanup_net(net, inet_cmp, ptr, 0, 0);
+
+	return NOTIFY_DONE;
 }
 
 static struct notifier_block masq_dev_notifier = {
diff --git a/net/ipv6/netfilter/nf_nat_masquerade_ipv6.c b/net/ipv6/netfilter/nf_nat_masquerade_ipv6.c
index 37b1d413c825b..0ad0da5a26002 100644
--- a/net/ipv6/netfilter/nf_nat_masquerade_ipv6.c
+++ b/net/ipv6/netfilter/nf_nat_masquerade_ipv6.c
@@ -87,18 +87,30 @@ static struct notifier_block masq_dev_notifier = {
 struct masq_dev_work {
 	struct work_struct work;
 	struct net *net;
+	struct in6_addr addr;
 	int ifindex;
 };
 
+static int inet_cmp(struct nf_conn *ct, void *work)
+{
+	struct masq_dev_work *w = (struct masq_dev_work *)work;
+	struct nf_conntrack_tuple *tuple;
+
+	if (!device_cmp(ct, (void *)(long)w->ifindex))
+		return 0;
+
+	tuple = &ct->tuplehash[IP_CT_DIR_REPLY].tuple;
+
+	return ipv6_addr_equal(&w->addr, &tuple->dst.u3.in6);
+}
+
 static void iterate_cleanup_work(struct work_struct *work)
 {
 	struct masq_dev_work *w;
-	long index;
 
 	w = container_of(work, struct masq_dev_work, work);
 
-	index = w->ifindex;
-	nf_ct_iterate_cleanup_net(w->net, device_cmp, (void *)index, 0, 0);
+	nf_ct_iterate_cleanup_net(w->net, inet_cmp, (void *)w, 0, 0);
 
 	put_net(w->net);
 	kfree(w);
@@ -147,6 +159,7 @@ static int masq_inet6_event(struct notifier_block *this,
 		INIT_WORK(&w->work, iterate_cleanup_work);
 		w->ifindex = dev->ifindex;
 		w->net = net;
+		w->addr = ifa->addr;
 		schedule_work(&w->work);
 
 		return NOTIFY_DONE;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 415/422] usb: xhci-mtk: fix ISOC error when interval is zero
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (413 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 414/422] netfilter: masquerade: dont flush all conntracks if only one address deleted on device Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 416/422] usb: usbtmc: uninitialized symbol actual in usbtmc_ioctl_clear Greg Kroah-Hartman
                   ` (10 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Chunfeng Yun, Mathias Nyman, Sasha Levin

From: Chunfeng Yun <chunfeng.yun@mediatek.com>

[ Upstream commit 87173acc0d8f0987bda8827da35fff67f52ad15d ]

If the interval equal zero, needn't round up to power of two
for the number of packets in each ESIT, so fix it.

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/usb/host/xhci-mtk-sch.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/host/xhci-mtk-sch.c b/drivers/usb/host/xhci-mtk-sch.c
index fa33d6e5b1cbd..d04fdd173ed2e 100644
--- a/drivers/usb/host/xhci-mtk-sch.c
+++ b/drivers/usb/host/xhci-mtk-sch.c
@@ -113,7 +113,9 @@ static void setup_sch_info(struct usb_device *udev,
 		}
 
 		if (ep_type == ISOC_IN_EP || ep_type == ISOC_OUT_EP) {
-			if (esit_pkts <= sch_ep->esit)
+			if (sch_ep->esit == 1)
+				sch_ep->pkts = esit_pkts;
+			else if (esit_pkts <= sch_ep->esit)
 				sch_ep->pkts = 1;
 			else
 				sch_ep->pkts = roundup_pow_of_two(esit_pkts)
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 416/422] usb: usbtmc: uninitialized symbol actual in usbtmc_ioctl_clear
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (414 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 415/422] usb: xhci-mtk: fix ISOC error when interval is zero Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 417/422] fuse: use READ_ONCE on congestion_threshold and max_background Greg Kroah-Hartman
                   ` (9 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Guido Kiener, Sasha Levin

From: Guido Kiener <guido.kiener@rohde-schwarz.com>

[ Upstream commit 9a83190300867fb024d53f47c31088e34188efc1 ]

Fix uninitialized symbol 'actual' in function usbtmc_ioctl_clear.

When symbol 'actual' is not initialized and usb_bulk_msg() fails,
the subsequent kernel debug message shows a random value.

Signed-off-by: Guido Kiener <guido.kiener@rohde-schwarz.com>
Fixes: dfee02ac4bce ("usb: usbtmc: Fix ioctl USBTMC_IOCTL_CLEAR")
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/usb/class/usbtmc.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c
index 3ce45c9e9d20d..e6a7c86b70f25 100644
--- a/drivers/usb/class/usbtmc.c
+++ b/drivers/usb/class/usbtmc.c
@@ -1016,6 +1016,7 @@ usbtmc_clear_check_status:
 		do {
 			dev_dbg(dev, "Reading from bulk in EP\n");
 
+			actual = 0;
 			rv = usb_bulk_msg(data->usb_dev,
 					  usb_rcvbulkpipe(data->usb_dev,
 							  data->bulk_in),
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 417/422] fuse: use READ_ONCE on congestion_threshold and max_background
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (415 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 416/422] usb: usbtmc: uninitialized symbol actual in usbtmc_ioctl_clear Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 418/422] IB/iser: Fix possible NULL deref at iser_inv_desc() Greg Kroah-Hartman
                   ` (8 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Kirill Tkhai, Miklos Szeredi, Sasha Levin

From: Kirill Tkhai <ktkhai@virtuozzo.com>

[ Upstream commit 2a23f2b8adbe4bd584f936f7ac17a99750eed9d7 ]

Since they are of unsigned int type, it's allowed to read them
unlocked during reporting to userspace. Let's underline this fact
with READ_ONCE() macroses.

Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/fuse/control.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/fuse/control.c b/fs/fuse/control.c
index 0b694655d9880..acc35819aae64 100644
--- a/fs/fuse/control.c
+++ b/fs/fuse/control.c
@@ -107,7 +107,7 @@ static ssize_t fuse_conn_max_background_read(struct file *file,
 	if (!fc)
 		return 0;
 
-	val = fc->max_background;
+	val = READ_ONCE(fc->max_background);
 	fuse_conn_put(fc);
 
 	return fuse_conn_limit_read(file, buf, len, ppos, val);
@@ -144,7 +144,7 @@ static ssize_t fuse_conn_congestion_threshold_read(struct file *file,
 	if (!fc)
 		return 0;
 
-	val = fc->congestion_threshold;
+	val = READ_ONCE(fc->congestion_threshold);
 	fuse_conn_put(fc);
 
 	return fuse_conn_limit_read(file, buf, len, ppos, val);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 418/422] IB/iser: Fix possible NULL deref at iser_inv_desc()
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (416 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 417/422] fuse: use READ_ONCE on congestion_threshold and max_background Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 419/422] media: ov2680: fix null dereference at power on Greg Kroah-Hartman
                   ` (7 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Israel Rukshin, Max Gurtovoy,
	Sagi Grimberg, Jason Gunthorpe, Sasha Levin

From: Israel Rukshin <israelr@mellanox.com>

[ Upstream commit 65f07f5a09dacf3b60619f196f096ea3671a5eda ]

In case target remote invalidates bogus rkey and signature is not used,
pi_ctx is NULL deref.

The commit also fails the connection on bogus remote invalidation.

Fixes: 59caaed7a72a ("IB/iser: Support the remote invalidation exception")
Signed-off-by: Israel Rukshin <israelr@mellanox.com>
Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/ulp/iser/iser_initiator.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c b/drivers/infiniband/ulp/iser/iser_initiator.c
index 2f6388596f886..96af06cfe0afd 100644
--- a/drivers/infiniband/ulp/iser/iser_initiator.c
+++ b/drivers/infiniband/ulp/iser/iser_initiator.c
@@ -589,13 +589,19 @@ void iser_login_rsp(struct ib_cq *cq, struct ib_wc *wc)
 	ib_conn->post_recv_buf_count--;
 }
 
-static inline void
+static inline int
 iser_inv_desc(struct iser_fr_desc *desc, u32 rkey)
 {
-	if (likely(rkey == desc->rsc.mr->rkey))
+	if (likely(rkey == desc->rsc.mr->rkey)) {
 		desc->rsc.mr_valid = 0;
-	else if (likely(rkey == desc->pi_ctx->sig_mr->rkey))
+	} else if (likely(desc->pi_ctx && rkey == desc->pi_ctx->sig_mr->rkey)) {
 		desc->pi_ctx->sig_mr_valid = 0;
+	} else {
+		iser_err("Bogus remote invalidation for rkey %#x\n", rkey);
+		return -EINVAL;
+	}
+
+	return 0;
 }
 
 static int
@@ -623,12 +629,14 @@ iser_check_remote_inv(struct iser_conn *iser_conn,
 
 			if (iser_task->dir[ISER_DIR_IN]) {
 				desc = iser_task->rdma_reg[ISER_DIR_IN].mem_h;
-				iser_inv_desc(desc, rkey);
+				if (unlikely(iser_inv_desc(desc, rkey)))
+					return -EINVAL;
 			}
 
 			if (iser_task->dir[ISER_DIR_OUT]) {
 				desc = iser_task->rdma_reg[ISER_DIR_OUT].mem_h;
-				iser_inv_desc(desc, rkey);
+				if (unlikely(iser_inv_desc(desc, rkey)))
+					return -EINVAL;
 			}
 		} else {
 			iser_err("failed to get task for itt=%d\n", hdr->itt);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 419/422] media: ov2680: fix null dereference at power on
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (417 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 418/422] IB/iser: Fix possible NULL deref at iser_inv_desc() Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 420/422] s390/vdso: correct vdso mapping for compat tasks Greg Kroah-Hartman
                   ` (6 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Rui Miguel Silva, Sakari Ailus,
	Mauro Carvalho Chehab, Sasha Levin

From: Rui Miguel Silva <rui.silva@linaro.org>

[ Upstream commit c45fbdf24c61a7b7a37f1b3bbd46f054637a3627 ]

Swapping the order between v4l2 subdevice registration and checking chip
id in b7a417628abf ("media: ov2680: don't register the v4l2 subdevice
before checking chip ID") makes the mode restore to use the sensor
controls before they are set, so move the mode restore call to s_power
after the handler setup for controls is done.

This remove also the need for the error code path in power on function.

Fixes: b7a417628abf ("media: ov2680: don't register the v4l2 subdevice before checking chip ID")

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/media/i2c/ov2680.c | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/drivers/media/i2c/ov2680.c b/drivers/media/i2c/ov2680.c
index 3ccd584568fb5..d8798fb714ba8 100644
--- a/drivers/media/i2c/ov2680.c
+++ b/drivers/media/i2c/ov2680.c
@@ -568,10 +568,6 @@ static int ov2680_power_on(struct ov2680_dev *sensor)
 	if (ret < 0)
 		return ret;
 
-	ret = ov2680_mode_restore(sensor);
-	if (ret < 0)
-		goto disable;
-
 	sensor->is_enabled = true;
 
 	/* Set clock lane into LP-11 state */
@@ -580,12 +576,6 @@ static int ov2680_power_on(struct ov2680_dev *sensor)
 	ov2680_stream_disable(sensor);
 
 	return 0;
-
-disable:
-	dev_err(dev, "failed to enable sensor: %d\n", ret);
-	ov2680_power_off(sensor);
-
-	return ret;
 }
 
 static int ov2680_s_power(struct v4l2_subdev *sd, int on)
@@ -606,6 +596,8 @@ static int ov2680_s_power(struct v4l2_subdev *sd, int on)
 		ret = v4l2_ctrl_handler_setup(&sensor->ctrls.handler);
 		if (ret < 0)
 			return ret;
+
+		ret = ov2680_mode_restore(sensor);
 	}
 
 	return ret;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 420/422] s390/vdso: correct vdso mapping for compat tasks
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (418 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 419/422] media: ov2680: fix null dereference at power on Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 421/422] net: phy: mdio-bcm-unimac: mark PM functions as __maybe_unused Greg Kroah-Hartman
                   ` (5 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Stefan Liebler, Heiko Carstens,
	Vasily Gorbik, Martin Schwidefsky, Sasha Levin

From: Vasily Gorbik <gor@linux.ibm.com>

[ Upstream commit 190f056fba230abee80712eb810939ef9a8c462f ]

While "s390/vdso: avoid 64-bit vdso mapping for compat tasks" fixed
64-bit vdso mapping for compat tasks under gdb it introduced another
problem. "compat_mm" flag is not inherited during fork and when
31-bit process forks a child (but does not perform exec) it ends up
with 64-bit vdso. To address that, init_new_context (which is called
during fork and exec) now initialize compat_mm based on thread TIF_31BIT
flag. Later compat_mm is adjusted in arch_setup_additional_pages, which
is called during exec.

Fixes: d1befa65823e ("s390/vdso: avoid 64-bit vdso mapping for compat tasks")
Reported-by: Stefan Liebler <stli@linux.ibm.com>
Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: <stable@vger.kernel.org> # v4.20+
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/s390/include/asm/mmu_context.h | 2 +-
 arch/s390/kernel/vdso.c             | 5 ++---
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/arch/s390/include/asm/mmu_context.h b/arch/s390/include/asm/mmu_context.h
index e4462202200d7..8d04e6f3f7964 100644
--- a/arch/s390/include/asm/mmu_context.h
+++ b/arch/s390/include/asm/mmu_context.h
@@ -25,7 +25,7 @@ static inline int init_new_context(struct task_struct *tsk,
 	atomic_set(&mm->context.flush_count, 0);
 	mm->context.gmap_asce = 0;
 	mm->context.flush_mm = 0;
-	mm->context.compat_mm = 0;
+	mm->context.compat_mm = test_thread_flag(TIF_31BIT);
 #ifdef CONFIG_PGSTE
 	mm->context.alloc_pgste = page_table_allocate_pgste ||
 		test_thread_flag(TIF_PGSTE) ||
diff --git a/arch/s390/kernel/vdso.c b/arch/s390/kernel/vdso.c
index ec31b48a42a52..7ab7d256d1eb7 100644
--- a/arch/s390/kernel/vdso.c
+++ b/arch/s390/kernel/vdso.c
@@ -224,10 +224,9 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
 
 	vdso_pages = vdso64_pages;
 #ifdef CONFIG_COMPAT
-	if (is_compat_task()) {
+	mm->context.compat_mm = is_compat_task();
+	if (mm->context.compat_mm)
 		vdso_pages = vdso32_pages;
-		mm->context.compat_mm = 1;
-	}
 #endif
 	/*
 	 * vDSO has a problem and was disabled, just don't "enable" it for
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 421/422] net: phy: mdio-bcm-unimac: mark PM functions as __maybe_unused
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (419 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 420/422] s390/vdso: correct vdso mapping for compat tasks Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  5:20 ` [PATCH 4.19 422/422] memfd: Use radix_tree_deref_slot_protected to avoid the warning Greg Kroah-Hartman
                   ` (4 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Arnd Bergmann, David S. Miller, Sasha Levin

From: Arnd Bergmann <arnd@arndb.de>

[ Upstream commit 9b97123a584f60a5bca5a2663485768a1f6cd0a4 ]

The newly added runtime-pm support causes a harmless warning
when CONFIG_PM is disabled:

drivers/net/phy/mdio-bcm-unimac.c:330:12: error: 'unimac_mdio_resume' defined but not used [-Werror=unused-function]
 static int unimac_mdio_resume(struct device *d)
drivers/net/phy/mdio-bcm-unimac.c:321:12: error: 'unimac_mdio_suspend' defined but not used [-Werror=unused-function]
 static int unimac_mdio_suspend(struct device *d)

Marking the functions as __maybe_unused is the easiest workaround
and avoids adding #ifdef checks.

Fixes: b78ac6ecd1b6 ("net: phy: mdio-bcm-unimac: Allow configuring MDIO clock divider")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/phy/mdio-bcm-unimac.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/phy/mdio-bcm-unimac.c b/drivers/net/phy/mdio-bcm-unimac.c
index 80b9583eaa952..df75efa96a7d9 100644
--- a/drivers/net/phy/mdio-bcm-unimac.c
+++ b/drivers/net/phy/mdio-bcm-unimac.c
@@ -318,7 +318,7 @@ static int unimac_mdio_remove(struct platform_device *pdev)
 	return 0;
 }
 
-static int unimac_mdio_suspend(struct device *d)
+static int __maybe_unused unimac_mdio_suspend(struct device *d)
 {
 	struct unimac_mdio_priv *priv = dev_get_drvdata(d);
 
@@ -327,7 +327,7 @@ static int unimac_mdio_suspend(struct device *d)
 	return 0;
 }
 
-static int unimac_mdio_resume(struct device *d)
+static int __maybe_unused unimac_mdio_resume(struct device *d)
 {
 	struct unimac_mdio_priv *priv = dev_get_drvdata(d);
 	int ret;
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 478+ messages in thread

* [PATCH 4.19 422/422] memfd: Use radix_tree_deref_slot_protected to avoid the warning.
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (420 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 421/422] net: phy: mdio-bcm-unimac: mark PM functions as __maybe_unused Greg Kroah-Hartman
@ 2019-11-19  5:20 ` Greg Kroah-Hartman
  2019-11-19  8:54 ` [PATCH 4.19 000/422] 4.19.85-stable review Chris Paterson
                   ` (3 subsequent siblings)
  425 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19  5:20 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, zhong jiang, Matthew Wilcox (Oracle)

From: zhong jiang <zhongjiang@huawei.com>

The commit 99b45e7a1ba1 ("memfd: Fix locking when tagging pins")
introduces the following warning messages.

*WARNING: suspicious RCU usage in memfd_wait_for_pins*

It is because we still use radix_tree_deref_slot without read_rcu_lock.
We should use radix_tree_deref_slot_protected instead in the case.

Cc: stable@vger.kernel.org
Fixes: 99b45e7a1ba1 ("memfd: Fix locking when tagging pins")
Signed-off-by: zhong jiang <zhongjiang@huawei.com>
Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 mm/memfd.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/mm/memfd.c
+++ b/mm/memfd.c
@@ -41,7 +41,7 @@ static void memfd_tag_pins(struct addres
 
 	xa_lock_irq(&mapping->i_pages);
 	radix_tree_for_each_slot(slot, &mapping->i_pages, &iter, start) {
-		page = radix_tree_deref_slot(slot);
+		page = radix_tree_deref_slot_protected(slot, &mapping->i_pages.xa_lock);
 		if (!page || radix_tree_exception(page)) {
 			if (radix_tree_deref_retry(page)) {
 				slot = radix_tree_iter_retry(&iter);



^ permalink raw reply	[flat|nested] 478+ messages in thread

* RE: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (421 preceding siblings ...)
  2019-11-19  5:20 ` [PATCH 4.19 422/422] memfd: Use radix_tree_deref_slot_protected to avoid the warning Greg Kroah-Hartman
@ 2019-11-19  8:54 ` Chris Paterson
  2019-11-19 12:29   ` Greg Kroah-Hartman
  2019-11-19  9:18 ` Jon Hunter
                   ` (2 subsequent siblings)
  425 siblings, 1 reply; 478+ messages in thread
From: Chris Paterson @ 2019-11-19  8:54 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel, cip-dev
  Cc: torvalds, akpm, linux, shuah, patches, ben.hutchings,
	lkft-triage, stable

Hello Greg, all,

> From: stable-owner@vger.kernel.org <stable-owner@vger.kernel.org> On
> Behalf Of Greg Kroah-Hartman
> Sent: 19 November 2019 05:13
> 
> This is the start of the stable review cycle for the 4.19.85 release.
> There are 422 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.

I'm seeing some build issues with module compilation with this release (1b1960cc Linux 4.19.85-rc1), I also saw them with the previous two versions of Linux 4.19.85-rc1 (cd21ecdb and 1fd0ac64).

Full log available on GitLab [0]. Build conf [1].
[0] https://gitlab.com/cip-playground/linux-stable-rc-ci/-/jobs/354591285
[1] https://gitlab.com/cip-playground/linux-stable-rc-ci/-/jobs/354591285/artifacts/file/output/4.19.85-rc1_1b1960cc7/x86/siemens_iot2000.config/config/.config

Main error below:

3907   CC [M]  drivers/net/ethernet/mellanox/mlx4/main.o
3908   LD [M]  fs/ntfs/ntfs.o
3909   CC [M]  drivers/net/ethernet/intel/i40evf/i40e_txrx.o
3910   CC [M]  drivers/usb/musb/musb_core.o
3911   CC [M]  drivers/net/ethernet/nvidia/forcedeth.o
3912   CC [M]  fs/udf/balloc.o
3913   CC [M]  drivers/net/ethernet/intel/fm10k/fm10k_debugfs.o
3914   CC [M]  fs/udf/dir.o
3915   CC [M]  drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.o
3916   CC [M]  drivers/net/ethernet/intel/i40e/i40e_ptp.o
3917 drivers/net/ethernet/mellanox/mlx4/main.c: In function 'mlx4_init_one':
3918 drivers/net/ethernet/mellanox/mlx4/main.c:3985:2: error: implicit declaration of function 'devlink_reload_enable'; did you mean 'devlink_region_create'? [-Werror=implicit-function-declaration]
3919   devlink_reload_enable(devlink);
3920   ^~~~~~~~~~~~~~~~~~~~~
3921   devlink_region_create
3922   CC [M]  drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.o
3923 drivers/net/ethernet/mellanox/mlx4/main.c: In function 'mlx4_remove_one':
3924 drivers/net/ethernet/mellanox/mlx4/main.c:4097:2: error: implicit declaration of function 'devlink_reload_disable'; did you mean 'devlink_region_destroy'? [-Werror=implicit-function-declaration]
3925   devlink_reload_disable(devlink);
3926   ^~~~~~~~~~~~~~~~~~~~~~
3927   devlink_region_destroy
3928   CC [M]  drivers/net/ethernet/packetengines/hamachi.o
3929   CC [M]  fs/udf/file.o
3930   LD [M]  drivers/net/ethernet/intel/fm10k/fm10k.o

I haven't tried to trace the issue further yet, sorry.

Kind regards, Chris


> 
> Responses should be made by Thu, 21 Nov 2019 05:02:35 +0000.
> Anything received after that time might be too late.
> 
> The whole patch series can be found in one patch at:
> 	https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-
> 4.19.85-rc1.gz
> or in the git tree and branch at:
> 	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> linux-4.19.y
> and the diffstat can be found below.
> 
> thanks,
> 
> greg k-h
> 
> -------------
> Pseudo-Shortlog of commits:
> 
> Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>     Linux 4.19.85-rc1
> 
> zhong jiang <zhongjiang@huawei.com>
>     memfd: Use radix_tree_deref_slot_protected to avoid the warning.
> 
> Arnd Bergmann <arnd@arndb.de>
>     net: phy: mdio-bcm-unimac: mark PM functions as __maybe_unused
> 
> Vasily Gorbik <gor@linux.ibm.com>
>     s390/vdso: correct vdso mapping for compat tasks
> 
> Rui Miguel Silva <rui.silva@linaro.org>
>     media: ov2680: fix null dereference at power on
> 
> Israel Rukshin <israelr@mellanox.com>
>     IB/iser: Fix possible NULL deref at iser_inv_desc()
> 
> Kirill Tkhai <ktkhai@virtuozzo.com>
>     fuse: use READ_ONCE on congestion_threshold and max_background
> 
> Guido Kiener <guido.kiener@rohde-schwarz.com>
>     usb: usbtmc: uninitialized symbol 'actual' in usbtmc_ioctl_clear
> 
> Chunfeng Yun <chunfeng.yun@mediatek.com>
>     usb: xhci-mtk: fix ISOC error when interval is zero
> 
> Tan Hu <tan.hu@zte.com.cn>
>     netfilter: masquerade: don't flush all conntracks if only one address deleted on
> device
> 
> Alexandre Belloni <alexandre.belloni@bootlin.com>
>     rtc: armada38x: fix possible race condition
> 
> Alexandre Belloni <alexandre.belloni@bootlin.com>
>     rtc: tx4939: fixup nvmem name and register size
> 
> Alexandre Belloni <alexandre.belloni@bootlin.com>
>     rtc: isl1208: avoid possible sysfs race
> 
> Rob Herring <robh@kernel.org>
>     ARM: dts: lpc32xx: Fix SPI controller node names
> 
> Rob Herring <robh@kernel.org>
>     arm64: dts: lg: Fix SPI controller node names
> 
> Rob Herring <robh@kernel.org>
>     arm64: dts: amd: Fix SPI bus warnings
> 
> Finn Thain <fthain@telegraphics.com.au>
>     scsi: NCR5380: Check for bus reset
> 
> Finn Thain <fthain@telegraphics.com.au>
>     scsi: NCR5380: Handle BUS FREE during reselection
> 
> Finn Thain <fthain@telegraphics.com.au>
>     scsi: NCR5380: Don't call dsprintk() following reselection interrupt
> 
> Finn Thain <fthain@telegraphics.com.au>
>     scsi: NCR5380: Don't clear busy flag when abort fails
> 
> Finn Thain <fthain@telegraphics.com.au>
>     scsi: NCR5380: Check for invalid reselection target
> 
> Finn Thain <fthain@telegraphics.com.au>
>     scsi: NCR5380: Use DRIVER_SENSE to indicate valid sense data
> 
> Finn Thain <fthain@telegraphics.com.au>
>     scsi: NCR5380: Withhold disconnect privilege for REQUEST SENSE
> 
> Finn Thain <fthain@telegraphics.com.au>
>     scsi: NCR5380: Have NCR5380_select() return a bool
> 
> Hannes Reinecke <hare@suse.com>
>     scsi: NCR5380: Clear all unissued commands on host reset
> 
> Ilan Peer <ilan.peer@intel.com>
>     iwlwifi: mvm: Allow TKIP for AP mode
> 
> Sara Sharon <sara.sharon@intel.com>
>     iwlwifi: mvm: use correct FIFO length
> 
> Golan Ben Ami <golan.ben.ami@intel.com>
>     iwlwifi: pcie: fit reclaim msg to MAX_MSG_LEN
> 
> Johannes Berg <johannes.berg@intel.com>
>     iwlwifi: pcie: gen2: build A-MSDU only for GSO
> 
> Johannes Berg <johannes.berg@intel.com>
>     iwlwifi: api: annotate compressed BA notif array sizes
> 
> Sara Sharon <sara.sharon@intel.com>
>     iwlwifi: pcie: read correct prph address for newer devices
> 
> Erel Geron <erelx.geron@intel.com>
>     iwlwifi: fix non_shared_ant for 22000 devices
> 
> Emmanuel Grumbach <emmanuel.grumbach@intel.com>
>     iwlwifi: dbg: don't crash if the firmware crashes in the middle of a debug dump
> 
> Dan Aloni <dan@kernelim.com>
>     crypto: fix a memory leak in rsa-kcs1pad's encryption mode
> 
> Christoph Manszewski <c.manszewski@samsung.com>
>     crypto: s5p-sss: Fix Fix argument list alignment
> 
> Christoph Manszewski <c.manszewski@samsung.com>
>     crypto: s5p-sss: Fix race in error handling
> 
> Dexuan Cui <decui@microsoft.com>
>     x86/hyperv: Suppress "PCI: Fatal: No config space access function found"
> 
> Sanjay Kumar Konduri <sanjay.konduri@redpinesignals.com>
>     Bluetooth: btrsi: fix bt tx timeout issue
> 
> Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
>     Bluetooth: L2CAP: Detect if remote is not able to use the whole MPS
> 
> Balakrishna Godavarthi <bgodavar@codeaurora.org>
>     Bluetooth: hci_serdev: clear HCI_UART_PROTO_READY to avoid closing proto
> races
> 
> Stuart Hayes <stuart.w.hayes@gmail.com>
>     firmware: dell_rbu: Make payload memory uncachable
> 
> Rob Herring <robh@kernel.org>
>     ARM: dts: realview: Fix SPI controller node names
> 
> Justin Ernst <justin.ernst@hpe.com>
>     EDAC: Raise the maximum number of memory controllers
> 
> Arnd Bergmann <arnd@arndb.de>
>     RDMA: Fix dependencies for rdma_user_mmap_io
> 
> Chao Yu <yuchao0@huawei.com>
>     f2fs: mark inode dirty explicitly in recover_inode()
> 
> Chao Yu <yuchao0@huawei.com>
>     f2fs: fix to recover inode's project id during POR
> 
> Jaegeuk Kim <jaegeuk@kernel.org>
>     f2fs: update i_size after DIO completion
> 
> Keith Busch <keith.busch@intel.com>
>     PCI/ERR: Run error recovery callbacks for all affected devices
> 
> YueHaibing <yuehaibing@huawei.com>
>     net: faraday: fix return type of ndo_start_xmit function
> 
> YueHaibing <yuehaibing@huawei.com>
>     net: smsc: fix return type of ndo_start_xmit function
> 
> Marc Dietrich <marvin24@gmx.de>
>     ARM: dts: paz00: fix wakeup gpio keycode
> 
> Marcel Ziswiler <marcel.ziswiler@toradex.com>
>     ARM: tegra: colibri_t30: fix mcp2515 can controller interrupt polarity
> 
> Marcel Ziswiler <marcel.ziswiler@toradex.com>
>     ARM: tegra: apalis_t30: fix mcp2515 can controller interrupt polarity
> 
> Marcel Ziswiler <marcel.ziswiler@toradex.com>
>     ARM: tegra: apalis_t30: fix mmc1 cmd pull-up
> 
> Marcel Ziswiler <marcel.ziswiler@toradex.com>
>     ARM: dts: tegra20: restore address order
> 
> Marcel Ziswiler <marcel.ziswiler@toradex.com>
>     ARM: dts: tegra30: fix xcvr-setup-use-fuses
> 
> Thierry Reding <treding@nvidia.com>
>     arm64: tegra: I2C on Tegra194 is not compatible with Tegra114
> 
> Fabio Estevam <festevam@gmail.com>
>     ARM: dts: imx51-zii-rdu1: Fix the rtc compatible string
> 
> Rob Herring <robh@kernel.org>
>     arm64: dts: fsl: Fix I2C and SPI bus warnings
> 
> Martin Blumenstingl <martin.blumenstingl@googlemail.com>
>     ARM: dts: meson8b: odroidc1: enable the SAR ADC
> 
> Hauke Mehrtens <hauke@hauke-m.de>
>     phy: lantiq: Fix compile warning
> 
> Chengguang Xu <cgxu519@gmx.com>
>     f2fs: fix remount problem of option io_bits
> 
> Jason Yan <yanaijie@huawei.com>
>     scsi: libsas: always unregister the old device if going to discover new
> 
> Nathan Chancellor <natechancellor@gmail.com>
>     iw_cxgb4: Use proper enumerated type in c4iw_bar2_addrs
> 
> Alex Williamson <alex.williamson@redhat.com>
>     vfio/pci: Mask buggy SR-IOV VF INTx support
> 
> Li Qiang <liq3ea@gmail.com>
>     vfio/pci: Fix potential memory leak in vfio_msi_cap_len
> 
> Stephen Hemminger <stephen@networkplumber.org>
>     vmbus: keep pointer to ring buffer page
> 
> zhong jiang <zhongjiang@huawei.com>
>     misc: genwqe: should return proper error value.
> 
> Laura Abbott <labbott@redhat.com>
>     misc: kgdbts: Fix restrict error
> 
> Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
>     silmbus: ngd: register controller after power up.
> 
> Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
>     slimbus: ngd: return proper error code instead of zero
> 
> Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
>     slimbus: ngd: register ngd driver only once.
> 
> Suzuki K Poulose <suzuki.poulose@arm.com>
>     coresight: dynamic-replicator: Handle multiple connections
> 
> Leo Yan <leo.yan@linaro.org>
>     coresight: tmc: Fix byte-address alignment for RRP
> 
> Tomasz Nowicki <tnowicki@caviumnetworks.com>
>     coresight: etm4x: Configure EL2 exception level when kernel is running in HYP
> 
> Suzuki K Poulose <suzuki.poulose@arm.com>
>     coresight: tmc-etr: Handle driver mode specific ETR buffers
> 
> Suzuki K Poulose <suzuki.poulose@arm.com>
>     coresight: perf: Disable trace path upon source error
> 
> Suzuki K Poulose <suzuki.poulose@arm.com>
>     coresight: perf: Fix per cpu path management
> 
> Suzuki K Poulose <suzuki.poulose@arm.com>
>     coresight: Fix handling of sinks
> 
> zhong jiang <zhongjiang@huawei.com>
>     coresight: Use ERR_CAST instead of ERR_PTR
> 
> Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>     usb: gadget: uvc: Only halt video streaming endpoint in bulk mode
> 
> Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>     usb: gadget: uvc: Factor out video USB request queueing
> 
> Anson Huang <Anson.Huang@nxp.com>
>     ARM: dts: imx6ull: update vdd_soc voltage for 900MHz operating point
> 
> Andreas Kemnade <andreas@kemnade.info>
>     phy: phy-twl4030-usb: fix denied runtime access
> 
> Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
>     phy: renesas: rcar-gen3-usb2: fix vbus_ctrl for role sysfs
> 
> Florian Fainelli <f.fainelli@gmail.com>
>     phy: brcm-sata: allow PHY_BRCM_SATA driver to be built for DSL SoCs
> 
> zhong jiang <zhongjiang@huawei.com>
>     ARM: at91: pm: call put_device instead of of_node_put in
> at91_pm_config_ws
> 
> Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
>     gpiolib: Fix gpio_direction_* for single direction GPIOs
> 
> Brendan Higgins <brendanhiggins@google.com>
>     i2c: aspeed: fix invalid clock parameters for very large divisors
> 
> Marek Szyprowski <m.szyprowski@samsung.com>
>     ARM: dts: exynos: Correct audio subsystem parent clock on Peach
> Chromebooks
> 
> Paul Elder <paul.elder@ideasonboard.com>
>     usb: gadget: uvc: configfs: Sort frame intervals upon writing
> 
> Joel Pepper <joel.pepper@rwth-aachen.de>
>     usb: gadget: uvc: configfs: Prevent format changes after linking header
> 
> Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>     usb: gadget: uvc: configfs: Drop leaked references to config items
> 
> Heiko Stuebner <heiko@sntech.de>
>     ARM: dts: rockchip: explicitly set vcc_sd0 pin to gpio on rk3188-radxarock
> 
> Nathan Chancellor <natechancellor@gmail.com>
>     media: davinci: Fix implicit enum conversion warning
> 
> Brad Love <brad@nextdimension.cc>
>     media: au0828: Fix incorrect error messages
> 
> Jia-Ju Bai <baijiaju1990@gmail.com>
>     media: pci: ivtv: Fix a sleep-in-atomic-context bug in ivtv_yuv_init()
> 
> Arnd Bergmann <arnd@arndb.de>
>     media: imx: work around false-positive warning, again
> 
> Petr Machata <petrm@mellanox.com>
>     mlxsw: Make MLXSW_SP1_FWREV_MINOR a hard requirement
> 
> Vicente Bergas <vicencb@gmail.com>
>     arm64: dts: rockchip: Fix microSD in rk3399 sapphire board
> 
> Dengcheng Zhu <dzhu@wavecomp.com>
>     MIPS: kexec: Relax memory restriction
> 
> Qiuxu Zhuo <qiuxu.zhuo@intel.com>
>     EDAC: Correct DIMM capacity unit symbol
> 
> Matthew Whitehead <tedheadster@gmail.com>
>     x86/CPU: Change query logic so CPUID is enabled before testing
> 
> Matthew Whitehead <tedheadster@gmail.com>
>     x86/CPU: Use correct macros for Cyrix calls
> 
> YueHaibing <yuehaibing@huawei.com>
>     net: freescale: fix return type of ndo_start_xmit function
> 
> YueHaibing <yuehaibing@huawei.com>
>     net: micrel: fix return type of ndo_start_xmit function
> 
> Florian Fainelli <f.fainelli@gmail.com>
>     net: phy: mdio-bcm-unimac: Allow configuring MDIO clock divider
> 
> Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
>     samples/bpf: fix compilation failure
> 
> Keith Busch <keith.busch@intel.com>
>     PCI/ERR: Use slot reset if available
> 
> Keith Busch <keith.busch@intel.com>
>     PCI/AER: Don't read upstream ports below fatal errors
> 
> Keith Busch <keith.busch@intel.com>
>     PCI/AER: Take reference on error devices
> 
> Shahed Shaikh <Shahed.Shaikh@cavium.com>
>     bnx2x: Ignore bandwidth attention in single function mode
> 
> Rob Herring <robh@kernel.org>
>     ARM: dts: stm32: Fix SPI controller node names
> 
> Baruch Siach <baruch@tkos.co.il>
>     ARM: dts: clearfog: fix sdhci supply property name
> 
> Yannick Fertré <yannick.fertre@st.com>
>     ARM: dts: stm32: enable display on stm32mp157c-ev1 board
> 
> Borislav Petkov <bp@suse.de>
>     x86/mce-inject: Reset injection struct after injection
> 
> Rob Herring <robh@kernel.org>
>     ARM: dts: marvell: Fix SPI and I2C bus warnings
> 
> Stefan Agner <stefan@agner.ch>
>     crypto: arm/crc32 - avoid warning when compiling with Clang
> 
> Stefan Agner <stefan@agner.ch>
>     cpufeature: avoid warning when compiling with clang
> 
> Eric Biggers <ebiggers@google.com>
>     crypto: chacha20 - Fix chacha20_block() keystream alignment (again)
> 
> Nathan Chancellor <natechancellor@gmail.com>
>     spi: pic32: Use proper enum in dmaengine_prep_slave_rg
> 
> Rob Herring <robh@kernel.org>
>     ARM: dts: ste: Fix SPI controller node names
> 
> Linus Walleij <linus.walleij@linaro.org>
>     ARM: dts: ux500: Fix LCDA clock line muxing
> 
> Geert Uytterhoeven <geert+renesas@glider.be>
>     ARM: dts: ux500: Correct SCU unit address
> 
> Chao Yu <yuchao0@huawei.com>
>     f2fs: fix to recover inode's uid/gid during POR
> 
> Jaegeuk Kim <jaegeuk@kernel.org>
>     f2fs: avoid infinite loop in f2fs_alloc_nid
> 
> Rob Herring <robh@kernel.org>
>     ARM: dts: ti: Fix SPI and I2C bus warnings
> 
> Grygorii Strashko <grygorii.strashko@ti.com>
>     ARM: dts: am335x-evm: fix number of cpsw
> 
> Keith Busch <keith.busch@intel.com>
>     PCI: portdrv: Initialize service drivers directly
> 
> Petr Machata <petrm@mellanox.com>
>     mlxsw: spectrum: Init shaper for TCs 8..15
> 
> Takashi Iwai <tiwai@suse.de>
>     brcmsmac: Use kvmalloc() for ucode allocations
> 
> Arend van Spriel <arend.vanspriel@broadcom.com>
>     brcmfmac: increase buffer for obtaining firmware capabilities
> 
> Vasily Gorbik <gor@linux.ibm.com>
>     s390/vdso: correct CFI annotations of vDSO functions
> 
> Vasily Gorbik <gor@linux.ibm.com>
>     s390/vdso: avoid 64-bit vdso mapping for compat tasks
> 
> Halil Pasic <pasic@linux.ibm.com>
>     s390/zcrypt: enable AP bus scan without a valid default domain
> 
> Guido Kiener <guido@kiener-muenchen.de>
>     usb: usbtmc: Fix ioctl USBTMC_IOCTL_ABORT_BULK_OUT
> 
> Loic Poulain <loic.poulain@linaro.org>
>     usb: chipidea: Fix otg event handler
> 
> Nicolas Adell <nicolas.adell@actia.fr>
>     usb: chipidea: imx: enable OTG overcurrent in case USB subsystem is already
> started
> 
> Jakub Kicinski <jakub.kicinski@netronome.com>
>     nfp: provide a better warning when ring allocation fails
> 
> Jian Shen <shenjian15@huawei.com>
>     net: hns3: Fix parameter type for q_id in hclge_tm_q_to_qs_map_cfg()
> 
> Jian Shen <shenjian15@huawei.com>
>     net: hns3: Fix client initialize state issue when roce client initialize failed
> 
> Jian Shen <shenjian15@huawei.com>
>     net: hns3: Clear client pointer when initialize client failed or unintialize finished
> 
> Jian Shen <shenjian15@huawei.com>
>     net: hns3: Fix cmdq registers initialization issue for vf
> 
> Fuyun Liang <liangfuyun1@huawei.com>
>     net: hns3: Fix for setting speed for phy failed problem
> 
> YueHaibing <yuehaibing@huawei.com>
>     net: sun: fix return type of ndo_start_xmit function
> 
> YueHaibing <yuehaibing@huawei.com>
>     net: amd: fix return type of ndo_start_xmit function
> 
> YueHaibing <yuehaibing@huawei.com>
>     net: broadcom: fix return type of ndo_start_xmit function
> 
> YueHaibing <yuehaibing@huawei.com>
>     net: xilinx: fix return type of ndo_start_xmit function
> 
> YueHaibing <yuehaibing@huawei.com>
>     net: toshiba: fix return type of ndo_start_xmit function
> 
> YueHaibing <yuehaibing@huawei.com>
>     net: marvell: fix return type of ndo_start_xmit function
> 
> Antoine Tenart <antoine.tenart@bootlin.com>
>     net: mvpp2: fix the number of queues per cpu for PPv2.2
> 
> Andreas Kemnade <andreas@kemnade.info>
>     power: supply: twl4030_charger: disable eoc interrupt on linear charge
> 
> Andreas Kemnade <andreas@kemnade.info>
>     power: supply: twl4030_charger: fix charging current out-of-bounds
> 
> Rob Herring <robh@kernel.org>
>     libfdt: Ensure INT_MAX is defined in libfdt_env.h
> 
> Rob Herring <robh@kernel.org>
>     of/unittest: Fix I2C bus unit-address error
> 
> Viresh Kumar <viresh.kumar@linaro.org>
>     OPP: Protect dev_list with opp_table lock
> 
> Rob Herring <robh@kernel.org>
>     ARM: dts: atmel: Fix I2C and SPI bus warnings
> 
> Håkon Bugge <Haakon.Bugge@oracle.com>
>     RDMA/i40iw: Fix incorrect iterator type
> 
> Anton Blanchard <anton@samba.org>
>     powerpc: Fix duplicate const clang warning in user access code
> 
> Nathan Fontenot <nfont@linux.vnet.ibm.com>
>     powerpc/pseries: Disable CPU hotplug across migrations
> 
> Nathan Fontenot <nfont@linux.vnet.ibm.com>
>     powerpc/pseries/memory-hotplug: Only update DT once per memory DLPAR
> request
> 
> Nicholas Piggin <npiggin@gmail.com>
>     powerpc/64s/hash: Fix stab_rr off by one initialization
> 
> Breno Leitao <leitao@debian.org>
>     selftests/powerpc: Do not fail with reschedule
> 
> Breno Leitao <leitao@debian.org>
>     powerpc/iommu: Avoid derefence before pointer check
> 
> YueHaibing <yuehaibing@huawei.com>
>     net: ibm: fix return type of ndo_start_xmit function
> 
> YueHaibing <yuehaibing@huawei.com>
>     net: cavium: fix return type of ndo_start_xmit function
> 
> YueHaibing <yuehaibing@huawei.com>
>     net: hns3: fix return type of ndo_start_xmit function
> 
> YueHaibing <yuehaibing@huawei.com>
>     ipmi: fix return value of ipmi_set_my_LUN
> 
> Corey Minyard <cminyard@mvista.com>
>     ipmi:dmi: Ignore IPMI SMBIOS entries with a zero base address
> 
> Colin Ian King <colin.king@canonical.com>
>     ipmi_si: fix potential integer overflow on large shift
> 
> Meelis Roos <mroos@linux.ee>
>     ipmi_si_pci: fix NULL device in ipmi_si error message
> 
> Shuming Fan <shumingf@realtek.com>
>     ASoC: rt5682: Fix the boost volume at the begining of playback
> 
> Peter Shih <pihsun@chromium.org>
>     spi: mediatek: Don't modify spi_transfer when transfer.
> 
> Jonas Gorski <jonas.gorski@gmail.com>
>     spi/bcm63xx-hsspi: keep pll clk enabled
> 
> Yonghong Song <yhs@fb.com>
>     samples/bpf: fix a compilation failure
> 
> Kishon Vijay Abraham I <kishon@ti.com>
>     arm64: dts: ti: k3-am65: Change #address-cells and #size-cells of interconnect
> to 2
> 
> Douglas Anderson <dianders@chromium.org>
>     tty: serial: qcom_geni_serial: Fix serial when not used as console
> 
> Anton Vasilyev <vasilyev@ispras.ru>
>     serial: mxs-auart: Fix potential infinite loop
> 
> Marek Szyprowski <m.szyprowski@samsung.com>
>     serial: samsung: Enable baud clock for UART reset procedure in resume
> 
> Nava kishore Manne <nava.manne@xilinx.com>
>     serial: uartps: Fix suspend functionality
> 
> Rob Herring <robh@kernel.org>
>     ARM: dts: xilinx: Fix I2C and SPI bus warnings
> 
> Gustavo A. R. Silva <gustavo@embeddedor.com>
>     PCI: mediatek: Fix unchecked return value
> 
> Jia-Ju Bai <baijiaju1990@gmail.com>
>     net: socionext: Fix two sleep-in-atomic-context bugs in ave_rxfifo_reset()
> 
> Sinan Kaya <okaya@kernel.org>
>     PCI/ACPI: Correct error message for ASPM disabling
> 
> Javier Martinez Canillas <javierm@redhat.com>
>     media: ov2680: don't register the v4l2 subdevice before checking chip ID
> 
> Koji Matsuoka <koji.matsuoka.xm@renesas.com>
>     media: vsp1: Fix YCbCr planar formats pitch calculation
> 
> Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
>     media: vsp1: Fix vsp1_regs.h license header
> 
> Julian Wiedmann <jwi@linux.ibm.com>
>     s390/qeth: invoke softirqs after napi_schedule()
> 
> Julian Wiedmann <jwi@linux.ibm.com>
>     s390/qeth: uninstall IRQ handler on device removal
> 
> Dan Carpenter <dan.carpenter@oracle.com>
>     ath9k: Fix a locking bug in ath9k_add_interface()
> 
> Florian Westphal <fw@strlen.de>
>     netfilter: nf_tables: avoid BUG_ON usage
> 
> Hans de Goede <hdegoede@redhat.com>
>     ACPI / LPSS: Exclude I2C busses shared with PUNIT from pmc_atom_d3_mask
> 
> Rob Herring <robh@kernel.org>
>     arm64: dts: rockchip: Fix I2C bus unit-address error on rk3399-puma-haikou
> 
> Rob Herring <robh@kernel.org>
>     ARM: dts: rockchip: Fix erroneous SPI bus dtc warnings on rk3036
> 
> Vivek Gautam <vivek.gautam@codeaurora.org>
>     scsi: ufshcd: Fix NULL pointer dereference for in ufshcd_init
> 
> Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
>     ip_gre: fix parsing gre header in ipgre_err
> 
> Bernd Edlinger <bernd.edlinger@hotmail.de>
>     kernfs: Fix range checks in kernfs_get_target_path
> 
> Banajit Goswami <bgoswami@codeaurora.org>
>     component: fix loop condition to call unbind() if bind() fails
> 
> Tomasz Figa <tomasz.figa@gmail.com>
>     power: supply: max8998-charger: Fix platform data retrieval
> 
> Claudiu Beznea <claudiu.beznea@microchip.com>
>     power: reset: at91-poweroff: do not procede if at91_shdwc is allocated
> 
> Dan Carpenter <dan.carpenter@oracle.com>
>     power: supply: ab8500_fg: silence uninitialized variable warnings
> 
> Rob Herring <robh@kernel.org>
>     arm64: dts: meson: Fix erroneous SPI bus warnings
> 
> Paolo Valente <paolo.valente@linaro.org>
>     blok, bfq: do not plug I/O if all queues are weight-raised
> 
> Paolo Valente <paolo.valente@linaro.org>
>     block, bfq: inject other-queue I/O into seeky idle queues on NCQ flash
> 
> Hari Vyas <hari.vyas@broadcom.com>
>     arm64: fix for bad_mode() handler to always result in panic
> 
> Ganesh Goudar <ganeshgr@chelsio.com>
>     cxgb4: Fix endianness issue in t4_fwcache()
> 
> Sherry Yang <sherryy@android.com>
>     android: binder: no outgoing transaction when thread todo has transaction
> 
> Rob Herring <robh@kernel.org>
>     ARM: dts: sun9i: Fix I2C bus warnings
> 
> Ludovic Desroches <ludovic.desroches@microchip.com>
>     pinctrl: at91: don't use the same irqchip with multiple gpiochips
> 
> Rob Herring <robh@kernel.org>
>     ARM: dts: sunxi: Fix I2C bus warnings
> 
> Dinh Nguyen <dinguyen@kernel.org>
>     ARM: dts: socfpga: Fix I2C bus unit-address error
> 
> Alan Modra <amodra@gmail.com>
>     powerpc/vdso: Correct call frame information
> 
> Rob Herring <robh@kernel.org>
>     ARM: dts: aspeed: Fix I2C bus warnings
> 
> Rob Herring <robh@kernel.org>
>     ARM: dts: bcm: Fix SPI bus warnings
> 
> Rob Herring <robh@kernel.org>
>     arm64: dts: broadcom: Fix I2C and SPI bus warnings
> 
> Lina Iyer <ilina@codeaurora.org>
>     drivers: qcom: rpmh-rsc: clear wait_for_compl after use
> 
> Niklas Cassel <niklas.cassel@linaro.org>
>     soc: qcom: apr: Avoid string overflow
> 
> Niklas Cassel <niklas.cassel@linaro.org>
>     soc: qcom: wcnss_ctrl: Avoid string overflow
> 
> Douglas Anderson <dianders@chromium.org>
>     soc: qcom: geni: geni_se_clk_freq_match() should always accept multiples
> 
> Douglas Anderson <dianders@chromium.org>
>     soc: qcom: geni: Don't ignore clk_round_rate() errors in geni_se_clk_tbl_get()
> 
> Christian Lamparter <chunkeey@gmail.com>
>     ARM: dts: qcom: ipq4019: fix cpu0's qcom,saw2 reg value
> 
> Cong Wang <xiyou.wangcong@gmail.com>
>     llc: avoid blocking in llc_sap_close()
> 
> Dan Carpenter <dan.carpenter@oracle.com>
>     pinctrl: at91-pio4: fix has_config check in atmel_pctl_dt_subnode_to_map()
> 
> Geert Uytterhoeven <geert+renesas@glider.be>
>     arm64: dts: renesas: r8a77965: Fix clock/reset for usb2_phy1
> 
> Geert Uytterhoeven <geert+renesas@glider.be>
>     arm64: dts: renesas: r8a77965: Fix HS-USB compatible
> 
> Magnus Damm <damm+renesas@opensource.se>
>     arm64: dts: renesas: r8a77965: Attach the SYS-DMAC to the IPMMU
> 
> Kieran Bingham <kieran.bingham@ideasonboard.com>
>     arm64: dts: renesas: salvator-common: adv748x: Override secondary
> addresses
> 
> Takashi Iwai <tiwai@suse.de>
>     ALSA: intel8x0m: Register irq handler after register initializations
> 
> Neil Armstrong <narmstrong@baylibre.com>
>     arm64: dts: meson-axg: use the proper compatible for ethmac
> 
> Jerome Brunet <jbrunet@baylibre.com>
>     arm64: dts: meson: libretech: update board model
> 
> Andrew Lunn <andrew@lunn.ch>
>     net: bcmgenet: Fix speed selection for reverse MII
> 
> Arnd Bergmann <arnd@arndb.de>
>     media: dvb: fix compat ioctl translation
> 
> Lao Wei <zrlw@qq.com>
>     media: fix: media: pci: meye: validate offset to avoid arbitrary access
> 
> Mark Brown <broonie@kernel.org>
>     ALSA: hda: Fix implicit definition of pci_iomap() on SH
> 
> Geert Uytterhoeven <geert+renesas@glider.be>
>     media: dt-bindings: adv748x: Fix decimal unit addresses
> 
> Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
>     nvmem: core: return error code instead of NULL from nvmem_device_get
> 
> Michael Kelley <mikelley@microsoft.com>
>     Drivers: hv: vmbus: Fix synic per-cpu context initialization
> 
> Yana Esina <yana.esina@aquantia.com>
>     net: aquantia: fix hw_atl_utils_fw_upload_dwords
> 
> Masami Hiramatsu <mhiramat@kernel.org>
>     kprobes: Don't call BUG_ON() if there is a kprobe in use on free list
> 
> Deepak Ukey <deepak.ukey@microchip.com>
>     scsi: pm80xx: Fixed system hang issue during kexec boot
> 
> Deepak Ukey <deepak.ukey@microchip.com>
>     scsi: pm80xx: Corrected dma_unmap_sg() parameter
> 
> Oleksij Rempel <o.rempel@pengutronix.de>
>     ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" is set
> 
> George Kennedy <george.kennedy@oracle.com>
>     scsi: sym53c8xx: fix NULL pointer dereference panic in sym_int_sir()
> 
> James Smart <jsmart2021@gmail.com>
>     scsi: lpfc: Fix errors in log messages.
> 
> James Smart <jsmart2021@gmail.com>
>     scsi: lpfc: Correct invalid EQ doorbell write on if_type=6
> 
> James Smart <jsmart2021@gmail.com>
>     scsi: lpfc: Fix GFT_ID and PRLI logic for RSCN
> 
> Quinn Tran <quinn.tran@cavium.com>
>     scsi: qla2xxx: Fix duplicate switch's Nport ID entries
> 
> Quinn Tran <quinn.tran@cavium.com>
>     scsi: qla2xxx: Fix dropped srb resource.
> 
> Quinn Tran <quinn.tran@cavium.com>
>     scsi: qla2xxx: Fix port speed display on chip reset
> 
> Sawan Chandak <sawan.chandak@cavium.com>
>     scsi: qla2xxx: Check for Register disconnect
> 
> Quinn Tran <quinn.tran@cavium.com>
>     scsi: qla2xxx: Increase abort timeout value
> 
> Quinn Tran <quinn.tran@cavium.com>
>     scsi: qla2xxx: Fix deadlock between ATIO and HW lock
> 
> Quinn Tran <quinn.tran@cavium.com>
>     scsi: qla2xxx: Terminate Plogi/PRLI if WWN is 0
> 
> Quinn Tran <quinn.tran@cavium.com>
>     scsi: qla2xxx: Defer chip reset until target mode is enabled
> 
> Quinn Tran <quinn.tran@cavium.com>
>     scsi: qla2xxx: Fix iIDMA error
> 
> Quinn Tran <quinn.tran@cavium.com>
>     scsi: qla2xxx: Use correct qpair for ABTS/CMD
> 
> Wang Shilong <wangshilong1991@gmail.com>
>     f2fs: fix setattr project check upon fssetxattr ioctl
> 
> Chao Yu <yuchao0@huawei.com>
>     f2fs: fix memory leak of percpu counter in fill_super()
> 
> Chao Yu <yuchao0@huawei.com>
>     f2fs: fix memory leak of write_io in fill_super()
> 
> Eric W. Biederman <ebiederm@xmission.com>
>     signal: Properly deliver SIGSEGV from x86 uprobes
> 
> Eric W. Biederman <ebiederm@xmission.com>
>     signal: Properly deliver SIGILL from uprobes
> 
> Eric W. Biederman <ebiederm@xmission.com>
>     signal: Always ignore SIGKILL and SIGSTOP sent to the global init
> 
> Michael J. Ruhl <michael.j.ruhl@intel.com>
>     IB/hfi1: Missing return value in error path for user sdma
> 
> Dan Carpenter <dan.carpenter@oracle.com>
>     RDMA/hns: Fix an error code in hns_roce_v2_init_eq_table()
> 
> Dan Carpenter <dan.carpenter@oracle.com>
>     dmaengine: at_xdmac: remove a stray bottom half unlock
> 
> Felix Fietkau <nbd@nbd.name>
>     ath9k: add back support for using active monitor interfaces for tx99
> 
> Alexandre Belloni <alexandre.belloni@bootlin.com>
>     rtc: pl030: fix possible race condition
> 
> Alexandre Belloni <alexandre.belloni@bootlin.com>
>     rtc: mt6397: fix possible race condition
> 
> Qiuxu Zhuo <qiuxu.zhuo@intel.com>
>     EDAC, sb_edac: Return early on ADDRV bit and address type test
> 
> Daniel Silsby <dansilsby@gmail.com>
>     dmaengine: dma-jz4780: Further residue status fix
> 
> Paul Cercueil <paul@crapouillou.net>
>     dmaengine: dma-jz4780: Don't depend on MACH_JZ4780
> 
> Chunfeng Yun <chunfeng.yun@mediatek.com>
>     usb: mtu3: disable vbus rise/fall interrupts of ltssm
> 
> Marek Szyprowski <m.szyprowski@samsung.com>
>     ARM: dts: exynos: Disable pull control for PMIC IRQ line on Artik5 board
> 
> Radu Pirea <radu.pirea@microchip.com>
>     tty/serial: atmel: Change the driver to work under at91-usart MFD
> 
> Vicente Bergas <vicencb@gmail.com>
>     arm64: dts: rockchip: Fix VCC5V0_HOST_EN on rk3399-sapphire
> 
> Sudeep Holla <sudeep.holla@arm.com>
>     firmware: arm_scmi: use strlcpy to ensure NULL-terminated strings
> 
> Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
>     sched/debug: Use symbolic names for task state constants
> 
> Peter Zijlstra <peterz@infradead.org>
>     sched/debug: Explicitly cast sched_feat() to bool
> 
> YueHaibing <yuehaibing@huawei.com>
>     failover: Fix error return code in net_failover_create
> 
> Jaegeuk Kim <jaegeuk@kernel.org>
>     f2fs: submit bio after shutdown
> 
> H. Nikolaus Schaller <hns@goldelico.com>
>     ARM: dts: omap3-gta04: keep vpll2 always on
> 
> H. Nikolaus Schaller <hns@goldelico.com>
>     ARM: dts: omap3-gta04: make NAND partitions compatible with recent U-
> Boot
> 
> H. Nikolaus Schaller <hns@goldelico.com>
>     ARM: dts: omap3-gta04: fix touchscreen tsc2007
> 
> H. Nikolaus Schaller <hns@goldelico.com>
>     ARM: dts: omap3-gta04: tvout: enable as display1 alias
> 
> H. Nikolaus Schaller <hns@goldelico.com>
>     ARM: dts: omap3-gta04: fixes for tvout / venc
> 
> H. Nikolaus Schaller <hns@goldelico.com>
>     ARM: dts: omap3-gta04: give spi_lcd node a label so that we can overwrite in
> other DTS files
> 
> Rob Herring <robh@kernel.org>
>     of: make PowerMac cache node search conditional on CONFIG_PPC_PMAC
> 
> Suman Tripathi <stripathi@amperecomputing.com>
>     ata: Disable AHCI ALPM feature for Ampere Computing eMAG SATA
> 
> Yong Zhi <yong.zhi@intel.com>
>     ASoC: Intel: hdac_hdmi: Limit sampling rates at dai creation
> 
> Charles Keepax <ckeepax@opensource.cirrus.com>
>     ASoC: dapm: Avoid uninitialised variable warning
> 
> Jan Kara <jack@suse.cz>
>     udf: Fix crash during mount
> 
> Ding Xiang <dingxiang@cmss.chinamobile.com>
>     mips: txx9: fix iounmap related issue
> 
> Parav Pandit <parav@mellanox.com>
>     RDMA/core: Follow correct unregister order between sysfs and cgroup
> 
> Parav Pandit <parav@mellanox.com>
>     RDMA/core: Rate limit MAD error messages
> 
> Muhammad Sammar <muhammads@mellanox.com>
>     IB/ipoib: Ensure that MTU isn't less than minimum permitted
> 
> Parav Pandit <parav@mellanox.com>
>     IB/mlx5: Don't hold spin lock while checking device state
> 
> Jun Gao <jun.gao@mediatek.com>
>     i2c: mediatek: Use DMA safe buffers for i2c transactions
> 
> Erik Stromdahl <erik.stromdahl@gmail.com>
>     ath10k: wmi: disable softirq's while calling ieee80211_rx
> 
> Marek Szyprowski <m.szyprowski@samsung.com>
>     ARM: dts: exynos: Disable pull control for S5M8767 PMIC
> 
> K.T.VIJAYAKUMAAR <vijay.bvb@samsung.com>
>     ath10k: avoid possible memory access violation
> 
> Colin Ian King <colin.king@canonical.com>
>     ASoC: sgtl5000: avoid division by zero if lo_vag is zero
> 
> Christian Brauner <christian@brauner.io>
>     rtnetlink: move type calculation out of loop
> 
> Stefan Wahren <stefan.wahren@i2se.com>
>     net: lan78xx: Bail out if lan78xx_get_endpoints fails
> 
> Jaegeuk Kim <jaegeuk@kernel.org>
>     f2fs: avoid wrong decrypted data from disk
> 
> Stanislaw Gruszka <sgruszka@redhat.com>
>     cfg80211: validate wmm rule when setting
> 
> Naftali Goldstein <naftali.goldstein@intel.com>
>     mac80211: fix saving a few HE values
> 
> Peter Wu <peter@lekensteyn.nl>
>     qxl: fix null-pointer crash during suspend
> 
> Majd Dibbiny <majd@mellanox.com>
>     IB/mlx5: Change TX affinity assignment in RoCE LAG mode
> 
> Christoph Hellwig <hch@lst.de>
>     mtd: rawnand: qcom: don't include dma-direct.h
> 
> Kurt Kanzenbach <kurt@linutronix.de>
>     mtd: rawnand: fsl_ifc: fixup SRAM init for newer ctrl versions
> 
> Kurt Kanzenbach <kurt@linutronix.de>
>     mtd: rawnand: fsl_ifc: check result of SRAM initialization
> 
> Thomas Petazzoni <thomas.petazzoni@bootlin.com>
>     mtd: rawnand: marvell: use regmap_update_bits() for syscon access
> 
> Martin Blumenstingl <martin.blumenstingl@googlemail.com>
>     ARM: dts: meson8b: fix the clock controller register size
> 
> Martin Blumenstingl <martin.blumenstingl@googlemail.com>
>     ARM: dts: meson8: fix the clock controller register size
> 
> Quentin Schulz <quentin.schulz@bootlin.com>
>     net: phy: mscc: read 'vsc8531, edge-slowdown' as an u32
> 
> Quentin Schulz <quentin.schulz@bootlin.com>
>     net: phy: mscc: read 'vsc8531,vddmac' as an u32
> 
> Moni Shoua <monis@mellanox.com>
>     net/mlx5: Fix atomic_mode enum values
> 
> Yunsheng Lin <linyunsheng@huawei.com>
>     net: hns3: Change the dst mac addr of loopback packet
> 
> Yunsheng Lin <linyunsheng@huawei.com>
>     net: hns3: Fix for loopback selftest failed problem
> 
> Jian Shen <shenjian15@huawei.com>
>     net: hns3: Fix error of checking used vlan id
> 
> Huazhong Tan <tanhuazhong@huawei.com>
>     net: hns3: Fix for multicast failure
> 
> Jiada Wang <jiada_wang@mentor.com>
>     ASoC: rsnd: ssi: Fix issue in dma data address assignment
> 
> Sven Schmitt <Sven.Schmitt@mixed-mode.de>
>     soc: imx: gpc: fix PDN delay
> 
> Geert Uytterhoeven <geert@linux-m68k.org>
>     mt76: Fix comparisons with invalid hardware key index
> 
> Rasmus Villemoes <linux@rasmusvillemoes.dk>
>     brcmfmac: fix wrong strnchr usage
> 
> Ganapathi Bhat <gbhat@marvell.com>
>     mwifex: free rx_cmd skb in suspended state
> 
> Ganapathi Bhat <gbhat@marvell.com>
>     mwifiex: do no submit URB in suspended state
> 
> Larry Finger <Larry.Finger@lwfinger.net>
>     rtl8187: Fix warning generated when strncpy() destination length matches the
> sixe argument
> 
> Marcel Ziswiler <marcel@ziswiler.com>
>     ARM: dts: pxa: fix power i2c base address
> 
> Robert Jarzmik <robert.jarzmik@free.fr>
>     ARM: dts: pxa: fix the rtc controller
> 
> Alexey Khoroshilov <khoroshilov@ispras.ru>
>     media: ov772x: Disable clk on error path
> 
> Sakari Ailus <sakari.ailus@linux.intel.com>
>     media: i2c: Fix pm_runtime_get_if_in_use() usage in sensor drivers
> 
> Hans Verkuil <hverkuil@xs4all.nl>
>     media: vicodec: fix out-of-range values when decoding
> 
> Sara Sharon <sara.sharon@intel.com>
>     iwlwifi: mvm: avoid sending too many BARs
> 
> Johannes Berg <johannes.berg@intel.com>
>     iwlwifi: don't WARN on trying to dump dead firmware
> 
> Sara Sharon <sara.sharon@intel.com>
>     iwlwifi: drop packets with bad status in CD
> 
> Vijay Immanuel <vijayi@attalasystems.com>
>     IB/rxe: fixes for rdma read retry
> 
> Vijay Immanuel <vijayi@attalasystems.com>
>     IB/rxe: avoid back-to-back retries
> 
> Patryk Małek <patryk.malek@intel.com>
>     i40e: Prevent deleting MAC address from VF when set by PF
> 
> Lihong Yang <lihong.yang@intel.com>
>     i40evf: cancel workqueue sync for adminq when a VF is removed
> 
> Patryk Małek <patryk.malek@intel.com>
>     i40e: hold the rtnl lock on clearing interrupt scheme
> 
> Patryk Małek <patryk.malek@intel.com>
>     i40evf: Don't enable vlan stripping when rx offload is turned on
> 
> Jan Sokolowski <jan.sokolowski@intel.com>
>     i40e: Check and correct speed values for link on open
> 
> Lihong Yang <lihong.yang@intel.com>
>     i40evf: set IFF_UNICAST_FLT flag for the VF
> 
> Mitch Williams <mitch.a.williams@intel.com>
>     i40e: use correct length for strncpy
> 
> Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
>     i40evf: Validate the number of queues a PF sends
> 
> Marek Szyprowski <m.szyprowski@samsung.com>
>     ARM: dts: exynos: Fix regulators configuration on Peach Pi/Pit Chromebooks
> 
> Alan Tull <atull@kernel.org>
>     arm64: dts: stratix10: i2c clock running out of spec
> 
> Rick Farrington <ricardo.farrington@cavium.com>
>     liquidio: fix race condition in instruction completion processing
> 
> Marek Szyprowski <m.szyprowski@samsung.com>
>     ARM: dts: exynos: Fix sound in Snow-rev5 Chromebook
> 
> Andrzej Hajda <a.hajda@samsung.com>
>     ARM: dts: exynos: Fix HDMI-HPD line handling on Arndale
> 
> Andrzej Hajda <a.hajda@samsung.com>
>     ARM: dts: exynos: Use i2c-gpio for HDMI-DDC on Arndale
> 
> Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
>     MIPS: BCM47XX: Enable USB power on Netgear WNDR3400v3
> 
> Paul Cercueil <paul@crapouillou.net>
>     pinctrl: ingenic: Probe driver at subsys_initcall
> 
> Akshu Agrawal <akshu.agrawal@amd.com>
>     ASoC: AMD: Change MCLK to 48Mhz
> 
> Jerome Brunet <jbrunet@baylibre.com>
>     ASoC: meson: axg-fifo: report interrupt request failure
> 
> Charles Keepax <ckeepax@opensource.cirrus.com>
>     ASoC: dpcm: Properly initialise hw->rate_max
> 
> Charles Keepax <ckeepax@opensource.cirrus.com>
>     ASoC: dapm: Don't fail creating new DAPM control on NULL pinctrl
> 
> Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
>     ice: Fix and update driver version string
> 
> Bob Peterson <rpeterso@redhat.com>
>     gfs2: Don't set GFS2_RDF_UPTODATE when the lvb is updated
> 
> Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
>     ice: Prevent control queue operations during reset
> 
> Dan Nowlin <dan.nowlin@intel.com>
>     ice: Update request resource command to latest specification
> 
> Sven Eckelmann <sven.eckelmann@openmesh.com>
>     ath10k: limit available channels via DT ieee80211-freq-limit
> 
> Dedy Lansky <dlansky@codeaurora.org>
>     wil6210: fix invalid memory access for rx_buff_mgmt debugfs
> 
> Maya Erez <merez@codeaurora.org>
>     wil6210: prevent usage of tx ring 0 for eDMA
> 
> Maya Erez <merez@codeaurora.org>
>     wil6210: set edma variables only for Talyn-MB devices
> 
> Dedy Lansky <dlansky@codeaurora.org>
>     wil6210: drop Rx multicast packets that are looped-back to STA
> 
> Felix Fietkau <nbd@nbd.name>
>     ath9k: fix tx99 with monitor mode interface
> 
> Rakesh Pillai <pillair@codeaurora.org>
>     ath10k: skip resetting rx filter for WCN3990
> 
> Takashi Iwai <tiwai@suse.de>
>     ALSA: seq: Do error checks at creating system ports
> 
> Rajeev Kumar Sirasanagandla <rsirasan@codeaurora.org>
>     cfg80211: Avoid regulatory restore when COUNTRY_IE_IGNORE is set
> 
> Andy Shevchenko <andriy.shevchenko@linux.intel.com>
>     extcon: cht-wc: Return from default case to avoid warnings
> 
> Bjorn Andersson <bjorn.andersson@linaro.org>
>     remoteproc/davinci: Use %zx for formating size_t
> 
> Alexandre Belloni <alexandre.belloni@bootlin.com>
>     rtc: rv8803: fix the rv8803 id in the OF table
> 
> Dan Carpenter <dan.carpenter@oracle.com>
>     rtc: sysfs: fix NULL check in rtc_add_groups()
> 
> Jay Foster <jayfoster@ieee.org>
>     ARM: dts: at91/trivial: Fix USART1 definition for at91sam9g45
> 
> Geert Uytterhoeven <geert+renesas@glider.be>
>     ARM: dts: rcar: Correct SATA device sizes to 2 MiB
> 
> Arnd Bergmann <arnd@arndb.de>
>     y2038: make do_gettimeofday() and get_seconds() inline
> 
> Aapo Vienamo <avienamo@nvidia.com>
>     arm64: dts: tegra210-p2180: Correct sdmmc4 vqmmc-supply
> 
> Aapo Vienamo <avienamo@nvidia.com>
>     soc/tegra: pmc: Fix pad voltage configuration for Tegra186
> 
> Dan Carpenter <dan.carpenter@oracle.com>
>     ALSA: pcm: signedness bug in snd_pcm_plug_alloc()
> 
> Andre Przywara <andre.przywara@arm.com>
>     arm64: dts: allwinner: a64: NanoPi-A64: Fix DCDC1 voltage
> 
> Andre Przywara <andre.przywara@arm.com>
>     arm64: dts: allwinner: a64: Olinuxino: fix DRAM voltage
> 
> Samuel Holland <samuel@sholland.org>
>     arm64: dts: allwinner: a64: Orange Pi Win: Fix SD card node
> 
> Vinod Koul <vkoul@kernel.org>
>     soundwire: intel: Fix uninitialized adev deref
> 
> Shreyas NC <shreyas.nc@intel.com>
>     soundwire: Initialize completion for defer messages
> 
> Rongyi Chen <chenyi@tt-cool.com>
>     clk: sunxi-ng: h6: fix PWM gate/reset offset
> 
> Marcus Folkesson <marcus.folkesson@gmail.com>
>     iio: dac: mcp4922: fix error handling in mcp4922_write_raw
> 
> Tamizh chelvam <tamizhr@codeaurora.org>
>     ath10k: fix kernel panic by moving pci flush after napi_disable
> 
> Ard Biesheuvel <ard.biesheuvel@linaro.org>
>     tee: optee: take DT status property into account
> 
> Stefan Agner <stefan@agner.ch>
>     iio: adc: max9611: explicitly cast gain_selectors
> 
> Eugen Hristev <eugen.hristev@microchip.com>
>     mmc: sdhci-of-at91: fix quirk2 overwrite
> 
> Roman Gushchin <guro@fb.com>
>     mm: hugetlb: switch to css_tryget() in hugetlb_cgroup_charge_cgroup()
> 
> Roman Gushchin <guro@fb.com>
>     mm: memcg: switch to css_tryget() in get_mem_cgroup_from_mm()
> 
> Yang Shi <yang.shi@linux.alibaba.com>
>     mm: mempolicy: fix the wrong return value and potential pages leak of mbind
> 
> Eric Auger <eric.auger@redhat.com>
>     iommu/vt-d: Fix QI_DEV_IOTLB_PFSID and QI_DEV_EIOTLB_PFSID macros
> 
> Corentin Labbe <clabbe@baylibre.com>
>     net: ethernet: dwmac-sun8i: Use the correct function in exit path
> 
> Al Viro <viro@zeniv.linux.org.uk>
>     ecryptfs_lookup_interpose(): lower_dentry->d_parent is not stable either
> 
> Al Viro <viro@zeniv.linux.org.uk>
>     ecryptfs_lookup_interpose(): lower_dentry->d_inode is not stable
> 
> Kai-Heng Feng <kai.heng.feng@canonical.com>
>     x86/quirks: Disable HPET on Intel Coffe Lake platforms
> 
> Hans de Goede <hdegoede@redhat.com>
>     i2c: acpi: Force bus speed to 400KHz if a Silead touchscreen is present
> 
> Mike Marciniszyn <mike.marciniszyn@intel.com>
>     IB/hfi1: Use a common pad buffer for 9B and 16B packets
> 
> James Erwin <james.erwin@intel.com>
>     IB/hfi1: Ensure full Gen3 speed in a Gen4 system
> 
> Chuhong Yuan <hslester96@gmail.com>
>     Input: synaptics-rmi4 - destroy F54 poller workqueue when removing
> 
> Lucas Stach <l.stach@pengutronix.de>
>     Input: synaptics-rmi4 - clear IRQ enables for F54
> 
> Andrew Duggan <aduggan@synaptics.com>
>     Input: synaptics-rmi4 - do not consume more data than we have (F11, F12)
> 
> Andrew Duggan <aduggan@synaptics.com>
>     Input: synaptics-rmi4 - disable the relative position IRQ in the F12 driver
> 
> Lucas Stach <l.stach@pengutronix.de>
>     Input: synaptics-rmi4 - fix video buffer size
> 
> Oliver Neukum <oneukum@suse.com>
>     Input: ff-memless - kill timer in destroy()
> 
> Filipe Manana <fdmanana@suse.com>
>     Btrfs: fix log context list corruption after rename exchange operation
> 
> Takashi Iwai <tiwai@suse.de>
>     ALSA: usb-audio: Fix incorrect size check for processing/extension units
> 
> Takashi Iwai <tiwai@suse.de>
>     ALSA: usb-audio: Fix incorrect NULL check in create_yamaha_midi_quirk()
> 
> Henry Lin <henryl@nvidia.com>
>     ALSA: usb-audio: not submit urb for stopped endpoint
> 
> Takashi Iwai <tiwai@suse.de>
>     ALSA: usb-audio: Fix missing error check at mixer resolution test
> 
> Jiri Pirko <jiri@mellanox.com>
>     devlink: disallow reload operation during device cleanup
> 
> Jouni Hogander <jouni.hogander@unikie.com>
>     slip: Fix memory leak in slip_open error path
> 
> Aleksander Morgado <aleksander@aleksander.es>
>     net: usb: qmi_wwan: add support for Foxconn T77W968 LTE modules
> 
> Chuhong Yuan <hslester96@gmail.com>
>     net: gemini: add missed free_netdev
> 
> Guillaume Nault <gnault@redhat.com>
>     ipmr: Fix skb headroom in ipmr_get_route().
> 
> Oliver Neukum <oneukum@suse.com>
>     ax88172a: fix information leak on short answers
> 
> Michael Schmitz <schmitzmic@gmail.com>
>     scsi: core: Handle drivers which set sg_tablesize to zero
> 
> Jonas Gorski <jonas.gorski@gmail.com>
>     MIPS: BCM63XX: fix switch core reset on BCM6368
> 
> Paolo Bonzini <pbonzini@redhat.com>
>     KVM: x86: introduce is_pae_paging
> 
> 
> -------------
> 
> Diffstat:
> 
>  .../devicetree/bindings/media/i2c/adv748x.txt      |   4 +-
>  .../devicetree/bindings/net/brcm,unimac-mdio.txt   |   3 +
>  Makefile                                           |   4 +-
>  arch/arm/boot/compressed/libfdt_env.h              |   2 +
>  arch/arm/boot/dts/am335x-boneblack-common.dtsi     |   2 +-
>  arch/arm/boot/dts/am335x-evm.dts                   |  12 +-
>  arch/arm/boot/dts/am335x-osd3358-sm-red.dts        |   2 +-
>  arch/arm/boot/dts/am335x-pdu001.dts                |   2 +-
>  arch/arm/boot/dts/am4372.dtsi                      |   2 +-
>  arch/arm/boot/dts/am57xx-cl-som-am57x.dts          |   2 +-
>  arch/arm/boot/dts/arm-realview-eb.dtsi             |   2 +-
>  arch/arm/boot/dts/arm-realview-pb1176.dts          |   2 +-
>  arch/arm/boot/dts/arm-realview-pb11mp.dts          |   2 +-
>  arch/arm/boot/dts/arm-realview-pbx.dtsi            |   2 +-
>  arch/arm/boot/dts/armada-388-clearfog.dtsi         |   2 +-
>  arch/arm/boot/dts/aspeed-g4.dtsi                   |   2 +-
>  arch/arm/boot/dts/aspeed-g5.dtsi                   |   2 +-
>  arch/arm/boot/dts/at91-dvk_su60_somc.dtsi          |   4 +-
>  arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi      |   4 +-
>  arch/arm/boot/dts/at91-vinco.dts                   |   2 +-
>  arch/arm/boot/dts/at91sam9260ek.dts                |   2 +-
>  arch/arm/boot/dts/at91sam9261ek.dts                |   2 +-
>  arch/arm/boot/dts/at91sam9g20ek_common.dtsi        |   2 +-
>  arch/arm/boot/dts/at91sam9g45.dtsi                 |   2 +-
>  arch/arm/boot/dts/bcm-hr2.dtsi                     |   2 +-
>  arch/arm/boot/dts/bcm-nsp.dtsi                     |   2 +-
>  arch/arm/boot/dts/dove-cubox.dts                   |   2 +-
>  arch/arm/boot/dts/dove.dtsi                        |   6 +-
>  arch/arm/boot/dts/dra7.dtsi                        |   2 +-
>  arch/arm/boot/dts/exynos3250-artik5.dtsi           |   7 +
>  arch/arm/boot/dts/exynos5250-arndale.dts           |  41 ++++--
>  arch/arm/boot/dts/exynos5250-pinctrl.dtsi          |  11 ++
>  arch/arm/boot/dts/exynos5250-snow-rev5.dts         |  11 ++
>  arch/arm/boot/dts/exynos5420-peach-pit.dts         |   5 +-
>  arch/arm/boot/dts/exynos5800-peach-pi.dts          |   5 +-
>  arch/arm/boot/dts/imx51-zii-rdu1.dts               |   2 +-
>  arch/arm/boot/dts/imx6ull.dtsi                     |   2 +-
>  arch/arm/boot/dts/keystone-k2g.dtsi                |   2 +-
>  arch/arm/boot/dts/lpc32xx.dtsi                     |   4 +-
>  arch/arm/boot/dts/meson8.dtsi                      |   2 +-
>  arch/arm/boot/dts/meson8b-odroidc1.dts             |   5 +
>  arch/arm/boot/dts/meson8b.dtsi                     |   2 +-
>  arch/arm/boot/dts/omap2.dtsi                       |   4 +-
>  arch/arm/boot/dts/omap2430.dtsi                    |   2 +-
>  arch/arm/boot/dts/omap3-gta04.dtsi                 |  49 +++++--
>  arch/arm/boot/dts/omap3-n9.dts                     |   2 +-
>  arch/arm/boot/dts/orion5x-linkstation.dtsi         |   2 +-
>  arch/arm/boot/dts/pxa25x.dtsi                      |   4 +
>  arch/arm/boot/dts/pxa27x.dtsi                      |   6 +-
>  arch/arm/boot/dts/qcom-ipq4019.dtsi                |   2 +-
>  arch/arm/boot/dts/r8a7779.dtsi                     |   2 +-
>  arch/arm/boot/dts/r8a7790.dtsi                     |   4 +-
>  arch/arm/boot/dts/r8a7791.dtsi                     |   4 +-
>  arch/arm/boot/dts/rk3036.dtsi                      |   2 +-
>  arch/arm/boot/dts/rk3188-radxarock.dts             |   8 ++
>  arch/arm/boot/dts/socfpga_cyclone5_de0_sockit.dts  |   2 +-
>  arch/arm/boot/dts/ste-dbx5x0.dtsi                  |   6 +-
>  arch/arm/boot/dts/ste-href-family-pinctrl.dtsi     |   8 +-
>  arch/arm/boot/dts/ste-hrefprev60.dtsi              |   2 +-
>  arch/arm/boot/dts/ste-snowball.dts                 |   2 +-
>  arch/arm/boot/dts/ste-u300.dts                     |   2 +-
>  arch/arm/boot/dts/stm32mp157c-ev1.dts              |  73 +++++++++-
>  arch/arm/boot/dts/stm32mp157c.dtsi                 |   2 +-
>  .../boot/dts/sun5i-reference-design-tablet.dtsi    |   3 +-
>  .../boot/dts/sun8i-reference-design-tablet.dtsi    |   3 +-
>  arch/arm/boot/dts/sun8i-v40-bananapi-m2-berry.dts  |   2 +-
>  arch/arm/boot/dts/sun9i-a80.dtsi                   |   2 +-
>  arch/arm/boot/dts/tegra20-paz00.dts                |   6 +-
>  arch/arm/boot/dts/tegra20.dtsi                     |  26 ++--
>  arch/arm/boot/dts/tegra30-apalis.dtsi              |  10 +-
>  arch/arm/boot/dts/tegra30-colibri-eval-v3.dts      |   3 +-
>  arch/arm/boot/dts/tegra30.dtsi                     |   6 +-
>  arch/arm/boot/dts/versatile-ab.dts                 |   2 +-
>  arch/arm/boot/dts/zynq-zc702.dts                   |  12 +-
>  arch/arm/boot/dts/zynq-zc770-xm010.dts             |   2 +-
>  arch/arm/boot/dts/zynq-zc770-xm013.dts             |   2 +-
>  arch/arm/crypto/crc32-ce-glue.c                    |   2 +-
>  arch/arm/mach-at91/pm.c                            |   6 +-
>  arch/arm/mach-imx/pm-imx6.c                        |  25 ++++
>  .../boot/dts/allwinner/sun50i-a64-nanopi-a64.dts   |   6 +-
>  .../boot/dts/allwinner/sun50i-a64-olinuxino.dts    |   8 +-
>  .../boot/dts/allwinner/sun50i-a64-orangepi-win.dts |   4 +-
>  .../boot/dts/altera/socfpga_stratix10_socdk.dts    |   2 +
>  arch/arm64/boot/dts/amd/amd-seattle-soc.dtsi       |   4 +-
>  arch/arm64/boot/dts/amlogic/meson-axg.dtsi         |   2 +-
>  arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi        |   2 +-
>  .../dts/amlogic/meson-gxl-s905x-libretech-cc.dts   |   2 +-
>  arch/arm64/boot/dts/amlogic/meson-gxl.dtsi         |   2 +-
>  arch/arm64/boot/dts/broadcom/northstar2/ns2.dtsi   |   4 +-
>  .../boot/dts/broadcom/stingray/bcm958742-base.dtsi |   2 +-
>  .../arm64/boot/dts/broadcom/stingray/stingray.dtsi |   4 +-
>  arch/arm64/boot/dts/freescale/fsl-ls1012a.dtsi     |   2 +-
>  arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi     |   6 +-
>  arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dts  |   4 +-
>  arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi     |   4 +-
>  arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi     |   4 +-
>  arch/arm64/boot/dts/lg/lg1312.dtsi                 |   4 +-
>  arch/arm64/boot/dts/lg/lg1313.dtsi                 |   4 +-
>  arch/arm64/boot/dts/nvidia/tegra194.dtsi           |  16 +--
>  arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi     |   1 +
>  arch/arm64/boot/dts/renesas/r8a77965.dtsi          |  30 +++-
>  arch/arm64/boot/dts/renesas/salvator-common.dtsi   |   5 +-
>  .../arm64/boot/dts/rockchip/rk3399-puma-haikou.dts |   2 +-
>  arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi  |  26 +++-
>  arch/arm64/boot/dts/ti/k3-am65-main.dtsi           |  10 +-
>  arch/arm64/boot/dts/ti/k3-am65.dtsi                |  44 +++---
>  arch/arm64/kernel/traps.c                          |   1 -
>  arch/mips/bcm47xx/workarounds.c                    |   8 +-
>  arch/mips/bcm63xx/reset.c                          |   2 +-
>  arch/mips/include/asm/kexec.h                      |   6 +-
>  arch/mips/txx9/generic/setup.c                     |   5 +-
>  arch/powerpc/boot/libfdt_env.h                     |   2 +
>  arch/powerpc/include/asm/drmem.h                   |   5 +
>  arch/powerpc/include/asm/uaccess.h                 |   6 +-
>  arch/powerpc/kernel/iommu.c                        |   2 +-
>  arch/powerpc/kernel/rtas.c                         |   2 +
>  arch/powerpc/kernel/vdso32/datapage.S              |   1 +
>  arch/powerpc/kernel/vdso32/gettimeofday.S          |   1 +
>  arch/powerpc/kernel/vdso64/datapage.S              |   1 +
>  arch/powerpc/kernel/vdso64/gettimeofday.S          |   1 +
>  arch/powerpc/mm/slb.c                              |   2 +-
>  arch/powerpc/platforms/pseries/hotplug-memory.c    |  55 +++-----
>  arch/s390/include/asm/mmu.h                        |   2 +
>  arch/s390/include/asm/mmu_context.h                |   1 +
>  arch/s390/kernel/vdso.c                            |   7 +-
>  arch/s390/kernel/vdso32/clock_gettime.S            |  19 +--
>  arch/s390/kernel/vdso32/gettimeofday.S             |   3 +-
>  arch/s390/kernel/vdso64/clock_gettime.S            |  25 ++--
>  arch/s390/kernel/vdso64/gettimeofday.S             |   3 +-
>  arch/x86/hyperv/hv_init.c                          |  19 +++
>  arch/x86/kernel/cpu/common.c                       |   4 +-
>  arch/x86/kernel/cpu/cyrix.c                        |   2 +-
>  arch/x86/kernel/cpu/mcheck/mce-inject.c            |   6 +
>  arch/x86/kernel/early-quirks.c                     |   2 +
>  arch/x86/kernel/uprobes.c                          |   2 +-
>  arch/x86/kvm/vmx.c                                 |   7 +-
>  arch/x86/kvm/x86.c                                 |   8 +-
>  arch/x86/kvm/x86.h                                 |   5 +
>  block/bfq-iosched.c                                |  78 +++++++++--
>  block/bfq-iosched.h                                |  26 ++++
>  crypto/chacha20_generic.c                          |   7 +-
>  crypto/rsa-pkcs1pad.c                              |   9 --
>  drivers/acpi/acpi_lpss.c                           |  22 ++-
>  drivers/acpi/pci_root.c                            |   5 +-
>  drivers/android/binder.c                           |  44 ++++--
>  drivers/ata/ahci_platform.c                        |  15 +-
>  drivers/base/component.c                           |   6 +-
>  drivers/bluetooth/btrsi.c                          |  13 +-
>  drivers/bluetooth/hci_serdev.c                     |   1 +
>  drivers/char/ipmi/ipmi_dmi.c                       |   4 +
>  drivers/char/ipmi/ipmi_msghandler.c                |   2 +-
>  drivers/char/ipmi/ipmi_si_mem_io.c                 |   2 +-
>  drivers/char/ipmi/ipmi_si_pci.c                    |   4 +-
>  drivers/char/random.c                              |  24 ++--
>  drivers/clk/sunxi-ng/ccu-sun50i-h6.c               |   2 +-
>  drivers/crypto/s5p-sss.c                           |  16 ++-
>  drivers/dma/Kconfig                                |   2 +-
>  drivers/dma/at_xdmac.c                             |   2 +-
>  drivers/dma/dma-jz4780.c                           |   2 +-
>  drivers/edac/i3200_edac.c                          |   2 +-
>  drivers/edac/i7core_edac.c                         |   2 +-
>  drivers/edac/sb_edac.c                             |  70 ++++-----
>  drivers/edac/skx_edac.c                            |   4 +-
>  drivers/extcon/extcon-intel-cht-wc.c               |   2 +-
>  drivers/firmware/arm_scmi/base.c                   |   2 +-
>  drivers/firmware/arm_scmi/clock.c                  |   2 +-
>  drivers/firmware/arm_scmi/perf.c                   |   2 +-
>  drivers/firmware/arm_scmi/power.c                  |   2 +-
>  drivers/firmware/arm_scmi/sensors.c                |   2 +-
>  drivers/firmware/dell_rbu.c                        |   8 ++
>  drivers/gpio/gpiolib.c                             |  36 +++--
>  drivers/gpu/drm/qxl/qxl_drv.c                      |  26 +---
>  drivers/hv/channel.c                               |  20 ++-
>  drivers/hv/hv.c                                    |  15 +-
>  .../coresight/coresight-dynamic-replicator.c       |  64 ++++++---
>  drivers/hwtracing/coresight/coresight-etm-perf.c   |  59 +++++---
>  drivers/hwtracing/coresight/coresight-etm4x.c      |  40 +++---
>  drivers/hwtracing/coresight/coresight-tmc-etf.c    |   4 +-
>  drivers/hwtracing/coresight/coresight-tmc-etr.c    |  60 +++++---
>  drivers/hwtracing/coresight/coresight-tmc.h        |   2 +
>  drivers/hwtracing/coresight/coresight.c            |  22 ++-
>  drivers/i2c/busses/i2c-aspeed.c                    |  65 ++++++---
>  drivers/i2c/busses/i2c-mt65xx.c                    |  62 +++++++-
>  drivers/i2c/i2c-core-acpi.c                        |  28 +++-
>  drivers/iio/adc/max9611.c                          |   2 +-
>  drivers/iio/dac/mcp4922.c                          |  11 +-
>  drivers/infiniband/core/device.c                   |   2 +-
>  drivers/infiniband/core/mad.c                      |  72 +++++-----
>  drivers/infiniband/hw/cxgb4/cq.c                   |   2 +-
>  drivers/infiniband/hw/cxgb4/qp.c                   |   7 +-
>  drivers/infiniband/hw/hfi1/pcie.c                  |   4 +-
>  drivers/infiniband/hw/hfi1/sdma.c                  |   5 +-
>  drivers/infiniband/hw/hfi1/user_sdma.c             |   4 +-
>  drivers/infiniband/hw/hfi1/verbs.c                 |  10 +-
>  drivers/infiniband/hw/hns/Kconfig                  |   1 +
>  drivers/infiniband/hw/hns/hns_roce_hw_v2.c         |   1 +
>  drivers/infiniband/hw/i40iw/i40iw_cm.c             |   2 +-
>  drivers/infiniband/hw/mlx4/Kconfig                 |   1 +
>  drivers/infiniband/hw/mlx5/main.c                  |   8 ++
>  drivers/infiniband/hw/mlx5/mlx5_ib.h               |   4 +-
>  drivers/infiniband/hw/mlx5/qp.c                    |  63 ++++++---
>  drivers/infiniband/sw/rxe/rxe_comp.c               |  39 +++++-
>  drivers/infiniband/sw/rxe/rxe_req.c                |  15 +-
>  drivers/infiniband/sw/rxe/rxe_verbs.h              |   1 +
>  drivers/infiniband/ulp/ipoib/ipoib_main.c          |   3 +-
>  drivers/infiniband/ulp/iser/iser_initiator.c       |  18 ++-
>  drivers/input/ff-memless.c                         |   9 ++
>  drivers/input/rmi4/rmi_f11.c                       |   4 +-
>  drivers/input/rmi4/rmi_f12.c                       |  32 ++++-
>  drivers/input/rmi4/rmi_f54.c                       |   5 +-
>  drivers/media/i2c/ov13858.c                        |   2 +-
>  drivers/media/i2c/ov2680.c                         |  26 +---
>  drivers/media/i2c/ov2685.c                         |   2 +-
>  drivers/media/i2c/ov5670.c                         |   2 +-
>  drivers/media/i2c/ov5695.c                         |   2 +-
>  drivers/media/i2c/ov772x.c                         |   1 +
>  drivers/media/i2c/ov7740.c                         |   2 +-
>  drivers/media/pci/ivtv/ivtv-yuv.c                  |   2 +-
>  drivers/media/pci/meye/meye.c                      |   2 +-
>  drivers/media/platform/davinci/vpbe_display.c      |   2 +-
>  drivers/media/platform/vicodec/vicodec-codec.c     |  10 +-
>  drivers/media/platform/vsp1/vsp1_drm.c             |  11 +-
>  drivers/media/platform/vsp1/vsp1_regs.h            |   2 +-
>  drivers/media/usb/au0828/au0828-core.c             |   4 +-
>  drivers/misc/genwqe/card_utils.c                   |  13 +-
>  drivers/misc/kgdbts.c                              |  16 +--
>  drivers/mmc/host/sdhci-of-at91.c                   |   2 +-
>  drivers/mtd/nand/raw/fsl_ifc_nand.c                |  36 ++++-
>  drivers/mtd/nand/raw/marvell_nand.c                |  23 ++-
>  drivers/mtd/nand/raw/qcom_nandc.c                  |   1 -
>  drivers/net/ethernet/amd/am79c961a.c               |   2 +-
>  drivers/net/ethernet/amd/atarilance.c              |   6 +-
>  drivers/net/ethernet/amd/declance.c                |   2 +-
>  drivers/net/ethernet/amd/sun3lance.c               |   6 +-
>  drivers/net/ethernet/amd/sunlance.c                |   2 +-
>  drivers/net/ethernet/amd/xgbe/xgbe-drv.c           |   4 +-
>  .../ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.c |   8 ++
>  .../ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.h |   3 +
>  .../aquantia/atlantic/hw_atl/hw_atl_llh_internal.h |  13 ++
>  .../aquantia/atlantic/hw_atl/hw_atl_utils.c        |  36 +++--
>  .../aquantia/atlantic/hw_atl/hw_atl_utils.h        |   5 +
>  .../aquantia/atlantic/hw_atl/hw_atl_utils_fw2x.c   |   5 +
>  drivers/net/ethernet/broadcom/bcm63xx_enet.c       |   5 +-
>  drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c   |  10 ++
>  drivers/net/ethernet/broadcom/genet/bcmmii.c       |   7 +-
>  drivers/net/ethernet/broadcom/sb1250-mac.c         |   4 +-
>  drivers/net/ethernet/cavium/liquidio/lio_main.c    |   2 +-
>  drivers/net/ethernet/cavium/liquidio/lio_vf_main.c |   2 +-
>  drivers/net/ethernet/cavium/liquidio/lio_vf_rep.c  |   5 +-
>  .../net/ethernet/cavium/liquidio/octeon_device.c   |   5 +-
>  drivers/net/ethernet/cavium/liquidio/octeon_iq.h   |   2 +
>  .../net/ethernet/cavium/liquidio/request_manager.c |   2 +
>  drivers/net/ethernet/cavium/octeon/octeon_mgmt.c   |   5 +-
>  drivers/net/ethernet/chelsio/cxgb4/t4_hw.c         |   2 +-
>  drivers/net/ethernet/cortina/gemini.c              |   1 +
>  drivers/net/ethernet/faraday/ftgmac100.c           |   4 +-
>  drivers/net/ethernet/faraday/ftmac100.c            |   7 +-
>  drivers/net/ethernet/freescale/dpaa/dpaa_eth.c     |   3 +-
>  drivers/net/ethernet/freescale/fec_mpc52xx.c       |   3 +-
>  .../net/ethernet/freescale/fs_enet/fs_enet-main.c  |   3 +-
>  drivers/net/ethernet/freescale/gianfar.c           |   4 +-
>  drivers/net/ethernet/freescale/ucc_geth.c          |   3 +-
>  drivers/net/ethernet/hisilicon/hip04_eth.c         |   3 +-
>  drivers/net/ethernet/hisilicon/hix5hd2_gmac.c      |   2 +-
>  drivers/net/ethernet/hisilicon/hns3/hnae3.c        |  12 +-
>  drivers/net/ethernet/hisilicon/hns3/hnae3.h        |   3 +
>  drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c |  18 +--
>  .../ethernet/hisilicon/hns3/hns3pf/hclge_main.c    |  93 +++++++-----
>  .../net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c  |   2 +-
>  .../ethernet/hisilicon/hns3/hns3vf/hclgevf_cmd.c   |   4 +-
>  .../ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c  |  42 ++++--
>  drivers/net/ethernet/ibm/ehea/ehea_main.c          |   2 +-
>  drivers/net/ethernet/ibm/emac/core.c               |   7 +-
>  drivers/net/ethernet/ibm/ibmvnic.c                 |   4 +-
>  drivers/net/ethernet/intel/i40e/i40e_main.c        |  35 ++++-
>  drivers/net/ethernet/intel/i40e/i40e_ptp.c         |   3 +-
>  drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c |  10 ++
>  drivers/net/ethernet/intel/i40evf/i40evf_main.c    |  15 +-
>  .../net/ethernet/intel/i40evf/i40evf_virtchnl.c    |  32 +++++
>  drivers/net/ethernet/intel/ice/ice_common.c        |  75 +++++++---
>  drivers/net/ethernet/intel/ice/ice_common.h        |   2 +-
>  drivers/net/ethernet/intel/ice/ice_controlq.c      |   3 +
>  drivers/net/ethernet/intel/ice/ice_main.c          |  36 ++++-
>  drivers/net/ethernet/intel/ice/ice_nvm.c           |   2 +-
>  drivers/net/ethernet/intel/ice/ice_status.h        |   1 +
>  drivers/net/ethernet/intel/ice/ice_type.h          |  10 +-
>  drivers/net/ethernet/marvell/mvneta.c              |   2 +-
>  drivers/net/ethernet/marvell/mvpp2/mvpp2.h         |   3 +-
>  drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c    |   9 +-
>  drivers/net/ethernet/marvell/pxa168_eth.c          |   3 +-
>  drivers/net/ethernet/mellanox/mlx4/main.c          |   3 +
>  drivers/net/ethernet/mellanox/mlxsw/core.c         |   4 +
>  drivers/net/ethernet/mellanox/mlxsw/spectrum.c     |  12 +-
>  drivers/net/ethernet/micrel/ks8695net.c            |   2 +-
>  drivers/net/ethernet/micrel/ks8851_mll.c           |   4 +-
>  .../net/ethernet/netronome/nfp/nfp_net_common.c    |  16 ++-
>  drivers/net/ethernet/smsc/smc911x.c                |   3 +-
>  drivers/net/ethernet/smsc/smc91x.c                 |   3 +-
>  drivers/net/ethernet/smsc/smsc911x.c               |   3 +-
>  drivers/net/ethernet/socionext/sni_ave.c           |   4 +-
>  drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c  |   2 +-
>  drivers/net/ethernet/sun/ldmvsw.c                  |   2 +-
>  drivers/net/ethernet/sun/sunbmac.c                 |   3 +-
>  drivers/net/ethernet/sun/sunqe.c                   |   2 +-
>  drivers/net/ethernet/sun/sunvnet.c                 |   2 +-
>  drivers/net/ethernet/sun/sunvnet_common.c          |  14 +-
>  drivers/net/ethernet/sun/sunvnet_common.h          |   7 +-
>  drivers/net/ethernet/toshiba/ps3_gelic_net.c       |   4 +-
>  drivers/net/ethernet/toshiba/ps3_gelic_net.h       |   2 +-
>  drivers/net/ethernet/toshiba/spider_net.c          |   4 +-
>  drivers/net/ethernet/toshiba/tc35815.c             |   6 +-
>  drivers/net/ethernet/xilinx/ll_temac_main.c        |   3 +-
>  drivers/net/ethernet/xilinx/xilinx_axienet_main.c  |   3 +-
>  drivers/net/ethernet/xilinx/xilinx_emaclite.c      |   9 +-
>  drivers/net/net_failover.c                         |   4 +-
>  drivers/net/netdevsim/netdev.c                     |   5 +
>  drivers/net/phy/mdio-bcm-unimac.c                  |  83 ++++++++++-
>  drivers/net/phy/mscc.c                             |  11 +-
>  drivers/net/slip/slip.c                            |   1 +
>  drivers/net/usb/ax88172a.c                         |   2 +-
>  drivers/net/usb/lan78xx.c                          |   5 +
>  drivers/net/usb/qmi_wwan.c                         |   2 +
>  drivers/net/wireless/ath/ath10k/ahb.c              |   4 +-
>  drivers/net/wireless/ath/ath10k/core.c             |  17 ++-
>  drivers/net/wireless/ath/ath10k/hw.h               |   5 +
>  drivers/net/wireless/ath/ath10k/mac.c              |   2 +
>  drivers/net/wireless/ath/ath10k/pci.c              |   2 +-
>  drivers/net/wireless/ath/ath10k/wmi.c              |  10 +-
>  drivers/net/wireless/ath/ath9k/main.c              |   1 -
>  drivers/net/wireless/ath/ath9k/tx99.c              |  10 +-
>  drivers/net/wireless/ath/wil6210/debugfs.c         |   3 +
>  drivers/net/wireless/ath/wil6210/main.c            |   9 +-
>  drivers/net/wireless/ath/wil6210/pcie_bus.c        |   1 +
>  drivers/net/wireless/ath/wil6210/txrx.c            |  15 +-
>  .../wireless/broadcom/brcm80211/brcmfmac/common.c  |   4 +-
>  .../wireless/broadcom/brcm80211/brcmfmac/feature.c |   2 +-
>  .../broadcom/brcm80211/brcmsmac/mac80211_if.c      |   6 +-
>  drivers/net/wireless/intel/iwlwifi/cfg/22000.c     |   2 +-
>  drivers/net/wireless/intel/iwlwifi/fw/api/rx.h     |  63 +++++++++
>  drivers/net/wireless/intel/iwlwifi/fw/api/tx.h     |   6 +-
>  drivers/net/wireless/intel/iwlwifi/fw/dbg.c        |   9 +-
>  drivers/net/wireless/intel/iwlwifi/iwl-trans.h     |   1 +
>  drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c  |   4 +
>  drivers/net/wireless/intel/iwlwifi/mvm/sta.c       |   4 -
>  drivers/net/wireless/intel/iwlwifi/mvm/tx.c        |  55 ++++++--
>  drivers/net/wireless/intel/iwlwifi/pcie/internal.h |  60 --------
>  drivers/net/wireless/intel/iwlwifi/pcie/rx.c       |   8 +-
>  drivers/net/wireless/intel/iwlwifi/pcie/trans.c    |  16 ++-
>  drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c  |   7 +-
>  drivers/net/wireless/intel/iwlwifi/pcie/tx.c       |   2 +-
>  drivers/net/wireless/marvell/mwifiex/usb.c         |  13 ++
>  drivers/net/wireless/mediatek/mt76/mt76x0/tx.c     |   2 +-
>  .../net/wireless/mediatek/mt76/mt76x2_tx_common.c  |   2 +-
>  .../net/wireless/realtek/rtl818x/rtl8187/leds.c    |   2 +-
>  drivers/nvmem/core.c                               |   2 +-
>  drivers/of/base.c                                  |   2 +-
>  drivers/of/unittest-data/overlay_15.dts            |   4 +-
>  drivers/of/unittest-data/tests-overlay.dtsi        |   4 +-
>  drivers/opp/core.c                                 |  21 ++-
>  drivers/opp/cpu.c                                  |   2 +
>  drivers/opp/opp.h                                  |   2 +-
>  drivers/pci/controller/pcie-mediatek.c             |   4 +-
>  drivers/pci/hotplug/pciehp_core.c                  |   3 +-
>  drivers/pci/pci.c                                  |  37 +++++
>  drivers/pci/pci.h                                  |   2 +
>  drivers/pci/pcie/aer.c                             |  13 +-
>  drivers/pci/pcie/dpc.c                             |   3 +-
>  drivers/pci/pcie/err.c                             |  87 +++---------
>  drivers/pci/pcie/pme.c                             |   3 +-
>  drivers/pci/pcie/portdrv.h                         |  24 ++++
>  drivers/pci/pcie/portdrv_pci.c                     |   9 ++
>  drivers/pci/slot.c                                 |   1 -
>  drivers/phy/broadcom/Kconfig                       |   3 +-
>  drivers/phy/lantiq/phy-lantiq-rcu-usb2.c           |   1 -
>  drivers/phy/renesas/phy-rcar-gen3-usb2.c           |   2 +-
>  drivers/phy/ti/phy-twl4030-usb.c                   |  29 ++++
>  drivers/pinctrl/pinctrl-at91-pio4.c                |   8 +-
>  drivers/pinctrl/pinctrl-at91.c                     |  28 ++--
>  drivers/pinctrl/pinctrl-ingenic.c                  |   2 +-
>  drivers/power/reset/at91-sama5d2_shdwc.c           |   3 +
>  drivers/power/supply/ab8500_fg.c                   |  31 ++--
>  drivers/power/supply/max8998_charger.c             |   2 +-
>  drivers/power/supply/twl4030_charger.c             |  30 +++-
>  drivers/remoteproc/da8xx_remoteproc.c              |   2 +-
>  drivers/rtc/rtc-armada38x.c                        |  22 +--
>  drivers/rtc/rtc-isl1208.c                          |  27 ++--
>  drivers/rtc/rtc-mt6397.c                           |  13 +-
>  drivers/rtc/rtc-pl030.c                            |  15 +-
>  drivers/rtc/rtc-rv8803.c                           |   2 +-
>  drivers/rtc/rtc-sysfs.c                            |   4 +-
>  drivers/rtc/rtc-tx4939.c                           |   4 +-
>  drivers/s390/crypto/ap_bus.c                       |  18 +--
>  drivers/s390/net/qeth_core_main.c                  | 102 +++++++-------
>  drivers/s390/net/qeth_l2_main.c                    |   3 +
>  drivers/s390/net/qeth_l3_main.c                    |   3 +
>  drivers/scsi/NCR5380.c                             | 156 ++++++++++++---------
>  drivers/scsi/NCR5380.h                             |   2 +-
>  drivers/scsi/libsas/sas_expander.c                 |  13 +-
>  drivers/scsi/lpfc/lpfc_ct.c                        |   5 -
>  drivers/scsi/lpfc/lpfc_hbadisc.c                   |   2 +-
>  drivers/scsi/lpfc/lpfc_nportdisc.c                 |   3 +
>  drivers/scsi/lpfc/lpfc_nvme.c                      |   2 +-
>  drivers/scsi/lpfc/lpfc_nvmet.c                     |   7 +-
>  drivers/scsi/lpfc/lpfc_sli.c                       |   6 +-
>  drivers/scsi/pm8001/pm8001_hwi.c                   |   6 +
>  drivers/scsi/pm8001/pm8001_sas.c                   |   9 +-
>  drivers/scsi/pm8001/pm8001_sas.h                   |   1 +
>  drivers/scsi/pm8001/pm80xx_hwi.c                   |  80 ++++++++++-
>  drivers/scsi/pm8001/pm80xx_hwi.h                   |   3 +
>  drivers/scsi/qla2xxx/qla_gs.c                      |  28 +++-
>  drivers/scsi/qla2xxx/qla_init.c                    |  36 ++---
>  drivers/scsi/qla2xxx/qla_iocb.c                    |  12 +-
>  drivers/scsi/qla2xxx/qla_isr.c                     |  50 +++----
>  drivers/scsi/qla2xxx/qla_os.c                      |  29 +++-
>  drivers/scsi/qla2xxx/qla_target.c                  |   6 +
>  drivers/scsi/scsi_lib.c                            |   3 +-
>  drivers/scsi/sym53c8xx_2/sym_hipd.c                |  15 +-
>  drivers/scsi/ufs/ufshcd.c                          |  53 ++++---
>  drivers/slimbus/qcom-ngd-ctrl.c                    |  24 ++--
>  drivers/soc/imx/gpc.c                              |   2 +-
>  drivers/soc/qcom/apr.c                             |   4 +-
>  drivers/soc/qcom/qcom-geni-se.c                    |  41 +++---
>  drivers/soc/qcom/rpmh-rsc.c                        |   2 +
>  drivers/soc/qcom/wcnss_ctrl.c                      |   2 +-
>  drivers/soc/tegra/pmc.c                            |  55 +++++---
>  drivers/soundwire/bus.c                            |   1 +
>  drivers/soundwire/intel_init.c                     |   2 +-
>  drivers/spi/spi-bcm63xx-hsspi.c                    |  20 ++-
>  drivers/spi/spi-mt65xx.c                           |  37 ++---
>  drivers/spi/spi-pic32.c                            |   4 +-
>  drivers/staging/media/imx/imx-media-csi.c          |   5 +-
>  drivers/tee/optee/core.c                           |   2 +-
>  drivers/tty/serial/Kconfig                         |   1 +
>  drivers/tty/serial/atmel_serial.c                  |  42 ++++--
>  drivers/tty/serial/mxs-auart.c                     |   3 +-
>  drivers/tty/serial/qcom_geni_serial.c              |  55 ++++----
>  drivers/tty/serial/samsung.c                       |   8 ++
>  drivers/tty/serial/xilinx_uartps.c                 |  41 ++----
>  drivers/uio/uio_hv_generic.c                       |   5 +-
>  drivers/usb/chipidea/otg.c                         |   9 +-
>  drivers/usb/chipidea/usbmisc_imx.c                 |   2 +
>  drivers/usb/class/usbtmc.c                         |  17 ++-
>  drivers/usb/gadget/function/uvc_configfs.c         |  20 +++
>  drivers/usb/gadget/function/uvc_video.c            |  32 +++--
>  drivers/usb/host/xhci-mtk-sch.c                    |   4 +-
>  drivers/usb/mtu3/mtu3_core.c                       |   4 +-
>  drivers/usb/mtu3/mtu3_gadget.c                     |  22 +--
>  drivers/vfio/pci/vfio_pci.c                        |   8 +-
>  drivers/vfio/pci/vfio_pci_config.c                 |  31 +++-
>  fs/btrfs/inode.c                                   |  15 ++
>  fs/compat_ioctl.c                                  |  10 +-
>  fs/ecryptfs/inode.c                                |  19 ++-
>  fs/f2fs/data.c                                     |  35 ++---
>  fs/f2fs/f2fs.h                                     |   3 +-
>  fs/f2fs/file.c                                     |  63 +++++----
>  fs/f2fs/node.c                                     |   5 +-
>  fs/f2fs/recovery.c                                 |  17 +++
>  fs/f2fs/segment.c                                  |   6 +-
>  fs/f2fs/super.c                                    |  11 +-
>  fs/fuse/control.c                                  |   4 +-
>  fs/gfs2/rgrp.c                                     |   2 +-
>  fs/kernfs/symlink.c                                |   5 +-
>  fs/udf/super.c                                     |  65 ++++++++-
>  include/crypto/chacha20.h                          |   3 +-
>  include/linux/cpufeature.h                         |   2 +-
>  include/linux/edac.h                               |   3 +-
>  include/linux/fsl_ifc.h                            |   2 +
>  include/linux/hyperv.h                             |   2 +-
>  include/linux/intel-iommu.h                        |   6 +-
>  include/linux/libfdt_env.h                         |   1 +
>  include/linux/mlx5/driver.h                        |   5 +-
>  include/linux/timekeeping32.h                      |  15 +-
>  include/media/vsp1.h                               |   2 +-
>  include/net/devlink.h                              |   3 +
>  include/net/llc.h                                  |   1 +
>  include/soc/tegra/pmc.h                            |   1 +
>  include/trace/events/sched.h                       |  11 +-
>  kernel/events/uprobes.c                            |   4 +-
>  kernel/kprobes.c                                   |   8 +-
>  kernel/sched/sched.h                               |   2 +-
>  kernel/signal.c                                    |   4 +
>  kernel/time/time.c                                 |  15 +-
>  kernel/time/timekeeping.c                          |  24 ----
>  lib/chacha20.c                                     |   6 +-
>  mm/hugetlb_cgroup.c                                |   2 +-
>  mm/memcontrol.c                                    |   2 +-
>  mm/memfd.c                                         |   2 +-
>  mm/mempolicy.c                                     |  14 +-
>  net/bluetooth/l2cap_core.c                         |  10 ++
>  net/core/devlink.c                                 |  39 +++++-
>  net/core/rtnetlink.c                               |   2 +-
>  net/ipv4/gre_demux.c                               |   7 +-
>  net/ipv4/ip_gre.c                                  |   9 +-
>  net/ipv4/ipmr.c                                    |   3 +-
>  net/ipv4/netfilter/nf_nat_masquerade_ipv4.c        |  22 ++-
>  net/ipv6/netfilter/nf_nat_masquerade_ipv6.c        |  19 ++-
>  net/llc/llc_core.c                                 |   4 +-
>  net/mac80211/mlme.c                                |  17 +--
>  net/netfilter/nf_tables_api.c                      |   9 +-
>  net/netfilter/nft_cmp.c                            |   6 +-
>  net/netfilter/nft_reject.c                         |   6 +-
>  net/wireless/reg.c                                 | 110 +++++++++++----
>  samples/bpf/sockex2_kern.c                         |  11 +-
>  samples/bpf/sockex3_kern.c                         |   8 +-
>  samples/bpf/sockex3_user.c                         |   4 +-
>  sound/core/oss/pcm_plugin.c                        |   4 +-
>  sound/core/seq/seq_system.c                        |  18 ++-
>  sound/pci/hda/patch_ca0132.c                       |   1 +
>  sound/pci/intel8x0m.c                              |  20 +--
>  sound/soc/amd/acp-da7219-max98357a.c               |   2 +-
>  sound/soc/codecs/hdac_hdmi.c                       |   6 +
>  sound/soc/codecs/rt5682.c                          |   5 +
>  sound/soc/codecs/sgtl5000.c                        |   2 +-
>  sound/soc/meson/axg-fifo.c                         |   2 +
>  sound/soc/sh/rcar/rsnd.h                           |   1 +
>  sound/soc/sh/rcar/ssi.c                            |   4 +-
>  sound/soc/soc-dapm.c                               |   4 +-
>  sound/soc/soc-pcm.c                                |   2 +-
>  sound/usb/endpoint.c                               |   3 +
>  sound/usb/mixer.c                                  |   4 +-
>  sound/usb/quirks.c                                 |   4 +-
>  sound/usb/validate.c                               |   6 +-
>  .../testing/selftests/powerpc/tm/tm-unavailable.c  |   9 +-
>  tools/testing/selftests/powerpc/tm/tm.h            |   9 ++
>  524 files changed, 3933 insertions(+), 1921 deletions(-)
> 


^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (422 preceding siblings ...)
  2019-11-19  8:54 ` [PATCH 4.19 000/422] 4.19.85-stable review Chris Paterson
@ 2019-11-19  9:18 ` Jon Hunter
  2019-11-19 12:24   ` Greg Kroah-Hartman
  2019-11-19 12:02 ` kernelci.org bot
  2019-11-19 20:35 ` Guenter Roeck
  425 siblings, 1 reply; 478+ messages in thread
From: Jon Hunter @ 2019-11-19  9:18 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel
  Cc: torvalds, akpm, linux, shuah, patches, ben.hutchings,
	lkft-triage, stable


On 19/11/2019 05:13, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.19.85 release.
> There are 422 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Thu, 21 Nov 2019 05:02:35 +0000.
> Anything received after that time might be too late.
> 
> The whole patch series can be found in one patch at:
> 	https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.85-rc1.gz
> or in the git tree and branch at:
> 	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
> and the diffstat can be found below.
> 
> thanks,
> 
> greg k-h
> 
> -------------

...

> Martin Blumenstingl <martin.blumenstingl@googlemail.com>
>     ARM: dts: meson8b: odroidc1: enable the SAR ADC

This commit is generating the following compilation error for ARM ...

arch/arm/boot/dts/meson8b-odroidc1.dtb: ERROR (phandle_references): /soc/cbus@c1100000/adc@8680: Reference to non-existent node or label "vcc_1v8"

ERROR: Input tree has errors, aborting (use -f to force output)
scripts/Makefile.lib:293: recipe for target 'arch/arm/boot/dts/meson8b-odroidc1.dtb' failed
make[1]: *** [arch/arm/boot/dts/meson8b-odroidc1.dtb] Error 2
arch/arm/Makefile:348: recipe for target 'dtbs' failed
make: *** [dtbs] Error 2

Cheers
Jon

-- 
nvpublic

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 150/422] tty/serial: atmel: Change the driver to work under at91-usart MFD
  2019-11-19  5:15 ` [PATCH 4.19 150/422] tty/serial: atmel: Change the driver to work under at91-usart MFD Greg Kroah-Hartman
@ 2019-11-19 12:01   ` Richard Genoud
  2019-11-19 13:17     ` Richard Genoud
  0 siblings, 1 reply; 478+ messages in thread
From: Richard Genoud @ 2019-11-19 12:01 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel, Nicolas Ferre, Radu Pirea
  Cc: stable # 4 . 4+, Andy Shevchenko, Richard Genoud, Lee Jones, Sasha Levin

Hi all,

Le 19/11/2019 à 06:15, Greg Kroah-Hartman a écrit :
> From: Radu Pirea <radu.pirea@microchip.com>
> 
> [ Upstream commit c24d25317a7c6bb3053d4c193b3cf57d1e9a3e4b ]
> 
> This patch modifies the place where resources and device tree properties
> are searched.

Maybe I missed something, but I don't see why this is backported to stable.
I don't think that this patch was send with a Cc: stable (I just came
back from holidays, so I may be wrong :))

Moreover, it's part of a series that introduce "config MFD_AT91_USART",
but grepping MFD_AT91_USART on stable-rc/linux-4.19.y only returns:
drivers/tty/serial/Kconfig:     select MFD_AT91_USART

So I think this is a mistake (but how it got there ? it is by a bot or
something ?)

regards,
Richard

> 
> Signed-off-by: Radu Pirea <radu.pirea@microchip.com>
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> Acked-by: Richard Genoud <richard.genoud@gmail.com>
> Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
> Signed-off-by: Sasha Levin <sashal@kernel.org>
> ---
>  drivers/tty/serial/Kconfig        |  1 +
>  drivers/tty/serial/atmel_serial.c | 42 ++++++++++++++++++++-----------
>  2 files changed, 28 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
> index df8bd0c7b97db..32886c3046413 100644
> --- a/drivers/tty/serial/Kconfig
> +++ b/drivers/tty/serial/Kconfig
> @@ -118,6 +118,7 @@ config SERIAL_ATMEL
>  	depends on ARCH_AT91 || COMPILE_TEST
>  	select SERIAL_CORE
>  	select SERIAL_MCTRL_GPIO if GPIOLIB
> +	select MFD_AT91_USART
>  	help
>  	  This enables the driver for the on-chip UARTs of the Atmel
>  	  AT91 processors.
> diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
> index dd8949e8fcd7a..251f708f47f76 100644
> --- a/drivers/tty/serial/atmel_serial.c
> +++ b/drivers/tty/serial/atmel_serial.c
> @@ -195,8 +195,7 @@ static struct console atmel_console;
>  
>  #if defined(CONFIG_OF)
>  static const struct of_device_id atmel_serial_dt_ids[] = {
> -	{ .compatible = "atmel,at91rm9200-usart" },
> -	{ .compatible = "atmel,at91sam9260-usart" },
> +	{ .compatible = "atmel,at91rm9200-usart-serial" },
>  	{ /* sentinel */ }
>  };
>  #endif
> @@ -926,6 +925,7 @@ static void atmel_tx_dma(struct uart_port *port)
>  static int atmel_prepare_tx_dma(struct uart_port *port)
>  {
>  	struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
> +	struct device *mfd_dev = port->dev->parent;
>  	dma_cap_mask_t		mask;
>  	struct dma_slave_config config;
>  	int ret, nent;
> @@ -933,7 +933,7 @@ static int atmel_prepare_tx_dma(struct uart_port *port)
>  	dma_cap_zero(mask);
>  	dma_cap_set(DMA_SLAVE, mask);
>  
> -	atmel_port->chan_tx = dma_request_slave_channel(port->dev, "tx");
> +	atmel_port->chan_tx = dma_request_slave_channel(mfd_dev, "tx");
>  	if (atmel_port->chan_tx == NULL)
>  		goto chan_err;
>  	dev_info(port->dev, "using %s for tx DMA transfers\n",
> @@ -1104,6 +1104,7 @@ static void atmel_rx_from_dma(struct uart_port *port)
>  static int atmel_prepare_rx_dma(struct uart_port *port)
>  {
>  	struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
> +	struct device *mfd_dev = port->dev->parent;
>  	struct dma_async_tx_descriptor *desc;
>  	dma_cap_mask_t		mask;
>  	struct dma_slave_config config;
> @@ -1115,7 +1116,7 @@ static int atmel_prepare_rx_dma(struct uart_port *port)
>  	dma_cap_zero(mask);
>  	dma_cap_set(DMA_CYCLIC, mask);
>  
> -	atmel_port->chan_rx = dma_request_slave_channel(port->dev, "rx");
> +	atmel_port->chan_rx = dma_request_slave_channel(mfd_dev, "rx");
>  	if (atmel_port->chan_rx == NULL)
>  		goto chan_err;
>  	dev_info(port->dev, "using %s for rx DMA transfers\n",
> @@ -2246,8 +2247,8 @@ static const char *atmel_type(struct uart_port *port)
>   */
>  static void atmel_release_port(struct uart_port *port)
>  {
> -	struct platform_device *pdev = to_platform_device(port->dev);
> -	int size = pdev->resource[0].end - pdev->resource[0].start + 1;
> +	struct platform_device *mpdev = to_platform_device(port->dev->parent);
> +	int size = resource_size(mpdev->resource);
>  
>  	release_mem_region(port->mapbase, size);
>  
> @@ -2262,8 +2263,8 @@ static void atmel_release_port(struct uart_port *port)
>   */
>  static int atmel_request_port(struct uart_port *port)
>  {
> -	struct platform_device *pdev = to_platform_device(port->dev);
> -	int size = pdev->resource[0].end - pdev->resource[0].start + 1;
> +	struct platform_device *mpdev = to_platform_device(port->dev->parent);
> +	int size = resource_size(mpdev->resource);
>  
>  	if (!request_mem_region(port->mapbase, size, "atmel_serial"))
>  		return -EBUSY;
> @@ -2365,27 +2366,28 @@ static int atmel_init_port(struct atmel_uart_port *atmel_port,
>  {
>  	int ret;
>  	struct uart_port *port = &atmel_port->uart;
> +	struct platform_device *mpdev = to_platform_device(pdev->dev.parent);
>  
>  	atmel_init_property(atmel_port, pdev);
>  	atmel_set_ops(port);
>  
> -	uart_get_rs485_mode(&pdev->dev, &port->rs485);
> +	uart_get_rs485_mode(&mpdev->dev, &port->rs485);
>  
>  	port->iotype		= UPIO_MEM;
>  	port->flags		= UPF_BOOT_AUTOCONF | UPF_IOREMAP;
>  	port->ops		= &atmel_pops;
>  	port->fifosize		= 1;
>  	port->dev		= &pdev->dev;
> -	port->mapbase	= pdev->resource[0].start;
> -	port->irq	= pdev->resource[1].start;
> +	port->mapbase		= mpdev->resource[0].start;
> +	port->irq		= mpdev->resource[1].start;
>  	port->rs485_config	= atmel_config_rs485;
> -	port->membase	= NULL;
> +	port->membase		= NULL;
>  
>  	memset(&atmel_port->rx_ring, 0, sizeof(atmel_port->rx_ring));
>  
>  	/* for console, the clock could already be configured */
>  	if (!atmel_port->clk) {
> -		atmel_port->clk = clk_get(&pdev->dev, "usart");
> +		atmel_port->clk = clk_get(&mpdev->dev, "usart");
>  		if (IS_ERR(atmel_port->clk)) {
>  			ret = PTR_ERR(atmel_port->clk);
>  			atmel_port->clk = NULL;
> @@ -2718,13 +2720,22 @@ static void atmel_serial_probe_fifos(struct atmel_uart_port *atmel_port,
>  static int atmel_serial_probe(struct platform_device *pdev)
>  {
>  	struct atmel_uart_port *atmel_port;
> -	struct device_node *np = pdev->dev.of_node;
> +	struct device_node *np = pdev->dev.parent->of_node;
>  	void *data;
>  	int ret = -ENODEV;
>  	bool rs485_enabled;
>  
>  	BUILD_BUG_ON(ATMEL_SERIAL_RINGSIZE & (ATMEL_SERIAL_RINGSIZE - 1));
>  
> +	/*
> +	 * In device tree there is no node with "atmel,at91rm9200-usart-serial"
> +	 * as compatible string. This driver is probed by at91-usart mfd driver
> +	 * which is just a wrapper over the atmel_serial driver and
> +	 * spi-at91-usart driver. All attributes needed by this driver are
> +	 * found in of_node of parent.
> +	 */
> +	pdev->dev.of_node = np;
> +
>  	ret = of_alias_get_id(np, "serial");
>  	if (ret < 0)
>  		/* port id not found in platform data nor device-tree aliases:
> @@ -2860,6 +2871,7 @@ static int atmel_serial_remove(struct platform_device *pdev)
>  
>  	clk_put(atmel_port->clk);
>  	atmel_port->clk = NULL;
> +	pdev->dev.of_node = NULL;
>  
>  	return ret;
>  }
> @@ -2870,7 +2882,7 @@ static struct platform_driver atmel_serial_driver = {
>  	.suspend	= atmel_serial_suspend,
>  	.resume		= atmel_serial_resume,
>  	.driver		= {
> -		.name			= "atmel_usart",
> +		.name			= "atmel_usart_serial",
>  		.of_match_table		= of_match_ptr(atmel_serial_dt_ids),
>  	},
>  };
> 


^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (423 preceding siblings ...)
  2019-11-19  9:18 ` Jon Hunter
@ 2019-11-19 12:02 ` kernelci.org bot
  2019-11-19 20:35 ` Guenter Roeck
  425 siblings, 0 replies; 478+ messages in thread
From: kernelci.org bot @ 2019-11-19 12:02 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-kernel
  Cc: Greg Kroah-Hartman, torvalds, akpm, linux, shuah, patches,
	ben.hutchings, lkft-triage, stable

stable-rc/linux-4.19.y boot: 67 boots: 1 failed, 60 passed with 6 offline (v4.19.84-423-g1fd0ac6484bb)

Full Boot Summary: https://kernelci.org/boot/all/job/stable-rc/branch/linux-4.19.y/kernel/v4.19.84-423-g1fd0ac6484bb/
Full Build Summary: https://kernelci.org/build/stable-rc/branch/linux-4.19.y/kernel/v4.19.84-423-g1fd0ac6484bb/

Tree: stable-rc
Branch: linux-4.19.y
Git Describe: v4.19.84-423-g1fd0ac6484bb
Git Commit: 1fd0ac6484bbc5a0a4e64547a3a27a510d647fc1
Git URL: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
Tested: 59 unique boards, 17 SoC families, 15 builds out of 206

Boot Regressions Detected:

arm:

    bcm2835_defconfig:
        gcc-8:
          bcm2835-rpi-b:
              lab-baylibre-seattle: new failure (last pass: v4.19.84)

    exynos_defconfig:
        gcc-8:
          exynos5422-odroidxu3:
              lab-baylibre: new failure (last pass: v4.19.84)

Boot Failure Detected:

arm:
    exynos_defconfig:
        gcc-8:
            exynos5422-odroidxu3: 1 failed lab

Offline Platforms:

arm64:

    defconfig:
        gcc-8
            juno-r2: 1 offline lab
            mt7622-rfb1: 1 offline lab

arm:

    bcm2835_defconfig:
        gcc-8
            bcm2835-rpi-b: 1 offline lab

    sunxi_defconfig:
        gcc-8
            sun5i-r8-chip: 1 offline lab
            sun7i-a20-bananapi: 1 offline lab

    multi_v7_defconfig:
        gcc-8
            alpine-db: 1 offline lab

---
For more info write to <info@kernelci.org>

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19  9:18 ` Jon Hunter
@ 2019-11-19 12:24   ` Greg Kroah-Hartman
  2019-11-19 12:30     ` Greg Kroah-Hartman
  0 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19 12:24 UTC (permalink / raw)
  To: Jon Hunter
  Cc: linux-kernel, torvalds, akpm, linux, shuah, patches,
	ben.hutchings, lkft-triage, stable

On Tue, Nov 19, 2019 at 09:18:03AM +0000, Jon Hunter wrote:
> 
> On 19/11/2019 05:13, Greg Kroah-Hartman wrote:
> > This is the start of the stable review cycle for the 4.19.85 release.
> > There are 422 patches in this series, all will be posted as a response
> > to this one.  If anyone has any issues with these being applied, please
> > let me know.
> > 
> > Responses should be made by Thu, 21 Nov 2019 05:02:35 +0000.
> > Anything received after that time might be too late.
> > 
> > The whole patch series can be found in one patch at:
> > 	https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.85-rc1.gz
> > or in the git tree and branch at:
> > 	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
> > and the diffstat can be found below.
> > 
> > thanks,
> > 
> > greg k-h
> > 
> > -------------
> 
> ...
> 
> > Martin Blumenstingl <martin.blumenstingl@googlemail.com>
> >     ARM: dts: meson8b: odroidc1: enable the SAR ADC
> 
> This commit is generating the following compilation error for ARM ...
> 
> arch/arm/boot/dts/meson8b-odroidc1.dtb: ERROR (phandle_references): /soc/cbus@c1100000/adc@8680: Reference to non-existent node or label "vcc_1v8"
> 
> ERROR: Input tree has errors, aborting (use -f to force output)
> scripts/Makefile.lib:293: recipe for target 'arch/arm/boot/dts/meson8b-odroidc1.dtb' failed
> make[1]: *** [arch/arm/boot/dts/meson8b-odroidc1.dtb] Error 2
> arch/arm/Makefile:348: recipe for target 'dtbs' failed
> make: *** [dtbs] Error 2

Thanks, will go remove that patch.

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19  8:54 ` [PATCH 4.19 000/422] 4.19.85-stable review Chris Paterson
@ 2019-11-19 12:29   ` Greg Kroah-Hartman
  2019-11-19 14:44     ` Chris Paterson
  2019-11-19 16:46     ` Guenter Roeck
  0 siblings, 2 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19 12:29 UTC (permalink / raw)
  To: Chris Paterson
  Cc: linux-kernel, cip-dev, torvalds, akpm, linux, shuah, patches,
	ben.hutchings, lkft-triage, stable

On Tue, Nov 19, 2019 at 08:54:25AM +0000, Chris Paterson wrote:
> Hello Greg, all,
> 
> > From: stable-owner@vger.kernel.org <stable-owner@vger.kernel.org> On
> > Behalf Of Greg Kroah-Hartman
> > Sent: 19 November 2019 05:13
> > 
> > This is the start of the stable review cycle for the 4.19.85 release.
> > There are 422 patches in this series, all will be posted as a response
> > to this one.  If anyone has any issues with these being applied, please
> > let me know.
> 
> I'm seeing some build issues with module compilation with this release (1b1960cc Linux 4.19.85-rc1), I also saw them with the previous two versions of Linux 4.19.85-rc1 (cd21ecdb and 1fd0ac64).
> 
> Full log available on GitLab [0]. Build conf [1].
> [0] https://gitlab.com/cip-playground/linux-stable-rc-ci/-/jobs/354591285
> [1] https://gitlab.com/cip-playground/linux-stable-rc-ci/-/jobs/354591285/artifacts/file/output/4.19.85-rc1_1b1960cc7/x86/siemens_iot2000.config/config/.config
> 
> Main error below:
> 
> 3907   CC [M]  drivers/net/ethernet/mellanox/mlx4/main.o
> 3908   LD [M]  fs/ntfs/ntfs.o
> 3909   CC [M]  drivers/net/ethernet/intel/i40evf/i40e_txrx.o
> 3910   CC [M]  drivers/usb/musb/musb_core.o
> 3911   CC [M]  drivers/net/ethernet/nvidia/forcedeth.o
> 3912   CC [M]  fs/udf/balloc.o
> 3913   CC [M]  drivers/net/ethernet/intel/fm10k/fm10k_debugfs.o
> 3914   CC [M]  fs/udf/dir.o
> 3915   CC [M]  drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.o
> 3916   CC [M]  drivers/net/ethernet/intel/i40e/i40e_ptp.o
> 3917 drivers/net/ethernet/mellanox/mlx4/main.c: In function 'mlx4_init_one':
> 3918 drivers/net/ethernet/mellanox/mlx4/main.c:3985:2: error: implicit declaration of function 'devlink_reload_enable'; did you mean 'devlink_region_create'? [-Werror=implicit-function-declaration]
> 3919   devlink_reload_enable(devlink);
> 3920   ^~~~~~~~~~~~~~~~~~~~~
> 3921   devlink_region_create
> 3922   CC [M]  drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.o
> 3923 drivers/net/ethernet/mellanox/mlx4/main.c: In function 'mlx4_remove_one':
> 3924 drivers/net/ethernet/mellanox/mlx4/main.c:4097:2: error: implicit declaration of function 'devlink_reload_disable'; did you mean 'devlink_region_destroy'? [-Werror=implicit-function-declaration]
> 3925   devlink_reload_disable(devlink);
> 3926   ^~~~~~~~~~~~~~~~~~~~~~
> 3927   devlink_region_destroy
> 3928   CC [M]  drivers/net/ethernet/packetengines/hamachi.o
> 3929   CC [M]  fs/udf/file.o
> 3930   LD [M]  drivers/net/ethernet/intel/fm10k/fm10k.o
> 
> I haven't tried to trace the issue further yet, sorry.

Any chance you can bisect this?  I don't see any obvious reason why this
error should be happening, and it isn't showing up here :(

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19 12:24   ` Greg Kroah-Hartman
@ 2019-11-19 12:30     ` Greg Kroah-Hartman
  2019-11-19 15:07       ` Jon Hunter
  0 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19 12:30 UTC (permalink / raw)
  To: Jon Hunter
  Cc: linux-kernel, torvalds, akpm, linux, shuah, patches,
	ben.hutchings, lkft-triage, stable

On Tue, Nov 19, 2019 at 01:24:17PM +0100, Greg Kroah-Hartman wrote:
> On Tue, Nov 19, 2019 at 09:18:03AM +0000, Jon Hunter wrote:
> > 
> > On 19/11/2019 05:13, Greg Kroah-Hartman wrote:
> > > This is the start of the stable review cycle for the 4.19.85 release.
> > > There are 422 patches in this series, all will be posted as a response
> > > to this one.  If anyone has any issues with these being applied, please
> > > let me know.
> > > 
> > > Responses should be made by Thu, 21 Nov 2019 05:02:35 +0000.
> > > Anything received after that time might be too late.
> > > 
> > > The whole patch series can be found in one patch at:
> > > 	https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.85-rc1.gz
> > > or in the git tree and branch at:
> > > 	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
> > > and the diffstat can be found below.
> > > 
> > > thanks,
> > > 
> > > greg k-h
> > > 
> > > -------------
> > 
> > ...
> > 
> > > Martin Blumenstingl <martin.blumenstingl@googlemail.com>
> > >     ARM: dts: meson8b: odroidc1: enable the SAR ADC
> > 
> > This commit is generating the following compilation error for ARM ...
> > 
> > arch/arm/boot/dts/meson8b-odroidc1.dtb: ERROR (phandle_references): /soc/cbus@c1100000/adc@8680: Reference to non-existent node or label "vcc_1v8"
> > 
> > ERROR: Input tree has errors, aborting (use -f to force output)
> > scripts/Makefile.lib:293: recipe for target 'arch/arm/boot/dts/meson8b-odroidc1.dtb' failed
> > make[1]: *** [arch/arm/boot/dts/meson8b-odroidc1.dtb] Error 2
> > arch/arm/Makefile:348: recipe for target 'dtbs' failed
> > make: *** [dtbs] Error 2
> 
> Thanks, will go remove that patch.

-rc2 is out with that patch removed.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 150/422] tty/serial: atmel: Change the driver to work under at91-usart MFD
  2019-11-19 12:01   ` Richard Genoud
@ 2019-11-19 13:17     ` Richard Genoud
  2019-11-19 15:45       ` Greg Kroah-Hartman
  0 siblings, 1 reply; 478+ messages in thread
From: Richard Genoud @ 2019-11-19 13:17 UTC (permalink / raw)
  To: Richard Genoud, Greg Kroah-Hartman, linux-kernel, Nicolas Ferre,
	Radu Pirea, Sasha Levin
  Cc: stable # 4 . 4+, Andy Shevchenko, Lee Jones

Le 19/11/2019 à 13:01, Richard Genoud a écrit :
> Hi all,
> 
> Le 19/11/2019 à 06:15, Greg Kroah-Hartman a écrit :
>> From: Radu Pirea <radu.pirea@microchip.com>
>>
>> [ Upstream commit c24d25317a7c6bb3053d4c193b3cf57d1e9a3e4b ]
>>
>> This patch modifies the place where resources and device tree properties
>> are searched.
> 
> Maybe I missed something, but I don't see why this is backported to stable.
> I don't think that this patch was send with a Cc: stable (I just came
> back from holidays, so I may be wrong :))
> 
> Moreover, it's part of a series that introduce "config MFD_AT91_USART",
> but grepping MFD_AT91_USART on stable-rc/linux-4.19.y only returns:
> drivers/tty/serial/Kconfig:     select MFD_AT91_USART
> 
> So I think this is a mistake (but how it got there ? it is by a bot or
> something ?)
Replying to myself :)

Mystery solved, it was added by Sasha's bot/AI
[PATCH AUTOSEL 4.19 118/205] tty/serial: atmel: Change the driver to work under at91-usart MFD

So Greg, you can safely drop this patch.

Thanks,

Richard.
> 
> regards,
> Richard
> 
>>
>> Signed-off-by: Radu Pirea <radu.pirea@microchip.com>
>> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
>> Acked-by: Richard Genoud <richard.genoud@gmail.com>
>> Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
>> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>> Signed-off-by: Lee Jones <lee.jones@linaro.org>
>> Signed-off-by: Sasha Levin <sashal@kernel.org>
>> ---
>>  drivers/tty/serial/Kconfig        |  1 +
>>  drivers/tty/serial/atmel_serial.c | 42 ++++++++++++++++++++-----------
>>  2 files changed, 28 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
>> index df8bd0c7b97db..32886c3046413 100644
>> --- a/drivers/tty/serial/Kconfig
>> +++ b/drivers/tty/serial/Kconfig
>> @@ -118,6 +118,7 @@ config SERIAL_ATMEL
>>  	depends on ARCH_AT91 || COMPILE_TEST
>>  	select SERIAL_CORE
>>  	select SERIAL_MCTRL_GPIO if GPIOLIB
>> +	select MFD_AT91_USART
>>  	help
>>  	  This enables the driver for the on-chip UARTs of the Atmel
>>  	  AT91 processors.
>> diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
>> index dd8949e8fcd7a..251f708f47f76 100644
>> --- a/drivers/tty/serial/atmel_serial.c
>> +++ b/drivers/tty/serial/atmel_serial.c
>> @@ -195,8 +195,7 @@ static struct console atmel_console;
>>  
>>  #if defined(CONFIG_OF)
>>  static const struct of_device_id atmel_serial_dt_ids[] = {
>> -	{ .compatible = "atmel,at91rm9200-usart" },
>> -	{ .compatible = "atmel,at91sam9260-usart" },
>> +	{ .compatible = "atmel,at91rm9200-usart-serial" },
>>  	{ /* sentinel */ }
>>  };
>>  #endif
>> @@ -926,6 +925,7 @@ static void atmel_tx_dma(struct uart_port *port)
>>  static int atmel_prepare_tx_dma(struct uart_port *port)
>>  {
>>  	struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
>> +	struct device *mfd_dev = port->dev->parent;
>>  	dma_cap_mask_t		mask;
>>  	struct dma_slave_config config;
>>  	int ret, nent;
>> @@ -933,7 +933,7 @@ static int atmel_prepare_tx_dma(struct uart_port *port)
>>  	dma_cap_zero(mask);
>>  	dma_cap_set(DMA_SLAVE, mask);
>>  
>> -	atmel_port->chan_tx = dma_request_slave_channel(port->dev, "tx");
>> +	atmel_port->chan_tx = dma_request_slave_channel(mfd_dev, "tx");
>>  	if (atmel_port->chan_tx == NULL)
>>  		goto chan_err;
>>  	dev_info(port->dev, "using %s for tx DMA transfers\n",
>> @@ -1104,6 +1104,7 @@ static void atmel_rx_from_dma(struct uart_port *port)
>>  static int atmel_prepare_rx_dma(struct uart_port *port)
>>  {
>>  	struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
>> +	struct device *mfd_dev = port->dev->parent;
>>  	struct dma_async_tx_descriptor *desc;
>>  	dma_cap_mask_t		mask;
>>  	struct dma_slave_config config;
>> @@ -1115,7 +1116,7 @@ static int atmel_prepare_rx_dma(struct uart_port *port)
>>  	dma_cap_zero(mask);
>>  	dma_cap_set(DMA_CYCLIC, mask);
>>  
>> -	atmel_port->chan_rx = dma_request_slave_channel(port->dev, "rx");
>> +	atmel_port->chan_rx = dma_request_slave_channel(mfd_dev, "rx");
>>  	if (atmel_port->chan_rx == NULL)
>>  		goto chan_err;
>>  	dev_info(port->dev, "using %s for rx DMA transfers\n",
>> @@ -2246,8 +2247,8 @@ static const char *atmel_type(struct uart_port *port)
>>   */
>>  static void atmel_release_port(struct uart_port *port)
>>  {
>> -	struct platform_device *pdev = to_platform_device(port->dev);
>> -	int size = pdev->resource[0].end - pdev->resource[0].start + 1;
>> +	struct platform_device *mpdev = to_platform_device(port->dev->parent);
>> +	int size = resource_size(mpdev->resource);
>>  
>>  	release_mem_region(port->mapbase, size);
>>  
>> @@ -2262,8 +2263,8 @@ static void atmel_release_port(struct uart_port *port)
>>   */
>>  static int atmel_request_port(struct uart_port *port)
>>  {
>> -	struct platform_device *pdev = to_platform_device(port->dev);
>> -	int size = pdev->resource[0].end - pdev->resource[0].start + 1;
>> +	struct platform_device *mpdev = to_platform_device(port->dev->parent);
>> +	int size = resource_size(mpdev->resource);
>>  
>>  	if (!request_mem_region(port->mapbase, size, "atmel_serial"))
>>  		return -EBUSY;
>> @@ -2365,27 +2366,28 @@ static int atmel_init_port(struct atmel_uart_port *atmel_port,
>>  {
>>  	int ret;
>>  	struct uart_port *port = &atmel_port->uart;
>> +	struct platform_device *mpdev = to_platform_device(pdev->dev.parent);
>>  
>>  	atmel_init_property(atmel_port, pdev);
>>  	atmel_set_ops(port);
>>  
>> -	uart_get_rs485_mode(&pdev->dev, &port->rs485);
>> +	uart_get_rs485_mode(&mpdev->dev, &port->rs485);
>>  
>>  	port->iotype		= UPIO_MEM;
>>  	port->flags		= UPF_BOOT_AUTOCONF | UPF_IOREMAP;
>>  	port->ops		= &atmel_pops;
>>  	port->fifosize		= 1;
>>  	port->dev		= &pdev->dev;
>> -	port->mapbase	= pdev->resource[0].start;
>> -	port->irq	= pdev->resource[1].start;
>> +	port->mapbase		= mpdev->resource[0].start;
>> +	port->irq		= mpdev->resource[1].start;
>>  	port->rs485_config	= atmel_config_rs485;
>> -	port->membase	= NULL;
>> +	port->membase		= NULL;
>>  
>>  	memset(&atmel_port->rx_ring, 0, sizeof(atmel_port->rx_ring));
>>  
>>  	/* for console, the clock could already be configured */
>>  	if (!atmel_port->clk) {
>> -		atmel_port->clk = clk_get(&pdev->dev, "usart");
>> +		atmel_port->clk = clk_get(&mpdev->dev, "usart");
>>  		if (IS_ERR(atmel_port->clk)) {
>>  			ret = PTR_ERR(atmel_port->clk);
>>  			atmel_port->clk = NULL;
>> @@ -2718,13 +2720,22 @@ static void atmel_serial_probe_fifos(struct atmel_uart_port *atmel_port,
>>  static int atmel_serial_probe(struct platform_device *pdev)
>>  {
>>  	struct atmel_uart_port *atmel_port;
>> -	struct device_node *np = pdev->dev.of_node;
>> +	struct device_node *np = pdev->dev.parent->of_node;
>>  	void *data;
>>  	int ret = -ENODEV;
>>  	bool rs485_enabled;
>>  
>>  	BUILD_BUG_ON(ATMEL_SERIAL_RINGSIZE & (ATMEL_SERIAL_RINGSIZE - 1));
>>  
>> +	/*
>> +	 * In device tree there is no node with "atmel,at91rm9200-usart-serial"
>> +	 * as compatible string. This driver is probed by at91-usart mfd driver
>> +	 * which is just a wrapper over the atmel_serial driver and
>> +	 * spi-at91-usart driver. All attributes needed by this driver are
>> +	 * found in of_node of parent.
>> +	 */
>> +	pdev->dev.of_node = np;
>> +
>>  	ret = of_alias_get_id(np, "serial");
>>  	if (ret < 0)
>>  		/* port id not found in platform data nor device-tree aliases:
>> @@ -2860,6 +2871,7 @@ static int atmel_serial_remove(struct platform_device *pdev)
>>  
>>  	clk_put(atmel_port->clk);
>>  	atmel_port->clk = NULL;
>> +	pdev->dev.of_node = NULL;
>>  
>>  	return ret;
>>  }
>> @@ -2870,7 +2882,7 @@ static struct platform_driver atmel_serial_driver = {
>>  	.suspend	= atmel_serial_suspend,
>>  	.resume		= atmel_serial_resume,
>>  	.driver		= {
>> -		.name			= "atmel_usart",
>> +		.name			= "atmel_usart_serial",
>>  		.of_match_table		= of_match_ptr(atmel_serial_dt_ids),
>>  	},
>>  };
>>
> 


^ permalink raw reply	[flat|nested] 478+ messages in thread

* RE: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19 12:29   ` Greg Kroah-Hartman
@ 2019-11-19 14:44     ` Chris Paterson
  2019-11-19 15:48       ` Greg Kroah-Hartman
  2019-11-19 16:46     ` Guenter Roeck
  1 sibling, 1 reply; 478+ messages in thread
From: Chris Paterson @ 2019-11-19 14:44 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, cip-dev, torvalds, akpm, linux, shuah, patches,
	ben.hutchings, lkft-triage, stable

Hi Greg,

> From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Sent: 19 November 2019 12:29
> 
> On Tue, Nov 19, 2019 at 08:54:25AM +0000, Chris Paterson wrote:
> > Hello Greg, all,
> >
> > > From: stable-owner@vger.kernel.org <stable-owner@vger.kernel.org> On
> > > Behalf Of Greg Kroah-Hartman
> > > Sent: 19 November 2019 05:13
> > >
> > > This is the start of the stable review cycle for the 4.19.85 release.
> > > There are 422 patches in this series, all will be posted as a response
> > > to this one.  If anyone has any issues with these being applied, please
> > > let me know.
> >
> > I'm seeing some build issues with module compilation with this release
> (1b1960cc Linux 4.19.85-rc1), I also saw them with the previous two versions of
> Linux 4.19.85-rc1 (cd21ecdb and 1fd0ac64).
> >
> > Full log available on GitLab [0]. Build conf [1].
> > [0] https://gitlab.com/cip-playground/linux-stable-rc-ci/-/jobs/354591285
> > [1] https://gitlab.com/cip-playground/linux-stable-rc-ci/-
> /jobs/354591285/artifacts/file/output/4.19.85-
> rc1_1b1960cc7/x86/siemens_iot2000.config/config/.config
> >
> > Main error below:
> >
> > 3907   CC [M]  drivers/net/ethernet/mellanox/mlx4/main.o
> > 3908   LD [M]  fs/ntfs/ntfs.o
> > 3909   CC [M]  drivers/net/ethernet/intel/i40evf/i40e_txrx.o
> > 3910   CC [M]  drivers/usb/musb/musb_core.o
> > 3911   CC [M]  drivers/net/ethernet/nvidia/forcedeth.o
> > 3912   CC [M]  fs/udf/balloc.o
> > 3913   CC [M]  drivers/net/ethernet/intel/fm10k/fm10k_debugfs.o
> > 3914   CC [M]  fs/udf/dir.o
> > 3915   CC [M]  drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.o
> > 3916   CC [M]  drivers/net/ethernet/intel/i40e/i40e_ptp.o
> > 3917 drivers/net/ethernet/mellanox/mlx4/main.c: In function 'mlx4_init_one':
> > 3918 drivers/net/ethernet/mellanox/mlx4/main.c:3985:2: error: implicit
> declaration of function 'devlink_reload_enable'; did you mean
> 'devlink_region_create'? [-Werror=implicit-function-declaration]
> > 3919   devlink_reload_enable(devlink);
> > 3920   ^~~~~~~~~~~~~~~~~~~~~
> > 3921   devlink_region_create
> > 3922   CC [M]  drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.o
> > 3923 drivers/net/ethernet/mellanox/mlx4/main.c: In function
> 'mlx4_remove_one':
> > 3924 drivers/net/ethernet/mellanox/mlx4/main.c:4097:2: error: implicit
> declaration of function 'devlink_reload_disable'; did you mean
> 'devlink_region_destroy'? [-Werror=implicit-function-declaration]
> > 3925   devlink_reload_disable(devlink);
> > 3926   ^~~~~~~~~~~~~~~~~~~~~~
> > 3927   devlink_region_destroy
> > 3928   CC [M]  drivers/net/ethernet/packetengines/hamachi.o
> > 3929   CC [M]  fs/udf/file.o
> > 3930   LD [M]  drivers/net/ethernet/intel/fm10k/fm10k.o
> >
> > I haven't tried to trace the issue further yet, sorry.
> 
> Any chance you can bisect this?  I don't see any obvious reason why this
> error should be happening, and it isn't showing up here :(

Looking through the commit history, the issue seems to be related to:
672cf82122be ("devlink: disallow reload operation during device cleanup")

I've reverted this commit and Linux 4.19.85-rc2 (af1bb7db before revert) will build with the configuration I'm using [2].
I haven't looked further yet though, sorry.

[2] https://gitlab.com/cip-project/cip-kernel/cip-kernel-config/raw/master/4.19.y-cip/x86/siemens_iot2000.config

Kind regards, Chris

> 
> thanks,
> 
> greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19 12:30     ` Greg Kroah-Hartman
@ 2019-11-19 15:07       ` Jon Hunter
  2019-11-19 15:48         ` Greg Kroah-Hartman
  0 siblings, 1 reply; 478+ messages in thread
From: Jon Hunter @ 2019-11-19 15:07 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, torvalds, akpm, linux, shuah, patches,
	ben.hutchings, lkft-triage, stable, linux-tegra


On 19/11/2019 12:30, Greg Kroah-Hartman wrote:
> On Tue, Nov 19, 2019 at 01:24:17PM +0100, Greg Kroah-Hartman wrote:
>> On Tue, Nov 19, 2019 at 09:18:03AM +0000, Jon Hunter wrote:
>>>
>>> On 19/11/2019 05:13, Greg Kroah-Hartman wrote:
>>>> This is the start of the stable review cycle for the 4.19.85 release.
>>>> There are 422 patches in this series, all will be posted as a response
>>>> to this one.  If anyone has any issues with these being applied, please
>>>> let me know.
>>>>
>>>> Responses should be made by Thu, 21 Nov 2019 05:02:35 +0000.
>>>> Anything received after that time might be too late.
>>>>
>>>> The whole patch series can be found in one patch at:
>>>> 	https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.85-rc1.gz
>>>> or in the git tree and branch at:
>>>> 	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
>>>> and the diffstat can be found below.
>>>>
>>>> thanks,
>>>>
>>>> greg k-h
>>>>
>>>> -------------
>>>
>>> ...
>>>
>>>> Martin Blumenstingl <martin.blumenstingl@googlemail.com>
>>>>     ARM: dts: meson8b: odroidc1: enable the SAR ADC
>>>
>>> This commit is generating the following compilation error for ARM ...
>>>
>>> arch/arm/boot/dts/meson8b-odroidc1.dtb: ERROR (phandle_references): /soc/cbus@c1100000/adc@8680: Reference to non-existent node or label "vcc_1v8"
>>>
>>> ERROR: Input tree has errors, aborting (use -f to force output)
>>> scripts/Makefile.lib:293: recipe for target 'arch/arm/boot/dts/meson8b-odroidc1.dtb' failed
>>> make[1]: *** [arch/arm/boot/dts/meson8b-odroidc1.dtb] Error 2
>>> arch/arm/Makefile:348: recipe for target 'dtbs' failed
>>> make: *** [dtbs] Error 2
>>
>> Thanks, will go remove that patch.
> 
> -rc2 is out with that patch removed.

All tests for Tegra are passing ...

Test results for stable-v4.19:
    12 builds:	12 pass, 0 fail
    22 boots:	22 pass, 0 fail
    32 tests:	32 pass, 0 fail

Linux version:	4.19.85-rc2-gaf1bb7db3102
Boards tested:	tegra124-jetson-tk1, tegra186-p2771-0000,
                tegra194-p2972-0000, tegra20-ventana,
                tegra210-p2371-2180, tegra30-cardhu-a04

Cheers!
Jon

-- 
nvpublic

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 150/422] tty/serial: atmel: Change the driver to work under at91-usart MFD
  2019-11-19 13:17     ` Richard Genoud
@ 2019-11-19 15:45       ` Greg Kroah-Hartman
  0 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19 15:45 UTC (permalink / raw)
  To: Richard Genoud
  Cc: linux-kernel, Nicolas Ferre, Radu Pirea, Sasha Levin,
	stable # 4 . 4+,
	Andy Shevchenko, Lee Jones

On Tue, Nov 19, 2019 at 02:17:16PM +0100, Richard Genoud wrote:
> Le 19/11/2019 à 13:01, Richard Genoud a écrit :
> > Hi all,
> > 
> > Le 19/11/2019 à 06:15, Greg Kroah-Hartman a écrit :
> >> From: Radu Pirea <radu.pirea@microchip.com>
> >>
> >> [ Upstream commit c24d25317a7c6bb3053d4c193b3cf57d1e9a3e4b ]
> >>
> >> This patch modifies the place where resources and device tree properties
> >> are searched.
> > 
> > Maybe I missed something, but I don't see why this is backported to stable.
> > I don't think that this patch was send with a Cc: stable (I just came
> > back from holidays, so I may be wrong :))
> > 
> > Moreover, it's part of a series that introduce "config MFD_AT91_USART",
> > but grepping MFD_AT91_USART on stable-rc/linux-4.19.y only returns:
> > drivers/tty/serial/Kconfig:     select MFD_AT91_USART
> > 
> > So I think this is a mistake (but how it got there ? it is by a bot or
> > something ?)
> Replying to myself :)
> 
> Mystery solved, it was added by Sasha's bot/AI
> [PATCH AUTOSEL 4.19 118/205] tty/serial: atmel: Change the driver to work under at91-usart MFD
> 
> So Greg, you can safely drop this patch.

Now dropped, thanks.

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19 14:44     ` Chris Paterson
@ 2019-11-19 15:48       ` Greg Kroah-Hartman
  2019-11-19 16:38         ` Chris Paterson
  0 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19 15:48 UTC (permalink / raw)
  To: Chris Paterson
  Cc: linux-kernel, cip-dev, torvalds, akpm, linux, shuah, patches,
	ben.hutchings, lkft-triage, stable

On Tue, Nov 19, 2019 at 02:44:12PM +0000, Chris Paterson wrote:
> Hi Greg,
> 
> > From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > Sent: 19 November 2019 12:29
> > 
> > On Tue, Nov 19, 2019 at 08:54:25AM +0000, Chris Paterson wrote:
> > > Hello Greg, all,
> > >
> > > > From: stable-owner@vger.kernel.org <stable-owner@vger.kernel.org> On
> > > > Behalf Of Greg Kroah-Hartman
> > > > Sent: 19 November 2019 05:13
> > > >
> > > > This is the start of the stable review cycle for the 4.19.85 release.
> > > > There are 422 patches in this series, all will be posted as a response
> > > > to this one.  If anyone has any issues with these being applied, please
> > > > let me know.
> > >
> > > I'm seeing some build issues with module compilation with this release
> > (1b1960cc Linux 4.19.85-rc1), I also saw them with the previous two versions of
> > Linux 4.19.85-rc1 (cd21ecdb and 1fd0ac64).
> > >
> > > Full log available on GitLab [0]. Build conf [1].
> > > [0] https://gitlab.com/cip-playground/linux-stable-rc-ci/-/jobs/354591285
> > > [1] https://gitlab.com/cip-playground/linux-stable-rc-ci/-
> > /jobs/354591285/artifacts/file/output/4.19.85-
> > rc1_1b1960cc7/x86/siemens_iot2000.config/config/.config
> > >
> > > Main error below:
> > >
> > > 3907   CC [M]  drivers/net/ethernet/mellanox/mlx4/main.o
> > > 3908   LD [M]  fs/ntfs/ntfs.o
> > > 3909   CC [M]  drivers/net/ethernet/intel/i40evf/i40e_txrx.o
> > > 3910   CC [M]  drivers/usb/musb/musb_core.o
> > > 3911   CC [M]  drivers/net/ethernet/nvidia/forcedeth.o
> > > 3912   CC [M]  fs/udf/balloc.o
> > > 3913   CC [M]  drivers/net/ethernet/intel/fm10k/fm10k_debugfs.o
> > > 3914   CC [M]  fs/udf/dir.o
> > > 3915   CC [M]  drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.o
> > > 3916   CC [M]  drivers/net/ethernet/intel/i40e/i40e_ptp.o
> > > 3917 drivers/net/ethernet/mellanox/mlx4/main.c: In function 'mlx4_init_one':
> > > 3918 drivers/net/ethernet/mellanox/mlx4/main.c:3985:2: error: implicit
> > declaration of function 'devlink_reload_enable'; did you mean
> > 'devlink_region_create'? [-Werror=implicit-function-declaration]
> > > 3919   devlink_reload_enable(devlink);
> > > 3920   ^~~~~~~~~~~~~~~~~~~~~
> > > 3921   devlink_region_create
> > > 3922   CC [M]  drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.o
> > > 3923 drivers/net/ethernet/mellanox/mlx4/main.c: In function
> > 'mlx4_remove_one':
> > > 3924 drivers/net/ethernet/mellanox/mlx4/main.c:4097:2: error: implicit
> > declaration of function 'devlink_reload_disable'; did you mean
> > 'devlink_region_destroy'? [-Werror=implicit-function-declaration]
> > > 3925   devlink_reload_disable(devlink);
> > > 3926   ^~~~~~~~~~~~~~~~~~~~~~
> > > 3927   devlink_region_destroy
> > > 3928   CC [M]  drivers/net/ethernet/packetengines/hamachi.o
> > > 3929   CC [M]  fs/udf/file.o
> > > 3930   LD [M]  drivers/net/ethernet/intel/fm10k/fm10k.o
> > >
> > > I haven't tried to trace the issue further yet, sorry.
> > 
> > Any chance you can bisect this?  I don't see any obvious reason why this
> > error should be happening, and it isn't showing up here :(
> 
> Looking through the commit history, the issue seems to be related to:
> 672cf82122be ("devlink: disallow reload operation during device cleanup")
> 
> I've reverted this commit and Linux 4.19.85-rc2 (af1bb7db before revert) will build with the configuration I'm using [2].
> I haven't looked further yet though, sorry.
> 
> [2] https://gitlab.com/cip-project/cip-kernel/cip-kernel-config/raw/master/4.19.y-cip/x86/siemens_iot2000.config

If you add:
	#include <net/devlink.h>
to the top of drivers/net/ethernet/mellanox/mlx4/main.c, does it fix the
issue for you?

If so, I'll modify the file to have that, seems to be some sort of
include file mess :(

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19 15:07       ` Jon Hunter
@ 2019-11-19 15:48         ` Greg Kroah-Hartman
  0 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19 15:48 UTC (permalink / raw)
  To: Jon Hunter
  Cc: linux-kernel, torvalds, akpm, linux, shuah, patches,
	ben.hutchings, lkft-triage, stable, linux-tegra

On Tue, Nov 19, 2019 at 03:07:30PM +0000, Jon Hunter wrote:
> 
> On 19/11/2019 12:30, Greg Kroah-Hartman wrote:
> > On Tue, Nov 19, 2019 at 01:24:17PM +0100, Greg Kroah-Hartman wrote:
> >> On Tue, Nov 19, 2019 at 09:18:03AM +0000, Jon Hunter wrote:
> >>>
> >>> On 19/11/2019 05:13, Greg Kroah-Hartman wrote:
> >>>> This is the start of the stable review cycle for the 4.19.85 release.
> >>>> There are 422 patches in this series, all will be posted as a response
> >>>> to this one.  If anyone has any issues with these being applied, please
> >>>> let me know.
> >>>>
> >>>> Responses should be made by Thu, 21 Nov 2019 05:02:35 +0000.
> >>>> Anything received after that time might be too late.
> >>>>
> >>>> The whole patch series can be found in one patch at:
> >>>> 	https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.85-rc1.gz
> >>>> or in the git tree and branch at:
> >>>> 	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
> >>>> and the diffstat can be found below.
> >>>>
> >>>> thanks,
> >>>>
> >>>> greg k-h
> >>>>
> >>>> -------------
> >>>
> >>> ...
> >>>
> >>>> Martin Blumenstingl <martin.blumenstingl@googlemail.com>
> >>>>     ARM: dts: meson8b: odroidc1: enable the SAR ADC
> >>>
> >>> This commit is generating the following compilation error for ARM ...
> >>>
> >>> arch/arm/boot/dts/meson8b-odroidc1.dtb: ERROR (phandle_references): /soc/cbus@c1100000/adc@8680: Reference to non-existent node or label "vcc_1v8"
> >>>
> >>> ERROR: Input tree has errors, aborting (use -f to force output)
> >>> scripts/Makefile.lib:293: recipe for target 'arch/arm/boot/dts/meson8b-odroidc1.dtb' failed
> >>> make[1]: *** [arch/arm/boot/dts/meson8b-odroidc1.dtb] Error 2
> >>> arch/arm/Makefile:348: recipe for target 'dtbs' failed
> >>> make: *** [dtbs] Error 2
> >>
> >> Thanks, will go remove that patch.
> > 
> > -rc2 is out with that patch removed.
> 
> All tests for Tegra are passing ...
> 
> Test results for stable-v4.19:
>     12 builds:	12 pass, 0 fail
>     22 boots:	22 pass, 0 fail
>     32 tests:	32 pass, 0 fail
> 
> Linux version:	4.19.85-rc2-gaf1bb7db3102
> Boards tested:	tegra124-jetson-tk1, tegra186-p2771-0000,
>                 tegra194-p2972-0000, tegra20-ventana,
>                 tegra210-p2371-2180, tegra30-cardhu-a04
> 

Great, thanks for testing this and 4.14.

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* RE: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19 15:48       ` Greg Kroah-Hartman
@ 2019-11-19 16:38         ` Chris Paterson
  2019-11-19 16:52           ` Greg Kroah-Hartman
  0 siblings, 1 reply; 478+ messages in thread
From: Chris Paterson @ 2019-11-19 16:38 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, cip-dev, torvalds, akpm, linux, shuah, patches,
	ben.hutchings, lkft-triage, stable

> From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Sent: 19 November 2019 15:49
> 
> On Tue, Nov 19, 2019 at 02:44:12PM +0000, Chris Paterson wrote:
> > Hi Greg,
> >
> > > From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > Sent: 19 November 2019 12:29
> > >
> > > On Tue, Nov 19, 2019 at 08:54:25AM +0000, Chris Paterson wrote:
> > > > Hello Greg, all,
> > > >
> > > > > From: stable-owner@vger.kernel.org <stable-owner@vger.kernel.org>
> On
> > > > > Behalf Of Greg Kroah-Hartman
> > > > > Sent: 19 November 2019 05:13
> > > > >
> > > > > This is the start of the stable review cycle for the 4.19.85 release.
> > > > > There are 422 patches in this series, all will be posted as a response
> > > > > to this one.  If anyone has any issues with these being applied, please
> > > > > let me know.
> > > >
> > > > I'm seeing some build issues with module compilation with this release
> > > (1b1960cc Linux 4.19.85-rc1), I also saw them with the previous two versions
> of
> > > Linux 4.19.85-rc1 (cd21ecdb and 1fd0ac64).
> > > >
> > > > Full log available on GitLab [0]. Build conf [1].
> > > > [0] https://gitlab.com/cip-playground/linux-stable-rc-ci/-/jobs/354591285
> > > > [1] https://gitlab.com/cip-playground/linux-stable-rc-ci/-
> > > /jobs/354591285/artifacts/file/output/4.19.85-
> > > rc1_1b1960cc7/x86/siemens_iot2000.config/config/.config
> > > >
> > > > Main error below:
> > > >
> > > > 3907   CC [M]  drivers/net/ethernet/mellanox/mlx4/main.o
> > > > 3908   LD [M]  fs/ntfs/ntfs.o
> > > > 3909   CC [M]  drivers/net/ethernet/intel/i40evf/i40e_txrx.o
> > > > 3910   CC [M]  drivers/usb/musb/musb_core.o
> > > > 3911   CC [M]  drivers/net/ethernet/nvidia/forcedeth.o
> > > > 3912   CC [M]  fs/udf/balloc.o
> > > > 3913   CC [M]  drivers/net/ethernet/intel/fm10k/fm10k_debugfs.o
> > > > 3914   CC [M]  fs/udf/dir.o
> > > > 3915   CC [M]  drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.o
> > > > 3916   CC [M]  drivers/net/ethernet/intel/i40e/i40e_ptp.o
> > > > 3917 drivers/net/ethernet/mellanox/mlx4/main.c: In function
> 'mlx4_init_one':
> > > > 3918 drivers/net/ethernet/mellanox/mlx4/main.c:3985:2: error: implicit
> > > declaration of function 'devlink_reload_enable'; did you mean
> > > 'devlink_region_create'? [-Werror=implicit-function-declaration]
> > > > 3919   devlink_reload_enable(devlink);
> > > > 3920   ^~~~~~~~~~~~~~~~~~~~~
> > > > 3921   devlink_region_create
> > > > 3922   CC [M]  drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.o
> > > > 3923 drivers/net/ethernet/mellanox/mlx4/main.c: In function
> > > 'mlx4_remove_one':
> > > > 3924 drivers/net/ethernet/mellanox/mlx4/main.c:4097:2: error: implicit
> > > declaration of function 'devlink_reload_disable'; did you mean
> > > 'devlink_region_destroy'? [-Werror=implicit-function-declaration]
> > > > 3925   devlink_reload_disable(devlink);
> > > > 3926   ^~~~~~~~~~~~~~~~~~~~~~
> > > > 3927   devlink_region_destroy
> > > > 3928   CC [M]  drivers/net/ethernet/packetengines/hamachi.o
> > > > 3929   CC [M]  fs/udf/file.o
> > > > 3930   LD [M]  drivers/net/ethernet/intel/fm10k/fm10k.o
> > > >
> > > > I haven't tried to trace the issue further yet, sorry.
> > >
> > > Any chance you can bisect this?  I don't see any obvious reason why this
> > > error should be happening, and it isn't showing up here :(
> >
> > Looking through the commit history, the issue seems to be related to:
> > 672cf82122be ("devlink: disallow reload operation during device cleanup")
> >
> > I've reverted this commit and Linux 4.19.85-rc2 (af1bb7db before revert) will
> build with the configuration I'm using [2].
> > I haven't looked further yet though, sorry.
> >
> > [2] https://gitlab.com/cip-project/cip-kernel/cip-kernel-
> config/raw/master/4.19.y-cip/x86/siemens_iot2000.config
> 
> If you add:
> 	#include <net/devlink.h>
> to the top of drivers/net/ethernet/mellanox/mlx4/main.c, does it fix the
> issue for you?

This is already defined:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/tree/drivers/net/ethernet/mellanox/mlx4/main.c?h=linux-4.19.y#n47

Kind regards, Chris

> 
> If so, I'll modify the file to have that, seems to be some sort of
> include file mess :(
> 
> thanks,
> 
> greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19 12:29   ` Greg Kroah-Hartman
  2019-11-19 14:44     ` Chris Paterson
@ 2019-11-19 16:46     ` Guenter Roeck
  2019-11-19 17:02       ` Greg Kroah-Hartman
  1 sibling, 1 reply; 478+ messages in thread
From: Guenter Roeck @ 2019-11-19 16:46 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Chris Paterson, linux-kernel, cip-dev, torvalds, akpm, shuah,
	patches, ben.hutchings, lkft-triage, stable

On Tue, Nov 19, 2019 at 01:29:09PM +0100, Greg Kroah-Hartman wrote:
> On Tue, Nov 19, 2019 at 08:54:25AM +0000, Chris Paterson wrote:
> > Hello Greg, all,
> > 
> > > From: stable-owner@vger.kernel.org <stable-owner@vger.kernel.org> On
> > > Behalf Of Greg Kroah-Hartman
> > > Sent: 19 November 2019 05:13
> > > 
> > > This is the start of the stable review cycle for the 4.19.85 release.
> > > There are 422 patches in this series, all will be posted as a response
> > > to this one.  If anyone has any issues with these being applied, please
> > > let me know.
> > 
> > I'm seeing some build issues with module compilation with this release (1b1960cc Linux 4.19.85-rc1), I also saw them with the previous two versions of Linux 4.19.85-rc1 (cd21ecdb and 1fd0ac64).
> > 
> > Full log available on GitLab [0]. Build conf [1].
> > [0] https://gitlab.com/cip-playground/linux-stable-rc-ci/-/jobs/354591285
> > [1] https://gitlab.com/cip-playground/linux-stable-rc-ci/-/jobs/354591285/artifacts/file/output/4.19.85-rc1_1b1960cc7/x86/siemens_iot2000.config/config/.config
> > 
> > Main error below:
> > 
> > 3907   CC [M]  drivers/net/ethernet/mellanox/mlx4/main.o
> > 3908   LD [M]  fs/ntfs/ntfs.o
> > 3909   CC [M]  drivers/net/ethernet/intel/i40evf/i40e_txrx.o
> > 3910   CC [M]  drivers/usb/musb/musb_core.o
> > 3911   CC [M]  drivers/net/ethernet/nvidia/forcedeth.o
> > 3912   CC [M]  fs/udf/balloc.o
> > 3913   CC [M]  drivers/net/ethernet/intel/fm10k/fm10k_debugfs.o
> > 3914   CC [M]  fs/udf/dir.o
> > 3915   CC [M]  drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.o
> > 3916   CC [M]  drivers/net/ethernet/intel/i40e/i40e_ptp.o
> > 3917 drivers/net/ethernet/mellanox/mlx4/main.c: In function 'mlx4_init_one':
> > 3918 drivers/net/ethernet/mellanox/mlx4/main.c:3985:2: error: implicit declaration of function 'devlink_reload_enable'; did you mean 'devlink_region_create'? [-Werror=implicit-function-declaration]
> > 3919   devlink_reload_enable(devlink);
> > 3920   ^~~~~~~~~~~~~~~~~~~~~
> > 3921   devlink_region_create
> > 3922   CC [M]  drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.o
> > 3923 drivers/net/ethernet/mellanox/mlx4/main.c: In function 'mlx4_remove_one':
> > 3924 drivers/net/ethernet/mellanox/mlx4/main.c:4097:2: error: implicit declaration of function 'devlink_reload_disable'; did you mean 'devlink_region_destroy'? [-Werror=implicit-function-declaration]
> > 3925   devlink_reload_disable(devlink);
> > 3926   ^~~~~~~~~~~~~~~~~~~~~~
> > 3927   devlink_region_destroy
> > 3928   CC [M]  drivers/net/ethernet/packetengines/hamachi.o
> > 3929   CC [M]  fs/udf/file.o
> > 3930   LD [M]  drivers/net/ethernet/intel/fm10k/fm10k.o
> > 
> > I haven't tried to trace the issue further yet, sorry.
> 
> Any chance you can bisect this?  I don't see any obvious reason why this
> error should be happening, and it isn't showing up here :(
> 
I see the problem as well, with powerpc:defconfig.

Underlying issue is that devlink_reload_disable() is only declared in the
include file if CONFIG_NET_DEVLINK is enabled. There is no dummy otherwise.
The dummy declarations which still exist in 4.19 were removed with commit
f6b19b354d50c ("net: devlink: select NET_DEVLINK from drivers") in the
upstream kernel.

Guenter

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19 16:38         ` Chris Paterson
@ 2019-11-19 16:52           ` Greg Kroah-Hartman
  2019-11-19 18:00             ` Guenter Roeck
  0 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19 16:52 UTC (permalink / raw)
  To: Chris Paterson
  Cc: linux-kernel, cip-dev, torvalds, akpm, linux, shuah, patches,
	ben.hutchings, lkft-triage, stable

On Tue, Nov 19, 2019 at 04:38:06PM +0000, Chris Paterson wrote:
> > From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > Sent: 19 November 2019 15:49
> > 
> > On Tue, Nov 19, 2019 at 02:44:12PM +0000, Chris Paterson wrote:
> > > Hi Greg,
> > >
> > > > From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > > Sent: 19 November 2019 12:29
> > > >
> > > > On Tue, Nov 19, 2019 at 08:54:25AM +0000, Chris Paterson wrote:
> > > > > Hello Greg, all,
> > > > >
> > > > > > From: stable-owner@vger.kernel.org <stable-owner@vger.kernel.org>
> > On
> > > > > > Behalf Of Greg Kroah-Hartman
> > > > > > Sent: 19 November 2019 05:13
> > > > > >
> > > > > > This is the start of the stable review cycle for the 4.19.85 release.
> > > > > > There are 422 patches in this series, all will be posted as a response
> > > > > > to this one.  If anyone has any issues with these being applied, please
> > > > > > let me know.
> > > > >
> > > > > I'm seeing some build issues with module compilation with this release
> > > > (1b1960cc Linux 4.19.85-rc1), I also saw them with the previous two versions
> > of
> > > > Linux 4.19.85-rc1 (cd21ecdb and 1fd0ac64).
> > > > >
> > > > > Full log available on GitLab [0]. Build conf [1].
> > > > > [0] https://gitlab.com/cip-playground/linux-stable-rc-ci/-/jobs/354591285
> > > > > [1] https://gitlab.com/cip-playground/linux-stable-rc-ci/-
> > > > /jobs/354591285/artifacts/file/output/4.19.85-
> > > > rc1_1b1960cc7/x86/siemens_iot2000.config/config/.config
> > > > >
> > > > > Main error below:
> > > > >
> > > > > 3907   CC [M]  drivers/net/ethernet/mellanox/mlx4/main.o
> > > > > 3908   LD [M]  fs/ntfs/ntfs.o
> > > > > 3909   CC [M]  drivers/net/ethernet/intel/i40evf/i40e_txrx.o
> > > > > 3910   CC [M]  drivers/usb/musb/musb_core.o
> > > > > 3911   CC [M]  drivers/net/ethernet/nvidia/forcedeth.o
> > > > > 3912   CC [M]  fs/udf/balloc.o
> > > > > 3913   CC [M]  drivers/net/ethernet/intel/fm10k/fm10k_debugfs.o
> > > > > 3914   CC [M]  fs/udf/dir.o
> > > > > 3915   CC [M]  drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.o
> > > > > 3916   CC [M]  drivers/net/ethernet/intel/i40e/i40e_ptp.o
> > > > > 3917 drivers/net/ethernet/mellanox/mlx4/main.c: In function
> > 'mlx4_init_one':
> > > > > 3918 drivers/net/ethernet/mellanox/mlx4/main.c:3985:2: error: implicit
> > > > declaration of function 'devlink_reload_enable'; did you mean
> > > > 'devlink_region_create'? [-Werror=implicit-function-declaration]
> > > > > 3919   devlink_reload_enable(devlink);
> > > > > 3920   ^~~~~~~~~~~~~~~~~~~~~
> > > > > 3921   devlink_region_create
> > > > > 3922   CC [M]  drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.o
> > > > > 3923 drivers/net/ethernet/mellanox/mlx4/main.c: In function
> > > > 'mlx4_remove_one':
> > > > > 3924 drivers/net/ethernet/mellanox/mlx4/main.c:4097:2: error: implicit
> > > > declaration of function 'devlink_reload_disable'; did you mean
> > > > 'devlink_region_destroy'? [-Werror=implicit-function-declaration]
> > > > > 3925   devlink_reload_disable(devlink);
> > > > > 3926   ^~~~~~~~~~~~~~~~~~~~~~
> > > > > 3927   devlink_region_destroy
> > > > > 3928   CC [M]  drivers/net/ethernet/packetengines/hamachi.o
> > > > > 3929   CC [M]  fs/udf/file.o
> > > > > 3930   LD [M]  drivers/net/ethernet/intel/fm10k/fm10k.o
> > > > >
> > > > > I haven't tried to trace the issue further yet, sorry.
> > > >
> > > > Any chance you can bisect this?  I don't see any obvious reason why this
> > > > error should be happening, and it isn't showing up here :(
> > >
> > > Looking through the commit history, the issue seems to be related to:
> > > 672cf82122be ("devlink: disallow reload operation during device cleanup")
> > >
> > > I've reverted this commit and Linux 4.19.85-rc2 (af1bb7db before revert) will
> > build with the configuration I'm using [2].
> > > I haven't looked further yet though, sorry.
> > >
> > > [2] https://gitlab.com/cip-project/cip-kernel/cip-kernel-
> > config/raw/master/4.19.y-cip/x86/siemens_iot2000.config
> > 
> > If you add:
> > 	#include <net/devlink.h>
> > to the top of drivers/net/ethernet/mellanox/mlx4/main.c, does it fix the
> > issue for you?
> 
> This is already defined:
> https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/tree/drivers/net/ethernet/mellanox/mlx4/main.c?h=linux-4.19.y#n47

Ah, ok, the issue is that CONFIG_NET_DEVLINK is not enabled, the driver
now requires this.  This was resolved by adding the dependancy to the
driver itself, and then just punting and always enabling it over time.

We can backport part of f6b19b354d50 ("net: devlink: select NET_DEVLINK
from drivers") if you want, but that feels messy.

For now, if you enable that option, does it build for you?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19 16:46     ` Guenter Roeck
@ 2019-11-19 17:02       ` Greg Kroah-Hartman
  2019-11-19 17:08         ` Greg Kroah-Hartman
  0 siblings, 1 reply; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19 17:02 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Chris Paterson, linux-kernel, cip-dev, torvalds, akpm, shuah,
	patches, ben.hutchings, lkft-triage, stable

On Tue, Nov 19, 2019 at 08:46:26AM -0800, Guenter Roeck wrote:
> On Tue, Nov 19, 2019 at 01:29:09PM +0100, Greg Kroah-Hartman wrote:
> > On Tue, Nov 19, 2019 at 08:54:25AM +0000, Chris Paterson wrote:
> > > Hello Greg, all,
> > > 
> > > > From: stable-owner@vger.kernel.org <stable-owner@vger.kernel.org> On
> > > > Behalf Of Greg Kroah-Hartman
> > > > Sent: 19 November 2019 05:13
> > > > 
> > > > This is the start of the stable review cycle for the 4.19.85 release.
> > > > There are 422 patches in this series, all will be posted as a response
> > > > to this one.  If anyone has any issues with these being applied, please
> > > > let me know.
> > > 
> > > I'm seeing some build issues with module compilation with this release (1b1960cc Linux 4.19.85-rc1), I also saw them with the previous two versions of Linux 4.19.85-rc1 (cd21ecdb and 1fd0ac64).
> > > 
> > > Full log available on GitLab [0]. Build conf [1].
> > > [0] https://gitlab.com/cip-playground/linux-stable-rc-ci/-/jobs/354591285
> > > [1] https://gitlab.com/cip-playground/linux-stable-rc-ci/-/jobs/354591285/artifacts/file/output/4.19.85-rc1_1b1960cc7/x86/siemens_iot2000.config/config/.config
> > > 
> > > Main error below:
> > > 
> > > 3907   CC [M]  drivers/net/ethernet/mellanox/mlx4/main.o
> > > 3908   LD [M]  fs/ntfs/ntfs.o
> > > 3909   CC [M]  drivers/net/ethernet/intel/i40evf/i40e_txrx.o
> > > 3910   CC [M]  drivers/usb/musb/musb_core.o
> > > 3911   CC [M]  drivers/net/ethernet/nvidia/forcedeth.o
> > > 3912   CC [M]  fs/udf/balloc.o
> > > 3913   CC [M]  drivers/net/ethernet/intel/fm10k/fm10k_debugfs.o
> > > 3914   CC [M]  fs/udf/dir.o
> > > 3915   CC [M]  drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.o
> > > 3916   CC [M]  drivers/net/ethernet/intel/i40e/i40e_ptp.o
> > > 3917 drivers/net/ethernet/mellanox/mlx4/main.c: In function 'mlx4_init_one':
> > > 3918 drivers/net/ethernet/mellanox/mlx4/main.c:3985:2: error: implicit declaration of function 'devlink_reload_enable'; did you mean 'devlink_region_create'? [-Werror=implicit-function-declaration]
> > > 3919   devlink_reload_enable(devlink);
> > > 3920   ^~~~~~~~~~~~~~~~~~~~~
> > > 3921   devlink_region_create
> > > 3922   CC [M]  drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.o
> > > 3923 drivers/net/ethernet/mellanox/mlx4/main.c: In function 'mlx4_remove_one':
> > > 3924 drivers/net/ethernet/mellanox/mlx4/main.c:4097:2: error: implicit declaration of function 'devlink_reload_disable'; did you mean 'devlink_region_destroy'? [-Werror=implicit-function-declaration]
> > > 3925   devlink_reload_disable(devlink);
> > > 3926   ^~~~~~~~~~~~~~~~~~~~~~
> > > 3927   devlink_region_destroy
> > > 3928   CC [M]  drivers/net/ethernet/packetengines/hamachi.o
> > > 3929   CC [M]  fs/udf/file.o
> > > 3930   LD [M]  drivers/net/ethernet/intel/fm10k/fm10k.o
> > > 
> > > I haven't tried to trace the issue further yet, sorry.
> > 
> > Any chance you can bisect this?  I don't see any obvious reason why this
> > error should be happening, and it isn't showing up here :(
> > 
> I see the problem as well, with powerpc:defconfig.
> 
> Underlying issue is that devlink_reload_disable() is only declared in the
> include file if CONFIG_NET_DEVLINK is enabled. There is no dummy otherwise.
> The dummy declarations which still exist in 4.19 were removed with commit
> f6b19b354d50c ("net: devlink: select NET_DEVLINK from drivers") in the
> upstream kernel.

Ok, let me take part of that patch and backport it.  I'll push out a
-rc3 now to hopefully resolve this issue.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19 17:02       ` Greg Kroah-Hartman
@ 2019-11-19 17:08         ` Greg Kroah-Hartman
  0 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19 17:08 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Chris Paterson, linux-kernel, cip-dev, torvalds, akpm, shuah,
	patches, ben.hutchings, lkft-triage, stable

On Tue, Nov 19, 2019 at 06:02:46PM +0100, Greg Kroah-Hartman wrote:
> On Tue, Nov 19, 2019 at 08:46:26AM -0800, Guenter Roeck wrote:
> > On Tue, Nov 19, 2019 at 01:29:09PM +0100, Greg Kroah-Hartman wrote:
> > > On Tue, Nov 19, 2019 at 08:54:25AM +0000, Chris Paterson wrote:
> > > > Hello Greg, all,
> > > > 
> > > > > From: stable-owner@vger.kernel.org <stable-owner@vger.kernel.org> On
> > > > > Behalf Of Greg Kroah-Hartman
> > > > > Sent: 19 November 2019 05:13
> > > > > 
> > > > > This is the start of the stable review cycle for the 4.19.85 release.
> > > > > There are 422 patches in this series, all will be posted as a response
> > > > > to this one.  If anyone has any issues with these being applied, please
> > > > > let me know.
> > > > 
> > > > I'm seeing some build issues with module compilation with this release (1b1960cc Linux 4.19.85-rc1), I also saw them with the previous two versions of Linux 4.19.85-rc1 (cd21ecdb and 1fd0ac64).
> > > > 
> > > > Full log available on GitLab [0]. Build conf [1].
> > > > [0] https://gitlab.com/cip-playground/linux-stable-rc-ci/-/jobs/354591285
> > > > [1] https://gitlab.com/cip-playground/linux-stable-rc-ci/-/jobs/354591285/artifacts/file/output/4.19.85-rc1_1b1960cc7/x86/siemens_iot2000.config/config/.config
> > > > 
> > > > Main error below:
> > > > 
> > > > 3907   CC [M]  drivers/net/ethernet/mellanox/mlx4/main.o
> > > > 3908   LD [M]  fs/ntfs/ntfs.o
> > > > 3909   CC [M]  drivers/net/ethernet/intel/i40evf/i40e_txrx.o
> > > > 3910   CC [M]  drivers/usb/musb/musb_core.o
> > > > 3911   CC [M]  drivers/net/ethernet/nvidia/forcedeth.o
> > > > 3912   CC [M]  fs/udf/balloc.o
> > > > 3913   CC [M]  drivers/net/ethernet/intel/fm10k/fm10k_debugfs.o
> > > > 3914   CC [M]  fs/udf/dir.o
> > > > 3915   CC [M]  drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.o
> > > > 3916   CC [M]  drivers/net/ethernet/intel/i40e/i40e_ptp.o
> > > > 3917 drivers/net/ethernet/mellanox/mlx4/main.c: In function 'mlx4_init_one':
> > > > 3918 drivers/net/ethernet/mellanox/mlx4/main.c:3985:2: error: implicit declaration of function 'devlink_reload_enable'; did you mean 'devlink_region_create'? [-Werror=implicit-function-declaration]
> > > > 3919   devlink_reload_enable(devlink);
> > > > 3920   ^~~~~~~~~~~~~~~~~~~~~
> > > > 3921   devlink_region_create
> > > > 3922   CC [M]  drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.o
> > > > 3923 drivers/net/ethernet/mellanox/mlx4/main.c: In function 'mlx4_remove_one':
> > > > 3924 drivers/net/ethernet/mellanox/mlx4/main.c:4097:2: error: implicit declaration of function 'devlink_reload_disable'; did you mean 'devlink_region_destroy'? [-Werror=implicit-function-declaration]
> > > > 3925   devlink_reload_disable(devlink);
> > > > 3926   ^~~~~~~~~~~~~~~~~~~~~~
> > > > 3927   devlink_region_destroy
> > > > 3928   CC [M]  drivers/net/ethernet/packetengines/hamachi.o
> > > > 3929   CC [M]  fs/udf/file.o
> > > > 3930   LD [M]  drivers/net/ethernet/intel/fm10k/fm10k.o
> > > > 
> > > > I haven't tried to trace the issue further yet, sorry.
> > > 
> > > Any chance you can bisect this?  I don't see any obvious reason why this
> > > error should be happening, and it isn't showing up here :(
> > > 
> > I see the problem as well, with powerpc:defconfig.
> > 
> > Underlying issue is that devlink_reload_disable() is only declared in the
> > include file if CONFIG_NET_DEVLINK is enabled. There is no dummy otherwise.
> > The dummy declarations which still exist in 4.19 were removed with commit
> > f6b19b354d50c ("net: devlink: select NET_DEVLINK from drivers") in the
> > upstream kernel.
> 
> Ok, let me take part of that patch and backport it.  I'll push out a
> -rc3 now to hopefully resolve this issue.

Ok, that failed horribly :(

Let me work on this after dinner...

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19 16:52           ` Greg Kroah-Hartman
@ 2019-11-19 18:00             ` Guenter Roeck
  2019-11-19 18:16               ` Greg Kroah-Hartman
  0 siblings, 1 reply; 478+ messages in thread
From: Guenter Roeck @ 2019-11-19 18:00 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Chris Paterson, linux-kernel, cip-dev, torvalds, akpm, shuah,
	patches, ben.hutchings, lkft-triage, stable

On Tue, Nov 19, 2019 at 05:52:07PM +0100, Greg Kroah-Hartman wrote:
> On Tue, Nov 19, 2019 at 04:38:06PM +0000, Chris Paterson wrote:
> > > From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > Sent: 19 November 2019 15:49
> > > 
> > > On Tue, Nov 19, 2019 at 02:44:12PM +0000, Chris Paterson wrote:
> > > > Hi Greg,
> > > >
> > > > > From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > > > Sent: 19 November 2019 12:29
> > > > >
> > > > > On Tue, Nov 19, 2019 at 08:54:25AM +0000, Chris Paterson wrote:
> > > > > > Hello Greg, all,
> > > > > >
> > > > > > > From: stable-owner@vger.kernel.org <stable-owner@vger.kernel.org>
> > > On
> > > > > > > Behalf Of Greg Kroah-Hartman
> > > > > > > Sent: 19 November 2019 05:13
> > > > > > >
> > > > > > > This is the start of the stable review cycle for the 4.19.85 release.
> > > > > > > There are 422 patches in this series, all will be posted as a response
> > > > > > > to this one.  If anyone has any issues with these being applied, please
> > > > > > > let me know.
> > > > > >
> > > > > > I'm seeing some build issues with module compilation with this release
> > > > > (1b1960cc Linux 4.19.85-rc1), I also saw them with the previous two versions
> > > of
> > > > > Linux 4.19.85-rc1 (cd21ecdb and 1fd0ac64).
> > > > > >
> > > > > > Full log available on GitLab [0]. Build conf [1].
> > > > > > [0] https://gitlab.com/cip-playground/linux-stable-rc-ci/-/jobs/354591285
> > > > > > [1] https://gitlab.com/cip-playground/linux-stable-rc-ci/-
> > > > > /jobs/354591285/artifacts/file/output/4.19.85-
> > > > > rc1_1b1960cc7/x86/siemens_iot2000.config/config/.config
> > > > > >
> > > > > > Main error below:
> > > > > >
> > > > > > 3907   CC [M]  drivers/net/ethernet/mellanox/mlx4/main.o
> > > > > > 3908   LD [M]  fs/ntfs/ntfs.o
> > > > > > 3909   CC [M]  drivers/net/ethernet/intel/i40evf/i40e_txrx.o
> > > > > > 3910   CC [M]  drivers/usb/musb/musb_core.o
> > > > > > 3911   CC [M]  drivers/net/ethernet/nvidia/forcedeth.o
> > > > > > 3912   CC [M]  fs/udf/balloc.o
> > > > > > 3913   CC [M]  drivers/net/ethernet/intel/fm10k/fm10k_debugfs.o
> > > > > > 3914   CC [M]  fs/udf/dir.o
> > > > > > 3915   CC [M]  drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.o
> > > > > > 3916   CC [M]  drivers/net/ethernet/intel/i40e/i40e_ptp.o
> > > > > > 3917 drivers/net/ethernet/mellanox/mlx4/main.c: In function
> > > 'mlx4_init_one':
> > > > > > 3918 drivers/net/ethernet/mellanox/mlx4/main.c:3985:2: error: implicit
> > > > > declaration of function 'devlink_reload_enable'; did you mean
> > > > > 'devlink_region_create'? [-Werror=implicit-function-declaration]
> > > > > > 3919   devlink_reload_enable(devlink);
> > > > > > 3920   ^~~~~~~~~~~~~~~~~~~~~
> > > > > > 3921   devlink_region_create
> > > > > > 3922   CC [M]  drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.o
> > > > > > 3923 drivers/net/ethernet/mellanox/mlx4/main.c: In function
> > > > > 'mlx4_remove_one':
> > > > > > 3924 drivers/net/ethernet/mellanox/mlx4/main.c:4097:2: error: implicit
> > > > > declaration of function 'devlink_reload_disable'; did you mean
> > > > > 'devlink_region_destroy'? [-Werror=implicit-function-declaration]
> > > > > > 3925   devlink_reload_disable(devlink);
> > > > > > 3926   ^~~~~~~~~~~~~~~~~~~~~~
> > > > > > 3927   devlink_region_destroy
> > > > > > 3928   CC [M]  drivers/net/ethernet/packetengines/hamachi.o
> > > > > > 3929   CC [M]  fs/udf/file.o
> > > > > > 3930   LD [M]  drivers/net/ethernet/intel/fm10k/fm10k.o
> > > > > >
> > > > > > I haven't tried to trace the issue further yet, sorry.
> > > > >
> > > > > Any chance you can bisect this?  I don't see any obvious reason why this
> > > > > error should be happening, and it isn't showing up here :(
> > > >
> > > > Looking through the commit history, the issue seems to be related to:
> > > > 672cf82122be ("devlink: disallow reload operation during device cleanup")
> > > >
> > > > I've reverted this commit and Linux 4.19.85-rc2 (af1bb7db before revert) will
> > > build with the configuration I'm using [2].
> > > > I haven't looked further yet though, sorry.
> > > >
> > > > [2] https://gitlab.com/cip-project/cip-kernel/cip-kernel-
> > > config/raw/master/4.19.y-cip/x86/siemens_iot2000.config
> > > 
> > > If you add:
> > > 	#include <net/devlink.h>
> > > to the top of drivers/net/ethernet/mellanox/mlx4/main.c, does it fix the
> > > issue for you?
> > 
> > This is already defined:
> > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/tree/drivers/net/ethernet/mellanox/mlx4/main.c?h=linux-4.19.y#n47
> 
> Ah, ok, the issue is that CONFIG_NET_DEVLINK is not enabled, the driver
> now requires this.  This was resolved by adding the dependancy to the
> driver itself, and then just punting and always enabling it over time.
> 
> We can backport part of f6b19b354d50 ("net: devlink: select NET_DEVLINK
> from drivers") if you want, but that feels messy.
> 
> For now, if you enable that option, does it build for you?
> 

Selecting NET_DEVLINK manually fixes the problem, but at least for my part
I was unable to find a means to define the dependency in the Kconfig file.
I either get a recursive dependency or unmet direct dependencies.

FWIW, reverting the devlink patch fixes the compile problem.

Guenter

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19 18:00             ` Guenter Roeck
@ 2019-11-19 18:16               ` Greg Kroah-Hartman
  2019-11-19 20:00                 ` Chris Paterson
  2019-11-20  4:57                 ` Naresh Kamboju
  0 siblings, 2 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-19 18:16 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Chris Paterson, linux-kernel, cip-dev, torvalds, akpm, shuah,
	patches, ben.hutchings, lkft-triage, stable

On Tue, Nov 19, 2019 at 10:00:02AM -0800, Guenter Roeck wrote:
> On Tue, Nov 19, 2019 at 05:52:07PM +0100, Greg Kroah-Hartman wrote:
> > On Tue, Nov 19, 2019 at 04:38:06PM +0000, Chris Paterson wrote:
> > > > From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > > Sent: 19 November 2019 15:49
> > > > 
> > > > On Tue, Nov 19, 2019 at 02:44:12PM +0000, Chris Paterson wrote:
> > > > > Hi Greg,
> > > > >
> > > > > > From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > > > > Sent: 19 November 2019 12:29
> > > > > >
> > > > > > On Tue, Nov 19, 2019 at 08:54:25AM +0000, Chris Paterson wrote:
> > > > > > > Hello Greg, all,
> > > > > > >
> > > > > > > > From: stable-owner@vger.kernel.org <stable-owner@vger.kernel.org>
> > > > On
> > > > > > > > Behalf Of Greg Kroah-Hartman
> > > > > > > > Sent: 19 November 2019 05:13
> > > > > > > >
> > > > > > > > This is the start of the stable review cycle for the 4.19.85 release.
> > > > > > > > There are 422 patches in this series, all will be posted as a response
> > > > > > > > to this one.  If anyone has any issues with these being applied, please
> > > > > > > > let me know.
> > > > > > >
> > > > > > > I'm seeing some build issues with module compilation with this release
> > > > > > (1b1960cc Linux 4.19.85-rc1), I also saw them with the previous two versions
> > > > of
> > > > > > Linux 4.19.85-rc1 (cd21ecdb and 1fd0ac64).
> > > > > > >
> > > > > > > Full log available on GitLab [0]. Build conf [1].
> > > > > > > [0] https://gitlab.com/cip-playground/linux-stable-rc-ci/-/jobs/354591285
> > > > > > > [1] https://gitlab.com/cip-playground/linux-stable-rc-ci/-
> > > > > > /jobs/354591285/artifacts/file/output/4.19.85-
> > > > > > rc1_1b1960cc7/x86/siemens_iot2000.config/config/.config
> > > > > > >
> > > > > > > Main error below:
> > > > > > >
> > > > > > > 3907   CC [M]  drivers/net/ethernet/mellanox/mlx4/main.o
> > > > > > > 3908   LD [M]  fs/ntfs/ntfs.o
> > > > > > > 3909   CC [M]  drivers/net/ethernet/intel/i40evf/i40e_txrx.o
> > > > > > > 3910   CC [M]  drivers/usb/musb/musb_core.o
> > > > > > > 3911   CC [M]  drivers/net/ethernet/nvidia/forcedeth.o
> > > > > > > 3912   CC [M]  fs/udf/balloc.o
> > > > > > > 3913   CC [M]  drivers/net/ethernet/intel/fm10k/fm10k_debugfs.o
> > > > > > > 3914   CC [M]  fs/udf/dir.o
> > > > > > > 3915   CC [M]  drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.o
> > > > > > > 3916   CC [M]  drivers/net/ethernet/intel/i40e/i40e_ptp.o
> > > > > > > 3917 drivers/net/ethernet/mellanox/mlx4/main.c: In function
> > > > 'mlx4_init_one':
> > > > > > > 3918 drivers/net/ethernet/mellanox/mlx4/main.c:3985:2: error: implicit
> > > > > > declaration of function 'devlink_reload_enable'; did you mean
> > > > > > 'devlink_region_create'? [-Werror=implicit-function-declaration]
> > > > > > > 3919   devlink_reload_enable(devlink);
> > > > > > > 3920   ^~~~~~~~~~~~~~~~~~~~~
> > > > > > > 3921   devlink_region_create
> > > > > > > 3922   CC [M]  drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.o
> > > > > > > 3923 drivers/net/ethernet/mellanox/mlx4/main.c: In function
> > > > > > 'mlx4_remove_one':
> > > > > > > 3924 drivers/net/ethernet/mellanox/mlx4/main.c:4097:2: error: implicit
> > > > > > declaration of function 'devlink_reload_disable'; did you mean
> > > > > > 'devlink_region_destroy'? [-Werror=implicit-function-declaration]
> > > > > > > 3925   devlink_reload_disable(devlink);
> > > > > > > 3926   ^~~~~~~~~~~~~~~~~~~~~~
> > > > > > > 3927   devlink_region_destroy
> > > > > > > 3928   CC [M]  drivers/net/ethernet/packetengines/hamachi.o
> > > > > > > 3929   CC [M]  fs/udf/file.o
> > > > > > > 3930   LD [M]  drivers/net/ethernet/intel/fm10k/fm10k.o
> > > > > > >
> > > > > > > I haven't tried to trace the issue further yet, sorry.
> > > > > >
> > > > > > Any chance you can bisect this?  I don't see any obvious reason why this
> > > > > > error should be happening, and it isn't showing up here :(
> > > > >
> > > > > Looking through the commit history, the issue seems to be related to:
> > > > > 672cf82122be ("devlink: disallow reload operation during device cleanup")
> > > > >
> > > > > I've reverted this commit and Linux 4.19.85-rc2 (af1bb7db before revert) will
> > > > build with the configuration I'm using [2].
> > > > > I haven't looked further yet though, sorry.
> > > > >
> > > > > [2] https://gitlab.com/cip-project/cip-kernel/cip-kernel-
> > > > config/raw/master/4.19.y-cip/x86/siemens_iot2000.config
> > > > 
> > > > If you add:
> > > > 	#include <net/devlink.h>
> > > > to the top of drivers/net/ethernet/mellanox/mlx4/main.c, does it fix the
> > > > issue for you?
> > > 
> > > This is already defined:
> > > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/tree/drivers/net/ethernet/mellanox/mlx4/main.c?h=linux-4.19.y#n47
> > 
> > Ah, ok, the issue is that CONFIG_NET_DEVLINK is not enabled, the driver
> > now requires this.  This was resolved by adding the dependancy to the
> > driver itself, and then just punting and always enabling it over time.
> > 
> > We can backport part of f6b19b354d50 ("net: devlink: select NET_DEVLINK
> > from drivers") if you want, but that feels messy.
> > 
> > For now, if you enable that option, does it build for you?
> > 
> 
> Selecting NET_DEVLINK manually fixes the problem, but at least for my part
> I was unable to find a means to define the dependency in the Kconfig file.
> I either get a recursive dependency or unmet direct dependencies.
> 
> FWIW, reverting the devlink patch fixes the compile problem.

Ok, I've now done just that, and pushed out a -rc4.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* RE: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19 18:16               ` Greg Kroah-Hartman
@ 2019-11-19 20:00                 ` Chris Paterson
  2019-11-20  5:58                   ` Greg Kroah-Hartman
  2019-11-20  4:57                 ` Naresh Kamboju
  1 sibling, 1 reply; 478+ messages in thread
From: Chris Paterson @ 2019-11-19 20:00 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Guenter Roeck
  Cc: linux-kernel, cip-dev, torvalds, akpm, shuah, patches,
	ben.hutchings, lkft-triage, stable

> From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Sent: 19 November 2019 18:16
> 
> On Tue, Nov 19, 2019 at 10:00:02AM -0800, Guenter Roeck wrote:
> > On Tue, Nov 19, 2019 at 05:52:07PM +0100, Greg Kroah-Hartman wrote:
> > > On Tue, Nov 19, 2019 at 04:38:06PM +0000, Chris Paterson wrote:
> > > > > From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > > > Sent: 19 November 2019 15:49
> > > > >
> > > > > On Tue, Nov 19, 2019 at 02:44:12PM +0000, Chris Paterson wrote:
> > > > > > Hi Greg,
> > > > > >
> > > > > > > From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > > > > > Sent: 19 November 2019 12:29
> > > > > > >
> > > > > > > On Tue, Nov 19, 2019 at 08:54:25AM +0000, Chris Paterson wrote:
> > > > > > > > Hello Greg, all,
> > > > > > > >
> > > > > > > > > From: stable-owner@vger.kernel.org <stable-
> owner@vger.kernel.org>
> > > > > On
> > > > > > > > > Behalf Of Greg Kroah-Hartman
> > > > > > > > > Sent: 19 November 2019 05:13
> > > > > > > > >
> > > > > > > > > This is the start of the stable review cycle for the 4.19.85 release.
> > > > > > > > > There are 422 patches in this series, all will be posted as a
> response
> > > > > > > > > to this one.  If anyone has any issues with these being applied,
> please
> > > > > > > > > let me know.
> > > > > > > >
> > > > > > > > I'm seeing some build issues with module compilation with this
> release
> > > > > > > (1b1960cc Linux 4.19.85-rc1), I also saw them with the previous two
> versions
> > > > > of
> > > > > > > Linux 4.19.85-rc1 (cd21ecdb and 1fd0ac64).
> > > > > > > >
> > > > > > > > Full log available on GitLab [0]. Build conf [1].
> > > > > > > > [0] https://gitlab.com/cip-playground/linux-stable-rc-ci/-
> /jobs/354591285
> > > > > > > > [1] https://gitlab.com/cip-playground/linux-stable-rc-ci/-
> > > > > > > /jobs/354591285/artifacts/file/output/4.19.85-
> > > > > > > rc1_1b1960cc7/x86/siemens_iot2000.config/config/.config
> > > > > > > >
> > > > > > > > Main error below:
> > > > > > > >
> > > > > > > > 3907   CC [M]  drivers/net/ethernet/mellanox/mlx4/main.o
> > > > > > > > 3908   LD [M]  fs/ntfs/ntfs.o
> > > > > > > > 3909   CC [M]  drivers/net/ethernet/intel/i40evf/i40e_txrx.o
> > > > > > > > 3910   CC [M]  drivers/usb/musb/musb_core.o
> > > > > > > > 3911   CC [M]  drivers/net/ethernet/nvidia/forcedeth.o
> > > > > > > > 3912   CC [M]  fs/udf/balloc.o
> > > > > > > > 3913   CC [M]  drivers/net/ethernet/intel/fm10k/fm10k_debugfs.o
> > > > > > > > 3914   CC [M]  fs/udf/dir.o
> > > > > > > > 3915   CC [M]  drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.o
> > > > > > > > 3916   CC [M]  drivers/net/ethernet/intel/i40e/i40e_ptp.o
> > > > > > > > 3917 drivers/net/ethernet/mellanox/mlx4/main.c: In function
> > > > > 'mlx4_init_one':
> > > > > > > > 3918 drivers/net/ethernet/mellanox/mlx4/main.c:3985:2: error:
> implicit
> > > > > > > declaration of function 'devlink_reload_enable'; did you mean
> > > > > > > 'devlink_region_create'? [-Werror=implicit-function-declaration]
> > > > > > > > 3919   devlink_reload_enable(devlink);
> > > > > > > > 3920   ^~~~~~~~~~~~~~~~~~~~~
> > > > > > > > 3921   devlink_region_create
> > > > > > > > 3922   CC [M]  drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.o
> > > > > > > > 3923 drivers/net/ethernet/mellanox/mlx4/main.c: In function
> > > > > > > 'mlx4_remove_one':
> > > > > > > > 3924 drivers/net/ethernet/mellanox/mlx4/main.c:4097:2: error:
> implicit
> > > > > > > declaration of function 'devlink_reload_disable'; did you mean
> > > > > > > 'devlink_region_destroy'? [-Werror=implicit-function-declaration]
> > > > > > > > 3925   devlink_reload_disable(devlink);
> > > > > > > > 3926   ^~~~~~~~~~~~~~~~~~~~~~
> > > > > > > > 3927   devlink_region_destroy
> > > > > > > > 3928   CC [M]  drivers/net/ethernet/packetengines/hamachi.o
> > > > > > > > 3929   CC [M]  fs/udf/file.o
> > > > > > > > 3930   LD [M]  drivers/net/ethernet/intel/fm10k/fm10k.o
> > > > > > > >
> > > > > > > > I haven't tried to trace the issue further yet, sorry.
> > > > > > >
> > > > > > > Any chance you can bisect this?  I don't see any obvious reason why
> this
> > > > > > > error should be happening, and it isn't showing up here :(
> > > > > >
> > > > > > Looking through the commit history, the issue seems to be related to:
> > > > > > 672cf82122be ("devlink: disallow reload operation during device
> cleanup")
> > > > > >
> > > > > > I've reverted this commit and Linux 4.19.85-rc2 (af1bb7db before
> revert) will
> > > > > build with the configuration I'm using [2].
> > > > > > I haven't looked further yet though, sorry.
> > > > > >
> > > > > > [2] https://gitlab.com/cip-project/cip-kernel/cip-kernel-
> > > > > config/raw/master/4.19.y-cip/x86/siemens_iot2000.config
> > > > >
> > > > > If you add:
> > > > > 	#include <net/devlink.h>
> > > > > to the top of drivers/net/ethernet/mellanox/mlx4/main.c, does it fix the
> > > > > issue for you?
> > > >
> > > > This is already defined:
> > > > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-
> rc.git/tree/drivers/net/ethernet/mellanox/mlx4/main.c?h=linux-4.19.y#n47
> > >
> > > Ah, ok, the issue is that CONFIG_NET_DEVLINK is not enabled, the driver
> > > now requires this.  This was resolved by adding the dependancy to the
> > > driver itself, and then just punting and always enabling it over time.
> > >
> > > We can backport part of f6b19b354d50 ("net: devlink: select NET_DEVLINK
> > > from drivers") if you want, but that feels messy.
> > >
> > > For now, if you enable that option, does it build for you?
> > >
> >
> > Selecting NET_DEVLINK manually fixes the problem, but at least for my part
> > I was unable to find a means to define the dependency in the Kconfig file.
> > I either get a recursive dependency or unmet direct dependencies.
> >
> > FWIW, reverting the devlink patch fixes the compile problem.
> 
> Ok, I've now done just that, and pushed out a -rc4.

Thanks Greg.

Linux 4.19.85-rc4 (824c9ada & d0112da1) works for me.

Kind regards, Chris

> 
> thanks,
> 
> greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 182/422] ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" is set
  2019-11-19  5:16 ` [PATCH 4.19 182/422] ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" is set Greg Kroah-Hartman
@ 2019-11-19 20:19   ` Pavel Machek
  0 siblings, 0 replies; 478+ messages in thread
From: Pavel Machek @ 2019-11-19 20:19 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, stable, Oleksij Rempel, Shawn Guo, Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 985 bytes --]

Hi!

> From: Oleksij Rempel <o.rempel@pengutronix.de>
> 
> [ Upstream commit 8148d2136002da2e2887caf6a07bbd9c033f14f3 ]
> 
> One of the Freescale recommended sequences for power off with external
> PMIC is the following:
> ...
> 3.  SoC is programming PMIC for power off when standby is asserted.
> 4.  In CCM STOP mode, Standby is asserted, PMIC gates SoC supplies.
> 
> See:
> http://www.nxp.com/assets/documents/data/en/reference-manuals/IMX6DQRM.pdf
> page 5083
> 
> This patch implements step 4. of this sequence.


> +	if (of_property_read_bool(np, "fsl,pmic-stby-poweroff"))
> +		imx6_pm_stby_poweroff_probe();
>  }

This is only active when fsl,pmic-stby-poweroff is present somewhere
in the tree, and that is not the case for 4.19-stable AFAICT. Is it
still good idea to have it stable branch?

								Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
                   ` (424 preceding siblings ...)
  2019-11-19 12:02 ` kernelci.org bot
@ 2019-11-19 20:35 ` Guenter Roeck
  2019-11-20  5:59   ` Greg Kroah-Hartman
  425 siblings, 1 reply; 478+ messages in thread
From: Guenter Roeck @ 2019-11-19 20:35 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, torvalds, akpm, shuah, patches, ben.hutchings,
	lkft-triage, stable

On Tue, Nov 19, 2019 at 06:13:17AM +0100, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.19.85 release.
> There are 422 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Thu, 21 Nov 2019 05:02:35 +0000.
> Anything received after that time might be too late.
> 

For v4.19.84-420-gd0112da1f7e6:

Build results:
	total: 156 pass: 156 fail: 0
Qemu test results:
	total: 390 pass: 390 fail: 0

Guenter

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 242/422] PCI: mediatek: Fix unchecked return value
  2019-11-19  5:17 ` [PATCH 4.19 242/422] PCI: mediatek: Fix unchecked return value Greg Kroah-Hartman
@ 2019-11-19 21:58   ` Pavel Machek
  0 siblings, 0 replies; 478+ messages in thread
From: Pavel Machek @ 2019-11-19 21:58 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, stable, Gustavo A. R. Silva, Lorenzo Pieralisi,
	Honghui Zhang, Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 933 bytes --]

Hi!

On Tue 2019-11-19 06:17:19, Greg Kroah-Hartman wrote:

> 
> [ Upstream commit 17a0a1e5f6c4bd6df17834312ff577c1373d87b8 ]
> 
> Check return value of devm_pci_remap_iospace().
> 
> index c5ff6ca65eab2..0d100f56cb884 100644
> --- a/drivers/pci/controller/pcie-mediatek.c
> +++ b/drivers/pci/controller/pcie-mediatek.c
> @@ -1120,7 +1120,9 @@ static int mtk_pcie_request_resources(struct mtk_pcie *pcie)
>  	if (err < 0)
>  		return err;
>  
> -	devm_pci_remap_iospace(dev, &pcie->pio, pcie->io.start);
> +	err = devm_pci_remap_iospace(dev, &pcie->pio, pcie->io.start);
> +	if (err)
> +		return err;
>  
>  	return 0;
>  }

You can just do return devm_pci_remap_iospace(dev, &pcie->pio,
pcie->io.start); instead. No need for if ()...

Best regards,
							Pavel

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 025/422] ecryptfs_lookup_interpose(): lower_dentry->d_inode is not stable
  2019-11-19  5:13 ` [PATCH 4.19 025/422] ecryptfs_lookup_interpose(): lower_dentry->d_inode is not stable Greg Kroah-Hartman
@ 2019-11-19 22:00   ` Pavel Machek
  0 siblings, 0 replies; 478+ messages in thread
From: Pavel Machek @ 2019-11-19 22:00 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: linux-kernel, stable, Al Viro

[-- Attachment #1: Type: text/plain, Size: 1374 bytes --]

Hi!

> From: Al Viro <viro@zeniv.linux.org.uk>
> 
> commit e72b9dd6a5f17d0fb51f16f8685f3004361e83d0 upstream.
> 
> lower_dentry can't go from positive to negative (we have it pinned),
> but it *can* go from negative to positive.  So fetching ->d_inode
> into a local variable, doing a blocking allocation, checking that
> now ->d_inode is non-NULL and feeding the value we'd fetched
> earlier to a function that won't accept NULL is not a good idea.
> 
> Cc: stable@vger.kernel.org
> --- a/fs/ecryptfs/inode.c
> +++ b/fs/ecryptfs/inode.c
> @@ -345,7 +345,15 @@ static struct dentry *ecryptfs_lookup_in
>  	dentry_info->lower_path.mnt = lower_mnt;
>  	dentry_info->lower_path.dentry = lower_dentry;
>  
> -	if (d_really_is_negative(lower_dentry)) {
> +	/*
> +	 * negative dentry can go positive under us here - its parent is not
> +	 * locked.  That's OK and that could happen just as we return from
> +	 * ecryptfs_lookup() anyway.  Just need to be careful and fetch
> +	 * ->d_inode only once - it's not stable here.
> +	 */
> +	lower_inode = READ_ONCE(lower_dentry->d_inode);

Should this use d_inode_rcu() function, to keep the abstraction
provided by the header file?

Best regards,
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 127/422] i2c: mediatek: Use DMA safe buffers for i2c transactions
  2019-11-19  5:15 ` [PATCH 4.19 127/422] i2c: mediatek: Use DMA safe buffers for i2c transactions Greg Kroah-Hartman
@ 2019-11-20  1:44   ` Nobuhiro Iwamatsu
  2019-11-21  6:53     ` Greg Kroah-Hartman
  0 siblings, 1 reply; 478+ messages in thread
From: Nobuhiro Iwamatsu @ 2019-11-20  1:44 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, stable, Jun Gao, Wolfram Sang, Sasha Levin

Hi,

On Tue, Nov 19, 2019 at 06:15:24AM +0100, Greg Kroah-Hartman wrote:
> From: Jun Gao <jun.gao@mediatek.com>
> 
> [ Upstream commit fc66b39fe36acfd06f716e338de7cd8f9550fad2 ]
> 
> DMA mode will always be used in i2c transactions, try to allocate
> a DMA safe buffer if the buf of struct i2c_msg used is not DMA safe.
> 
> Signed-off-by: Jun Gao <jun.gao@mediatek.com>
> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
> Signed-off-by: Sasha Levin <sashal@kernel.org>

This patch requires the following additional commit:

commit bc1a7f75c85e226e82f183d30d75c357f92b6029
Author: Hsin-Yi Wang <hsinyi@chromium.org>
Date:   Fri Feb 15 17:02:02 2019 +0800

    i2c: mediatek: modify threshold passed to i2c_get_dma_safe_msg_buf()

    DMA with zero-length transfers doesn't make sense and this HW doesn't
    support them at all, so increase the threshold.

    Fixes: fc66b39fe36a ("i2c: mediatek: Use DMA safe buffers for i2c transactions")
    Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
    [wsa: reworded commit message]
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>

Please apply this commit.

Best regards,
  Nobuhiro

> ---
>  drivers/i2c/busses/i2c-mt65xx.c | 62 +++++++++++++++++++++++++++++----
>  1 file changed, 55 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/i2c/busses/i2c-mt65xx.c b/drivers/i2c/busses/i2c-mt65xx.c
> index 1e57f58fcb001..a74ef76705e0c 100644
> --- a/drivers/i2c/busses/i2c-mt65xx.c
> +++ b/drivers/i2c/busses/i2c-mt65xx.c
> @@ -441,6 +441,8 @@ static int mtk_i2c_do_transfer(struct mtk_i2c *i2c, struct i2c_msg *msgs,
>  	u16 control_reg;
>  	u16 restart_flag = 0;
>  	u32 reg_4g_mode;
> +	u8 *dma_rd_buf = NULL;
> +	u8 *dma_wr_buf = NULL;
>  	dma_addr_t rpaddr = 0;
>  	dma_addr_t wpaddr = 0;
>  	int ret;
> @@ -500,10 +502,18 @@ static int mtk_i2c_do_transfer(struct mtk_i2c *i2c, struct i2c_msg *msgs,
>  	if (i2c->op == I2C_MASTER_RD) {
>  		writel(I2C_DMA_INT_FLAG_NONE, i2c->pdmabase + OFFSET_INT_FLAG);
>  		writel(I2C_DMA_CON_RX, i2c->pdmabase + OFFSET_CON);
> -		rpaddr = dma_map_single(i2c->dev, msgs->buf,
> +
> +		dma_rd_buf = i2c_get_dma_safe_msg_buf(msgs, 0);
> +		if (!dma_rd_buf)
> +			return -ENOMEM;
> +
> +		rpaddr = dma_map_single(i2c->dev, dma_rd_buf,
>  					msgs->len, DMA_FROM_DEVICE);
> -		if (dma_mapping_error(i2c->dev, rpaddr))
> +		if (dma_mapping_error(i2c->dev, rpaddr)) {
> +			i2c_put_dma_safe_msg_buf(dma_rd_buf, msgs, false);
> +
>  			return -ENOMEM;
> +		}
>  
>  		if (i2c->dev_comp->support_33bits) {
>  			reg_4g_mode = mtk_i2c_set_4g_mode(rpaddr);
> @@ -515,10 +525,18 @@ static int mtk_i2c_do_transfer(struct mtk_i2c *i2c, struct i2c_msg *msgs,
>  	} else if (i2c->op == I2C_MASTER_WR) {
>  		writel(I2C_DMA_INT_FLAG_NONE, i2c->pdmabase + OFFSET_INT_FLAG);
>  		writel(I2C_DMA_CON_TX, i2c->pdmabase + OFFSET_CON);
> -		wpaddr = dma_map_single(i2c->dev, msgs->buf,
> +
> +		dma_wr_buf = i2c_get_dma_safe_msg_buf(msgs, 0);
> +		if (!dma_wr_buf)
> +			return -ENOMEM;
> +
> +		wpaddr = dma_map_single(i2c->dev, dma_wr_buf,
>  					msgs->len, DMA_TO_DEVICE);
> -		if (dma_mapping_error(i2c->dev, wpaddr))
> +		if (dma_mapping_error(i2c->dev, wpaddr)) {
> +			i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, false);
> +
>  			return -ENOMEM;
> +		}
>  
>  		if (i2c->dev_comp->support_33bits) {
>  			reg_4g_mode = mtk_i2c_set_4g_mode(wpaddr);
> @@ -530,16 +548,39 @@ static int mtk_i2c_do_transfer(struct mtk_i2c *i2c, struct i2c_msg *msgs,
>  	} else {
>  		writel(I2C_DMA_CLR_FLAG, i2c->pdmabase + OFFSET_INT_FLAG);
>  		writel(I2C_DMA_CLR_FLAG, i2c->pdmabase + OFFSET_CON);
> -		wpaddr = dma_map_single(i2c->dev, msgs->buf,
> +
> +		dma_wr_buf = i2c_get_dma_safe_msg_buf(msgs, 0);
> +		if (!dma_wr_buf)
> +			return -ENOMEM;
> +
> +		wpaddr = dma_map_single(i2c->dev, dma_wr_buf,
>  					msgs->len, DMA_TO_DEVICE);
> -		if (dma_mapping_error(i2c->dev, wpaddr))
> +		if (dma_mapping_error(i2c->dev, wpaddr)) {
> +			i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, false);
> +
>  			return -ENOMEM;
> -		rpaddr = dma_map_single(i2c->dev, (msgs + 1)->buf,
> +		}
> +
> +		dma_rd_buf = i2c_get_dma_safe_msg_buf((msgs + 1), 0);
> +		if (!dma_rd_buf) {
> +			dma_unmap_single(i2c->dev, wpaddr,
> +					 msgs->len, DMA_TO_DEVICE);
> +
> +			i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, false);
> +
> +			return -ENOMEM;
> +		}
> +
> +		rpaddr = dma_map_single(i2c->dev, dma_rd_buf,
>  					(msgs + 1)->len,
>  					DMA_FROM_DEVICE);
>  		if (dma_mapping_error(i2c->dev, rpaddr)) {
>  			dma_unmap_single(i2c->dev, wpaddr,
>  					 msgs->len, DMA_TO_DEVICE);
> +
> +			i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, false);
> +			i2c_put_dma_safe_msg_buf(dma_rd_buf, (msgs + 1), false);
> +
>  			return -ENOMEM;
>  		}
>  
> @@ -578,14 +619,21 @@ static int mtk_i2c_do_transfer(struct mtk_i2c *i2c, struct i2c_msg *msgs,
>  	if (i2c->op == I2C_MASTER_WR) {
>  		dma_unmap_single(i2c->dev, wpaddr,
>  				 msgs->len, DMA_TO_DEVICE);
> +
> +		i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, true);
>  	} else if (i2c->op == I2C_MASTER_RD) {
>  		dma_unmap_single(i2c->dev, rpaddr,
>  				 msgs->len, DMA_FROM_DEVICE);
> +
> +		i2c_put_dma_safe_msg_buf(dma_rd_buf, msgs, true);
>  	} else {
>  		dma_unmap_single(i2c->dev, wpaddr, msgs->len,
>  				 DMA_TO_DEVICE);
>  		dma_unmap_single(i2c->dev, rpaddr, (msgs + 1)->len,
>  				 DMA_FROM_DEVICE);
> +
> +		i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, true);
> +		i2c_put_dma_safe_msg_buf(dma_rd_buf, (msgs + 1), true);
>  	}
>  
>  	if (ret == 0) {
> -- 
> 2.20.1
> 
> 
> 
> 

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 034/422] tee: optee: take DT status property into account
  2019-11-19  5:13 ` [PATCH 4.19 034/422] tee: optee: take DT status property into account Greg Kroah-Hartman
@ 2019-11-20  2:18   ` Nobuhiro Iwamatsu
  2019-11-21  6:54     ` Greg Kroah-Hartman
  0 siblings, 1 reply; 478+ messages in thread
From: Nobuhiro Iwamatsu @ 2019-11-20  2:18 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, stable, Ard Biesheuvel, Jens Wiklander, Sasha Levin

Hi,

On Tue, Nov 19, 2019 at 06:13:51AM +0100, Greg Kroah-Hartman wrote:
> From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> 
> [ Upstream commit db878f76b9ff7487da9bb0f686153f81829f1230 ]
> 
> DT nodes may have a 'status' property which, if set to anything other
> than 'ok' or 'okay', indicates to the OS that the DT node should be
> treated as if it was not present. So add that missing logic to the
> OP-TEE driver.
> 
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
> Signed-off-by: Sasha Levin <sashal@kernel.org>

This patch requires the following additional commit:

commit c7c0d8df0b94a67377555a550b8d66ee2ad2f4ed
Author: Julia Lawall <Julia.Lawall@lip6.fr>
Date:   Sat Feb 23 14:20:36 2019 +0100

    tee: optee: add missing of_node_put after of_device_is_available

    Add an of_node_put when a tested device node is not available.

    The semantic patch that fixes this problem is as follows
    (http://coccinelle.lip6.fr):

    // <smpl>
    @@
    identifier f;
    local idexpression e;
    expression x;
    @@

    e = f(...);
    ... when != of_node_put(e)
        when != x = e
        when != e = x
        when any
    if (<+...of_device_is_available(e)...+>) {
      ... when != of_node_put(e)
    (
      return e;
    |
    + of_node_put(e);
      return ...;
    )
    }
    // </smpl>

    Fixes: db878f76b9ff ("tee: optee: take DT status property into account")
    Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>

Please apply this commit. And this is also required for 4.14.y.

Best regards,
  Nobuhiro

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19 18:16               ` Greg Kroah-Hartman
  2019-11-19 20:00                 ` Chris Paterson
@ 2019-11-20  4:57                 ` Naresh Kamboju
  1 sibling, 0 replies; 478+ messages in thread
From: Naresh Kamboju @ 2019-11-20  4:57 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Guenter Roeck, Chris Paterson, linux-kernel, cip-dev, torvalds,
	akpm, shuah, patches, ben.hutchings, lkft-triage, stable

On Tue, 19 Nov 2019 at 23:46, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
>
> Ok, I've now done just that, and pushed out a -rc4.

Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.

Summary
------------------------------------------------------------------------

kernel: 4.19.85-rc4
git repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git branch: linux-4.19.y
git commit: d0112da1f7e63d8c9a40263ced73eb673177a053
git describe: v4.19.84-420-gd0112da1f7e6
Test details: https://qa-reports.linaro.org/lkft/linux-stable-rc-4.19-oe/build/v4.19.84-420-gd0112da1f7e6

No regressions (compared to build v4.19.84)

No fixes (compared to build v4.19.84)

Ran 23846 total tests in the following environments and test suites.

Environments
--------------
- dragonboard-410c - arm64
- hi6220-hikey - arm64
- i386
- juno-r2 - arm64
- qemu_arm
- qemu_arm64
- qemu_i386
- qemu_x86_64
- x15 - arm
- x86_64

Test Suites
-----------
* build
* install-android-platform-tools-r2600
* kselftest
* libhugetlbfs
* ltp-cap_bounds-tests
* ltp-commands-tests
* ltp-containers-tests
* ltp-cpuhotplug-tests
* ltp-cve-tests
* ltp-dio-tests
* ltp-fcntl-locktests-tests
* ltp-filecaps-tests
* ltp-fs_bind-tests
* ltp-fs_perms_simple-tests
* ltp-fsx-tests
* ltp-hugetlb-tests
* ltp-io-tests
* ltp-ipc-tests
* ltp-math-tests
* ltp-mm-tests
* ltp-nptl-tests
* ltp-pty-tests
* ltp-sched-tests
* ltp-securebits-tests
* ltp-syscalls-tests
* perf
* spectre-meltdown-checker-test
* v4l2-compliance
* ltp-fs-tests
* network-basic-tests
* ltp-open-posix-tests
* ssuite
* kselftest-vsyscall-mode-native
* kselftest-vsyscall-mode-none
* kvm-unit-tests

-- 
Linaro LKFT
https://lkft.linaro.org

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19 20:00                 ` Chris Paterson
@ 2019-11-20  5:58                   ` Greg Kroah-Hartman
  0 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-20  5:58 UTC (permalink / raw)
  To: Chris Paterson
  Cc: Guenter Roeck, linux-kernel, cip-dev, torvalds, akpm, shuah,
	patches, ben.hutchings, lkft-triage, stable

On Tue, Nov 19, 2019 at 08:00:59PM +0000, Chris Paterson wrote:
> > Ok, I've now done just that, and pushed out a -rc4.
> 
> Thanks Greg.
> 
> Linux 4.19.85-rc4 (824c9ada & d0112da1) works for me.

Wonderful, thanks for testing all of this.

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 000/422] 4.19.85-stable review
  2019-11-19 20:35 ` Guenter Roeck
@ 2019-11-20  5:59   ` Greg Kroah-Hartman
  0 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-20  5:59 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: linux-kernel, torvalds, akpm, shuah, patches, ben.hutchings,
	lkft-triage, stable

On Tue, Nov 19, 2019 at 12:35:12PM -0800, Guenter Roeck wrote:
> On Tue, Nov 19, 2019 at 06:13:17AM +0100, Greg Kroah-Hartman wrote:
> > This is the start of the stable review cycle for the 4.19.85 release.
> > There are 422 patches in this series, all will be posted as a response
> > to this one.  If anyone has any issues with these being applied, please
> > let me know.
> > 
> > Responses should be made by Thu, 21 Nov 2019 05:02:35 +0000.
> > Anything received after that time might be too late.
> > 
> 
> For v4.19.84-420-gd0112da1f7e6:
> 
> Build results:
> 	total: 156 pass: 156 fail: 0
> Qemu test results:
> 	total: 390 pass: 390 fail: 0

Great, thanks for testing this, and the others, and letting me know.

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 352/422] slimbus: ngd: register ngd driver only once.
  2019-11-19  5:19 ` [PATCH 4.19 352/422] slimbus: ngd: register ngd driver only once Greg Kroah-Hartman
@ 2019-11-20 12:31   ` Pavel Machek
  0 siblings, 0 replies; 478+ messages in thread
From: Pavel Machek @ 2019-11-20 12:31 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: linux-kernel, stable, Srinivas Kandagatla, Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 1221 bytes --]

On Tue 2019-11-19 06:19:09, Greg Kroah-Hartman wrote:
> From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> 
> [ Upstream commit 1830dad34c070161fda2ff1db77b39ffa78aa380 ]
> 
> Move ngd platform driver out of loop so that it registers only once.

AFAICT driver_register is immediately followed by "return", so it was
already registered only once before you patched it.

I don't think this should be in stable.

Best regards,
								Pavel

> +++ b/drivers/slimbus/qcom-ngd-ctrl.c
> @@ -1346,7 +1346,6 @@ static int of_qcom_slim_ngd_register(struct device *parent,
>  		ngd->base = ctrl->base + ngd->id * data->offset +
>  					(ngd->id - 1) * data->size;
>  		ctrl->ngd = ngd;
> -		platform_driver_register(&qcom_slim_ngd_driver);
>  
>  		return 0;
>  	}
> @@ -1445,6 +1444,7 @@ static int qcom_slim_ngd_ctrl_probe(struct platform_device *pdev)
>  	init_completion(&ctrl->reconf);
>  	init_completion(&ctrl->qmi.qmi_comp);
>  
> +	platform_driver_register(&qcom_slim_ngd_driver);
>  	return of_qcom_slim_ngd_register(dev, ctrl);
>  }
>  

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 353/422] slimbus: ngd: return proper error code instead of zero
  2019-11-19  5:19 ` [PATCH 4.19 353/422] slimbus: ngd: return proper error code instead of zero Greg Kroah-Hartman
@ 2019-11-20 12:36   ` Pavel Machek
  0 siblings, 0 replies; 478+ messages in thread
From: Pavel Machek @ 2019-11-20 12:36 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: linux-kernel, stable, Srinivas Kandagatla, Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 1992 bytes --]

On Tue 2019-11-19 06:19:10, Greg Kroah-Hartman wrote:
> From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> 
> [ Upstream commit 9652e6aa62a1836494ebb8dbd402587c083b568c ]
> 
> It looks like there is a typo in probe return. Fix it.
> 
> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Signed-off-by: Sasha Levin <sashal@kernel.org>
> ---
>  drivers/slimbus/qcom-ngd-ctrl.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/slimbus/qcom-ngd-ctrl.c b/drivers/slimbus/qcom-ngd-ctrl.c
> index a9abde2f4088b..e587be9064e74 100644
> --- a/drivers/slimbus/qcom-ngd-ctrl.c
> +++ b/drivers/slimbus/qcom-ngd-ctrl.c
> @@ -1393,7 +1393,7 @@ wq_err:
>  	if (ctrl->mwq)
>  		destroy_workqueue(ctrl->mwq);
>  
> -	return 0;
> +	return ret;
>  }

The code makes no sense, even after the fix. Only way to enter wq_err
is with via if !ctrl->mwq... but it proceeds to test it for zero.

IOW... this.

Signed-off-by: Pavel Machek <pavel@denx.de>

diff --git a/drivers/slimbus/qcom-ngd-ctrl.c b/drivers/slimbus/qcom-ngd-ctrl.c
index d72f8eed2e8b..5a327d45dc2d 100644
--- a/drivers/slimbus/qcom-ngd-ctrl.c
+++ b/drivers/slimbus/qcom-ngd-ctrl.c
@@ -1385,17 +1385,11 @@ static int qcom_slim_ngd_probe(struct platform_device *pdev)
 	ctrl->mwq = create_singlethread_workqueue("ngd_master");
 	if (!ctrl->mwq) {
 		dev_err(&pdev->dev, "Failed to start master worker\n");
-		ret = -ENOMEM;
-		goto wq_err;
+		qcom_slim_ngd_qmi_svc_event_deinit(&ctrl->qmi);
+		return -ENOMEM;
 	}
 
 	return 0;
-wq_err:
-	qcom_slim_ngd_qmi_svc_event_deinit(&ctrl->qmi);
-	if (ctrl->mwq)
-		destroy_workqueue(ctrl->mwq);
-
-	return ret;
 }
 
 static int qcom_slim_ngd_ctrl_probe(struct platform_device *pdev)


-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply related	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 383/422] firmware: dell_rbu: Make payload memory uncachable
  2019-11-19  5:19 ` [PATCH 4.19 383/422] firmware: dell_rbu: Make payload memory uncachable Greg Kroah-Hartman
@ 2019-11-20 13:28   ` Pavel Machek
  0 siblings, 0 replies; 478+ messages in thread
From: Pavel Machek @ 2019-11-20 13:28 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, stable, Stuart Hayes, Andy Shevchenko, Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 2057 bytes --]

Hi!

> From: Stuart Hayes <stuart.w.hayes@gmail.com>
> 
> [ Upstream commit 6aecee6ad41cf97c0270f72da032c10eef025bf0 ]
> 
> The dell_rbu driver takes firmware update payloads and puts them in memory so
> the system BIOS can find them after a reboot.  This sometimes fails (though
> rarely), because the memory containing the payload is in the CPU cache but
> never gets written back to main memory before the system is rebooted (CPU
> cache contents are lost on reboot).
> 
> With this patch, the payload memory will be changed to uncachable to ensure
> that the payload is actually in main memory before the system is
> rebooted.

Flushing the cache sounds like easier way to accomplish same
goal... and perhaps with better performance too.

Best regards,
								Pavel
								
> +++ b/drivers/firmware/dell_rbu.c
> @@ -45,6 +45,7 @@
>  #include <linux/moduleparam.h>
>  #include <linux/firmware.h>
>  #include <linux/dma-mapping.h>
> +#include <asm/set_memory.h>
>  
>  MODULE_AUTHOR("Abhay Salunke <abhay_salunke@dell.com>");
>  MODULE_DESCRIPTION("Driver for updating BIOS image on DELL systems");
> @@ -181,6 +182,11 @@ static int create_packet(void *data, size_t length)
>  			packet_data_temp_buf = NULL;
>  		}
>  	}
> +	/*
> +	 * set to uncachable or it may never get written back before reboot
> +	 */
> +	set_memory_uc((unsigned long)packet_data_temp_buf, 1 << ordernum);
> +
>  	spin_lock(&rbu_data.lock);
>  
>  	newpacket->data = packet_data_temp_buf;
> @@ -349,6 +355,8 @@ static void packet_empty_list(void)
>  		 * to make sure there are no stale RBU packets left in memory
>  		 */
>  		memset(newpacket->data, 0, rbu_data.packetsize);
> +		set_memory_wb((unsigned long)newpacket->data,
> +			1 << newpacket->ordernum);
>  		free_pages((unsigned long) newpacket->data,
>  			newpacket->ordernum);
>  		kfree(newpacket);
> -- 
> 2.20.1
> 
> 

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 389/422] crypto: s5p-sss: Fix Fix argument list alignment
  2019-11-19  5:19 ` [PATCH 4.19 389/422] crypto: s5p-sss: Fix Fix argument list alignment Greg Kroah-Hartman
@ 2019-11-20 13:33   ` Pavel Machek
  0 siblings, 0 replies; 478+ messages in thread
From: Pavel Machek @ 2019-11-20 13:33 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, stable, Christoph Manszewski, Krzysztof Kozlowski,
	Kamil Konieczny, Herbert Xu, Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 1137 bytes --]

On Tue 2019-11-19 06:19:46, Greg Kroah-Hartman wrote:
> From: Christoph Manszewski <c.manszewski@samsung.com>
> 
> [ Upstream commit 6c12b6ba45490eeb820fdceccf5a53f42a26799c ]
> 
> Fix misalignment of continued argument list.

Including whitespace changes in -stable is forbidden by rules.

This one is _just_ whitespace change. Please drop.

									Pavel

> +++ b/drivers/crypto/s5p-sss.c
> @@ -491,7 +491,7 @@ static void s5p_unset_indata(struct s5p_aes_dev *dev)
>  }
>  
>  static int s5p_make_sg_cpy(struct s5p_aes_dev *dev, struct scatterlist *src,
> -			    struct scatterlist **dst)
> +			   struct scatterlist **dst)
>  {
>  	void *pages;
>  	int len;
> @@ -1889,7 +1889,7 @@ static int s5p_set_indata_start(struct s5p_aes_dev *dev,
>  }
>  
>  static int s5p_set_outdata_start(struct s5p_aes_dev *dev,
> -				struct ablkcipher_request *req)
> +				 struct ablkcipher_request *req)
>  {
>  	struct scatterlist *sg;
>  	int err;
> -- 
> 2.20.1
> 
> 

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 063/422] ice: Prevent control queue operations during reset
  2019-11-19  5:14 ` [PATCH 4.19 063/422] ice: Prevent control queue operations during reset Greg Kroah-Hartman
@ 2019-11-20 21:48   ` Pavel Machek
  2019-11-21 23:52     ` Jeff Kirsher
  0 siblings, 1 reply; 478+ messages in thread
From: Pavel Machek @ 2019-11-20 21:48 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, stable, Anirudh Venkataramanan, Tony Brelinski,
	Jeff Kirsher, Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 1903 bytes --]

Hi!
> 
> [ Upstream commit fd2a981777d911b2e94cdec50779c85c58a0dec9 ]
> 
> Once reset is issued, the driver loses all control queue interfaces.
> Exercising control queue operations during reset is incorrect and
> may result in long timeouts.
> 
> This patch introduces a new field 'reset_ongoing' in the hw structure.
> This is set to 1 by the core driver when it receives a reset interrupt.
> ice_sq_send_cmd checks reset_ongoing before actually issuing the control
> queue operation. If a reset is in progress, it returns a soft error code
> (ICE_ERR_RESET_PENDING) to the caller. The caller may or may not have to
> take any action based on this return. Once the driver knows that the
> reset is done, it has to set reset_ongoing back to 0. This will allow
> control queue operations to be posted to the hardware again.
> 
> This "bail out" logic was specifically added to ice_sq_send_cmd (which
> is pretty low level function) so that we have one solution in one place
> that applies to all types of control queues.

I don't think this is suitable for stable. Would driver maintainers
comment?

> +			 *
> +			 * As this is the start of the reset/rebuild cycle, set
> +			 * both to indicate that.
> +			 */
> +			hw->reset_ongoing = true;
>  		}
>  	}

This should be = 1, since variable is u8...

Best regards,
									Pavel     	       

> +++ b/drivers/net/ethernet/intel/ice/ice_type.h
> @@ -293,6 +293,7 @@ struct ice_hw {
>  	u8 sw_entry_point_layer;
>  
>  	u8 evb_veb;		/* true for VEB, false for VEPA */
> +	u8 reset_ongoing;	/* true if hw is in reset, false otherwise */
>  	struct ice_bus_info bus;
>  	struct ice_nvm_info nvm;
>  	struct ice_hw_dev_caps dev_caps;	/* device capabilities */
> -- 

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 038/422] soundwire: Initialize completion for defer messages
  2019-11-19  5:13 ` [PATCH 4.19 038/422] soundwire: Initialize completion for defer messages Greg Kroah-Hartman
@ 2019-11-20 21:54   ` Pavel Machek
  2019-11-20 22:52     ` Pierre-Louis Bossart
  0 siblings, 1 reply; 478+ messages in thread
From: Pavel Machek @ 2019-11-20 21:54 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, stable, Sanyog Kale, Shreyas NC,
	Pierre-Louis Bossart, Vinod Koul, Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 1357 bytes --]

On Tue 2019-11-19 06:13:55, Greg Kroah-Hartman wrote:
> From: Shreyas NC <shreyas.nc@intel.com>
> 
> [ Upstream commit a306a0e4a5326269b6c78d136407f08433ab5ece ]
> 
> Deferred messages are async messages used to synchronize
> transitions mostly while doing a bank switch on multi links.
> On successful transitions these messages are marked complete
> and thereby confirming that all the buses performed bank switch
> successfully.
> 
> So, initialize the completion structure for the same.
> 
> Signed-off-by: Sanyog Kale <sanyog.r.kale@intel.com>

This is only called from sdw_transfer_defer() and that function is
called in mainline, but is unused in 4.19.X.

So I don't think this is suitable for -stable.

Best regards,
								Pavel

> diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c
> index 83576810eee65..df172bf3925f6 100644
> --- a/drivers/soundwire/bus.c
> +++ b/drivers/soundwire/bus.c
> @@ -175,6 +175,7 @@ static inline int do_transfer_defer(struct sdw_bus *bus,
>  
>  	defer->msg = msg;
>  	defer->length = msg->len;
> +	init_completion(&defer->complete);
>  
>  	for (i = 0; i <= retry; i++) {
>  		resp = bus->ops->xfer_msg_defer(bus, msg, defer);

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 065/422] ice: Fix and update driver version string
  2019-11-19  5:14 ` [PATCH 4.19 065/422] ice: Fix and update driver version string Greg Kroah-Hartman
@ 2019-11-20 21:59   ` Pavel Machek
  2019-11-20 22:02     ` Jeff Kirsher
  2019-11-21  6:42     ` Greg Kroah-Hartman
  0 siblings, 2 replies; 478+ messages in thread
From: Pavel Machek @ 2019-11-20 21:59 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, stable, Anirudh Venkataramanan, Tony Brelinski,
	Jeff Kirsher, Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 993 bytes --]

On Tue 2019-11-19 06:14:22, Greg Kroah-Hartman wrote:
> From: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
> 
> [ Upstream commit 9ea47d81a7f17c6b77211ab75fbca2127719ad39 ]
> 
> Remove the "ice" prefix for the driver version string and bump version
> to 0.7.1-k.

This sounds like a bad idea. 0.7.1 in mainline contains patches that
were not backported to stable, so marking this as 0.7.1 version is
wrong.

Best regards,
								Pavel
								
> +++ b/drivers/net/ethernet/intel/ice/ice_main.c
> @@ -7,7 +7,7 @@
>  
>  #include "ice.h"
>  
> -#define DRV_VERSION	"ice-0.7.0-k"
> +#define DRV_VERSION	"0.7.1-k"
>  #define DRV_SUMMARY	"Intel(R) Ethernet Connection E800 Series Linux Driver"
>  const char ice_drv_ver[] = DRV_VERSION;
>  static const char ice_driver_string[] = DRV_SUMMARY;
> -- 
> 2.20.1
> 
> 

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 065/422] ice: Fix and update driver version string
  2019-11-20 21:59   ` Pavel Machek
@ 2019-11-20 22:02     ` Jeff Kirsher
  2019-11-21  6:42     ` Greg Kroah-Hartman
  1 sibling, 0 replies; 478+ messages in thread
From: Jeff Kirsher @ 2019-11-20 22:02 UTC (permalink / raw)
  To: Pavel Machek, Greg Kroah-Hartman
  Cc: linux-kernel, stable, Anirudh Venkataramanan, Tony Brelinski,
	Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 1014 bytes --]

On Wed, 2019-11-20 at 22:59 +0100, Pavel Machek wrote:
> On Tue 2019-11-19 06:14:22, Greg Kroah-Hartman wrote:
> > From: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
> > 
> > [ Upstream commit 9ea47d81a7f17c6b77211ab75fbca2127719ad39 ]
> > 
> > Remove the "ice" prefix for the driver version string and bump
> > version
> > to 0.7.1-k.
> 
> This sounds like a bad idea. 0.7.1 in mainline contains patches that
> were not backported to stable, so marking this as 0.7.1 version is
> wrong.

I agree, backporting this change to stable should not happen.

NAK

> 								
> > +++ b/drivers/net/ethernet/intel/ice/ice_main.c
> > @@ -7,7 +7,7 @@
> >  
> >  #include "ice.h"
> >  
> > -#define DRV_VERSION	"ice-0.7.0-k"
> > +#define DRV_VERSION	"0.7.1-k"
> >  #define DRV_SUMMARY	"Intel(R) Ethernet Connection E800
> > Series Linux Driver"
> >  const char ice_drv_ver[] = DRV_VERSION;
> >  static const char ice_driver_string[] = DRV_SUMMARY;
> > -- 
> > 2.20.1
> > 
> > 


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 038/422] soundwire: Initialize completion for defer messages
  2019-11-20 21:54   ` Pavel Machek
@ 2019-11-20 22:52     ` Pierre-Louis Bossart
  0 siblings, 0 replies; 478+ messages in thread
From: Pierre-Louis Bossart @ 2019-11-20 22:52 UTC (permalink / raw)
  To: Pavel Machek, Greg Kroah-Hartman
  Cc: linux-kernel, stable, Sanyog Kale, Shreyas NC, Vinod Koul, Sasha Levin


>> [ Upstream commit a306a0e4a5326269b6c78d136407f08433ab5ece ]
>>
>> Deferred messages are async messages used to synchronize
>> transitions mostly while doing a bank switch on multi links.
>> On successful transitions these messages are marked complete
>> and thereby confirming that all the buses performed bank switch
>> successfully.
>>
>> So, initialize the completion structure for the same.
>>
>> Signed-off-by: Sanyog Kale <sanyog.r.kale@intel.com>
> 
> This is only called from sdw_transfer_defer() and that function is
> called in mainline, but is unused in 4.19.X.
> 
> So I don't think this is suitable for -stable.

Agree.

Multi-link solutions with synchronized streaming are not supported just 
yet. It's an important feature but it'll only be enabled after the 
existing backlog of 60+ patches are merged, and when the ASoC multi-cpu 
support allows for this feature, hopefully for 5.7.

my 2 cents
-Pierre


^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 065/422] ice: Fix and update driver version string
  2019-11-20 21:59   ` Pavel Machek
  2019-11-20 22:02     ` Jeff Kirsher
@ 2019-11-21  6:42     ` Greg Kroah-Hartman
  1 sibling, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-21  6:42 UTC (permalink / raw)
  To: Pavel Machek
  Cc: linux-kernel, stable, Anirudh Venkataramanan, Tony Brelinski,
	Jeff Kirsher, Sasha Levin

On Wed, Nov 20, 2019 at 10:59:05PM +0100, Pavel Machek wrote:
> On Tue 2019-11-19 06:14:22, Greg Kroah-Hartman wrote:
> > From: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
> > 
> > [ Upstream commit 9ea47d81a7f17c6b77211ab75fbca2127719ad39 ]
> > 
> > Remove the "ice" prefix for the driver version string and bump version
> > to 0.7.1-k.
> 
> This sounds like a bad idea. 0.7.1 in mainline contains patches that
> were not backported to stable, so marking this as 0.7.1 version is
> wrong.
> 
> Best regards,
> 								Pavel
> 								
> > +++ b/drivers/net/ethernet/intel/ice/ice_main.c
> > @@ -7,7 +7,7 @@
> >  
> >  #include "ice.h"
> >  
> > -#define DRV_VERSION	"ice-0.7.0-k"
> > +#define DRV_VERSION	"0.7.1-k"

Hah, this is why "versions" for drivers are totally meaningless and why
we removed them from most of the kernel tree already.  I recommend doing
that here as well.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 127/422] i2c: mediatek: Use DMA safe buffers for i2c transactions
  2019-11-20  1:44   ` Nobuhiro Iwamatsu
@ 2019-11-21  6:53     ` Greg Kroah-Hartman
  0 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-21  6:53 UTC (permalink / raw)
  To: Nobuhiro Iwamatsu
  Cc: linux-kernel, stable, Jun Gao, Wolfram Sang, Sasha Levin

On Wed, Nov 20, 2019 at 10:44:06AM +0900, Nobuhiro Iwamatsu wrote:
> Hi,
> 
> On Tue, Nov 19, 2019 at 06:15:24AM +0100, Greg Kroah-Hartman wrote:
> > From: Jun Gao <jun.gao@mediatek.com>
> > 
> > [ Upstream commit fc66b39fe36acfd06f716e338de7cd8f9550fad2 ]
> > 
> > DMA mode will always be used in i2c transactions, try to allocate
> > a DMA safe buffer if the buf of struct i2c_msg used is not DMA safe.
> > 
> > Signed-off-by: Jun Gao <jun.gao@mediatek.com>
> > Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
> > Signed-off-by: Sasha Levin <sashal@kernel.org>
> 
> This patch requires the following additional commit:
> 
> commit bc1a7f75c85e226e82f183d30d75c357f92b6029
> Author: Hsin-Yi Wang <hsinyi@chromium.org>
> Date:   Fri Feb 15 17:02:02 2019 +0800
> 
>     i2c: mediatek: modify threshold passed to i2c_get_dma_safe_msg_buf()
> 
>     DMA with zero-length transfers doesn't make sense and this HW doesn't
>     support them at all, so increase the threshold.
> 
>     Fixes: fc66b39fe36a ("i2c: mediatek: Use DMA safe buffers for i2c transactions")
>     Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
>     [wsa: reworded commit message]
>     Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
> 
> Please apply this commit.
> 
> Best regards,
>   Nobuhiro
> 
> > ---
> >  drivers/i2c/busses/i2c-mt65xx.c | 62 +++++++++++++++++++++++++++++----
> >  1 file changed, 55 insertions(+), 7 deletions(-)
> > 
> > diff --git a/drivers/i2c/busses/i2c-mt65xx.c b/drivers/i2c/busses/i2c-mt65xx.c
> > index 1e57f58fcb001..a74ef76705e0c 100644
> > --- a/drivers/i2c/busses/i2c-mt65xx.c
> > +++ b/drivers/i2c/busses/i2c-mt65xx.c
> > @@ -441,6 +441,8 @@ static int mtk_i2c_do_transfer(struct mtk_i2c *i2c, struct i2c_msg *msgs,
> >  	u16 control_reg;
> >  	u16 restart_flag = 0;
> >  	u32 reg_4g_mode;
> > +	u8 *dma_rd_buf = NULL;
> > +	u8 *dma_wr_buf = NULL;
> >  	dma_addr_t rpaddr = 0;
> >  	dma_addr_t wpaddr = 0;
> >  	int ret;
> > @@ -500,10 +502,18 @@ static int mtk_i2c_do_transfer(struct mtk_i2c *i2c, struct i2c_msg *msgs,
> >  	if (i2c->op == I2C_MASTER_RD) {
> >  		writel(I2C_DMA_INT_FLAG_NONE, i2c->pdmabase + OFFSET_INT_FLAG);
> >  		writel(I2C_DMA_CON_RX, i2c->pdmabase + OFFSET_CON);
> > -		rpaddr = dma_map_single(i2c->dev, msgs->buf,
> > +
> > +		dma_rd_buf = i2c_get_dma_safe_msg_buf(msgs, 0);
> > +		if (!dma_rd_buf)
> > +			return -ENOMEM;
> > +
> > +		rpaddr = dma_map_single(i2c->dev, dma_rd_buf,
> >  					msgs->len, DMA_FROM_DEVICE);
> > -		if (dma_mapping_error(i2c->dev, rpaddr))
> > +		if (dma_mapping_error(i2c->dev, rpaddr)) {
> > +			i2c_put_dma_safe_msg_buf(dma_rd_buf, msgs, false);
> > +
> >  			return -ENOMEM;
> > +		}
> >  
> >  		if (i2c->dev_comp->support_33bits) {
> >  			reg_4g_mode = mtk_i2c_set_4g_mode(rpaddr);
> > @@ -515,10 +525,18 @@ static int mtk_i2c_do_transfer(struct mtk_i2c *i2c, struct i2c_msg *msgs,
> >  	} else if (i2c->op == I2C_MASTER_WR) {
> >  		writel(I2C_DMA_INT_FLAG_NONE, i2c->pdmabase + OFFSET_INT_FLAG);
> >  		writel(I2C_DMA_CON_TX, i2c->pdmabase + OFFSET_CON);
> > -		wpaddr = dma_map_single(i2c->dev, msgs->buf,
> > +
> > +		dma_wr_buf = i2c_get_dma_safe_msg_buf(msgs, 0);
> > +		if (!dma_wr_buf)
> > +			return -ENOMEM;
> > +
> > +		wpaddr = dma_map_single(i2c->dev, dma_wr_buf,
> >  					msgs->len, DMA_TO_DEVICE);
> > -		if (dma_mapping_error(i2c->dev, wpaddr))
> > +		if (dma_mapping_error(i2c->dev, wpaddr)) {
> > +			i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, false);
> > +
> >  			return -ENOMEM;
> > +		}
> >  
> >  		if (i2c->dev_comp->support_33bits) {
> >  			reg_4g_mode = mtk_i2c_set_4g_mode(wpaddr);
> > @@ -530,16 +548,39 @@ static int mtk_i2c_do_transfer(struct mtk_i2c *i2c, struct i2c_msg *msgs,
> >  	} else {
> >  		writel(I2C_DMA_CLR_FLAG, i2c->pdmabase + OFFSET_INT_FLAG);
> >  		writel(I2C_DMA_CLR_FLAG, i2c->pdmabase + OFFSET_CON);
> > -		wpaddr = dma_map_single(i2c->dev, msgs->buf,
> > +
> > +		dma_wr_buf = i2c_get_dma_safe_msg_buf(msgs, 0);
> > +		if (!dma_wr_buf)
> > +			return -ENOMEM;
> > +
> > +		wpaddr = dma_map_single(i2c->dev, dma_wr_buf,
> >  					msgs->len, DMA_TO_DEVICE);
> > -		if (dma_mapping_error(i2c->dev, wpaddr))
> > +		if (dma_mapping_error(i2c->dev, wpaddr)) {
> > +			i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, false);
> > +
> >  			return -ENOMEM;
> > -		rpaddr = dma_map_single(i2c->dev, (msgs + 1)->buf,
> > +		}
> > +
> > +		dma_rd_buf = i2c_get_dma_safe_msg_buf((msgs + 1), 0);
> > +		if (!dma_rd_buf) {
> > +			dma_unmap_single(i2c->dev, wpaddr,
> > +					 msgs->len, DMA_TO_DEVICE);
> > +
> > +			i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, false);
> > +
> > +			return -ENOMEM;
> > +		}
> > +
> > +		rpaddr = dma_map_single(i2c->dev, dma_rd_buf,
> >  					(msgs + 1)->len,
> >  					DMA_FROM_DEVICE);
> >  		if (dma_mapping_error(i2c->dev, rpaddr)) {
> >  			dma_unmap_single(i2c->dev, wpaddr,
> >  					 msgs->len, DMA_TO_DEVICE);
> > +
> > +			i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, false);
> > +			i2c_put_dma_safe_msg_buf(dma_rd_buf, (msgs + 1), false);
> > +
> >  			return -ENOMEM;
> >  		}
> >  
> > @@ -578,14 +619,21 @@ static int mtk_i2c_do_transfer(struct mtk_i2c *i2c, struct i2c_msg *msgs,
> >  	if (i2c->op == I2C_MASTER_WR) {
> >  		dma_unmap_single(i2c->dev, wpaddr,
> >  				 msgs->len, DMA_TO_DEVICE);
> > +
> > +		i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, true);
> >  	} else if (i2c->op == I2C_MASTER_RD) {
> >  		dma_unmap_single(i2c->dev, rpaddr,
> >  				 msgs->len, DMA_FROM_DEVICE);
> > +
> > +		i2c_put_dma_safe_msg_buf(dma_rd_buf, msgs, true);
> >  	} else {
> >  		dma_unmap_single(i2c->dev, wpaddr, msgs->len,
> >  				 DMA_TO_DEVICE);
> >  		dma_unmap_single(i2c->dev, rpaddr, (msgs + 1)->len,
> >  				 DMA_FROM_DEVICE);
> > +
> > +		i2c_put_dma_safe_msg_buf(dma_wr_buf, msgs, true);
> > +		i2c_put_dma_safe_msg_buf(dma_rd_buf, (msgs + 1), true);
> >  	}
> >  
> >  	if (ret == 0) {
> > -- 
> > 2.20.1

Now queued up, thanks.

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 034/422] tee: optee: take DT status property into account
  2019-11-20  2:18   ` Nobuhiro Iwamatsu
@ 2019-11-21  6:54     ` Greg Kroah-Hartman
  0 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-21  6:54 UTC (permalink / raw)
  To: Nobuhiro Iwamatsu
  Cc: linux-kernel, stable, Ard Biesheuvel, Jens Wiklander, Sasha Levin

On Wed, Nov 20, 2019 at 11:18:28AM +0900, Nobuhiro Iwamatsu wrote:
> Hi,
> 
> On Tue, Nov 19, 2019 at 06:13:51AM +0100, Greg Kroah-Hartman wrote:
> > From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > 
> > [ Upstream commit db878f76b9ff7487da9bb0f686153f81829f1230 ]
> > 
> > DT nodes may have a 'status' property which, if set to anything other
> > than 'ok' or 'okay', indicates to the OS that the DT node should be
> > treated as if it was not present. So add that missing logic to the
> > OP-TEE driver.
> > 
> > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
> > Signed-off-by: Sasha Levin <sashal@kernel.org>
> 
> This patch requires the following additional commit:
> 
> commit c7c0d8df0b94a67377555a550b8d66ee2ad2f4ed
> Author: Julia Lawall <Julia.Lawall@lip6.fr>
> Date:   Sat Feb 23 14:20:36 2019 +0100
> 
>     tee: optee: add missing of_node_put after of_device_is_available
> 
>     Add an of_node_put when a tested device node is not available.
> 
>     The semantic patch that fixes this problem is as follows
>     (http://coccinelle.lip6.fr):
> 
>     // <smpl>
>     @@
>     identifier f;
>     local idexpression e;
>     expression x;
>     @@
> 
>     e = f(...);
>     ... when != of_node_put(e)
>         when != x = e
>         when != e = x
>         when any
>     if (<+...of_device_is_available(e)...+>) {
>       ... when != of_node_put(e)
>     (
>       return e;
>     |
>     + of_node_put(e);
>       return ...;
>     )
>     }
>     // </smpl>
> 
>     Fixes: db878f76b9ff ("tee: optee: take DT status property into account")
>     Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
>     Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
> 
> Please apply this commit. And this is also required for 4.14.y.

Now queued up, thanks!

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 068/422] ASoC: meson: axg-fifo: report interrupt request failure
  2019-11-19  5:14 ` [PATCH 4.19 068/422] ASoC: meson: axg-fifo: report interrupt request failure Greg Kroah-Hartman
@ 2019-11-21 10:14   ` Pavel Machek
  0 siblings, 0 replies; 478+ messages in thread
From: Pavel Machek @ 2019-11-21 10:14 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, stable, Jerome Brunet, Mark Brown, Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 942 bytes --]

Hi!

> Return value of request_irq() was irgnored. Fix this and report
> the failure if any

>  1 file changed, 2 insertions(+)
> 
> diff --git a/sound/soc/meson/axg-fifo.c b/sound/soc/meson/axg-fifo.c
> index 30262550e37b1..0e4f65e654c4b 100644
> --- a/sound/soc/meson/axg-fifo.c
> +++ b/sound/soc/meson/axg-fifo.c
> @@ -203,6 +203,8 @@ static int axg_fifo_pcm_open(struct snd_pcm_substream *ss)
>  
>  	ret = request_irq(fifo->irq, axg_fifo_pcm_irq_block, 0,
>  			  dev_name(dev), ss);
> +	if (ret)
> +		return ret;
>  
>  	/* Enable pclk to access registers and clock the fifo ip */
>  	ret = clk_prepare_enable(fifo->pclk);

While this is not incorrect... 

Do we need to free_irq in case of clk_prepare_enable() or other stuff
below fails?

Best regards,
								Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 070/422] pinctrl: ingenic: Probe driver at subsys_initcall
  2019-11-19  5:14 ` [PATCH 4.19 070/422] pinctrl: ingenic: Probe driver at subsys_initcall Greg Kroah-Hartman
@ 2019-11-21 10:17   ` Pavel Machek
  2019-11-22 18:25     ` Paul Cercueil
  0 siblings, 1 reply; 478+ messages in thread
From: Pavel Machek @ 2019-11-21 10:17 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, stable, Paul Cercueil, Linus Walleij, Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 2280 bytes --]

On Tue 2019-11-19 06:14:27, Greg Kroah-Hartman wrote:
> From: Paul Cercueil <paul@crapouillou.net>
> 
> [ Upstream commit 556a36a71ed80e17ade49225b58513ea3c9e4558 ]
> 
> Using postcore_initcall() makes the driver try to initialize way too
> early.

Does it fix concrete bug / would you say it is suitable for -stable?

> +++ b/drivers/pinctrl/pinctrl-ingenic.c
> @@ -847,4 +847,4 @@ static int __init ingenic_pinctrl_drv_register(void)
>  {
>  	return platform_driver_register(&ingenic_pinctrl_driver);
>  }
> -postcore_initcall(ingenic_pinctrl_drv_register);
> +subsys_initcall(ingenic_pinctrl_drv_register);

There are other pinctrl drivers initialized very early, do they need
fixing, too?

Best regards,
								Pavel

pavel@amd:~/cip/k$ grep _initcall drivers/pinctrl/pinctrl-*.c
drivers/pinctrl/pinctrl-artpec6.c:arch_initcall(artpec6_pmx_init);
drivers/pinctrl/pinctrl-at91.c:arch_initcall(at91_pinctrl_init);
drivers/pinctrl/pinctrl-coh901.c:arch_initcall(u300_gpio_init);
drivers/pinctrl/pinctrl-falcon.c:core_initcall_sync(pinctrl_falcon_init);
drivers/pinctrl/pinctrl-gemini.c:arch_initcall(gemini_pmx_init);
drivers/pinctrl/pinctrl-ingenic.c:postcore_initcall(ingenic_pinctrl_drv_register);
drivers/pinctrl/pinctrl-mcp23s08.c:subsys_initcall(mcp23s08_init);
drivers/pinctrl/pinctrl-oxnas.c:arch_initcall(oxnas_gpio_register);
drivers/pinctrl/pinctrl-oxnas.c:arch_initcall(oxnas_pinctrl_register);
drivers/pinctrl/pinctrl-pic32.c:arch_initcall(pic32_gpio_register);
drivers/pinctrl/pinctrl-pic32.c:arch_initcall(pic32_pinctrl_register);
drivers/pinctrl/pinctrl-pistachio.c:arch_initcall(pistachio_pinctrl_register);
drivers/pinctrl/pinctrl-rockchip.c:postcore_initcall(rockchip_pinctrl_drv_register);
drivers/pinctrl/pinctrl-rza1.c:core_initcall(rza1_pinctrl_init);
drivers/pinctrl/pinctrl-st.c:arch_initcall(st_pctl_init);
drivers/pinctrl/pinctrl-sx150x.c:subsys_initcall(sx150x_init);
drivers/pinctrl/pinctrl-u300.c:arch_initcall(u300_pmx_init);
drivers/pinctrl/pinctrl-xway.c:core_initcall_sync(pinmux_xway_init);
drivers/pinctrl/pinctrl-zynq.c:arch_initcall(zynq_pinctrl_init);


-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 079/422] i40e: use correct length for strncpy
  2019-11-19  5:14 ` [PATCH 4.19 079/422] i40e: use correct length for strncpy Greg Kroah-Hartman
@ 2019-11-21 10:35   ` Pavel Machek
  2019-11-21 15:34     ` Williams, Mitch A
  2019-11-21 23:53     ` Jeff Kirsher
  0 siblings, 2 replies; 478+ messages in thread
From: Pavel Machek @ 2019-11-21 10:35 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, stable, Mitch Williams, Andrew Bowers,
	Jeff Kirsher, Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 1149 bytes --]

Hi!

> From: Mitch Williams <mitch.a.williams@intel.com>
> 
> [ Upstream commit 7eb74ff891b4e94b8bac48f648a21e4b94ddee64 ]
> 
> Caught by GCC 8. When we provide a length for strncpy, we should not
> include the terminating null. So we must tell it one less than the size
> of the destination buffer.

> +++ b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
> @@ -694,7 +694,8 @@ static long i40e_ptp_create_clock(struct i40e_pf *pf)
>  	if (!IS_ERR_OR_NULL(pf->ptp_clock))
>  		return 0;
>  
> -	strncpy(pf->ptp_caps.name, i40e_driver_name, sizeof(pf->ptp_caps.name));
> +	strncpy(pf->ptp_caps.name, i40e_driver_name,
> +		sizeof(pf->ptp_caps.name) - 1);
>  	pf->ptp_caps.owner = THIS_MODULE;
>  	pf->ptp_caps.max_adj = 999999999;
>  	pf->ptp_caps.n_ext_ts = 0;

So... pf is allocated with kzalloc, which will provide the null
termination... so the code is okay.

On the other hand, the = 0 below is unneeded by the same logic, so
this is a bit confusing.

Best regards,
								Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 166/422] f2fs: fix memory leak of percpu counter in fill_super()
  2019-11-19  5:16 ` [PATCH 4.19 166/422] f2fs: fix memory leak of percpu counter " Greg Kroah-Hartman
@ 2019-11-21 13:39   ` Pavel Machek
  0 siblings, 0 replies; 478+ messages in thread
From: Pavel Machek @ 2019-11-21 13:39 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, stable, Chao Yu, Jaegeuk Kim, Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 1149 bytes --]

Hi!

> From: Chao Yu <yuchao0@huawei.com>
> 
> [ Upstream commit 4a70e255449c9a13eed7a6eeecc85a1ea63cef76 ]
> 
> In fill_super -> init_percpu_info, we should destroy percpu counter
> in error path, otherwise memory allcoated for percpu counter will
> leak.

> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> index 58931d55dc1d2..c5d28e92d146e 100644
> --- a/fs/f2fs/super.c
> +++ b/fs/f2fs/super.c
> @@ -2516,8 +2516,12 @@ static int init_percpu_info(struct f2fs_sb_info *sbi)
>  	if (err)
>  		return err;
>  
> -	return percpu_counter_init(&sbi->total_valid_inode_count, 0,
> +	err = percpu_counter_init(&sbi->total_valid_inode_count, 0,
>  								GFP_KERNEL);
> +	if (err)
> +		percpu_counter_destroy(&sbi->alloc_valid_block_count);
> +
> +	return err;
>  }

Are you sure this is good idea? Normally when _init() fails, the thing
is not allocated, and there is nothing to destroy...

If you are right, there's same bug in fs/xfs/xfs_buf.c .

Best regards,
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* RE: [PATCH 4.19 079/422] i40e: use correct length for strncpy
  2019-11-21 10:35   ` Pavel Machek
@ 2019-11-21 15:34     ` Williams, Mitch A
  2019-11-21 23:53     ` Jeff Kirsher
  1 sibling, 0 replies; 478+ messages in thread
From: Williams, Mitch A @ 2019-11-21 15:34 UTC (permalink / raw)
  To: Pavel Machek, Greg Kroah-Hartman, Loktionov, Aleksandr
  Cc: linux-kernel, stable, Bowers, AndrewX, Kirsher, Jeffrey T, Sasha Levin



> -----Original Message-----
> From: Pavel Machek <pavel@denx.de>
> Sent: Thursday, November 21, 2019 2:35 AM
> To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: linux-kernel@vger.kernel.org; stable@vger.kernel.org; Williams, Mitch A
> <mitch.a.williams@intel.com>; Bowers, AndrewX <andrewx.bowers@intel.com>;
> Kirsher, Jeffrey T <jeffrey.t.kirsher@intel.com>; Sasha Levin
> <sashal@kernel.org>
> Subject: Re: [PATCH 4.19 079/422] i40e: use correct length for strncpy
> 
> Hi!
> 
> > From: Mitch Williams <mitch.a.williams@intel.com>
> >
> > [ Upstream commit 7eb74ff891b4e94b8bac48f648a21e4b94ddee64 ]
> >
> > Caught by GCC 8. When we provide a length for strncpy, we should not
> > include the terminating null. So we must tell it one less than the size
> > of the destination buffer.
> 
> > +++ b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
> > @@ -694,7 +694,8 @@ static long i40e_ptp_create_clock(struct i40e_pf *pf)
> >  	if (!IS_ERR_OR_NULL(pf->ptp_clock))
> >  		return 0;
> >
> > -	strncpy(pf->ptp_caps.name, i40e_driver_name, sizeof(pf->ptp_caps.name));
> > +	strncpy(pf->ptp_caps.name, i40e_driver_name,
> > +		sizeof(pf->ptp_caps.name) - 1);
> >  	pf->ptp_caps.owner = THIS_MODULE;
> >  	pf->ptp_caps.max_adj = 999999999;
> >  	pf->ptp_caps.n_ext_ts = 0;
> 
> So... pf is allocated with kzalloc, which will provide the null
> termination... so the code is okay.
> 
> On the other hand, the = 0 below is unneeded by the same logic, so
> this is a bit confusing.
> 
> Best regards,
> 								Pavel

Thanks for catching this, Pavel. Aleksandr Loktionov owns this driver now. He can get this taken care of.
-Mitch


> --
> (english) http://www.livejournal.com/~pavelmachek
> (cesky, pictures)
> http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 233/422] netfilter: nf_tables: avoid BUG_ON usage
  2019-11-19  5:17 ` [PATCH 4.19 233/422] netfilter: nf_tables: avoid BUG_ON usage Greg Kroah-Hartman
@ 2019-11-21 20:16   ` Pavel Machek
  2019-11-21 20:25     ` Greg Kroah-Hartman
  2019-11-21 20:35     ` Florian Westphal
  0 siblings, 2 replies; 478+ messages in thread
From: Pavel Machek @ 2019-11-21 20:16 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, stable, Florian Westphal, Pablo Neira Ayuso, Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 1453 bytes --]

Hi!

> From: Florian Westphal <fw@strlen.de>
> 
> [ Upstream commit fa5950e498e7face21a1761f327e6c1152f778c3 ]
> 
> None of these spots really needs to crash the kernel.
> In one two cases we can jsut report error to userspace, in the other
> cases we can just use WARN_ON (and leak memory instead).

Do these conditions trigger for someone, to warrant -stable patch?

> +++ b/net/netfilter/nft_cmp.c
> @@ -79,7 +79,8 @@ static int nft_cmp_init(const struct nft_ctx *ctx, const struct nft_expr *expr,
>  
>  	err = nft_data_init(NULL, &priv->data, sizeof(priv->data), &desc,
>  			    tb[NFTA_CMP_DATA]);
> -	BUG_ON(err < 0);
> +	if (err < 0)
> +		return err;
>  
>  	priv->sreg = nft_parse_register(tb[NFTA_CMP_SREG]);
>  	err = nft_validate_register_load(priv->sreg, desc.len);
> @@ -129,7 +130,8 @@ static int nft_cmp_fast_init(const struct nft_ctx *ctx,
>  
>  	err = nft_data_init(NULL, &data, sizeof(data), &desc,
>  			    tb[NFTA_CMP_DATA]);
> -	BUG_ON(err < 0);
> +	if (err < 0)
> +		return err;
>  
>  	priv->sreg = nft_parse_register(tb[NFTA_CMP_SREG]);
>  	err = nft_validate_register_load(priv->sreg, desc.len);

This goes from "kill kernel with backtrace" to "silently return
failure". Should WARN_ON() be preserved here?

Best regards,
								Pavel
								
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 241/422] net: socionext: Fix two sleep-in-atomic-context bugs in ave_rxfifo_reset()
  2019-11-19  5:17 ` [PATCH 4.19 241/422] net: socionext: Fix two sleep-in-atomic-context bugs in ave_rxfifo_reset() Greg Kroah-Hartman
@ 2019-11-21 20:21   ` Pavel Machek
  2019-11-21 20:26     ` Greg Kroah-Hartman
  0 siblings, 1 reply; 478+ messages in thread
From: Pavel Machek @ 2019-11-21 20:21 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, stable, Jia-Ju Bai, David S. Miller, Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 1335 bytes --]

Hi!

> [ Upstream commit 0020f5c807ef67954d9210eea0ba17a6134cdf7d ]
> 
> The driver may sleep with holding a spinlock.
> The function call paths (from bottom to top) in Linux-4.17 are:
> 
> [FUNC] usleep_range
> drivers/net/ethernet/socionext/sni_ave.c, 892:
> 	usleep_range in ave_rxfifo_reset
> drivers/net/ethernet/socionext/sni_ave.c, 932:
> 	ave_rxfifo_reset in ave_irq_handler
> 
> [FUNC] usleep_range
> drivers/net/ethernet/socionext/sni_ave.c, 888:
> 	usleep_range in ave_rxfifo_reset
> drivers/net/ethernet/socionext/sni_ave.c, 932:
> 	ave_rxfifo_reset in ave_irq_handler
> 
> To fix these bugs, usleep_range() is replaced with udelay().

I don't believe this is serious enough for -stable, but more
importantly:

> +++ b/drivers/net/ethernet/socionext/sni_ave.c
> @@ -906,11 +906,11 @@ static void ave_rxfifo_reset(struct net_device *ndev)
>  
>  	/* assert reset */
>  	writel(AVE_GRR_RXFFR, priv->base + AVE_GRR);
> -	usleep_range(40, 50);
> +	udelay(50);
>  
>  	/* negate reset */
>  	writel(0, priv->base + AVE_GRR);
> -	usleep_range(10, 20);
> +	udelay(20);
>

udelay(40) / udelay(10) should be enough here.

Best regards,
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 233/422] netfilter: nf_tables: avoid BUG_ON usage
  2019-11-21 20:16   ` Pavel Machek
@ 2019-11-21 20:25     ` Greg Kroah-Hartman
  2019-11-21 20:35     ` Florian Westphal
  1 sibling, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-21 20:25 UTC (permalink / raw)
  To: Pavel Machek
  Cc: linux-kernel, stable, Florian Westphal, Pablo Neira Ayuso, Sasha Levin

On Thu, Nov 21, 2019 at 09:16:18PM +0100, Pavel Machek wrote:
> Hi!
> 
> > From: Florian Westphal <fw@strlen.de>
> > 
> > [ Upstream commit fa5950e498e7face21a1761f327e6c1152f778c3 ]
> > 
> > None of these spots really needs to crash the kernel.
> > In one two cases we can jsut report error to userspace, in the other
> > cases we can just use WARN_ON (and leak memory instead).
> 
> Do these conditions trigger for someone, to warrant -stable patch?
> 
> > +++ b/net/netfilter/nft_cmp.c
> > @@ -79,7 +79,8 @@ static int nft_cmp_init(const struct nft_ctx *ctx, const struct nft_expr *expr,
> >  
> >  	err = nft_data_init(NULL, &priv->data, sizeof(priv->data), &desc,
> >  			    tb[NFTA_CMP_DATA]);
> > -	BUG_ON(err < 0);
> > +	if (err < 0)
> > +		return err;
> >  
> >  	priv->sreg = nft_parse_register(tb[NFTA_CMP_SREG]);
> >  	err = nft_validate_register_load(priv->sreg, desc.len);
> > @@ -129,7 +130,8 @@ static int nft_cmp_fast_init(const struct nft_ctx *ctx,
> >  
> >  	err = nft_data_init(NULL, &data, sizeof(data), &desc,
> >  			    tb[NFTA_CMP_DATA]);
> > -	BUG_ON(err < 0);
> > +	if (err < 0)
> > +		return err;
> >  
> >  	priv->sreg = nft_parse_register(tb[NFTA_CMP_SREG]);
> >  	err = nft_validate_register_load(priv->sreg, desc.len);
> 
> This goes from "kill kernel with backtrace" to "silently return
> failure". Should WARN_ON() be preserved here?

if this can be triggered, then the people running with panic-on-warn
would reboot.  It's best to handle it properly here.  And it isn't
"silent", the error is returned.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 241/422] net: socionext: Fix two sleep-in-atomic-context bugs in ave_rxfifo_reset()
  2019-11-21 20:21   ` Pavel Machek
@ 2019-11-21 20:26     ` Greg Kroah-Hartman
  0 siblings, 0 replies; 478+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-21 20:26 UTC (permalink / raw)
  To: Pavel Machek
  Cc: linux-kernel, stable, Jia-Ju Bai, David S. Miller, Sasha Levin

On Thu, Nov 21, 2019 at 09:21:40PM +0100, Pavel Machek wrote:
> Hi!
> 
> > [ Upstream commit 0020f5c807ef67954d9210eea0ba17a6134cdf7d ]
> > 
> > The driver may sleep with holding a spinlock.
> > The function call paths (from bottom to top) in Linux-4.17 are:
> > 
> > [FUNC] usleep_range
> > drivers/net/ethernet/socionext/sni_ave.c, 892:
> > 	usleep_range in ave_rxfifo_reset
> > drivers/net/ethernet/socionext/sni_ave.c, 932:
> > 	ave_rxfifo_reset in ave_irq_handler
> > 
> > [FUNC] usleep_range
> > drivers/net/ethernet/socionext/sni_ave.c, 888:
> > 	usleep_range in ave_rxfifo_reset
> > drivers/net/ethernet/socionext/sni_ave.c, 932:
> > 	ave_rxfifo_reset in ave_irq_handler
> > 
> > To fix these bugs, usleep_range() is replaced with udelay().
> 
> I don't believe this is serious enough for -stable, but more
> importantly:

Sleeping in a spinlock is not allowed, yes, this is a bugfix worth of
stable, how could it not?

> > +++ b/drivers/net/ethernet/socionext/sni_ave.c
> > @@ -906,11 +906,11 @@ static void ave_rxfifo_reset(struct net_device *ndev)
> >  
> >  	/* assert reset */
> >  	writel(AVE_GRR_RXFFR, priv->base + AVE_GRR);
> > -	usleep_range(40, 50);
> > +	udelay(50);
> >  
> >  	/* negate reset */
> >  	writel(0, priv->base + AVE_GRR);
> > -	usleep_range(10, 20);
> > +	udelay(20);
> >
> 
> udelay(40) / udelay(10) should be enough here.

Maybe not, this way is safe, right?

greg k-h

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 233/422] netfilter: nf_tables: avoid BUG_ON usage
  2019-11-21 20:16   ` Pavel Machek
  2019-11-21 20:25     ` Greg Kroah-Hartman
@ 2019-11-21 20:35     ` Florian Westphal
  1 sibling, 0 replies; 478+ messages in thread
From: Florian Westphal @ 2019-11-21 20:35 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Greg Kroah-Hartman, linux-kernel, stable, Florian Westphal,
	Pablo Neira Ayuso, Sasha Levin

Pavel Machek <pavel@denx.de> wrote:
> This goes from "kill kernel with backtrace" to "silently return
> failure". Should WARN_ON() be preserved here?

No need.  The error would propagate back to userspace via nfnetlink.

So it would be 'running this command fails with error x' vs.
'running this command makes kernel crash'.

That being said, I did not observe this BUG from triggering, ever.
I only removed it because I did not see any reason for it.

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 063/422] ice: Prevent control queue operations during reset
  2019-11-20 21:48   ` Pavel Machek
@ 2019-11-21 23:52     ` Jeff Kirsher
  0 siblings, 0 replies; 478+ messages in thread
From: Jeff Kirsher @ 2019-11-21 23:52 UTC (permalink / raw)
  To: Pavel Machek, Greg Kroah-Hartman
  Cc: linux-kernel, stable, Anirudh Venkataramanan, Tony Brelinski,
	Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 2290 bytes --]

On Wed, 2019-11-20 at 22:48 +0100, Pavel Machek wrote:
> Hi!
> > [ Upstream commit fd2a981777d911b2e94cdec50779c85c58a0dec9 ]
> > 
> > Once reset is issued, the driver loses all control queue interfaces.
> > Exercising control queue operations during reset is incorrect and
> > may result in long timeouts.
> > 
> > This patch introduces a new field 'reset_ongoing' in the hw structure.
> > This is set to 1 by the core driver when it receives a reset interrupt.
> > ice_sq_send_cmd checks reset_ongoing before actually issuing the
> > control
> > queue operation. If a reset is in progress, it returns a soft error
> > code
> > (ICE_ERR_RESET_PENDING) to the caller. The caller may or may not have
> > to
> > take any action based on this return. Once the driver knows that the
> > reset is done, it has to set reset_ongoing back to 0. This will allow
> > control queue operations to be posted to the hardware again.
> > 
> > This "bail out" logic was specifically added to ice_sq_send_cmd (which
> > is pretty low level function) so that we have one solution in one place
> > that applies to all types of control queues.
> 
> I don't think this is suitable for stable. Would driver maintainers
> comment?

Actually this change is fine for stable.

> 
> > +			 *
> > +			 * As this is the start of the reset/rebuild cycle,
> > set
> > +			 * both to indicate that.
> > +			 */
> > +			hw->reset_ongoing = true;
> >  		}
> >  	}
> 
> This should be = 1, since variable is u8...

This variable is treated as a bool, and since bools vary depending on
architecture, Linus has stated that using a u8 would be more consistent
across the vary architectures.  So we have used u8's for variables treated
as bools.

In addition, there has been no issue assigning "true" or "false" to a u8.

> 
> Best regards,
> 									Pav
> el     	       
> 
> > +++ b/drivers/net/ethernet/intel/ice/ice_type.h
> > @@ -293,6 +293,7 @@ struct ice_hw {
> >  	u8 sw_entry_point_layer;
> >  
> >  	u8 evb_veb;		/* true for VEB, false for VEPA */
> > +	u8 reset_ongoing;	/* true if hw is in reset, false otherwise */
> >  	struct ice_bus_info bus;
> >  	struct ice_nvm_info nvm;
> >  	struct ice_hw_dev_caps dev_caps;	/* device capabilities */
> > -- 


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 079/422] i40e: use correct length for strncpy
  2019-11-21 10:35   ` Pavel Machek
  2019-11-21 15:34     ` Williams, Mitch A
@ 2019-11-21 23:53     ` Jeff Kirsher
  1 sibling, 0 replies; 478+ messages in thread
From: Jeff Kirsher @ 2019-11-21 23:53 UTC (permalink / raw)
  To: Pavel Machek, Greg Kroah-Hartman
  Cc: linux-kernel, stable, Mitch Williams, Andrew Bowers, Sasha Levin

[-- Attachment #1: Type: text/plain, Size: 1231 bytes --]

On Thu, 2019-11-21 at 11:35 +0100, Pavel Machek wrote:
> > From: Mitch Williams <mitch.a.williams@intel.com>
> > 
> > [ Upstream commit 7eb74ff891b4e94b8bac48f648a21e4b94ddee64 ]
> > 
> > Caught by GCC 8. When we provide a length for strncpy, we should not
> > include the terminating null. So we must tell it one less than the size
> > of the destination buffer.
> 
> > +++ b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
> > @@ -694,7 +694,8 @@ static long i40e_ptp_create_clock(struct i40e_pf
> *pf)
> >       if (!IS_ERR_OR_NULL(pf->ptp_clock))
> >               return 0;
> >  
> > -     strncpy(pf->ptp_caps.name, i40e_driver_name, sizeof(pf-
> >ptp_caps.name));
> > +     strncpy(pf->ptp_caps.name, i40e_driver_name,
> > +             sizeof(pf->ptp_caps.name) - 1);
> >       pf->ptp_caps.owner = THIS_MODULE;
> >       pf->ptp_caps.max_adj = 999999999;
> >       pf->ptp_caps.n_ext_ts = 0;
> 
> So... pf is allocated with kzalloc, which will provide the null
> termination... so the code is okay.
> 
> On the other hand, the = 0 below is unneeded by the same logic, so
> this is a bit confusing.

Thanks for the catch, we are putting together a follow-on patch to cleanup
up the unneeded code.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 478+ messages in thread

* Re: [PATCH 4.19 070/422] pinctrl: ingenic: Probe driver at subsys_initcall
  2019-11-21 10:17   ` Pavel Machek
@ 2019-11-22 18:25     ` Paul Cercueil
  0 siblings, 0 replies; 478+ messages in thread
From: Paul Cercueil @ 2019-11-22 18:25 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Greg Kroah-Hartman, linux-kernel, stable, Linus Walleij, Sasha Levin

Hi Pavel,


Le jeu., nov. 21, 2019 at 11:17, Pavel Machek <pavel@denx.de> a écrit :
> On Tue 2019-11-19 06:14:27, Greg Kroah-Hartman wrote:
>>  From: Paul Cercueil <paul@crapouillou.net>
>> 
>>  [ Upstream commit 556a36a71ed80e17ade49225b58513ea3c9e4558 ]
>> 
>>  Using postcore_initcall() makes the driver try to initialize way too
>>  early.
> 
> Does it fix concrete bug / would you say it is suitable for -stable?

When using postcore_initcall() it locks up early in the boot process, 
so it definitely fixes a bug. I think it locks up because standard 
(non-early) platform drivers can't be probed postcore (but they can be 
registered and probed later).

> 
>>  +++ b/drivers/pinctrl/pinctrl-ingenic.c
>>  @@ -847,4 +847,4 @@ static int __init 
>> ingenic_pinctrl_drv_register(void)
>>   {
>>   	return platform_driver_register(&ingenic_pinctrl_driver);
>>   }
>>  -postcore_initcall(ingenic_pinctrl_drv_register);
>>  +subsys_initcall(ingenic_pinctrl_drv_register);
> 
> There are other pinctrl drivers initialized very early, do they need
> fixing, too?

The other drivers call platform_driver_register(), not 
platform_driver_probe(), which means that they will probe at the same 
time as the other platform drivers.

The reason platform_driver_probe() is used in pinctrl-ingenic is that 
it allows the probe function and all the code attached to be marked 
__init.

Cheers,
-Paul



^ permalink raw reply	[flat|nested] 478+ messages in thread

end of thread, other threads:[~2019-11-22 18:25 UTC | newest]

Thread overview: 478+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-19  5:13 [PATCH 4.19 000/422] 4.19.85-stable review Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 001/422] KVM: x86: introduce is_pae_paging Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 002/422] MIPS: BCM63XX: fix switch core reset on BCM6368 Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 003/422] scsi: core: Handle drivers which set sg_tablesize to zero Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 004/422] ax88172a: fix information leak on short answers Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 005/422] ipmr: Fix skb headroom in ipmr_get_route() Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 006/422] net: gemini: add missed free_netdev Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 007/422] net: usb: qmi_wwan: add support for Foxconn T77W968 LTE modules Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 008/422] slip: Fix memory leak in slip_open error path Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 009/422] devlink: disallow reload operation during device cleanup Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 010/422] ALSA: usb-audio: Fix missing error check at mixer resolution test Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 011/422] ALSA: usb-audio: not submit urb for stopped endpoint Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 012/422] ALSA: usb-audio: Fix incorrect NULL check in create_yamaha_midi_quirk() Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 013/422] ALSA: usb-audio: Fix incorrect size check for processing/extension units Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 014/422] Btrfs: fix log context list corruption after rename exchange operation Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 015/422] Input: ff-memless - kill timer in destroy() Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 016/422] Input: synaptics-rmi4 - fix video buffer size Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 017/422] Input: synaptics-rmi4 - disable the relative position IRQ in the F12 driver Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 018/422] Input: synaptics-rmi4 - do not consume more data than we have (F11, F12) Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 019/422] Input: synaptics-rmi4 - clear IRQ enables for F54 Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 020/422] Input: synaptics-rmi4 - destroy F54 poller workqueue when removing Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 021/422] IB/hfi1: Ensure full Gen3 speed in a Gen4 system Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 022/422] IB/hfi1: Use a common pad buffer for 9B and 16B packets Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 023/422] i2c: acpi: Force bus speed to 400KHz if a Silead touchscreen is present Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 024/422] x86/quirks: Disable HPET on Intel Coffe Lake platforms Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 025/422] ecryptfs_lookup_interpose(): lower_dentry->d_inode is not stable Greg Kroah-Hartman
2019-11-19 22:00   ` Pavel Machek
2019-11-19  5:13 ` [PATCH 4.19 026/422] ecryptfs_lookup_interpose(): lower_dentry->d_parent is not stable either Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 027/422] net: ethernet: dwmac-sun8i: Use the correct function in exit path Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 028/422] iommu/vt-d: Fix QI_DEV_IOTLB_PFSID and QI_DEV_EIOTLB_PFSID macros Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 029/422] mm: mempolicy: fix the wrong return value and potential pages leak of mbind Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 030/422] mm: memcg: switch to css_tryget() in get_mem_cgroup_from_mm() Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 031/422] mm: hugetlb: switch to css_tryget() in hugetlb_cgroup_charge_cgroup() Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 032/422] mmc: sdhci-of-at91: fix quirk2 overwrite Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 033/422] iio: adc: max9611: explicitly cast gain_selectors Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 034/422] tee: optee: take DT status property into account Greg Kroah-Hartman
2019-11-20  2:18   ` Nobuhiro Iwamatsu
2019-11-21  6:54     ` Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 035/422] ath10k: fix kernel panic by moving pci flush after napi_disable Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 036/422] iio: dac: mcp4922: fix error handling in mcp4922_write_raw Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 037/422] clk: sunxi-ng: h6: fix PWM gate/reset offset Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 038/422] soundwire: Initialize completion for defer messages Greg Kroah-Hartman
2019-11-20 21:54   ` Pavel Machek
2019-11-20 22:52     ` Pierre-Louis Bossart
2019-11-19  5:13 ` [PATCH 4.19 039/422] soundwire: intel: Fix uninitialized adev deref Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 040/422] arm64: dts: allwinner: a64: Orange Pi Win: Fix SD card node Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 041/422] arm64: dts: allwinner: a64: Olinuxino: fix DRAM voltage Greg Kroah-Hartman
2019-11-19  5:13 ` [PATCH 4.19 042/422] arm64: dts: allwinner: a64: NanoPi-A64: Fix DCDC1 voltage Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 043/422] ALSA: pcm: signedness bug in snd_pcm_plug_alloc() Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 044/422] soc/tegra: pmc: Fix pad voltage configuration for Tegra186 Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 045/422] arm64: dts: tegra210-p2180: Correct sdmmc4 vqmmc-supply Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 046/422] y2038: make do_gettimeofday() and get_seconds() inline Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 047/422] ARM: dts: rcar: Correct SATA device sizes to 2 MiB Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 048/422] ARM: dts: at91/trivial: Fix USART1 definition for at91sam9g45 Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 049/422] rtc: sysfs: fix NULL check in rtc_add_groups() Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 050/422] rtc: rv8803: fix the rv8803 id in the OF table Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 051/422] remoteproc/davinci: Use %zx for formating size_t Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 052/422] extcon: cht-wc: Return from default case to avoid warnings Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 053/422] cfg80211: Avoid regulatory restore when COUNTRY_IE_IGNORE is set Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 054/422] ALSA: seq: Do error checks at creating system ports Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 055/422] ath10k: skip resetting rx filter for WCN3990 Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 056/422] ath9k: fix tx99 with monitor mode interface Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 057/422] wil6210: drop Rx multicast packets that are looped-back to STA Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 058/422] wil6210: set edma variables only for Talyn-MB devices Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 059/422] wil6210: prevent usage of tx ring 0 for eDMA Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 060/422] wil6210: fix invalid memory access for rx_buff_mgmt debugfs Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 061/422] ath10k: limit available channels via DT ieee80211-freq-limit Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 062/422] ice: Update request resource command to latest specification Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 063/422] ice: Prevent control queue operations during reset Greg Kroah-Hartman
2019-11-20 21:48   ` Pavel Machek
2019-11-21 23:52     ` Jeff Kirsher
2019-11-19  5:14 ` [PATCH 4.19 064/422] gfs2: Dont set GFS2_RDF_UPTODATE when the lvb is updated Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 065/422] ice: Fix and update driver version string Greg Kroah-Hartman
2019-11-20 21:59   ` Pavel Machek
2019-11-20 22:02     ` Jeff Kirsher
2019-11-21  6:42     ` Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 066/422] ASoC: dapm: Dont fail creating new DAPM control on NULL pinctrl Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 067/422] ASoC: dpcm: Properly initialise hw->rate_max Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 068/422] ASoC: meson: axg-fifo: report interrupt request failure Greg Kroah-Hartman
2019-11-21 10:14   ` Pavel Machek
2019-11-19  5:14 ` [PATCH 4.19 069/422] ASoC: AMD: Change MCLK to 48Mhz Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 070/422] pinctrl: ingenic: Probe driver at subsys_initcall Greg Kroah-Hartman
2019-11-21 10:17   ` Pavel Machek
2019-11-22 18:25     ` Paul Cercueil
2019-11-19  5:14 ` [PATCH 4.19 071/422] MIPS: BCM47XX: Enable USB power on Netgear WNDR3400v3 Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 072/422] ARM: dts: exynos: Use i2c-gpio for HDMI-DDC on Arndale Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 073/422] ARM: dts: exynos: Fix HDMI-HPD line handling " Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 074/422] ARM: dts: exynos: Fix sound in Snow-rev5 Chromebook Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 075/422] liquidio: fix race condition in instruction completion processing Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 076/422] arm64: dts: stratix10: i2c clock running out of spec Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 077/422] ARM: dts: exynos: Fix regulators configuration on Peach Pi/Pit Chromebooks Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 078/422] i40evf: Validate the number of queues a PF sends Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 079/422] i40e: use correct length for strncpy Greg Kroah-Hartman
2019-11-21 10:35   ` Pavel Machek
2019-11-21 15:34     ` Williams, Mitch A
2019-11-21 23:53     ` Jeff Kirsher
2019-11-19  5:14 ` [PATCH 4.19 080/422] i40evf: set IFF_UNICAST_FLT flag for the VF Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 081/422] i40e: Check and correct speed values for link on open Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 082/422] i40evf: Dont enable vlan stripping when rx offload is turned on Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 083/422] i40e: hold the rtnl lock on clearing interrupt scheme Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 084/422] i40evf: cancel workqueue sync for adminq when a VF is removed Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 085/422] i40e: Prevent deleting MAC address from VF when set by PF Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 086/422] IB/rxe: avoid back-to-back retries Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 087/422] IB/rxe: fixes for rdma read retry Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 088/422] iwlwifi: drop packets with bad status in CD Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 089/422] iwlwifi: dont WARN on trying to dump dead firmware Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 090/422] iwlwifi: mvm: avoid sending too many BARs Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 091/422] media: vicodec: fix out-of-range values when decoding Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 092/422] media: i2c: Fix pm_runtime_get_if_in_use() usage in sensor drivers Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 093/422] media: ov772x: Disable clk on error path Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 094/422] ARM: dts: pxa: fix the rtc controller Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 095/422] ARM: dts: pxa: fix power i2c base address Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 096/422] rtl8187: Fix warning generated when strncpy() destination length matches the sixe argument Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 097/422] mwifiex: do no submit URB in suspended state Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 098/422] mwifex: free rx_cmd skb " Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 099/422] brcmfmac: fix wrong strnchr usage Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 100/422] mt76: Fix comparisons with invalid hardware key index Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 101/422] soc: imx: gpc: fix PDN delay Greg Kroah-Hartman
2019-11-19  5:14 ` [PATCH 4.19 102/422] ASoC: rsnd: ssi: Fix issue in dma data address assignment Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 103/422] net: hns3: Fix for multicast failure Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 104/422] net: hns3: Fix error of checking used vlan id Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 105/422] net: hns3: Fix for loopback selftest failed problem Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 106/422] net: hns3: Change the dst mac addr of loopback packet Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 107/422] net/mlx5: Fix atomic_mode enum values Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 108/422] net: phy: mscc: read vsc8531,vddmac as an u32 Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 109/422] net: phy: mscc: read vsc8531, edge-slowdown " Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 110/422] ARM: dts: meson8: fix the clock controller register size Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 111/422] ARM: dts: meson8b: " Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 112/422] mtd: rawnand: marvell: use regmap_update_bits() for syscon access Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 113/422] mtd: rawnand: fsl_ifc: check result of SRAM initialization Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 114/422] mtd: rawnand: fsl_ifc: fixup SRAM init for newer ctrl versions Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 115/422] mtd: rawnand: qcom: dont include dma-direct.h Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 116/422] IB/mlx5: Change TX affinity assignment in RoCE LAG mode Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 117/422] qxl: fix null-pointer crash during suspend Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 118/422] mac80211: fix saving a few HE values Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 119/422] cfg80211: validate wmm rule when setting Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 120/422] f2fs: avoid wrong decrypted data from disk Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 121/422] net: lan78xx: Bail out if lan78xx_get_endpoints fails Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 122/422] rtnetlink: move type calculation out of loop Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 123/422] ASoC: sgtl5000: avoid division by zero if lo_vag is zero Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 124/422] ath10k: avoid possible memory access violation Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 125/422] ARM: dts: exynos: Disable pull control for S5M8767 PMIC Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 126/422] ath10k: wmi: disable softirqs while calling ieee80211_rx Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 127/422] i2c: mediatek: Use DMA safe buffers for i2c transactions Greg Kroah-Hartman
2019-11-20  1:44   ` Nobuhiro Iwamatsu
2019-11-21  6:53     ` Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 128/422] IB/mlx5: Dont hold spin lock while checking device state Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 129/422] IB/ipoib: Ensure that MTU isnt less than minimum permitted Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 130/422] RDMA/core: Rate limit MAD error messages Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 131/422] RDMA/core: Follow correct unregister order between sysfs and cgroup Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 132/422] mips: txx9: fix iounmap related issue Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 133/422] udf: Fix crash during mount Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 134/422] ASoC: dapm: Avoid uninitialised variable warning Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 135/422] ASoC: Intel: hdac_hdmi: Limit sampling rates at dai creation Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 136/422] ata: Disable AHCI ALPM feature for Ampere Computing eMAG SATA Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 137/422] of: make PowerMac cache node search conditional on CONFIG_PPC_PMAC Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 138/422] ARM: dts: omap3-gta04: give spi_lcd node a label so that we can overwrite in other DTS files Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 139/422] ARM: dts: omap3-gta04: fixes for tvout / venc Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 140/422] ARM: dts: omap3-gta04: tvout: enable as display1 alias Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 141/422] ARM: dts: omap3-gta04: fix touchscreen tsc2007 Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 142/422] ARM: dts: omap3-gta04: make NAND partitions compatible with recent U-Boot Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 143/422] ARM: dts: omap3-gta04: keep vpll2 always on Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 144/422] f2fs: submit bio after shutdown Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 145/422] failover: Fix error return code in net_failover_create Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 146/422] sched/debug: Explicitly cast sched_feat() to bool Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 147/422] sched/debug: Use symbolic names for task state constants Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 148/422] firmware: arm_scmi: use strlcpy to ensure NULL-terminated strings Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 149/422] arm64: dts: rockchip: Fix VCC5V0_HOST_EN on rk3399-sapphire Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 150/422] tty/serial: atmel: Change the driver to work under at91-usart MFD Greg Kroah-Hartman
2019-11-19 12:01   ` Richard Genoud
2019-11-19 13:17     ` Richard Genoud
2019-11-19 15:45       ` Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 151/422] ARM: dts: exynos: Disable pull control for PMIC IRQ line on Artik5 board Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 152/422] usb: mtu3: disable vbus rise/fall interrupts of ltssm Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 153/422] dmaengine: dma-jz4780: Dont depend on MACH_JZ4780 Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 154/422] dmaengine: dma-jz4780: Further residue status fix Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 155/422] EDAC, sb_edac: Return early on ADDRV bit and address type test Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 156/422] rtc: mt6397: fix possible race condition Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 157/422] rtc: pl030: " Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 158/422] ath9k: add back support for using active monitor interfaces for tx99 Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 159/422] dmaengine: at_xdmac: remove a stray bottom half unlock Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 160/422] RDMA/hns: Fix an error code in hns_roce_v2_init_eq_table() Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 161/422] IB/hfi1: Missing return value in error path for user sdma Greg Kroah-Hartman
2019-11-19  5:15 ` [PATCH 4.19 162/422] signal: Always ignore SIGKILL and SIGSTOP sent to the global init Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 163/422] signal: Properly deliver SIGILL from uprobes Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 164/422] signal: Properly deliver SIGSEGV from x86 uprobes Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 165/422] f2fs: fix memory leak of write_io in fill_super() Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 166/422] f2fs: fix memory leak of percpu counter " Greg Kroah-Hartman
2019-11-21 13:39   ` Pavel Machek
2019-11-19  5:16 ` [PATCH 4.19 167/422] f2fs: fix setattr project check upon fssetxattr ioctl Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 168/422] scsi: qla2xxx: Use correct qpair for ABTS/CMD Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 169/422] scsi: qla2xxx: Fix iIDMA error Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 170/422] scsi: qla2xxx: Defer chip reset until target mode is enabled Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 171/422] scsi: qla2xxx: Terminate Plogi/PRLI if WWN is 0 Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 172/422] scsi: qla2xxx: Fix deadlock between ATIO and HW lock Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 173/422] scsi: qla2xxx: Increase abort timeout value Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 174/422] scsi: qla2xxx: Check for Register disconnect Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 175/422] scsi: qla2xxx: Fix port speed display on chip reset Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 176/422] scsi: qla2xxx: Fix dropped srb resource Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 177/422] scsi: qla2xxx: Fix duplicate switchs Nport ID entries Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 178/422] scsi: lpfc: Fix GFT_ID and PRLI logic for RSCN Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 179/422] scsi: lpfc: Correct invalid EQ doorbell write on if_type=6 Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 180/422] scsi: lpfc: Fix errors in log messages Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 181/422] scsi: sym53c8xx: fix NULL pointer dereference panic in sym_int_sir() Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 182/422] ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" is set Greg Kroah-Hartman
2019-11-19 20:19   ` Pavel Machek
2019-11-19  5:16 ` [PATCH 4.19 183/422] scsi: pm80xx: Corrected dma_unmap_sg() parameter Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 184/422] scsi: pm80xx: Fixed system hang issue during kexec boot Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 185/422] kprobes: Dont call BUG_ON() if there is a kprobe in use on free list Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 186/422] net: aquantia: fix hw_atl_utils_fw_upload_dwords Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 187/422] Drivers: hv: vmbus: Fix synic per-cpu context initialization Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 188/422] nvmem: core: return error code instead of NULL from nvmem_device_get Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 189/422] media: dt-bindings: adv748x: Fix decimal unit addresses Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 190/422] ALSA: hda: Fix implicit definition of pci_iomap() on SH Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 191/422] media: fix: media: pci: meye: validate offset to avoid arbitrary access Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 192/422] media: dvb: fix compat ioctl translation Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 193/422] net: bcmgenet: Fix speed selection for reverse MII Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 194/422] arm64: dts: meson: libretech: update board model Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 195/422] arm64: dts: meson-axg: use the proper compatible for ethmac Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 196/422] ALSA: intel8x0m: Register irq handler after register initializations Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 197/422] arm64: dts: renesas: salvator-common: adv748x: Override secondary addresses Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 198/422] arm64: dts: renesas: r8a77965: Attach the SYS-DMAC to the IPMMU Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 199/422] arm64: dts: renesas: r8a77965: Fix HS-USB compatible Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 200/422] arm64: dts: renesas: r8a77965: Fix clock/reset for usb2_phy1 Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 201/422] pinctrl: at91-pio4: fix has_config check in atmel_pctl_dt_subnode_to_map() Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 202/422] llc: avoid blocking in llc_sap_close() Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 203/422] ARM: dts: qcom: ipq4019: fix cpu0s qcom,saw2 reg value Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 204/422] soc: qcom: geni: Dont ignore clk_round_rate() errors in geni_se_clk_tbl_get() Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 205/422] soc: qcom: geni: geni_se_clk_freq_match() should always accept multiples Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 206/422] soc: qcom: wcnss_ctrl: Avoid string overflow Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 207/422] soc: qcom: apr: " Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 208/422] drivers: qcom: rpmh-rsc: clear wait_for_compl after use Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 209/422] arm64: dts: broadcom: Fix I2C and SPI bus warnings Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 210/422] ARM: dts: bcm: Fix " Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 211/422] ARM: dts: aspeed: Fix I2C " Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 212/422] powerpc/vdso: Correct call frame information Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 213/422] ARM: dts: socfpga: Fix I2C bus unit-address error Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 214/422] ARM: dts: sunxi: Fix I2C bus warnings Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 215/422] pinctrl: at91: dont use the same irqchip with multiple gpiochips Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 216/422] ARM: dts: sun9i: Fix I2C bus warnings Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 217/422] android: binder: no outgoing transaction when thread todo has transaction Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 218/422] cxgb4: Fix endianness issue in t4_fwcache() Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 219/422] arm64: fix for bad_mode() handler to always result in panic Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 220/422] block, bfq: inject other-queue I/O into seeky idle queues on NCQ flash Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 221/422] blok, bfq: do not plug I/O if all queues are weight-raised Greg Kroah-Hartman
2019-11-19  5:16 ` [PATCH 4.19 222/422] arm64: dts: meson: Fix erroneous SPI bus warnings Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 223/422] power: supply: ab8500_fg: silence uninitialized variable warnings Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 224/422] power: reset: at91-poweroff: do not procede if at91_shdwc is allocated Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 225/422] power: supply: max8998-charger: Fix platform data retrieval Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 226/422] component: fix loop condition to call unbind() if bind() fails Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 227/422] kernfs: Fix range checks in kernfs_get_target_path Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 228/422] ip_gre: fix parsing gre header in ipgre_err Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 229/422] scsi: ufshcd: Fix NULL pointer dereference for in ufshcd_init Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 230/422] ARM: dts: rockchip: Fix erroneous SPI bus dtc warnings on rk3036 Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 231/422] arm64: dts: rockchip: Fix I2C bus unit-address error on rk3399-puma-haikou Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 232/422] ACPI / LPSS: Exclude I2C busses shared with PUNIT from pmc_atom_d3_mask Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 233/422] netfilter: nf_tables: avoid BUG_ON usage Greg Kroah-Hartman
2019-11-21 20:16   ` Pavel Machek
2019-11-21 20:25     ` Greg Kroah-Hartman
2019-11-21 20:35     ` Florian Westphal
2019-11-19  5:17 ` [PATCH 4.19 234/422] ath9k: Fix a locking bug in ath9k_add_interface() Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 235/422] s390/qeth: uninstall IRQ handler on device removal Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 236/422] s390/qeth: invoke softirqs after napi_schedule() Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 237/422] media: vsp1: Fix vsp1_regs.h license header Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 238/422] media: vsp1: Fix YCbCr planar formats pitch calculation Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 239/422] media: ov2680: dont register the v4l2 subdevice before checking chip ID Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 240/422] PCI/ACPI: Correct error message for ASPM disabling Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 241/422] net: socionext: Fix two sleep-in-atomic-context bugs in ave_rxfifo_reset() Greg Kroah-Hartman
2019-11-21 20:21   ` Pavel Machek
2019-11-21 20:26     ` Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 242/422] PCI: mediatek: Fix unchecked return value Greg Kroah-Hartman
2019-11-19 21:58   ` Pavel Machek
2019-11-19  5:17 ` [PATCH 4.19 243/422] ARM: dts: xilinx: Fix I2C and SPI bus warnings Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 244/422] serial: uartps: Fix suspend functionality Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 245/422] serial: samsung: Enable baud clock for UART reset procedure in resume Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 246/422] serial: mxs-auart: Fix potential infinite loop Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 247/422] tty: serial: qcom_geni_serial: Fix serial when not used as console Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 248/422] arm64: dts: ti: k3-am65: Change #address-cells and #size-cells of interconnect to 2 Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 249/422] samples/bpf: fix a compilation failure Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 250/422] spi/bcm63xx-hsspi: keep pll clk enabled Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 251/422] spi: mediatek: Dont modify spi_transfer when transfer Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 252/422] ASoC: rt5682: Fix the boost volume at the begining of playback Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 253/422] ipmi_si_pci: fix NULL device in ipmi_si error message Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 254/422] ipmi_si: fix potential integer overflow on large shift Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 255/422] ipmi:dmi: Ignore IPMI SMBIOS entries with a zero base address Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 256/422] ipmi: fix return value of ipmi_set_my_LUN Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 257/422] net: hns3: fix return type of ndo_start_xmit function Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 258/422] net: cavium: " Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 259/422] net: ibm: " Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 260/422] powerpc/iommu: Avoid derefence before pointer check Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 261/422] selftests/powerpc: Do not fail with reschedule Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 262/422] powerpc/64s/hash: Fix stab_rr off by one initialization Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 263/422] powerpc/pseries/memory-hotplug: Only update DT once per memory DLPAR request Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 264/422] powerpc/pseries: Disable CPU hotplug across migrations Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 265/422] powerpc: Fix duplicate const clang warning in user access code Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 266/422] RDMA/i40iw: Fix incorrect iterator type Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 267/422] ARM: dts: atmel: Fix I2C and SPI bus warnings Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 268/422] OPP: Protect dev_list with opp_table lock Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 269/422] of/unittest: Fix I2C bus unit-address error Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 270/422] libfdt: Ensure INT_MAX is defined in libfdt_env.h Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 271/422] power: supply: twl4030_charger: fix charging current out-of-bounds Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 272/422] power: supply: twl4030_charger: disable eoc interrupt on linear charge Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 273/422] net: mvpp2: fix the number of queues per cpu for PPv2.2 Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 274/422] net: marvell: fix return type of ndo_start_xmit function Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 275/422] net: toshiba: " Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 276/422] net: xilinx: " Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 277/422] net: broadcom: " Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 278/422] net: amd: " Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 279/422] net: sun: " Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 280/422] net: hns3: Fix for setting speed for phy failed problem Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 281/422] net: hns3: Fix cmdq registers initialization issue for vf Greg Kroah-Hartman
2019-11-19  5:17 ` [PATCH 4.19 282/422] net: hns3: Clear client pointer when initialize client failed or unintialize finished Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 283/422] net: hns3: Fix client initialize state issue when roce client initialize failed Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 284/422] net: hns3: Fix parameter type for q_id in hclge_tm_q_to_qs_map_cfg() Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 285/422] nfp: provide a better warning when ring allocation fails Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 286/422] usb: chipidea: imx: enable OTG overcurrent in case USB subsystem is already started Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 287/422] usb: chipidea: Fix otg event handler Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 288/422] usb: usbtmc: Fix ioctl USBTMC_IOCTL_ABORT_BULK_OUT Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 289/422] s390/zcrypt: enable AP bus scan without a valid default domain Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 290/422] s390/vdso: avoid 64-bit vdso mapping for compat tasks Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 291/422] s390/vdso: correct CFI annotations of vDSO functions Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 292/422] brcmfmac: increase buffer for obtaining firmware capabilities Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 293/422] brcmsmac: Use kvmalloc() for ucode allocations Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 294/422] mlxsw: spectrum: Init shaper for TCs 8..15 Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 295/422] PCI: portdrv: Initialize service drivers directly Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 296/422] ARM: dts: am335x-evm: fix number of cpsw Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 297/422] ARM: dts: ti: Fix SPI and I2C bus warnings Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 298/422] f2fs: avoid infinite loop in f2fs_alloc_nid Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 299/422] f2fs: fix to recover inodes uid/gid during POR Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 300/422] ARM: dts: ux500: Correct SCU unit address Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 301/422] ARM: dts: ux500: Fix LCDA clock line muxing Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 302/422] ARM: dts: ste: Fix SPI controller node names Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 303/422] spi: pic32: Use proper enum in dmaengine_prep_slave_rg Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 304/422] crypto: chacha20 - Fix chacha20_block() keystream alignment (again) Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 305/422] cpufeature: avoid warning when compiling with clang Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 306/422] crypto: arm/crc32 - avoid warning when compiling with Clang Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 307/422] ARM: dts: marvell: Fix SPI and I2C bus warnings Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 308/422] x86/mce-inject: Reset injection struct after injection Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 309/422] ARM: dts: stm32: enable display on stm32mp157c-ev1 board Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 310/422] ARM: dts: clearfog: fix sdhci supply property name Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 311/422] ARM: dts: stm32: Fix SPI controller node names Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 312/422] bnx2x: Ignore bandwidth attention in single function mode Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 313/422] PCI/AER: Take reference on error devices Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 314/422] PCI/AER: Dont read upstream ports below fatal errors Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 315/422] PCI/ERR: Use slot reset if available Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 316/422] samples/bpf: fix compilation failure Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 317/422] net: phy: mdio-bcm-unimac: Allow configuring MDIO clock divider Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 318/422] net: micrel: fix return type of ndo_start_xmit function Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 319/422] net: freescale: " Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 320/422] x86/CPU: Use correct macros for Cyrix calls Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 321/422] x86/CPU: Change query logic so CPUID is enabled before testing Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 322/422] EDAC: Correct DIMM capacity unit symbol Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 323/422] MIPS: kexec: Relax memory restriction Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 324/422] arm64: dts: rockchip: Fix microSD in rk3399 sapphire board Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 325/422] mlxsw: Make MLXSW_SP1_FWREV_MINOR a hard requirement Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 326/422] media: imx: work around false-positive warning, again Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 327/422] media: pci: ivtv: Fix a sleep-in-atomic-context bug in ivtv_yuv_init() Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 328/422] media: au0828: Fix incorrect error messages Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 329/422] media: davinci: Fix implicit enum conversion warning Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 330/422] ARM: dts: rockchip: explicitly set vcc_sd0 pin to gpio on rk3188-radxarock Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 331/422] usb: gadget: uvc: configfs: Drop leaked references to config items Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 332/422] usb: gadget: uvc: configfs: Prevent format changes after linking header Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 333/422] usb: gadget: uvc: configfs: Sort frame intervals upon writing Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 334/422] ARM: dts: exynos: Correct audio subsystem parent clock on Peach Chromebooks Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 335/422] i2c: aspeed: fix invalid clock parameters for very large divisors Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 336/422] gpiolib: Fix gpio_direction_* for single direction GPIOs Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 337/422] ARM: at91: pm: call put_device instead of of_node_put in at91_pm_config_ws Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 338/422] phy: brcm-sata: allow PHY_BRCM_SATA driver to be built for DSL SoCs Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 339/422] phy: renesas: rcar-gen3-usb2: fix vbus_ctrl for role sysfs Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 340/422] phy: phy-twl4030-usb: fix denied runtime access Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 341/422] ARM: dts: imx6ull: update vdd_soc voltage for 900MHz operating point Greg Kroah-Hartman
2019-11-19  5:18 ` [PATCH 4.19 342/422] usb: gadget: uvc: Factor out video USB request queueing Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 343/422] usb: gadget: uvc: Only halt video streaming endpoint in bulk mode Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 344/422] coresight: Use ERR_CAST instead of ERR_PTR Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 345/422] coresight: Fix handling of sinks Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 346/422] coresight: perf: Fix per cpu path management Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 347/422] coresight: perf: Disable trace path upon source error Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 348/422] coresight: tmc-etr: Handle driver mode specific ETR buffers Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 349/422] coresight: etm4x: Configure EL2 exception level when kernel is running in HYP Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 350/422] coresight: tmc: Fix byte-address alignment for RRP Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 351/422] coresight: dynamic-replicator: Handle multiple connections Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 352/422] slimbus: ngd: register ngd driver only once Greg Kroah-Hartman
2019-11-20 12:31   ` Pavel Machek
2019-11-19  5:19 ` [PATCH 4.19 353/422] slimbus: ngd: return proper error code instead of zero Greg Kroah-Hartman
2019-11-20 12:36   ` Pavel Machek
2019-11-19  5:19 ` [PATCH 4.19 354/422] silmbus: ngd: register controller after power up Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 355/422] misc: kgdbts: Fix restrict error Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 356/422] misc: genwqe: should return proper error value Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 357/422] vmbus: keep pointer to ring buffer page Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 358/422] vfio/pci: Fix potential memory leak in vfio_msi_cap_len Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 359/422] vfio/pci: Mask buggy SR-IOV VF INTx support Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 360/422] iw_cxgb4: Use proper enumerated type in c4iw_bar2_addrs Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 361/422] scsi: libsas: always unregister the old device if going to discover new Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 362/422] f2fs: fix remount problem of option io_bits Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 363/422] phy: lantiq: Fix compile warning Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 364/422] ARM: dts: meson8b: odroidc1: enable the SAR ADC Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 365/422] arm64: dts: fsl: Fix I2C and SPI bus warnings Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 366/422] ARM: dts: imx51-zii-rdu1: Fix the rtc compatible string Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 367/422] arm64: tegra: I2C on Tegra194 is not compatible with Tegra114 Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 368/422] ARM: dts: tegra30: fix xcvr-setup-use-fuses Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 369/422] ARM: dts: tegra20: restore address order Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 370/422] ARM: tegra: apalis_t30: fix mmc1 cmd pull-up Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 371/422] ARM: tegra: apalis_t30: fix mcp2515 can controller interrupt polarity Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 372/422] ARM: tegra: colibri_t30: " Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 373/422] ARM: dts: paz00: fix wakeup gpio keycode Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 374/422] net: smsc: fix return type of ndo_start_xmit function Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 375/422] net: faraday: " Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 376/422] PCI/ERR: Run error recovery callbacks for all affected devices Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 377/422] f2fs: update i_size after DIO completion Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 378/422] f2fs: fix to recover inodes project id during POR Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 379/422] f2fs: mark inode dirty explicitly in recover_inode() Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 380/422] RDMA: Fix dependencies for rdma_user_mmap_io Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 381/422] EDAC: Raise the maximum number of memory controllers Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 382/422] ARM: dts: realview: Fix SPI controller node names Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 383/422] firmware: dell_rbu: Make payload memory uncachable Greg Kroah-Hartman
2019-11-20 13:28   ` Pavel Machek
2019-11-19  5:19 ` [PATCH 4.19 384/422] Bluetooth: hci_serdev: clear HCI_UART_PROTO_READY to avoid closing proto races Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 385/422] Bluetooth: L2CAP: Detect if remote is not able to use the whole MPS Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 386/422] Bluetooth: btrsi: fix bt tx timeout issue Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 387/422] x86/hyperv: Suppress "PCI: Fatal: No config space access function found" Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 388/422] crypto: s5p-sss: Fix race in error handling Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 389/422] crypto: s5p-sss: Fix Fix argument list alignment Greg Kroah-Hartman
2019-11-20 13:33   ` Pavel Machek
2019-11-19  5:19 ` [PATCH 4.19 390/422] crypto: fix a memory leak in rsa-kcs1pads encryption mode Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 391/422] iwlwifi: dbg: dont crash if the firmware crashes in the middle of a debug dump Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 392/422] iwlwifi: fix non_shared_ant for 22000 devices Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 393/422] iwlwifi: pcie: read correct prph address for newer devices Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 394/422] iwlwifi: api: annotate compressed BA notif array sizes Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 395/422] iwlwifi: pcie: gen2: build A-MSDU only for GSO Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 396/422] iwlwifi: pcie: fit reclaim msg to MAX_MSG_LEN Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 397/422] iwlwifi: mvm: use correct FIFO length Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 398/422] iwlwifi: mvm: Allow TKIP for AP mode Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 399/422] scsi: NCR5380: Clear all unissued commands on host reset Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 400/422] scsi: NCR5380: Have NCR5380_select() return a bool Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 401/422] scsi: NCR5380: Withhold disconnect privilege for REQUEST SENSE Greg Kroah-Hartman
2019-11-19  5:19 ` [PATCH 4.19 402/422] scsi: NCR5380: Use DRIVER_SENSE to indicate valid sense data Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 403/422] scsi: NCR5380: Check for invalid reselection target Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 404/422] scsi: NCR5380: Dont clear busy flag when abort fails Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 405/422] scsi: NCR5380: Dont call dsprintk() following reselection interrupt Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 406/422] scsi: NCR5380: Handle BUS FREE during reselection Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 407/422] scsi: NCR5380: Check for bus reset Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 408/422] arm64: dts: amd: Fix SPI bus warnings Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 409/422] arm64: dts: lg: Fix SPI controller node names Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 410/422] ARM: dts: lpc32xx: " Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 411/422] rtc: isl1208: avoid possible sysfs race Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 412/422] rtc: tx4939: fixup nvmem name and register size Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 413/422] rtc: armada38x: fix possible race condition Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 414/422] netfilter: masquerade: dont flush all conntracks if only one address deleted on device Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 415/422] usb: xhci-mtk: fix ISOC error when interval is zero Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 416/422] usb: usbtmc: uninitialized symbol actual in usbtmc_ioctl_clear Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 417/422] fuse: use READ_ONCE on congestion_threshold and max_background Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 418/422] IB/iser: Fix possible NULL deref at iser_inv_desc() Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 419/422] media: ov2680: fix null dereference at power on Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 420/422] s390/vdso: correct vdso mapping for compat tasks Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 421/422] net: phy: mdio-bcm-unimac: mark PM functions as __maybe_unused Greg Kroah-Hartman
2019-11-19  5:20 ` [PATCH 4.19 422/422] memfd: Use radix_tree_deref_slot_protected to avoid the warning Greg Kroah-Hartman
2019-11-19  8:54 ` [PATCH 4.19 000/422] 4.19.85-stable review Chris Paterson
2019-11-19 12:29   ` Greg Kroah-Hartman
2019-11-19 14:44     ` Chris Paterson
2019-11-19 15:48       ` Greg Kroah-Hartman
2019-11-19 16:38         ` Chris Paterson
2019-11-19 16:52           ` Greg Kroah-Hartman
2019-11-19 18:00             ` Guenter Roeck
2019-11-19 18:16               ` Greg Kroah-Hartman
2019-11-19 20:00                 ` Chris Paterson
2019-11-20  5:58                   ` Greg Kroah-Hartman
2019-11-20  4:57                 ` Naresh Kamboju
2019-11-19 16:46     ` Guenter Roeck
2019-11-19 17:02       ` Greg Kroah-Hartman
2019-11-19 17:08         ` Greg Kroah-Hartman
2019-11-19  9:18 ` Jon Hunter
2019-11-19 12:24   ` Greg Kroah-Hartman
2019-11-19 12:30     ` Greg Kroah-Hartman
2019-11-19 15:07       ` Jon Hunter
2019-11-19 15:48         ` Greg Kroah-Hartman
2019-11-19 12:02 ` kernelci.org bot
2019-11-19 20:35 ` Guenter Roeck
2019-11-20  5:59   ` Greg Kroah-Hartman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).