Skip to contentSkip to conversation

Linux 4.20.13

DISCUSSION Greg KH 1 participant 2 messages Feb 27, 2019 Stable branch

lore
Share & tools
lore

Greg KH

author maintainer
#0 lore raw

I'm announcing the release of the 4.20.13 kernel.

All users of the 4.20 kernel series must upgrade.

The updated 4.20.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.20.y
and can be browsed at the normal kernel.org git web browser:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

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

 Makefile                                                            |    2 
 arch/arc/include/asm/cache.h                                        |   11 
 arch/arc/kernel/head.S                                              |   14 
 arch/arc/kernel/setup.c                                             |   87 
 arch/arm/probes/kprobes/opt-arm.c                                   |    2 
 arch/mips/configs/ath79_defconfig                                   |    1 
 arch/mips/jazz/jazzdma.c                                            |    5 
 arch/mips/net/ebpf_jit.c                                            |    9 
 arch/parisc/kernel/ptrace.c                                         |   29 
 arch/powerpc/kernel/head_8xx.S                                      |    3 
 arch/s390/kvm/vsie.c                                                |    2 
 arch/x86/include/asm/kvm_host.h                                     |    2 
 arch/x86/kvm/cpuid.c                                                |    4 
 arch/x86/kvm/mmu.c                                                  |   18 
 arch/x86/xen/enlighten_pv.c                                         |    5 
 drivers/acpi/bus.c                                                  |   24 
 drivers/acpi/nfit/core.c                                            |    6 
 drivers/atm/he.c                                                    |    2 
 drivers/clk/at91/at91sam9x5.c                                       |    5 
 drivers/clk/at91/sama5d2.c                                          |    4 
 drivers/clk/at91/sama5d4.c                                          |    2 
 drivers/cpufreq/scmi-cpufreq.c                                      |    2 
 drivers/gpio/gpio-mt7621.c                                          |   20 
 drivers/gpio/gpio-pxa.c                                             |    1 
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c                             |    1 
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c                              |    2 
 drivers/gpu/drm/amd/amdkfd/kfd_topology.c                           |   12 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c                   |    5 
 drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c         |    7 
 drivers/gpu/drm/i915/intel_fbdev.c                                  |   12 
 drivers/gpu/drm/meson/meson_drv.c                                   |    9 
 drivers/gpu/drm/radeon/radeon_kms.c                                 |    1 
 drivers/gpu/drm/sun4i/sun4i_backend.c                               |    5 
 drivers/hwmon/nct6775.c                                             |   12 
 drivers/hwmon/tmp421.c                                              |    2 
 drivers/infiniband/hw/mthca/mthca_provider.c                        |    4 
 drivers/infiniband/ulp/srp/ib_srp.c                                 |   10 
 drivers/isdn/hardware/avm/b1.c                                      |    2 
 drivers/isdn/i4l/isdn_tty.c                                         |    6 
 drivers/leds/leds-lp5523.c                                          |    4 
 drivers/mfd/Kconfig                                                 |    1 
 drivers/mfd/ab8500-core.c                                           |    2 
 drivers/mfd/axp20x.c                                                |  126 -
 drivers/mfd/bd9571mwv.c                                             |    1 
 drivers/mfd/cros_ec_dev.c                                           |    1 
 drivers/mfd/db8500-prcmu.c                                          |    4 
 drivers/mfd/mc13xxx-core.c                                          |    4 
 drivers/mfd/mt6397-core.c                                           |    3 
 drivers/mfd/qcom_rpm.c                                              |    4 
 drivers/mfd/ti_am335x_tscadc.c                                      |    5 
 drivers/mfd/tps65218.c                                              |   24 
 drivers/mfd/twl-core.c                                              |    4 
 drivers/mfd/wm5110-tables.c                                         |    2 
 drivers/net/ethernet/amazon/ena/ena_netdev.c                        |   10 
 drivers/net/ethernet/freescale/dpaa/dpaa_eth.c                      |    6 
 drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c                   |    6 
 drivers/net/ethernet/mellanox/mlx4/en_rx.c                          |   22 
 drivers/net/ethernet/mellanox/mlx4/icm.c                            |   92 
 drivers/net/ethernet/mellanox/mlx4/icm.h                            |   22 
 drivers/net/ethernet/mellanox/mlx5/core/en.h                        |    1 
 drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c                    |    6 
 drivers/net/ethernet/mellanox/mlx5/core/en/xdp.h                    |   17 
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c                   |    2 
 drivers/net/ethernet/mellanox/mlx5/core/en_rep.c                    |    1 
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c                     |   25 
 drivers/net/ethernet/mellanox/mlx5/core/en_tx.c                     |    6 
 drivers/net/ethernet/mellanox/mlxsw/Kconfig                         |    1 
 drivers/net/ethernet/mellanox/mlxsw/pci.c                           |    4 
 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c            |   10 
 drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c            |   12 
 drivers/net/ethernet/qlogic/qed/qed_ll2.c                           |    4 
 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c                  |    6 
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c                   |   51 
 drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c                    |   10 
 drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c                     |    2 
 drivers/net/geneve.c                                                |   10 
 drivers/net/phy/micrel.c                                            |    1 
 drivers/net/phy/phylink.c                                           |   19 
 drivers/net/phy/sfp-bus.c                                           |    2 
 drivers/net/phy/sfp.c                                               |   30 
 drivers/net/phy/sfp.h                                               |    2 
 drivers/net/team/team.c                                             |   27 
 drivers/net/wan/fsl_ucc_hdlc.c                                      |   62 
 drivers/net/wireless/mediatek/mt76/mt76x0/usb.c                     |   46 
 drivers/pinctrl/pinctrl-max77620.c                                  |   14 
 drivers/pinctrl/qcom/pinctrl-qcs404.c                               |    2 
 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c                                  |    9 
 drivers/scsi/cxgbi/cxgb4i/cxgb4i.c                                  |   28 
 drivers/scsi/cxgbi/libcxgbi.c                                       |    7 
 drivers/scsi/cxgbi/libcxgbi.h                                       |    5 
 drivers/scsi/isci/init.c                                            |   14 
 drivers/scsi/qedi/qedi_iscsi.c                                      |    3 
 drivers/scsi/qedi/qedi_iscsi.h                                      |    1 
 drivers/scsi/qla1280.c                                              |    2 
 drivers/scsi/qla4xxx/ql4_os.c                                       |    2 
 drivers/scsi/sd_zbc.c                                               |    8 
 drivers/scsi/ufs/ufs.h                                              |    2 
 drivers/scsi/ufs/ufshcd.c                                           |    2 
 drivers/soc/fsl/qe/qe_tdm.c                                         |   55 
 drivers/staging/erofs/dir.c                                         |    7 
 drivers/staging/erofs/inode.c                                       |   10 
 drivers/staging/erofs/internal.h                                    |   70 
 drivers/staging/erofs/super.c                                       |   19 
 drivers/staging/erofs/unzip_pagevec.h                               |    2 
 drivers/staging/erofs/unzip_vle.c                                   |   35 
 drivers/staging/erofs/unzip_vle_lz4.c                               |    2 
 drivers/staging/erofs/utils.c                                       |   12 
 drivers/target/target_core_user.c                                   |   88 
 drivers/vhost/scsi.c                                                |   20 
 drivers/vhost/vhost.c                                               |    8 
 drivers/video/backlight/pwm_bl.c                                    |   19 
 drivers/watchdog/mt7621_wdt.c                                       |    1 
 drivers/watchdog/rt2880_wdt.c                                       |    1 
 drivers/xen/pvcalls-back.c                                          |    9 
 drivers/xen/pvcalls-front.c                                         |  100 
 fs/afs/flock.c                                                      |    4 
 fs/afs/inode.c                                                      |    3 
 fs/afs/protocol_yfs.h                                               |   11 
 fs/afs/rxrpc.c                                                      |   53 
 fs/afs/yfsclient.c                                                  |    2 
 fs/ceph/snap.c                                                      |    3 
 fs/proc/base.c                                                      |    4 
 include/keys/user-type.h                                            |    2 
 include/linux/compiler-clang.h                                      |    5 
 include/linux/compiler-gcc.h                                        |    4 
 include/linux/compiler-intel.h                                      |    4 
 include/linux/compiler.h                                            |    4 
 include/linux/qed/qed_chain.h                                       |   31 
 include/linux/skbuff.h                                              |    2 
 include/linux/virtio_net.h                                          |   19 
 include/net/netfilter/nf_flow_table.h                               |    1 
 include/sound/soc.h                                                 |    6 
 include/trace/events/afs.h                                          |    2 
 include/uapi/linux/inet_diag.h                                      |   16 
 kernel/bpf/stackmap.c                                               |   12 
 kernel/trace/trace.c                                                |    2 
 kernel/trace/trace_kprobe.c                                         |   10 
 mm/mempolicy.c                                                      |    6 
 net/batman-adv/soft-interface.c                                     |    2 
 net/bridge/br_fdb.c                                                 |    5 
 net/bridge/br_multicast.c                                           |    9 
 net/ceph/messenger.c                                                |   15 
 net/core/filter.c                                                   |   11 
 net/dsa/port.c                                                      |    4 
 net/ipv4/inet_diag.c                                                |   10 
 net/ipv4/netfilter/ipt_CLUSTERIP.c                                  |   19 
 net/ipv6/netfilter.c                                                |    4 
 net/ipv6/seg6.c                                                     |    4 
 net/ipv6/sit.c                                                      |    3 
 net/ipv6/udp.c                                                      |    8 
 net/mac80211/cfg.c                                                  |    6 
 net/mac80211/main.c                                                 |    4 
 net/mac80211/mesh.h                                                 |    6 
 net/mac80211/mesh_pathtbl.c                                         |  155 -
 net/mac80211/rx.c                                                   |    7 
 net/netfilter/nf_flow_table_core.c                                  |    5 
 net/netfilter/nf_tables_api.c                                       |    5 
 net/netfilter/nfnetlink_osf.c                                       |    4 
 net/netfilter/nft_compat.c                                          |    3 
 net/netfilter/nft_flow_offload.c                                    |   13 
 net/packet/af_packet.c                                              |    2 
 net/sched/cls_tcindex.c                                             |   80 
 net/sctp/diag.c                                                     |    1 
 net/sctp/offload.c                                                  |    1 
 net/sctp/stream.c                                                   |    4 
 net/socket.c                                                        |   82 
 net/sunrpc/auth_gss/auth_gss.c                                      |   12 
 net/sunrpc/clnt.c                                                   |   20 
 net/sunrpc/xprt.c                                                   |    1 
 net/sunrpc/xprtrdma/verbs.c                                         |    6 
 net/xdp/xdp_umem.c                                                  |   16 
 samples/bpf/Makefile                                                |    1 
 samples/bpf/asm_goto_workaround.h                                   |   16 
 security/keys/key.c                                                 |    4 
 security/keys/keyring.c                                             |    4 
 security/keys/proc.c                                                |    3 
 security/keys/request_key.c                                         |    1 
 security/keys/request_key_auth.c                                    |    2 
 sound/pci/hda/patch_realtek.c                                       |   42 
 sound/soc/soc-core.c                                                |   11 
 tools/include/uapi/linux/pkt_sched.h                                | 1163 ++++++++++
 tools/testing/selftests/bpf/Makefile                                |    5 
 tools/testing/selftests/bpf/test_progs.c                            |   30 
 tools/testing/selftests/bpf/test_sock_addr.c                        |   53 
 tools/testing/selftests/net/forwarding/bridge_vlan_aware.sh         |   47 
 tools/testing/selftests/net/ip_defrag.c                             |   96 
 tools/testing/selftests/net/ip_defrag.sh                            |    9 
 tools/testing/selftests/tc-testing/tc-tests/actions/ife.json        |   88 
 tools/testing/selftests/tc-testing/tc-tests/actions/tunnel_key.json |   31 
 189 files changed, 2953 insertions(+), 993 deletions(-)

Alban Bedel (1):
MIPS: ath79: Enable OF serial ports in the default config

Alex Deucher (1):
drm/amdgpu: Set DPM_FLAG_NEVER_SKIP when enabling PM-runtime

Alexandre Belloni (2):
clk: at91: fix masterck name
clk: at91: fix at91sam9x5 peripheral clock number

Alexey Brodkin (1):
ARC: define ARCH_SLAB_MINALIGN = 8

Anders Roxell (1):
selftests: bpf: install files tcp_(server|client)*.py

Andrey Ignatov (2):

      bpf: Fix [::] -> [::1] rewrite in sys_sendmsg
      selftests/bpf: Test [::] -> [::1] rewrite in sys_sendmsg in test_sock_addr

Arthur Kiyanovski (1):
net: ena: fix race between link up and device initalization

Avri Altman (1):
scsi: ufs: Fix geometry descriptor size

Bart Van Assche (1):
RDMA/srp: Rework SCSI device reset handling

Bijan Mottahedeh (1):
vhost/scsi: Use copy_to_iter() to send control queue response

Bjorn Andersson (1):
pinctrl: qcom: qcs404: Correct SDC tile

Changbin Du (1):
kprobe: Do not use uaccess functions to access kernel memory that can fault

Charlene Liu (1):
drm/amd/display: fix PME notification not working in RV desktop

Charles Keepax (1):
mfd: wm5110: Add missing ASRC rate register

Chen-Yu Tsai (1):

      mfd: axp20x: Re-align MFD cell entries

Cheng-Min Ao (1):
hwmon: (tmp421) Correct the misspelling of the tmp442 compatible attribute in OF device ID table

Chris Wilson (1):
drm/i915/fbdev: Actually configure untiled displays

Christian König (1):
drm/amdgpu: disable bulk moves for now

Christophe Leroy (1):
powerpc/8xx: fix setting of pagetable for Abatron BDI debug tool.

Colin Ian King (1):
atm: he: fix sign-extension overflow on large shift

Cong Wang (4):
team: avoid complex list operations in team_nl_cmd_options_set()
net_sched: fix a race condition in tcindex_destroy()
net_sched: fix a memory leak in cls_tcindex
net_sched: fix two more memory leaks in cls_tcindex

Curtis Malainey (1):
ASoC: soc-core: fix init platform memory handling

Dan Carpenter (2):
mfd: ab8500-core: Return zero in get_register_interruptible()
xprtrdma: Double free in rpcrdma_sendctxs_create()

Daniel Borkmann (1):
bpf: pull in pkt_sched.h header for tooling to fix bpftool build

David Howells (3):
afs: Fix key refcounting in file locking code
afs: Provide a function to get a ref on a call
afs: Fix race in async call refcounting

Davide Caratti (3):
selftests: tc-testing: drop test on missing tunnel key id
selftests: tc-testing: fix tunnel_key failure if dst_port is unspecified
selftests: tc-testing: fix parsing of ife type

Denis Bolotin (2):
qed: Fix qed_chain_set_prod() for PBL chains with non power of 2 page count
qed: Fix qed_ll2_post_rx_buffer_notify_fw() by adding a write memory barrier

Dien Pham (1):
mfd: bd9571mwv: Add volatile register to make DVFS work

Dmitry V. Levin (1):
parisc: Fix ptrace syscall number modification

Eli Cooper (1):
netfilter: ipv6: Don't preserve original oif for loopback address

Enric Balletbo i Serra (1):
mfd: cros_ec_dev: Add missing mfd_remove_devices() call in remove

Eric Biggers (3):
KEYS: allow reaching the keys quotas exactly
KEYS: user: Align the payload buffer
KEYS: always initialize keyring_index_key::desc_len

Eric Dumazet (1):
batman-adv: fix uninit-value in batadv_interface_tx()

Eugeniy Paltsev (2):
ARCv2: Enable unaligned access in early ASM code
ARC: U-boot: check arguments paranoidly

Felix Fietkau (1):
mac80211: allocate tailroom for forwarded mesh packets

Felix Kuehling (1):
drm/amdkfd: Don't assign dGPUs to APU topology devices

Fernando Fernandez Mancera (1):
netfilter: nfnetlink_osf: add missing fmatch check

Florian Fainelli (1):
net: dsa: Fix NPD checking for br_vlan_enabled()

Gao Xiang (7):
staging: erofs: remove the redundant d_rehash() for the root dentry
staging: erofs: atomic_cond_read_relaxed on ref-locked workgroup
staging: erofs: fix `erofs_workgroup_{try_to_freeze, unfreeze}'
staging: erofs: add a full barrier in erofs_workgroup_unfreeze
staging: erofs: {dir,inode,super}.c: rectify BUG_ONs
staging: erofs: unzip_{pagevec.h,vle.c}: rectify BUG_ONs
staging: erofs: unzip_vle_lz4.c,utils.c: rectify BUG_ONs

Greg Kroah-Hartman (1):

      Linux 4.20.13

Guenter Roeck (2):
hwmon: (nct6775) Fix chip ID for NCT6798D
hwmon: (nct6775) Enable IO mapping for NCT6797D and NCT6798D

Hangbin Liu (3):
geneve: should not call rt6_lookup() when ipv6 was disabled
sit: check if IPv6 enabled before calling ip6_err_gen_icmpv6_unreach() Revert "bridge: do not add port to router list when receives query with source 0.0.0.0"

Heiko Stuebner (1):
backlight: pwm_bl: Fix devicetree parsing with auto-generated brightness tables

Heiner Kallweit (1):
net: phy: micrel: set soft_reset callback to genphy_soft_reset for KSZ9031

Henry Yen (1):
netfilter: nft_flow_offload: fix checking method of conntrack helper

Herbert Xu (2):
mac80211: Use linked list instead of rhashtable walk for mesh tables
mac80211: Free mpath object when rhashtable insertion fails

Hui Wang (1):
ALSA: hda/realtek: Disable PC beep in passthrough on alc285

Ido Schimmel (5):
mlxsw: spectrum: Add VXLAN dependency for spectrum
selftests: forwarding: Add a test for VLAN deletion
net: bridge: Mark FDB entries that were added by user as such
mlxsw: spectrum_switchdev: Do not treat static FDB entries as sticky
selftests: forwarding: Add a test case for externally learned FDB entries

Ilya Dryomov (1):
libceph: handle an empty authorize reply

Jean Delvare (1):
mfd: at91-usart: Add platform dependency

Jeremy Soller (1):
ALSA: hda/realtek - Headset microphone and internal speaker support for System76 oryp5

Jia-Ju Bai (1):
isdn: i4l: isdn_tty: Fix some concurrency double-free bugs

Johannes Berg (4):
Revert "socket: fix struct ifreq size in compat ioctl" Revert "kill dev_ifsioc()"
net: socket: fix SIOCGIFNAME in compat
net: socket: make bond ioctls go through compat_ifreq_ioctl()

Jonathan Marek (1):
mfd: qcom_rpm: write fw_version to CTRL_REG

Jose Abreu (5):
net: stmmac: Fix PCI module removal leak
net: stmmac: dwxgmac2: Only clear interrupts that are active
net: stmmac: Check if CBS is supported before configuring
net: stmmac: Fix the logic of checking if RX Watchdog must be enabled
net: stmmac: Prevent RX starvation in stmmac_napi_poll()

Julia Lawall (2):
drm/meson: add missing of_node_put drm/sun4i: backend: add missing of_node_puts

Kal Conley (1):
net/packet: fix 4gb buffer limit due to overflow check

Kangjie Lu (2):
mfd: mc13xxx: Fix a missing check of a register-read failure
leds: lp5523: fix a missing check of return value of lp55xx_read

Keerthy (1):
mfd: tps65218: Use devm_regmap_add_irq_chip and clean up error path in probe()

Konstantin Khlebnikov (1):
inet_diag: fix reporting cgroup classid and fallback to priority

Krzysztof Kazimierczak (1):
xsk: Check if a queue exists during umem setup

Leo (Hanghong) Ma (1):
drm/amd/display: Fix MST reboot/poweroff sequence

Leon Romanovsky (1):
RDMA/mthca: Clear QP objects during their allocation

Li RongQing (1):
ipv6: propagate genlmsg_reply return code

Logan Gunthorpe (1):
scsi: isci: initialize shost fully before calling scsi_add_host()

Lubomir Rintel (1):
gpio: pxa: avoid attempting to set pin direction via pinctrl on MMP2

Madalin Bucur (1):
dpaa_eth: NETIF_F_LLTX requires to do our own update of trans_start

Manish Rangankar (1):
scsi: qedi: Add ep_state for login completion on un-reachable targets

Marc Dionne (2):
afs: Set correct lock type for the yfs CreateFile
afs: Don't set vnode->cb_s_break in afs_validate()

Masato Suzuki (1):
scsi: sd_zbc: Fix sd_zbc_report_zones() buffer allocation

Mathieu Desnoyers (1):
ARM: 8834/1: Fix: kprobes: optimized kprobes illegal instruction

Michael S. Tsirkin (1):
include/linux/compiler*.h: fix OPTIMIZER_HIDE_VAR

Michal Hocko (1):
proc, oom: do not report alien mms when setting oom_score_adj

Nathan Chancellor (4):
mfd: twl-core: Fix section annotations on {,un}protect_pm_master
mfd: db8500-prcmu: Fix some section annotations
isdn: avm: Fix string plus integer warning from Clang
pinctrl: max77620: Use define directive for max77620_pinconf_param values

NeilBrown (1):
watchdog: mt7621_wdt/rt2880_wdt: Fix compilation problem

Nicolas Boichat (1):
mfd: mt6397: Do not call irq_domain_remove if PMIC unsupported

Nir Dotan (2):
mlxsw: spectrum_acl: Add cleanup after C-TCAM update error condition
mlxsw: pci: Return error on PCI reset timeout

Oskari Lemmela (2):

      mfd: axp20x: Add AC power supply cell for AXP813
      mfd: axp20x: Add supported cells for AXP803

Pablo Neira Ayuso (2):
netfilter: nf_tables: fix flush after rule deletion in the same batch
netfilter: nft_compat: use-after-free when deleting targets

Paul Burton (1):
MIPS: eBPF: Always return sign extended 32b values

Pavel Tikhomirov (1):
vhost: return EINVAL if iovecs size does not match the message size

Peter Oskolkov (2):
selftests: net: fix/improve ip_defrag selftest
bpf: bpf_setsockopt: reset sock dst on SO_MARK changes

Pierre Morel (1):
s390: vsie: Use effective CRYCBD.31 to check CRYCBD validity

Quentin Perret (1):
tracing: Fix number of entries in trace header

Raed Salem (1):
net/mlx5e: FPGA, fix Innova IPsec TX offload data path performance

Rafael J. Wysocki (2):
ACPI: EC: Look for ECDT EC after calling acpi_load_tables()
gpu: drm: radeon: Set DPM_FLAG_NEVER_SKIP when enabling PM-runtime

Rakesh Pillai (1):
mac80211: Restore vif beacon interval if start ap fails

Ralph Campbell (1):
numa: change get_mempolicy() to use nr_node_ids instead of MAX_NUMNODES

René van Dorst (1):
gpio: MT7621: use a per instance irq_chip structure

Russell King (2):
net: sfp: do not probe SFP module before we're attached
net: phylink: avoid resolving link state too early

Saeed Mahameed (2):
net/mlx4_en: Force CHECKSUM_NONE for short ethernet frames net/mlx5e: XDP, fix redirect resources availability check

Song Liu (1):
bpf: fix panic in stack_map_get_build_id() on i386 and arm32

Stanislav Fomichev (4):
selftests/bpf: install with_tunnels.sh for test_flow_dissector.sh
bpf: don't assume build-id length is always 20 bytes
bpf: zero out build_id for BPF_STACK_BUILD_ID_IP selftests/bpf: retry tests that expect build-id

Stanislaw Gruszka (1):
mt76x0u: fix suspend/resume

Stanley Chu (1):
scsi: ufs: Fix system suspend status

Stefano Stabellini (4):
pvcalls-front: read all data before closing the connection
pvcalls-front: don't try to free unallocated rings
pvcalls-front: properly allocate sk
pvcalls-back: set -ENOTCONN in pvcalls_conn_back_read

Stephen Warren (1):
net/mlx4: Get rid of page operation after dma_alloc_coherent

Taehee Yoo (2):
netfilter: nf_tables: fix leaking object reference count
netfilter: ipt_CLUSTERIP: fix sleep-in-atomic bug in clusterip_config_entry_put()

Talons Lee (1):
always clear the X2APIC_ENABLE bit for PV guest

Tariq Toukan (1):
net/mlx5e: Fix wrong (zero) TX drop counter indication for representor

Thomas Bogendoerfer (2):
MIPS: jazz: fix 64bit build
scsi: qla1280: set 64bit coherent mask

Toke Høiland-Jørgensen (1):
mac80211: Change default tx_sk_pacing_shift to 7

Tonghao Zhang (1):
net/mlx5e: Don't overwrite pedit action when multiple pedit used

Tony Luck (1):
acpi/nfit: Fix race accessing memdev in nfit_get_smbios_id()

Trond Myklebust (2):
SUNRPC: Ensure rq_bytes_sent is reset before request transmission
SUNRPC: Ensure we respect the RPCSEC_GSS sequence number limit

Varun Prakash (1):
scsi: cxgb4i: add wait_for_completion()

Vignesh R (1):
mfd: ti_am335x_tscadc: Use PLATFORM_DEVID_AUTO while registering mfd cells

Vitaly Kuznetsov (1):
x86/kvm/mmu: fix switch between root and guest MMUs

Wen Yang (3):
soc/fsl/qe: fix err handling of ucc_of_parse_tdm
pvcalls-front: Avoid get_free_pages(GFP_KERNEL) under spinlock
pvcalls-front: fix potential null dereference

Willem de Bruijn (2):
net: validate untrusted gso packets without csum offload
net: avoid false positives in untrusted gso validation

Xin Long (2):
sctp: call gso_reset_checksum when computing checksum in sctp_gso_segment
sctp: set stream ext to NULL after freeing it in sctp_stream_outq_migrate

Xiubo Li (1):
scsi: tcmu: avoid cmd/qfull timers updated whenever a new cmd comes

Yan, Zheng (1):

      ceph: avoid repeatedly adding inode to mdsc->snap_flush_list

Yangtao Li (1):
cpufreq: scmi: Fix use-after-free in scmi_cpufreq_exit()

Yonghong Song (1):
samples/bpf: workaround clang asm goto compilation errors

Yonglong Liu (1):
net: hns: Fix use after free identified by SLUB debug

Yu Zhang (2):
KVM: MMU: record maximum physical address width in kvm_mmu_extended_role
kvm: x86: Return LA57 feature based on hardware capability

Yuchung Cheng (2):
bpf: correctly set initial window on active Fast Open sender
bpf: fix SO_MAX_PACING_RATE to support TCP internal pacing

YueHaibing (2):
xen/pvcalls: remove set but not used variable 'intf'
scsi: qla4xxx: check return code of qla4xxx_copy_from_fwddb_param

wenxu (2):
netfilter: nft_flow_offload: Fix reverse route lookup
netfilter: nft_flow_offload: fix interaction with vrf slave device

author maintainer
#1 lore raw
Makefile +1 -1
index 0a92b4e11621..c83abc1e689b 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 4
 PATCHLEVEL = 20
-SUBLEVEL = 12
+SUBLEVEL = 13
 EXTRAVERSION =
 NAME = Shy Crocodile
 
arch/arc/include/asm/cache.h +11 -0
index f393b663413e..2ad77fb43639 100644
@@ -52,6 +52,17 @@
 #define cache_line_size()	SMP_CACHE_BYTES
 #define ARCH_DMA_MINALIGN	SMP_CACHE_BYTES
 
+/*
+ * Make sure slab-allocated buffers are 64-bit aligned when atomic64_t uses
+ * ARCv2 64-bit atomics (LLOCKD/SCONDD). This guarantess runtime 64-bit
+ * alignment for any atomic64_t embedded in buffer.
+ * Default ARCH_SLAB_MINALIGN is __alignof__(long long) which has a relaxed
+ * value of 4 (and not 8) in ARC ABI.
+ */
+#if defined(CONFIG_ARC_HAS_LL64) && defined(CONFIG_ARC_HAS_LLSC)
+#define ARCH_SLAB_MINALIGN	8
+#endif
+
 extern void arc_cache_init(void);
 extern char *arc_cache_mumbojumbo(int cpu_id, char *buf, int len);
 extern void read_decode_cache_bcr(void);
arch/arc/kernel/head.S +12 -2
index 8b90d25a15cc..1f945d0f40da 100644
@@ -17,6 +17,7 @@
 #include <asm/entry.h>
 #include <asm/arcregs.h>
 #include <asm/cache.h>
+#include <asm/irqflags.h>
 
 .macro CPU_EARLY_SETUP
 
@@ -47,6 +48,15 @@
 	sr	r5, [ARC_REG_DC_CTRL]
 
 1:
+
+#ifdef CONFIG_ISA_ARCV2
+	; Unaligned access is disabled at reset, so re-enable early as
+	; gcc 7.3.1 (ARC GNU 2018.03) onwards generates unaligned access
+	; by default
+	lr	r5, [status32]
+	bset	r5, r5, STATUS_AD_BIT
+	kflag	r5
+#endif
 .endm
 
 	.section .init.text, "ax",@progbits
@@ -93,9 +103,9 @@ ENTRY(stext)
 #ifdef CONFIG_ARC_UBOOT_SUPPORT
 	; Uboot - kernel ABI
 	;    r0 = [0] No uboot interaction, [1] cmdline in r2, [2] DTB in r2
-	;    r1 = magic number (board identity, unused as of now
+	;    r1 = magic number (always zero as of now)
 	;    r2 = pointer to uboot provided cmdline or external DTB in mem
-	; These are handled later in setup_arch()
+	; These are handled later in handle_uboot_args()
 	st	r0, [@uboot_tag]
 	st	r2, [@uboot_arg]
 #endif
arch/arc/kernel/setup.c +62 -25

105 lines not on this page · raw message

arch/arm/probes/kprobes/opt-arm.c +1 -1
index 2c118a6ab358..0dc23fc227ed 100644
@@ -247,7 +247,7 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op, struct kprobe *or
 	}
 
 	/* Copy arch-dep-instance from template. */
-	memcpy(code, (unsigned char *)optprobe_template_entry,
+	memcpy(code, (unsigned long *)&optprobe_template_entry,
 			TMPL_END_IDX * sizeof(kprobe_opcode_t));
 
 	/* Adjust buffer according to instruction. */
arch/mips/configs/ath79_defconfig +1 -0
index 951c4231bdb8..4c47b3fd958b 100644
@@ -71,6 +71,7 @@ CONFIG_SERIAL_8250_CONSOLE=y
 # CONFIG_SERIAL_8250_PCI is not set
 CONFIG_SERIAL_8250_NR_UARTS=1
 CONFIG_SERIAL_8250_RUNTIME_UARTS=1
+CONFIG_SERIAL_OF_PLATFORM=y
 CONFIG_SERIAL_AR933X=y
 CONFIG_SERIAL_AR933X_CONSOLE=y
 # CONFIG_HW_RANDOM is not set
arch/mips/jazz/jazzdma.c +3 -2
index 4c41ed0a637e..415a08376c36 100644
@@ -74,14 +74,15 @@ static int __init vdma_init(void)
 						    get_order(VDMA_PGTBL_SIZE));
 	BUG_ON(!pgtbl);
 	dma_cache_wback_inv((unsigned long)pgtbl, VDMA_PGTBL_SIZE);
-	pgtbl = (VDMA_PGTBL_ENTRY *)KSEG1ADDR(pgtbl);
+	pgtbl = (VDMA_PGTBL_ENTRY *)CKSEG1ADDR((unsigned long)pgtbl);
 
 	/*
 	 * Clear the R4030 translation table
 	 */
 	vdma_pgtbl_init();
 
-	r4030_write_reg32(JAZZ_R4030_TRSTBL_BASE, CPHYSADDR(pgtbl));
+	r4030_write_reg32(JAZZ_R4030_TRSTBL_BASE,
+			  CPHYSADDR((unsigned long)pgtbl));
 	r4030_write_reg32(JAZZ_R4030_TRSTBL_LIM, VDMA_PGTBL_SIZE);
 	r4030_write_reg32(JAZZ_R4030_TRSTBL_INV, 0);
 
arch/mips/net/ebpf_jit.c +6 -3
index aeb7b1b0f202..252c00985c97 100644
@@ -343,12 +343,15 @@ static int build_int_epilogue(struct jit_ctx *ctx, int dest_reg)
 	const struct bpf_prog *prog = ctx->skf;
 	int stack_adjust = ctx->stack_size;
 	int store_offset = stack_adjust - 8;
+	enum reg_val_type td;
 	int r0 = MIPS_R_V0;
 
-	if (dest_reg == MIPS_R_RA &&
-	    get_reg_val_type(ctx, prog->len, BPF_REG_0) == REG_32BIT_ZERO_EX)
+	if (dest_reg == MIPS_R_RA) {
 		/* Don't let zero extended value escape. */
-		emit_instr(ctx, sll, r0, r0, 0);
+		td = get_reg_val_type(ctx, prog->len, BPF_REG_0);
+		if (td == REG_64BIT || td == REG_32BIT_ZERO_EX)
+			emit_instr(ctx, sll, r0, r0, 0);
+	}
 
 	if (ctx->flags & EBPF_SAVE_RA) {
 		emit_instr(ctx, ld, MIPS_R_RA, store_offset, MIPS_R_SP);
arch/parisc/kernel/ptrace.c +21 -8
index 2582df1c529b..0964c236e3e5 100644
@@ -308,15 +308,29 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
 
 long do_syscall_trace_enter(struct pt_regs *regs)
 {
-	if (test_thread_flag(TIF_SYSCALL_TRACE) &&
-	    tracehook_report_syscall_entry(regs)) {
+	if (test_thread_flag(TIF_SYSCALL_TRACE)) {
+		int rc = tracehook_report_syscall_entry(regs);
+
 		/*
-		 * Tracing decided this syscall should not happen or the
-		 * debugger stored an invalid system call number. Skip
-		 * the system call and the system call restart handling.
+		 * As tracesys_next does not set %r28 to -ENOSYS
+		 * when %r20 is set to -1, initialize it here.
 		 */
-		regs->gr[20] = -1UL;
-		goto out;
+		regs->gr[28] = -ENOSYS;
+
+		if (rc) {
+			/*
+			 * A nonzero return code from
+			 * tracehook_report_syscall_entry() tells us
+			 * to prevent the syscall execution.  Skip
+			 * the syscall call and the syscall restart handling.
+			 *
+			 * Note that the tracer may also just change
+			 * regs->gr[20] to an invalid syscall number,
+			 * that is handled by tracesys_next.
+			 */
+			regs->gr[20] = -1UL;
+			return -1;
+		}
 	}
 
 	/* Do the secure computing check after ptrace. */
@@ -340,7 +354,6 @@ long do_syscall_trace_enter(struct pt_regs *regs)
 			regs->gr[24] & 0xffffffff,
 			regs->gr[23] & 0xffffffff);
 
-out:
 	/*
 	 * Sign extend the syscall number to 64bit since it may have been
 	 * modified by a compat ptrace call
arch/powerpc/kernel/head_8xx.S +2 -1
index 3b67b9533c82..438512759e82 100644
@@ -927,11 +927,12 @@ start_here:
 
 	/* set up the PTE pointers for the Abatron bdiGDB.
 	*/
-	tovirt(r6,r6)
 	lis	r5, abatron_pteptrs@h
 	ori	r5, r5, abatron_pteptrs@l
 	stw	r5, 0xf0(0)	/* Must match your Abatron config file */
 	tophys(r5,r5)
+	lis	r6, swapper_pg_dir@h
+	ori	r6, r6, swapper_pg_dir@l
 	stw	r6, 0(r5)
 
 /* Now turn on the MMU for real! */
arch/s390/kvm/vsie.c +1 -1
index a153257bf7d9..d62fa148558b 100644
@@ -297,7 +297,7 @@ static int shadow_crycb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
 	scb_s->crycbd = 0;
 
 	apie_h = vcpu->arch.sie_block->eca & ECA_APIE;
-	if (!apie_h && !key_msk)
+	if (!apie_h && (!key_msk || fmt_o == CRYCB_FORMAT0))
 		return 0;
 
 	if (!crycb_addr)
arch/x86/include/asm/kvm_host.h +2 -0
index e5c0174e330e..5a0cbc717997 100644
@@ -299,6 +299,7 @@ union kvm_mmu_extended_role {
 		unsigned int cr4_smap:1;
 		unsigned int cr4_smep:1;
 		unsigned int cr4_la57:1;
+		unsigned int maxphyaddr:6;
 	};
 };
 
@@ -397,6 +398,7 @@ struct kvm_mmu {
 	void (*update_pte)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp,
 			   u64 *spte, const void *pte);
 	hpa_t root_hpa;
+	gpa_t root_cr3;
 	union kvm_mmu_role mmu_role;
 	u8 root_level;
 	u8 shadow_root_level;
arch/x86/kvm/cpuid.c +4 -0
index 7bcfa61375c0..98d13c6a64be 100644
@@ -337,6 +337,7 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,
 	unsigned f_mpx = kvm_mpx_supported() ? F(MPX) : 0;
 	unsigned f_xsaves = kvm_x86_ops->xsaves_supported() ? F(XSAVES) : 0;
 	unsigned f_umip = kvm_x86_ops->umip_emulated() ? F(UMIP) : 0;
+	unsigned f_la57 = 0;
 
 	/* cpuid 1.edx */
 	const u32 kvm_cpuid_1_edx_x86_features =
@@ -491,7 +492,10 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,
 			// TSC_ADJUST is emulated
 			entry->ebx |= F(TSC_ADJUST);
 			entry->ecx &= kvm_cpuid_7_0_ecx_x86_features;
+			f_la57 = entry->ecx & F(LA57);
 			cpuid_mask(&entry->ecx, CPUID_7_ECX);
+			/* Set LA57 based on hardware capability. */
+			entry->ecx |= f_la57;
 			entry->ecx |= f_umip;
 			/* PKU is not yet implemented for shadow paging. */
 			if (!tdp_enabled || !boot_cpu_has(X86_FEATURE_OSPKE))
arch/x86/kvm/mmu.c +14 -4
index 7c03c0f35444..e763e5445e3c 100644
@@ -3517,6 +3517,7 @@ void kvm_mmu_free_roots(struct kvm_vcpu *vcpu, struct kvm_mmu *mmu,
 							   &invalid_list);
 			mmu->root_hpa = INVALID_PAGE;
 		}
+		mmu->root_cr3 = 0;
 	}
 
 	kvm_mmu_commit_zap_page(vcpu->kvm, &invalid_list);
@@ -3572,6 +3573,7 @@ static int mmu_alloc_direct_roots(struct kvm_vcpu *vcpu)
 		vcpu->arch.mmu->root_hpa = __pa(vcpu->arch.mmu->pae_root);
 	} else
 		BUG();
+	vcpu->arch.mmu->root_cr3 = vcpu->arch.mmu->get_cr3(vcpu);
 
 	return 0;
 }
@@ -3580,10 +3582,11 @@ static int mmu_alloc_shadow_roots(struct kvm_vcpu *vcpu)
 {
 	struct kvm_mmu_page *sp;
 	u64 pdptr, pm_mask;
-	gfn_t root_gfn;
+	gfn_t root_gfn, root_cr3;
 	int i;
 
-	root_gfn = vcpu->arch.mmu->get_cr3(vcpu) >> PAGE_SHIFT;
+	root_cr3 = vcpu->arch.mmu->get_cr3(vcpu);
+	root_gfn = root_cr3 >> PAGE_SHIFT;
 
 	if (mmu_check_root(vcpu, root_gfn))
 		return 1;
@@ -3608,7 +3611,7 @@ static int mmu_alloc_shadow_roots(struct kvm_vcpu *vcpu)
 		++sp->root_count;
 		spin_unlock(&vcpu->kvm->mmu_lock);
 		vcpu->arch.mmu->root_hpa = root;
-		return 0;
+		goto set_root_cr3;
 	}
 
 	/*
@@ -3674,6 +3677,9 @@ static int mmu_alloc_shadow_roots(struct kvm_vcpu *vcpu)
 		vcpu->arch.mmu->root_hpa = __pa(vcpu->arch.mmu->lm_root);
 	}
 
+set_root_cr3:
+	vcpu->arch.mmu->root_cr3 = root_cr3;
+
 	return 0;
 }
 
@@ -4125,7 +4131,7 @@ static bool cached_root_available(struct kvm_vcpu *vcpu, gpa_t new_cr3,
 	struct kvm_mmu_root_info root;
 	struct kvm_mmu *mmu = vcpu->arch.mmu;
 
-	root.cr3 = mmu->get_cr3(vcpu);
+	root.cr3 = mmu->root_cr3;
 	root.hpa = mmu->root_hpa;
 
 	for (i = 0; i < KVM_MMU_NUM_PREV_ROOTS; i++) {
@@ -4138,6 +4144,7 @@ static bool cached_root_available(struct kvm_vcpu *vcpu, gpa_t new_cr3,
 	}
 
 	mmu->root_hpa = root.hpa;
+	mmu->root_cr3 = root.cr3;
 
 	return i < KVM_MMU_NUM_PREV_ROOTS;
 }
@@ -4731,6 +4738,7 @@ static union kvm_mmu_extended_role kvm_calc_mmu_role_ext(struct kvm_vcpu *vcpu)
 	ext.cr4_pse = !!is_pse(vcpu);
 	ext.cr4_pke = !!kvm_read_cr4_bits(vcpu, X86_CR4_PKE);
 	ext.cr4_la57 = !!kvm_read_cr4_bits(vcpu, X86_CR4_LA57);
+	ext.maxphyaddr = cpuid_maxphyaddr(vcpu);
 
 	ext.valid = 1;
 
@@ -5477,11 +5485,13 @@ int kvm_mmu_create(struct kvm_vcpu *vcpu)
 	vcpu->arch.walk_mmu = &vcpu->arch.root_mmu;
 
 	vcpu->arch.root_mmu.root_hpa = INVALID_PAGE;
+	vcpu->arch.root_mmu.root_cr3 = 0;
 	vcpu->arch.root_mmu.translate_gpa = translate_gpa;
 	for (i = 0; i < KVM_MMU_NUM_PREV_ROOTS; i++)
 		vcpu->arch.root_mmu.prev_roots[i] = KVM_MMU_ROOT_INFO_INVALID;
 
 	vcpu->arch.guest_mmu.root_hpa = INVALID_PAGE;
+	vcpu->arch.guest_mmu.root_cr3 = 0;
 	vcpu->arch.guest_mmu.translate_gpa = translate_gpa;
 	for (i = 0; i < KVM_MMU_NUM_PREV_ROOTS; i++)
 		vcpu->arch.guest_mmu.prev_roots[i] = KVM_MMU_ROOT_INFO_INVALID;
arch/x86/xen/enlighten_pv.c +1 -4
index 2f6787fc7106..c54a493e139a 100644
@@ -898,10 +898,7 @@ static u64 xen_read_msr_safe(unsigned int msr, int *err)
 	val = native_read_msr_safe(msr, err);
 	switch (msr) {
 	case MSR_IA32_APICBASE:
-#ifdef CONFIG_X86_X2APIC
-		if (!(cpuid_ecx(1) & (1 << (X86_FEATURE_X2APIC & 31))))
-#endif
-			val &= ~X2APIC_ENABLE;
+		val &= ~X2APIC_ENABLE;
 		break;
 	}
 	return val;
drivers/acpi/bus.c +12 -12
index bb3d96dea6db..26d4164d394f 100644
@@ -1054,18 +1054,6 @@ void __init acpi_early_init(void)
 		goto error0;
 	}
 
-	/*
-	 * ACPI 2.0 requires the EC driver to be loaded and work before
-	 * the EC device is found in the namespace (i.e. before
-	 * acpi_load_tables() is called).
-	 *
-	 * This is accomplished by looking for the ECDT table, and getting
-	 * the EC parameters out of that.
-	 *
-	 * Ignore the result. Not having an ECDT is not fatal.
-	 */
-	status = acpi_ec_ecdt_probe();
-
 #ifdef CONFIG_X86
 	if (!acpi_ioapic) {
 		/* compatible (0) means level (3) */
@@ -1142,6 +1130,18 @@ static int __init acpi_bus_init(void)
 		goto error1;
 	}
 
+	/*
+	 * ACPI 2.0 requires the EC driver to be loaded and work before the EC
+	 * device is found in the namespace.
+	 *
+	 * This is accomplished by looking for the ECDT table and getting the EC
+	 * parameters out of that.
+	 *
+	 * Do that before calling acpi_initialize_objects() which may trigger EC
+	 * address space accesses.
+	 */
+	acpi_ec_ecdt_probe();
+
 	status = acpi_enable_subsystem(ACPI_NO_ACPI_ENABLE);
 	if (ACPI_FAILURE(status)) {
 		printk(KERN_ERR PREFIX
drivers/acpi/nfit/core.c +4 -2
index 8535e7999769..2a2d7ec77252 100644
@@ -724,6 +724,7 @@ int nfit_get_smbios_id(u32 device_handle, u16 *flags)
 	struct acpi_nfit_memory_map *memdev;
 	struct acpi_nfit_desc *acpi_desc;
 	struct nfit_mem *nfit_mem;
+	u16 physical_id;
 
 	mutex_lock(&acpi_desc_lock);
 	list_for_each_entry(acpi_desc, &acpi_descs, list) {
@@ -731,10 +732,11 @@ int nfit_get_smbios_id(u32 device_handle, u16 *flags)
 		list_for_each_entry(nfit_mem, &acpi_desc->dimms, list) {
 			memdev = __to_nfit_memdev(nfit_mem);
 			if (memdev->device_handle == device_handle) {
+				*flags = memdev->flags;
+				physical_id = memdev->physical_id;
 				mutex_unlock(&acpi_desc->init_mutex);
 				mutex_unlock(&acpi_desc_lock);
-				*flags = memdev->flags;
-				return memdev->physical_id;
+				return physical_id;
 			}
 		}
 		mutex_unlock(&acpi_desc->init_mutex);
drivers/atm/he.c +1 -1
index 29f102dcfec4..329ce9072ee9 100644
@@ -717,7 +717,7 @@ static int he_init_cs_block_rcm(struct he_dev *he_dev)
 			instead of '/ 512', use '>> 9' to prevent a call
 			to divdu3 on x86 platforms
 		*/
-		rate_cps = (unsigned long long) (1 << exp) * (man + 512) >> 9;
+		rate_cps = (unsigned long long) (1UL << exp) * (man + 512) >> 9;
 
 		if (rate_cps < 10)
 			rate_cps = 10;	/* 2.2.1 minimum payload rate is 10 cps */
drivers/clk/at91/at91sam9x5.c +2 -3
index 2fe225a697df..3487e03d4bc6 100644
@@ -144,8 +144,7 @@ static void __init at91sam9x5_pmc_setup(struct device_node *np,
 		return;
 
 	at91sam9x5_pmc = pmc_data_allocate(PMC_MAIN + 1,
-					   nck(at91sam9x5_systemck),
-					   nck(at91sam9x35_periphck), 0);
+					   nck(at91sam9x5_systemck), 31, 0);
 	if (!at91sam9x5_pmc)
 		return;
 
@@ -210,7 +209,7 @@ static void __init at91sam9x5_pmc_setup(struct device_node *np,
 	parent_names[1] = "mainck";
 	parent_names[2] = "plladivck";
 	parent_names[3] = "utmick";
-	parent_names[4] = "mck";
+	parent_names[4] = "masterck";
 	for (i = 0; i < 2; i++) {
 		char name[6];
 
drivers/clk/at91/sama5d2.c +2 -2
index d69ad96fe988..cd0ef7274fdb 100644
@@ -240,7 +240,7 @@ static void __init sama5d2_pmc_setup(struct device_node *np)
 	parent_names[1] = "mainck";
 	parent_names[2] = "plladivck";
 	parent_names[3] = "utmick";
-	parent_names[4] = "mck";
+	parent_names[4] = "masterck";
 	for (i = 0; i < 3; i++) {
 		char name[6];
 
@@ -291,7 +291,7 @@ static void __init sama5d2_pmc_setup(struct device_node *np)
 	parent_names[1] = "mainck";
 	parent_names[2] = "plladivck";
 	parent_names[3] = "utmick";
-	parent_names[4] = "mck";
+	parent_names[4] = "masterck";
 	parent_names[5] = "audiopll_pmcck";
 	for (i = 0; i < ARRAY_SIZE(sama5d2_gck); i++) {
 		hw = at91_clk_register_generated(regmap, &pmc_pcr_lock,
drivers/clk/at91/sama5d4.c +1 -1
index e358be7f6c8d..b645a9d59cdb 100644
@@ -207,7 +207,7 @@ static void __init sama5d4_pmc_setup(struct device_node *np)
 	parent_names[1] = "mainck";
 	parent_names[2] = "plladivck";
 	parent_names[3] = "utmick";
-	parent_names[4] = "mck";
+	parent_names[4] = "masterck";
 	for (i = 0; i < 3; i++) {
 		char name[6];
 
drivers/cpufreq/scmi-cpufreq.c +1 -1
index 242c3370544e..9ed46d188cb5 100644
@@ -187,8 +187,8 @@ static int scmi_cpufreq_exit(struct cpufreq_policy *policy)
 
 	cpufreq_cooling_unregister(priv->cdev);
 	dev_pm_opp_free_cpufreq_table(priv->cpu_dev, &policy->freq_table);
-	kfree(priv);
 	dev_pm_opp_remove_all_dynamic(priv->cpu_dev);
+	kfree(priv);
 
 	return 0;
 }
drivers/gpio/gpio-mt7621.c +10 -10
index 00e954f22bc9..74401e0adb29 100644
@@ -30,6 +30,7 @@
 #define GPIO_REG_EDGE		0xA0
 
 struct mtk_gc {
+	struct irq_chip irq_chip;
 	struct gpio_chip chip;
 	spinlock_t lock;
 	int bank;
@@ -189,13 +190,6 @@ mediatek_gpio_irq_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static struct irq_chip mediatek_gpio_irq_chip = {
-	.irq_unmask		= mediatek_gpio_irq_unmask,
-	.irq_mask		= mediatek_gpio_irq_mask,
-	.irq_mask_ack		= mediatek_gpio_irq_mask,
-	.irq_set_type		= mediatek_gpio_irq_type,
-};
-
 static int
 mediatek_gpio_xlate(struct gpio_chip *chip,
 		    const struct of_phandle_args *spec, u32 *flags)
@@ -254,6 +248,13 @@ mediatek_gpio_bank_probe(struct device *dev,
 		return ret;
 	}
 
+	rg->irq_chip.name = dev_name(dev);
+	rg->irq_chip.parent_device = dev;
+	rg->irq_chip.irq_unmask = mediatek_gpio_irq_unmask;
+	rg->irq_chip.irq_mask = mediatek_gpio_irq_mask;
+	rg->irq_chip.irq_mask_ack = mediatek_gpio_irq_mask;
+	rg->irq_chip.irq_set_type = mediatek_gpio_irq_type;
+
 	if (mtk->gpio_irq) {
 		/*
 		 * Manually request the irq here instead of passing
@@ -270,14 +271,14 @@ mediatek_gpio_bank_probe(struct device *dev,
 			return ret;
 		}
 
-		ret = gpiochip_irqchip_add(&rg->chip, &mediatek_gpio_irq_chip,
+		ret = gpiochip_irqchip_add(&rg->chip, &rg->irq_chip,
 					   0, handle_simple_irq, IRQ_TYPE_NONE);
 		if (ret) {
 			dev_err(dev, "failed to add gpiochip_irqchip\n");
 			return ret;
 		}
 
-		gpiochip_set_chained_irqchip(&rg->chip, &mediatek_gpio_irq_chip,
+		gpiochip_set_chained_irqchip(&rg->chip, &rg->irq_chip,
 					     mtk->gpio_irq, NULL);
 	}
 
@@ -310,7 +311,6 @@ mediatek_gpio_probe(struct platform_device *pdev)
 	mtk->gpio_irq = irq_of_parse_and_map(np, 0);
 	mtk->dev = dev;
 	platform_set_drvdata(pdev, mtk);
-	mediatek_gpio_irq_chip.name = dev_name(dev);
 
 	for (i = 0; i < MTK_BANK_CNT; i++) {
 		ret = mediatek_gpio_bank_probe(dev, np, i);
drivers/gpio/gpio-pxa.c +1 -0
index e9600b556f39..bcc6be4a5cb2 100644
@@ -245,6 +245,7 @@ static bool pxa_gpio_has_pinctrl(void)
 {
 	switch (gpio_type) {
 	case PXA3XX_GPIO:
+	case MMP2_GPIO:
 		return false;
 
 	default:
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +1 -0
index 8f3d44e5e787..722b1421d8f3 100644
@@ -212,6 +212,7 @@ int amdgpu_driver_load_kms(struct drm_device *dev, unsigned long flags)
 	}
 
 	if (amdgpu_device_is_px(dev)) {
+		dev_pm_set_driver_flags(dev->dev, DPM_FLAG_NEVER_SKIP);
 		pm_runtime_use_autosuspend(dev->dev);
 		pm_runtime_set_autosuspend_delay(dev->dev, 5000);
 		pm_runtime_set_active(dev->dev);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +2 -0
index 8c9abaa7601a..62df4bd0a0fc 100644
@@ -637,12 +637,14 @@ void amdgpu_vm_move_to_lru_tail(struct amdgpu_device *adev,
 	struct ttm_bo_global *glob = adev->mman.bdev.glob;
 	struct amdgpu_vm_bo_base *bo_base;
 
+#if 0
 	if (vm->bulk_moveable) {
 		spin_lock(&glob->lru_lock);
 		ttm_bo_bulk_move_lru_tail(&vm->lru_bulk_move);
 		spin_unlock(&glob->lru_lock);
 		return;
 	}
+#endif
 
 	memset(&vm->lru_bulk_move, 0, sizeof(vm->lru_bulk_move));
 
drivers/gpu/drm/amd/amdkfd/kfd_topology.c +9 -3
index e3843c5929ed..fffece5e42c5 100644
@@ -1074,8 +1074,6 @@ static uint32_t kfd_generate_gpu_id(struct kfd_dev *gpu)
  *		the GPU device is not already present in the topology device
  *		list then return NULL. This means a new topology device has to
  *		be created for this GPU.
- * TODO: Rather than assiging @gpu to first topology device withtout
- *		gpu attached, it will better to have more stringent check.
  */
 static struct kfd_topology_device *kfd_assign_gpu(struct kfd_dev *gpu)
 {
@@ -1083,12 +1081,20 @@ static struct kfd_topology_device *kfd_assign_gpu(struct kfd_dev *gpu)
 	struct kfd_topology_device *out_dev = NULL;
 
 	down_write(&topology_lock);
-	list_for_each_entry(dev, &topology_device_list, list)
+	list_for_each_entry(dev, &topology_device_list, list) {
+		/* Discrete GPUs need their own topology device list
+		 * entries. Don't assign them to CPU/APU nodes.
+		 */
+		if (!gpu->device_info->needs_iommu_device &&
+		    dev->node_props.cpu_cores_count)
+			continue;
+
 		if (!dev->gpu && (dev->node_props.simd_count > 0)) {
 			dev->gpu = gpu;
 			out_dev = dev;
 			break;
 		}
+	}
 	up_write(&topology_lock);
 	return out_dev;
 }
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +3 -2
index 315a245aedc2..d92120b62e89 100644
@@ -704,12 +704,13 @@ static int dm_suspend(void *handle)
 	struct amdgpu_display_manager *dm = &adev->dm;
 	int ret = 0;
 
+	WARN_ON(adev->dm.cached_state);
+	adev->dm.cached_state = drm_atomic_helper_suspend(adev->ddev);
+
 	s3_handle_mst(adev->ddev, true);
 
 	amdgpu_dm_irq_suspend(adev);
 
-	WARN_ON(adev->dm.cached_state);
-	adev->dm.cached_state = drm_atomic_helper_suspend(adev->ddev);
 
 	dc_set_power_state(dm->dc, DC_ACPI_CM_POWER_STATE_D3);
 
drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c +6 -1
index 4443a916a0fb..e84275f15e7a 100644
@@ -1000,7 +1000,7 @@ void dce110_enable_audio_stream(struct pipe_ctx *pipe_ctx)
 
 		pipe_ctx->stream_res.audio->funcs->az_enable(pipe_ctx->stream_res.audio);
 
-		if (num_audio == 1 && pp_smu != NULL && pp_smu->set_pme_wa_enable != NULL)
+		if (num_audio >= 1 && pp_smu != NULL && pp_smu->set_pme_wa_enable != NULL)
 			/*this is the first audio. apply the PME w/a in order to wake AZ from D3*/
 			pp_smu->set_pme_wa_enable(&pp_smu->pp_smu);
 		/* un-mute audio */
@@ -1017,6 +1017,8 @@ void dce110_disable_audio_stream(struct pipe_ctx *pipe_ctx, int option)
 	pipe_ctx->stream_res.stream_enc->funcs->audio_mute_control(
 			pipe_ctx->stream_res.stream_enc, true);
 	if (pipe_ctx->stream_res.audio) {
+		struct pp_smu_funcs_rv *pp_smu = dc->res_pool->pp_smu;
+
 		if (option != KEEP_ACQUIRED_RESOURCE ||
 				!dc->debug.az_endpoint_mute_only) {
 			/*only disalbe az_endpoint if power down or free*/
@@ -1036,6 +1038,9 @@ void dce110_disable_audio_stream(struct pipe_ctx *pipe_ctx, int option)
 			update_audio_usage(&dc->current_state->res_ctx, dc->res_pool, pipe_ctx->stream_res.audio, false);
 			pipe_ctx->stream_res.audio = NULL;
 		}
+		if (pp_smu != NULL && pp_smu->set_pme_wa_enable != NULL)
+			/*this is the first audio. apply the PME w/a in order to wake AZ from D3*/
+			pp_smu->set_pme_wa_enable(&pp_smu->pp_smu);
 
 		/* TODO: notify audio driver for if audio modes list changed
 		 * add audio mode list change flag */
drivers/gpu/drm/i915/intel_fbdev.c +7 -5
index 9e2e998b198f..e0c02a9889b2 100644
@@ -336,8 +336,8 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper,
 				    bool *enabled, int width, int height)
 {
 	struct drm_i915_private *dev_priv = to_i915(fb_helper->dev);
-	unsigned long conn_configured, conn_seq, mask;
 	unsigned int count = min(fb_helper->connector_count, BITS_PER_LONG);
+	unsigned long conn_configured, conn_seq;
 	int i, j;
 	bool *save_enabled;
 	bool fallback = true, ret = true;
@@ -355,10 +355,9 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper,
 		drm_modeset_backoff(&ctx);
 
 	memcpy(save_enabled, enabled, count);
-	mask = GENMASK(count - 1, 0);
+	conn_seq = GENMASK(count - 1, 0);
 	conn_configured = 0;
 retry:
-	conn_seq = conn_configured;
 	for (i = 0; i < count; i++) {
 		struct drm_fb_helper_connector *fb_conn;
 		struct drm_connector *connector;
@@ -371,7 +370,8 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper,
 		if (conn_configured & BIT(i))
 			continue;
 
-		if (conn_seq == 0 && !connector->has_tile)
+		/* First pass, only consider tiled connectors */
+		if (conn_seq == GENMASK(count - 1, 0) && !connector->has_tile)
 			continue;
 
 		if (connector->status == connector_status_connected)
@@ -475,8 +475,10 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper,
 		conn_configured |= BIT(i);
 	}
 
-	if ((conn_configured & mask) != mask && conn_configured != conn_seq)
+	if (conn_configured != conn_seq) { /* repeat until no more are found */
+		conn_seq = conn_configured;
 		goto retry;
+	}
 
 	/*
 	 * If the BIOS didn't enable everything it could, fall back to have the
drivers/gpu/drm/meson/meson_drv.c +7 -2
index bf5f294f172f..611ac340fb28 100644
@@ -368,8 +368,10 @@ static int meson_probe_remote(struct platform_device *pdev,
 		remote_node = of_graph_get_remote_port_parent(ep);
 		if (!remote_node ||
 		    remote_node == parent || /* Ignore parent endpoint */
-		    !of_device_is_available(remote_node))
+		    !of_device_is_available(remote_node)) {
+			of_node_put(remote_node);
 			continue;
+		}
 
 		count += meson_probe_remote(pdev, match, remote, remote_node);
 
@@ -388,10 +390,13 @@ static int meson_drv_probe(struct platform_device *pdev)
 
 	for_each_endpoint_of_node(np, ep) {
 		remote = of_graph_get_remote_port_parent(ep);
-		if (!remote || !of_device_is_available(remote))
+		if (!remote || !of_device_is_available(remote)) {
+			of_node_put(remote);
 			continue;
+		}
 
 		count += meson_probe_remote(pdev, &match, np, remote);
+		of_node_put(remote);
 	}
 
 	if (count && !match)
drivers/gpu/drm/radeon/radeon_kms.c +1 -0
index dec1e081f529..6a8fb6fd183c 100644
@@ -172,6 +172,7 @@ int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags)
 	}
 
 	if (radeon_is_px(dev)) {
+		dev_pm_set_driver_flags(dev->dev, DPM_FLAG_NEVER_SKIP);
 		pm_runtime_use_autosuspend(dev->dev);
 		pm_runtime_set_autosuspend_delay(dev->dev, 5000);
 		pm_runtime_set_active(dev->dev);
drivers/gpu/drm/sun4i/sun4i_backend.c +3 -2
index bf49c55b0f2c..9f27d5464804 100644
@@ -704,17 +704,18 @@ static struct sun4i_frontend *sun4i_backend_find_frontend(struct sun4i_drv *drv,
 		remote = of_graph_get_remote_port_parent(ep);
 		if (!remote)
 			continue;
+		of_node_put(remote);
 
 		/* does this node match any registered engines? */
 		list_for_each_entry(frontend, &drv->frontend_list, list) {
 			if (remote == frontend->node) {
-				of_node_put(remote);
 				of_node_put(port);
+				of_node_put(ep);
 				return frontend;
 			}
 		}
 	}
-
+	of_node_put(port);
 	return ERR_PTR(-EINVAL);
 }
 
drivers/hwmon/nct6775.c +7 -5
index c3040079b1cb..4adec4ab7d06 100644
@@ -44,8 +44,8 @@
  * nct6796d    14      7       7       2+6    0xd420 0xc1    0x5ca3
  * nct6797d    14      7       7       2+6    0xd450 0xc1    0x5ca3
  *                                           (0xd451)
- * nct6798d    14      7       7       2+6    0xd458 0xc1    0x5ca3
- *                                           (0xd459)
+ * nct6798d    14      7       7       2+6    0xd428 0xc1    0x5ca3
+ *                                           (0xd429)
  *
  * #temp lists the number of monitored temperature sources (first value) plus
  * the number of directly connectable temperature sensors (second value).
@@ -138,7 +138,7 @@ MODULE_PARM_DESC(fan_debounce, "Enable debouncing for fan RPM signal");
 #define SIO_NCT6795_ID		0xd350
 #define SIO_NCT6796_ID		0xd420
 #define SIO_NCT6797_ID		0xd450
-#define SIO_NCT6798_ID		0xd458
+#define SIO_NCT6798_ID		0xd428
 #define SIO_ID_MASK		0xFFF8
 
 enum pwm_enable { off, manual, thermal_cruise, speed_cruise, sf3, sf4 };
@@ -4508,7 +4508,8 @@ static int __maybe_unused nct6775_resume(struct device *dev)
 
 	if (data->kind == nct6791 || data->kind == nct6792 ||
 	    data->kind == nct6793 || data->kind == nct6795 ||
-	    data->kind == nct6796)
+	    data->kind == nct6796 || data->kind == nct6797 ||
+	    data->kind == nct6798)
 		nct6791_enable_io_mapping(sioreg);
 
 	superio_exit(sioreg);
@@ -4644,7 +4645,8 @@ static int __init nct6775_find(int sioaddr, struct nct6775_sio_data *sio_data)
 
 	if (sio_data->kind == nct6791 || sio_data->kind == nct6792 ||
 	    sio_data->kind == nct6793 || sio_data->kind == nct6795 ||
-	    sio_data->kind == nct6796)
+	    sio_data->kind == nct6796 || sio_data->kind == nct6797 ||
+	    sio_data->kind == nct6798)
 		nct6791_enable_io_mapping(sioaddr);
 
 	superio_exit(sioaddr);
drivers/hwmon/tmp421.c +1 -1
index 8844c9565d2a..7053be59ad2e 100644
@@ -88,7 +88,7 @@ static const struct of_device_id tmp421_of_match[] = {
 		.data = (void *)2
 	},
 	{
-		.compatible = "ti,tmp422",
+		.compatible = "ti,tmp442",
 		.data = (void *)3
 	},
 	{ },
drivers/infiniband/hw/mthca/mthca_provider.c +2 -2
index 691c6f048938..2428c7d89c6b 100644
@@ -533,7 +533,7 @@ static struct ib_qp *mthca_create_qp(struct ib_pd *pd,
 	{
 		struct mthca_ucontext *context;
 
-		qp = kmalloc(sizeof *qp, GFP_KERNEL);
+		qp = kzalloc(sizeof(*qp), GFP_KERNEL);
 		if (!qp)
 			return ERR_PTR(-ENOMEM);
 
@@ -599,7 +599,7 @@ static struct ib_qp *mthca_create_qp(struct ib_pd *pd,
 		if (pd->uobject)
 			return ERR_PTR(-EINVAL);
 
-		qp = kmalloc(sizeof (struct mthca_sqp), GFP_KERNEL);
+		qp = kzalloc(sizeof(struct mthca_sqp), GFP_KERNEL);
 		if (!qp)
 			return ERR_PTR(-ENOMEM);
 
drivers/infiniband/ulp/srp/ib_srp.c +0 -10
index eed0eb3bb04c..0466f2ac9ad0 100644
@@ -2942,7 +2942,6 @@ static int srp_reset_device(struct scsi_cmnd *scmnd)
 {
 	struct srp_target_port *target = host_to_target(scmnd->device->host);
 	struct srp_rdma_ch *ch;
-	int i, j;
 	u8 status;
 
 	shost_printk(KERN_ERR, target->scsi_host, "SRP reset_device called\n");
@@ -2954,15 +2953,6 @@ static int srp_reset_device(struct scsi_cmnd *scmnd)
 	if (status)
 		return FAILED;
 
-	for (i = 0; i < target->ch_count; i++) {
-		ch = &target->ch[i];
-		for (j = 0; j < target->req_ring_size; ++j) {
-			struct srp_request *req = &ch->req_ring[j];
-
-			srp_finish_req(ch, req, scmnd->device, DID_RESET << 16);
-		}
-	}
-
 	return SUCCESS;
 }
 
drivers/isdn/hardware/avm/b1.c +1 -1
index 4ac378e48902..40ca1e8fa09f 100644
@@ -423,7 +423,7 @@ void b1_parse_version(avmctrl_info *cinfo)
 	int i, j;
 
 	for (j = 0; j < AVM_MAXVERSION; j++)
-		cinfo->version[j] = "\0\0" + 1;
+		cinfo->version[j] = "";
 	for (i = 0, j = 0;
 	     j < AVM_MAXVERSION && i < cinfo->versionlen;
 	     j++, i += cinfo->versionbuf[i] + 1)
drivers/isdn/i4l/isdn_tty.c +5 -1
index 1b2239c1d569..dc1cded716c1 100644
@@ -1437,15 +1437,19 @@ isdn_tty_set_termios(struct tty_struct *tty, struct ktermios *old_termios)
 {
 	modem_info *info = (modem_info *) tty->driver_data;
 
+	mutex_lock(&modem_info_mutex);
 	if (!old_termios)
 		isdn_tty_change_speed(info);
 	else {
 		if (tty->termios.c_cflag == old_termios->c_cflag &&
 		    tty->termios.c_ispeed == old_termios->c_ispeed &&
-		    tty->termios.c_ospeed == old_termios->c_ospeed)
+		    tty->termios.c_ospeed == old_termios->c_ospeed) {
+			mutex_unlock(&modem_info_mutex);
 			return;
+		}
 		isdn_tty_change_speed(info);
 	}
+	mutex_unlock(&modem_info_mutex);
 }
 
 /*
drivers/leds/leds-lp5523.c +3 -1
index a2e74feee2b2..fd64df5a57a5 100644
@@ -318,7 +318,9 @@ static int lp5523_init_program_engine(struct lp55xx_chip *chip)
 
 	/* Let the programs run for couple of ms and check the engine status */
 	usleep_range(3000, 6000);
-	lp55xx_read(chip, LP5523_REG_STATUS, &status);
+	ret = lp55xx_read(chip, LP5523_REG_STATUS, &status);
+	if (ret)
+		return ret;
 	status &= LP5523_ENG_STATUS_MASK;
 
 	if (status != LP5523_ENG_STATUS_MASK) {
drivers/mfd/Kconfig +1 -0
index 8c5dfdce4326..f461460a2aeb 100644
@@ -102,6 +102,7 @@ config MFD_AAT2870_CORE
 config MFD_AT91_USART
 	tristate "AT91 USART Driver"
 	select MFD_CORE
+	depends on ARCH_AT91 || COMPILE_TEST
 	help
 	  Select this to get support for AT91 USART IP. This is a wrapper
 	  over at91-usart-serial driver and usart-spi-driver. Only one function
drivers/mfd/ab8500-core.c +1 -1
index 30d09d177171..11ab17f64c64 100644
@@ -261,7 +261,7 @@ static int get_register_interruptible(struct ab8500 *ab8500, u8 bank,
 	mutex_unlock(&ab8500->lock);
 	dev_vdbg(ab8500->dev, "rd: addr %#x => data %#x\n", addr, ret);
 
-	return ret;
+	return (ret < 0) ? ret : 0;
 }
 
 static int ab8500_get_register(struct device *dev, u8 bank,
drivers/mfd/axp20x.c +70 -56

182 lines not on this page · raw message

drivers/mfd/bd9571mwv.c +1 -0
index 503979c81dae..fab3cdc27ed6 100644
@@ -59,6 +59,7 @@ static const struct regmap_access_table bd9571mwv_writable_table = {
 };
 
 static const struct regmap_range bd9571mwv_volatile_yes_ranges[] = {
+	regmap_reg_range(BD9571MWV_DVFS_MONIVDAC, BD9571MWV_DVFS_MONIVDAC),
 	regmap_reg_range(BD9571MWV_GPIO_IN, BD9571MWV_GPIO_IN),
 	regmap_reg_range(BD9571MWV_GPIO_INT, BD9571MWV_GPIO_INT),
 	regmap_reg_range(BD9571MWV_INT_INTREQ, BD9571MWV_INT_INTREQ),
drivers/mfd/cros_ec_dev.c +1 -0
index b99a194ce5a4..2d0fee488c5a 100644
@@ -499,6 +499,7 @@ static int ec_device_remove(struct platform_device *pdev)
 
 	cros_ec_debugfs_remove(ec);
 
+	mfd_remove_devices(ec->dev);
 	cdev_del(&ec->cdev);
 	device_unregister(&ec->class_dev);
 	return 0;
drivers/mfd/db8500-prcmu.c +2 -2
index 5970b8def548..aec20e1c7d3d 100644
@@ -2584,7 +2584,7 @@ static struct irq_chip prcmu_irq_chip = {
 	.irq_unmask	= prcmu_irq_unmask,
 };
 
-static __init char *fw_project_name(u32 project)
+static char *fw_project_name(u32 project)
 {
 	switch (project) {
 	case PRCMU_FW_PROJECT_U8500:
@@ -2732,7 +2732,7 @@ void __init db8500_prcmu_early_init(u32 phy_base, u32 size)
 	INIT_WORK(&mb0_transfer.mask_work, prcmu_mask_work);
 }
 
-static void __init init_prcm_registers(void)
+static void init_prcm_registers(void)
 {
 	u32 val;
 
drivers/mfd/mc13xxx-core.c +3 -1
index f475e848252f..d0bf50e3568d 100644
@@ -274,7 +274,9 @@ int mc13xxx_adc_do_conversion(struct mc13xxx *mc13xxx, unsigned int mode,
 
 	mc13xxx->adcflags |= MC13XXX_ADC_WORKING;
 
-	mc13xxx_reg_read(mc13xxx, MC13XXX_ADC0, &old_adc0);
+	ret = mc13xxx_reg_read(mc13xxx, MC13XXX_ADC0, &old_adc0);
+	if (ret)
+		goto out;
 
 	adc0 = MC13XXX_ADC0_ADINC1 | MC13XXX_ADC0_ADINC2 |
 	       MC13XXX_ADC0_CHRGRAWDIV;
drivers/mfd/mt6397-core.c +1 -2
index 77b64bd64df3..ab24e176ef44 100644
@@ -329,8 +329,7 @@ static int mt6397_probe(struct platform_device *pdev)
 
 	default:
 		dev_err(&pdev->dev, "unsupported chip: %d\n", id);
-		ret = -ENODEV;
-		break;
+		return -ENODEV;
 	}
 
 	if (ret) {
drivers/mfd/qcom_rpm.c +4 -0
index 52fafea06067..8d420c37b2a6 100644
@@ -638,6 +638,10 @@ static int qcom_rpm_probe(struct platform_device *pdev)
 		return -EFAULT;
 	}
 
+	writel(fw_version[0], RPM_CTRL_REG(rpm, 0));
+	writel(fw_version[1], RPM_CTRL_REG(rpm, 1));
+	writel(fw_version[2], RPM_CTRL_REG(rpm, 2));
+
 	dev_info(&pdev->dev, "RPM firmware %u.%u.%u\n", fw_version[0],
 							fw_version[1],
 							fw_version[2]);
drivers/mfd/ti_am335x_tscadc.c +3 -2
index c2d47d78705b..fd111296b959 100644
@@ -264,8 +264,9 @@ static	int ti_tscadc_probe(struct platform_device *pdev)
 		cell->pdata_size = sizeof(tscadc);
 	}
 
-	err = mfd_add_devices(&pdev->dev, pdev->id, tscadc->cells,
-			tscadc->used_cells, NULL, 0, NULL);
+	err = mfd_add_devices(&pdev->dev, PLATFORM_DEVID_AUTO,
+			      tscadc->cells, tscadc->used_cells, NULL,
+			      0, NULL);
 	if (err < 0)
 		goto err_disable_clk;
 
drivers/mfd/tps65218.c +3 -21
index 910f569ff77c..8bcdecf494d0 100644
@@ -235,9 +235,9 @@ static int tps65218_probe(struct i2c_client *client,
 
 	mutex_init(&tps->tps_lock);
 
-	ret = regmap_add_irq_chip(tps->regmap, tps->irq,
-			IRQF_ONESHOT, 0, &tps65218_irq_chip,
-			&tps->irq_data);
+	ret = devm_regmap_add_irq_chip(&client->dev, tps->regmap, tps->irq,
+				       IRQF_ONESHOT, 0, &tps65218_irq_chip,
+				       &tps->irq_data);
 	if (ret < 0)
 		return ret;
 
@@ -253,26 +253,9 @@ static int tps65218_probe(struct i2c_client *client,
 			      ARRAY_SIZE(tps65218_cells), NULL, 0,
 			      regmap_irq_get_domain(tps->irq_data));
 
-	if (ret < 0)
-		goto err_irq;
-
-	return 0;
-
-err_irq:
-	regmap_del_irq_chip(tps->irq, tps->irq_data);
-
 	return ret;
 }
 
-static int tps65218_remove(struct i2c_client *client)
-{
-	struct tps65218 *tps = i2c_get_clientdata(client);
-
-	regmap_del_irq_chip(tps->irq, tps->irq_data);
-
-	return 0;
-}
-
 static const struct i2c_device_id tps65218_id_table[] = {
 	{ "tps65218", TPS65218 },
 	{ },
@@ -285,7 +268,6 @@ static struct i2c_driver tps65218_driver = {
 		.of_match_table = of_tps65218_match_table,
 	},
 	.probe		= tps65218_probe,
-	.remove		= tps65218_remove,
 	.id_table       = tps65218_id_table,
 };
 
drivers/mfd/twl-core.c +2 -2
index 4be3d239da9e..299016bc46d9 100644
@@ -979,7 +979,7 @@ add_children(struct twl4030_platform_data *pdata, unsigned irq_base,
  * letting it generate the right frequencies for USB, MADC, and
  * other purposes.
  */
-static inline int __init protect_pm_master(void)
+static inline int protect_pm_master(void)
 {
 	int e = 0;
 
@@ -988,7 +988,7 @@ static inline int __init protect_pm_master(void)
 	return e;
 }
 
-static inline int __init unprotect_pm_master(void)
+static inline int unprotect_pm_master(void)
 {
 	int e = 0;
 
drivers/mfd/wm5110-tables.c +2 -0
index 1ee68bd440fb..16c6e2accfaa 100644
@@ -1618,6 +1618,7 @@ static const struct reg_default wm5110_reg_default[] = {
 	{ 0x00000ECD, 0x0000 },    /* R3789  - HPLPF4_2 */
 	{ 0x00000EE0, 0x0000 },    /* R3808  - ASRC_ENABLE */
 	{ 0x00000EE2, 0x0000 },    /* R3810  - ASRC_RATE1 */
+	{ 0x00000EE3, 0x4000 },    /* R3811  - ASRC_RATE2 */
 	{ 0x00000EF0, 0x0000 },    /* R3824  - ISRC 1 CTRL 1 */
 	{ 0x00000EF1, 0x0000 },    /* R3825  - ISRC 1 CTRL 2 */
 	{ 0x00000EF2, 0x0000 },    /* R3826  - ISRC 1 CTRL 3 */
@@ -2869,6 +2870,7 @@ static bool wm5110_readable_register(struct device *dev, unsigned int reg)
 	case ARIZONA_ASRC_ENABLE:
 	case ARIZONA_ASRC_STATUS:
 	case ARIZONA_ASRC_RATE1:
+	case ARIZONA_ASRC_RATE2:
 	case ARIZONA_ISRC_1_CTRL_1:
 	case ARIZONA_ISRC_1_CTRL_2:
 	case ARIZONA_ISRC_1_CTRL_3:
drivers/net/ethernet/amazon/ena/ena_netdev.c +5 -5
index a70bb1bb90e7..a6eacf2099c3 100644
@@ -2663,11 +2663,6 @@ static int ena_restore_device(struct ena_adapter *adapter)
 		goto err_device_destroy;
 	}
 
-	clear_bit(ENA_FLAG_ONGOING_RESET, &adapter->flags);
-	/* Make sure we don't have a race with AENQ Links state handler */
-	if (test_bit(ENA_FLAG_LINK_UP, &adapter->flags))
-		netif_carrier_on(adapter->netdev);
-
 	rc = ena_enable_msix_and_set_admin_interrupts(adapter,
 						      adapter->num_queues);
 	if (rc) {
@@ -2684,6 +2679,11 @@ static int ena_restore_device(struct ena_adapter *adapter)
 	}
 
 	set_bit(ENA_FLAG_DEVICE_RUNNING, &adapter->flags);
+
+	clear_bit(ENA_FLAG_ONGOING_RESET, &adapter->flags);
+	if (test_bit(ENA_FLAG_LINK_UP, &adapter->flags))
+		netif_carrier_on(adapter->netdev);
+
 	mod_timer(&adapter->timer_service, round_jiffies(jiffies + HZ));
 	dev_err(&pdev->dev,
 		"Device reset completed successfully, Driver info: %s\n",
drivers/net/ethernet/freescale/dpaa/dpaa_eth.c +6 -0
index 6e0f47f2c8a3..3e53be0fcd7e 100644
@@ -2051,6 +2051,7 @@ dpaa_start_xmit(struct sk_buff *skb, struct net_device *net_dev)
 	bool nonlinear = skb_is_nonlinear(skb);
 	struct rtnl_link_stats64 *percpu_stats;
 	struct dpaa_percpu_priv *percpu_priv;
+	struct netdev_queue *txq;
 	struct dpaa_priv *priv;
 	struct qm_fd fd;
 	int offset = 0;
@@ -2100,6 +2101,11 @@ dpaa_start_xmit(struct sk_buff *skb, struct net_device *net_dev)
 	if (unlikely(err < 0))
 		goto skb_to_fd_failed;
 
+	txq = netdev_get_tx_queue(net_dev, queue_mapping);
+
+	/* LLTX requires to do our own update of trans_start */
+	txq->trans_start = jiffies;
+
 	if (priv->tx_tstamp && skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) {
 		fd.cmd |= cpu_to_be32(FM_FD_CMD_UPD);
 		skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c +2 -4
index ad1779fc410e..a78bfafd212c 100644
@@ -147,12 +147,10 @@ static void hns_ae_put_handle(struct hnae_handle *handle)
 	struct hnae_vf_cb *vf_cb = hns_ae_get_vf_cb(handle);
 	int i;
 
-	vf_cb->mac_cb	 = NULL;
-
-	kfree(vf_cb);
-
 	for (i = 0; i < handle->q_num; i++)
 		hns_ae_get_ring_pair(handle->qs[i])->used_by_vf = 0;
+
+	kfree(vf_cb);
 }
 
 static int hns_ae_wait_flow_down(struct hnae_handle *handle)
drivers/net/ethernet/mellanox/mlx4/en_rx.c +20 -2
index db00bf1c23f5..d47d4f86ac11 100644
@@ -620,6 +620,8 @@ static int get_fixed_ipv6_csum(__wsum hw_checksum, struct sk_buff *skb,
 }
 #endif
 
+#define short_frame(size) ((size) <= ETH_ZLEN + ETH_FCS_LEN)
+
 /* We reach this function only after checking that any of
  * the (IPv4 | IPv6) bits are set in cqe->status.
  */
@@ -627,9 +629,20 @@ static int check_csum(struct mlx4_cqe *cqe, struct sk_buff *skb, void *va,
 		      netdev_features_t dev_features)
 {
 	__wsum hw_checksum = 0;
+	void *hdr;
+
+	/* CQE csum doesn't cover padding octets in short ethernet
+	 * frames. And the pad field is appended prior to calculating
+	 * and appending the FCS field.
+	 *
+	 * Detecting these padded frames requires to verify and parse
+	 * IP headers, so we simply force all those small frames to skip
+	 * checksum complete.
+	 */
+	if (short_frame(skb->len))
+		return -EINVAL;
 
-	void *hdr = (u8 *)va + sizeof(struct ethhdr);
-
+	hdr = (u8 *)va + sizeof(struct ethhdr);
 	hw_checksum = csum_unfold((__force __sum16)cqe->checksum);
 
 	if (cqe->vlan_my_qpn & cpu_to_be32(MLX4_CQE_CVLAN_PRESENT_MASK) &&
@@ -822,6 +835,11 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struct mlx4_en_cq *cq, int bud
 		skb_record_rx_queue(skb, cq_ring);
 
 		if (likely(dev->features & NETIF_F_RXCSUM)) {
+			/* TODO: For IP non TCP/UDP packets when csum complete is
+			 * not an option (not supported or any other reason) we can
+			 * actually check cqe IPOK status bit and report
+			 * CHECKSUM_UNNECESSARY rather than CHECKSUM_NONE
+			 */
 			if ((cqe->status & cpu_to_be16(MLX4_CQE_STATUS_TCP |
 						       MLX4_CQE_STATUS_UDP)) &&
 			    (cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPOK)) &&
drivers/net/ethernet/mellanox/mlx4/icm.c +56 -36

179 lines not on this page · raw message

drivers/net/ethernet/mellanox/mlx4/icm.h +19 -3
index c9169a490557..d199874b1c07 100644
@@ -47,11 +47,21 @@ enum {
 	MLX4_ICM_PAGE_SIZE	= 1 << MLX4_ICM_PAGE_SHIFT,
 };
 
+struct mlx4_icm_buf {
+	void			*addr;
+	size_t			size;
+	dma_addr_t		dma_addr;
+};
+
 struct mlx4_icm_chunk {
 	struct list_head	list;
 	int			npages;
 	int			nsg;
-	struct scatterlist	mem[MLX4_ICM_CHUNK_LEN];
+	bool			coherent;
+	union {
+		struct scatterlist	sg[MLX4_ICM_CHUNK_LEN];
+		struct mlx4_icm_buf	buf[MLX4_ICM_CHUNK_LEN];
+	};
 };
 
 struct mlx4_icm {
@@ -114,12 +124,18 @@ static inline void mlx4_icm_next(struct mlx4_icm_iter *iter)
 
 static inline dma_addr_t mlx4_icm_addr(struct mlx4_icm_iter *iter)
 {
-	return sg_dma_address(&iter->chunk->mem[iter->page_idx]);
+	if (iter->chunk->coherent)
+		return iter->chunk->buf[iter->page_idx].dma_addr;
+	else
+		return sg_dma_address(&iter->chunk->sg[iter->page_idx]);
 }
 
 static inline unsigned long mlx4_icm_size(struct mlx4_icm_iter *iter)
 {
-	return sg_dma_len(&iter->chunk->mem[iter->page_idx]);
+	if (iter->chunk->coherent)
+		return iter->chunk->buf[iter->page_idx].size;
+	else
+		return sg_dma_len(&iter->chunk->sg[iter->page_idx]);
 }
 
 int mlx4_MAP_ICM_AUX(struct mlx4_dev *dev, struct mlx4_icm *icm);
drivers/net/ethernet/mellanox/mlx5/core/en.h +1 -0
index 118324802926..7c72b3b5eedf 100644
@@ -636,6 +636,7 @@ enum {
 	MLX5E_STATE_ASYNC_EVENTS_ENABLED,
 	MLX5E_STATE_OPENED,
 	MLX5E_STATE_DESTROYING,
+	MLX5E_STATE_XDP_TX_ENABLED,
 };
 
 struct mlx5e_rqt {
drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c +2 -4
index ad6d471d00dd..4a33c9a7cac7 100644
@@ -262,7 +262,8 @@ int mlx5e_xdp_xmit(struct net_device *dev, int n, struct xdp_frame **frames,
 	int sq_num;
 	int i;
 
-	if (unlikely(!test_bit(MLX5E_STATE_OPENED, &priv->state)))
+	/* this flag is sufficient, no need to test internal sq state */
+	if (unlikely(!mlx5e_xdp_tx_is_enabled(priv)))
 		return -ENETDOWN;
 
 	if (unlikely(flags & ~XDP_XMIT_FLAGS_MASK))
@@ -275,9 +276,6 @@ int mlx5e_xdp_xmit(struct net_device *dev, int n, struct xdp_frame **frames,
 
 	sq = &priv->channels.c[sq_num]->xdpsq;
 
-	if (unlikely(!test_bit(MLX5E_SQ_STATE_ENABLED, &sq->state)))
-		return -ENETDOWN;
-
 	for (i = 0; i < n; i++) {
 		struct xdp_frame *xdpf = frames[i];
 		struct mlx5e_xdp_info xdpi;
drivers/net/ethernet/mellanox/mlx5/core/en/xdp.h +17 -0
index 6dfab045925f..4d096623178b 100644
@@ -49,6 +49,23 @@ bool mlx5e_xmit_xdp_frame(struct mlx5e_xdpsq *sq, struct mlx5e_xdp_info *xdpi);
 int mlx5e_xdp_xmit(struct net_device *dev, int n, struct xdp_frame **frames,
 		   u32 flags);
 
+static inline void mlx5e_xdp_tx_enable(struct mlx5e_priv *priv)
+{
+	set_bit(MLX5E_STATE_XDP_TX_ENABLED, &priv->state);
+}
+
+static inline void mlx5e_xdp_tx_disable(struct mlx5e_priv *priv)
+{
+	clear_bit(MLX5E_STATE_XDP_TX_ENABLED, &priv->state);
+	/* let other device's napi(s) see our new state */
+	synchronize_rcu();
+}
+
+static inline bool mlx5e_xdp_tx_is_enabled(struct mlx5e_priv *priv)
+{
+	return test_bit(MLX5E_STATE_XDP_TX_ENABLED, &priv->state);
+}
+
 static inline void mlx5e_xmit_xdp_doorbell(struct mlx5e_xdpsq *sq)
 {
 	struct mlx5_wq_cyc *wq = &sq->wq;
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +2 -0
index 9577d0657839..1d66a4e22d64 100644
@@ -2903,6 +2903,7 @@ void mlx5e_activate_priv_channels(struct mlx5e_priv *priv)
 
 	mlx5e_build_tx2sq_maps(priv);
 	mlx5e_activate_channels(&priv->channels);
+	mlx5e_xdp_tx_enable(priv);
 	netif_tx_start_all_queues(priv->netdev);
 
 	if (MLX5_ESWITCH_MANAGER(priv->mdev))
@@ -2924,6 +2925,7 @@ void mlx5e_deactivate_priv_channels(struct mlx5e_priv *priv)
 	 */
 	netif_tx_stop_all_queues(priv->netdev);
 	netif_tx_disable(priv->netdev);
+	mlx5e_xdp_tx_disable(priv);
 	mlx5e_deactivate_channels(&priv->channels);
 }
 
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +1 -0
index 820fe85100b0..4dccc84fdcf2 100644
@@ -143,6 +143,7 @@ static void mlx5e_rep_update_sw_counters(struct mlx5e_priv *priv)
 
 			s->tx_packets		+= sq_stats->packets;
 			s->tx_bytes		+= sq_stats->bytes;
+			s->tx_queue_dropped	+= sq_stats->dropped;
 		}
 	}
 }
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +15 -10
index 4e0151918db1..3fba80a8b436 100644
@@ -98,6 +98,7 @@ struct mlx5e_tc_flow_parse_attr {
 	struct ip_tunnel_info tun_info;
 	struct mlx5_flow_spec spec;
 	int num_mod_hdr_actions;
+	int max_mod_hdr_actions;
 	void *mod_hdr_actions;
 	int mirred_ifindex;
 };
@@ -1888,9 +1889,9 @@ static struct mlx5_fields fields[] = {
 	OFFLOAD(UDP_DPORT, 2, udp.dest,   0),
 };
 
-/* On input attr->num_mod_hdr_actions tells how many HW actions can be parsed at
- * max from the SW pedit action. On success, it says how many HW actions were
- * actually parsed.
+/* On input attr->max_mod_hdr_actions tells how many HW actions can be parsed at
+ * max from the SW pedit action. On success, attr->num_mod_hdr_actions
+ * says how many HW actions were actually parsed.
  */
 static int offload_pedit_fields(struct pedit_headers *masks,
 				struct pedit_headers *vals,
@@ -1914,9 +1915,11 @@ static int offload_pedit_fields(struct pedit_headers *masks,
 	add_vals = &vals[TCA_PEDIT_KEY_EX_CMD_ADD];
 
 	action_size = MLX5_UN_SZ_BYTES(set_action_in_add_action_in_auto);
-	action = parse_attr->mod_hdr_actions;
-	max_actions = parse_attr->num_mod_hdr_actions;
-	nactions = 0;
+	action = parse_attr->mod_hdr_actions +
+		 parse_attr->num_mod_hdr_actions * action_size;
+
+	max_actions = parse_attr->max_mod_hdr_actions;
+	nactions = parse_attr->num_mod_hdr_actions;
 
 	for (i = 0; i < ARRAY_SIZE(fields); i++) {
 		f = &fields[i];
@@ -2027,7 +2030,7 @@ static int alloc_mod_hdr_actions(struct mlx5e_priv *priv,
 	if (!parse_attr->mod_hdr_actions)
 		return -ENOMEM;
 
-	parse_attr->num_mod_hdr_actions = max_actions;
+	parse_attr->max_mod_hdr_actions = max_actions;
 	return 0;
 }
 
@@ -2073,9 +2076,11 @@ static int parse_tc_pedit_action(struct mlx5e_priv *priv,
 			goto out_err;
 	}
 
-	err = alloc_mod_hdr_actions(priv, a, namespace, parse_attr);
-	if (err)
-		goto out_err;
+	if (!parse_attr->mod_hdr_actions) {
+		err = alloc_mod_hdr_actions(priv, a, namespace, parse_attr);
+		if (err)
+			goto out_err;
+	}
 
 	err = offload_pedit_fields(masks, vals, parse_attr, extack);
 	if (err < 0)
drivers/net/ethernet/mellanox/mlx5/core/en_tx.c +6 -0
index 6dacaeba2fbf..0b03d65474e9 100644
@@ -387,8 +387,14 @@ netdev_tx_t mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
 	num_wqebbs = DIV_ROUND_UP(ds_cnt, MLX5_SEND_WQEBB_NUM_DS);
 	contig_wqebbs_room = mlx5_wq_cyc_get_contig_wqebbs(wq, pi);
 	if (unlikely(contig_wqebbs_room < num_wqebbs)) {
+#ifdef CONFIG_MLX5_EN_IPSEC
+		struct mlx5_wqe_eth_seg cur_eth = wqe->eth;
+#endif
 		mlx5e_fill_sq_frag_edge(sq, wq, pi, contig_wqebbs_room);
 		mlx5e_sq_fetch_wqe(sq, &wqe, &pi);
+#ifdef CONFIG_MLX5_EN_IPSEC
+		wqe->eth = cur_eth;
+#endif
 	}
 
 	/* fill wqe */
drivers/net/ethernet/mellanox/mlxsw/Kconfig +1 -0
index 8a291eb36c64..7338c9bac4e6 100644
@@ -78,6 +78,7 @@ config MLXSW_SPECTRUM
 	depends on IPV6 || IPV6=n
 	depends on NET_IPGRE || NET_IPGRE=n
 	depends on IPV6_GRE || IPV6_GRE=n
+	depends on VXLAN || VXLAN=n
 	select GENERIC_ALLOCATOR
 	select PARMAN
 	select MLXFW
drivers/net/ethernet/mellanox/mlxsw/pci.c +2 -2
index c7901a3f2a79..a903e97793f9 100644
@@ -1367,10 +1367,10 @@ static int mlxsw_pci_sw_reset(struct mlxsw_pci *mlxsw_pci,
 		u32 val = mlxsw_pci_read32(mlxsw_pci, FW_READY);
 
 		if ((val & MLXSW_PCI_FW_READY_MASK) == MLXSW_PCI_FW_READY_MAGIC)
-			break;
+			return 0;
 		cond_resched();
 	} while (time_before(jiffies, end));
-	return 0;
+	return -EBUSY;
 }
 
 static int mlxsw_pci_alloc_irq_vectors(struct mlxsw_pci *mlxsw_pci)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c +9 -1
index e3c6fe8b1d40..1dcf152b2813 100644
@@ -75,7 +75,15 @@ mlxsw_sp_acl_ctcam_region_entry_insert(struct mlxsw_sp *mlxsw_sp,
 	act_set = mlxsw_afa_block_first_set(rulei->act_block);
 	mlxsw_reg_ptce2_flex_action_set_memcpy_to(ptce2_pl, act_set);
 
-	return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ptce2), ptce2_pl);
+	err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ptce2), ptce2_pl);
+	if (err)
+		goto err_ptce2_write;
+
+	return 0;
+
+err_ptce2_write:
+	cregion->ops->entry_remove(cregion, centry);
+	return err;
 }
 
 static void
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c +6 -6
index c514af438fc2..b606db9833e9 100644
@@ -1219,7 +1219,7 @@ mlxsw_sp_bridge_port_fdb_flush(struct mlxsw_sp *mlxsw_sp,
 static enum mlxsw_reg_sfd_rec_policy mlxsw_sp_sfd_rec_policy(bool dynamic)
 {
 	return dynamic ? MLXSW_REG_SFD_REC_POLICY_DYNAMIC_ENTRY_INGRESS :
-			 MLXSW_REG_SFD_REC_POLICY_STATIC_ENTRY;
+			 MLXSW_REG_SFD_REC_POLICY_DYNAMIC_ENTRY_MLAG;
 }
 
 static enum mlxsw_reg_sfd_op mlxsw_sp_sfd_op(bool adding)
@@ -1276,7 +1276,7 @@ static int mlxsw_sp_port_fdb_tunnel_uc_op(struct mlxsw_sp *mlxsw_sp,
 static int __mlxsw_sp_port_fdb_uc_op(struct mlxsw_sp *mlxsw_sp, u8 local_port,
 				     const char *mac, u16 fid, bool adding,
 				     enum mlxsw_reg_sfd_rec_action action,
-				     bool dynamic)
+				     enum mlxsw_reg_sfd_rec_policy policy)
 {
 	char *sfd_pl;
 	u8 num_rec;
@@ -1287,8 +1287,7 @@ static int __mlxsw_sp_port_fdb_uc_op(struct mlxsw_sp *mlxsw_sp, u8 local_port,
 		return -ENOMEM;
 
 	mlxsw_reg_sfd_pack(sfd_pl, mlxsw_sp_sfd_op(adding), 0);
-	mlxsw_reg_sfd_uc_pack(sfd_pl, 0, mlxsw_sp_sfd_rec_policy(dynamic),
-			      mac, fid, action, local_port);
+	mlxsw_reg_sfd_uc_pack(sfd_pl, 0, policy, mac, fid, action, local_port);
 	num_rec = mlxsw_reg_sfd_num_rec_get(sfd_pl);
 	err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfd), sfd_pl);
 	if (err)
@@ -1307,7 +1306,8 @@ static int mlxsw_sp_port_fdb_uc_op(struct mlxsw_sp *mlxsw_sp, u8 local_port,
 				   bool dynamic)
 {
 	return __mlxsw_sp_port_fdb_uc_op(mlxsw_sp, local_port, mac, fid, adding,
-					 MLXSW_REG_SFD_REC_ACTION_NOP, dynamic);
+					 MLXSW_REG_SFD_REC_ACTION_NOP,
+					 mlxsw_sp_sfd_rec_policy(dynamic));
 }
 
 int mlxsw_sp_rif_fdb_op(struct mlxsw_sp *mlxsw_sp, const char *mac, u16 fid,
@@ -1315,7 +1315,7 @@ int mlxsw_sp_rif_fdb_op(struct mlxsw_sp *mlxsw_sp, const char *mac, u16 fid,
 {
 	return __mlxsw_sp_port_fdb_uc_op(mlxsw_sp, 0, mac, fid, adding,
 					 MLXSW_REG_SFD_REC_ACTION_FORWARD_IP_ROUTER,
-					 false);
+					 MLXSW_REG_SFD_REC_POLICY_STATIC_ENTRY);
 }
 
 static int mlxsw_sp_port_fdb_uc_lag_op(struct mlxsw_sp *mlxsw_sp, u16 lag_id,
drivers/net/ethernet/qlogic/qed/qed_ll2.c +4 -0
index c6f4bab67a5f..9e728ec82c21 100644
@@ -1603,6 +1603,10 @@ static void qed_ll2_post_rx_buffer_notify_fw(struct qed_hwfn *p_hwfn,
 	cq_prod = qed_chain_get_prod_idx(&p_rx->rcq_chain);
 	rx_prod.bd_prod = cpu_to_le16(bd_prod);
 	rx_prod.cqe_prod = cpu_to_le16(cq_prod);
+
+	/* Make sure chain element is updated before ringing the doorbell */
+	dma_wmb();
+
 	DIRECT_REG_WR(p_rx->set_prod_addr, *((u32 *)&rx_prod));
 }
 
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c +3 -3
index 6c5092e7771c..c5e25580a43f 100644
@@ -263,6 +263,7 @@ static int dwxgmac2_dma_interrupt(void __iomem *ioaddr,
 				  struct stmmac_extra_stats *x, u32 chan)
 {
 	u32 intr_status = readl(ioaddr + XGMAC_DMA_CH_STATUS(chan));
+	u32 intr_en = readl(ioaddr + XGMAC_DMA_CH_INT_EN(chan));
 	int ret = 0;
 
 	/* ABNORMAL interrupts */
@@ -282,8 +283,7 @@ static int dwxgmac2_dma_interrupt(void __iomem *ioaddr,
 		x->normal_irq_n++;
 
 		if (likely(intr_status & XGMAC_RI)) {
-			u32 value = readl(ioaddr + XGMAC_DMA_CH_INT_EN(chan));
-			if (likely(value & XGMAC_RIE)) {
+			if (likely(intr_en & XGMAC_RIE)) {
 				x->rx_normal_irq_n++;
 				ret |= handle_rx;
 			}
@@ -295,7 +295,7 @@ static int dwxgmac2_dma_interrupt(void __iomem *ioaddr,
 	}
 
 	/* Clear interrupts */
-	writel(~0x0, ioaddr + XGMAC_DMA_CH_STATUS(chan));
+	writel(intr_en & intr_status, ioaddr + XGMAC_DMA_CH_STATUS(chan));
 
 	return ret;
 }
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +26 -25

77 lines not on this page · raw message

drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c +10 -0
index c54a50dbd5ac..d819e8eaba12 100644
@@ -299,7 +299,17 @@ static int stmmac_pci_probe(struct pci_dev *pdev,
  */
 static void stmmac_pci_remove(struct pci_dev *pdev)
 {
+	int i;
+
 	stmmac_dvr_remove(&pdev->dev);
+
+	for (i = 0; i <= PCI_STD_RESOURCE_END; i++) {
+		if (pci_resource_len(pdev, i) == 0)
+			continue;
+		pcim_iounmap_regions(pdev, BIT(i));
+		break;
+	}
+
 	pci_disable_device(pdev);
 }
 
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c +2 -0
index 531294f4978b..58ea18af9813 100644
@@ -301,6 +301,8 @@ static int tc_setup_cbs(struct stmmac_priv *priv,
 	/* Queue 0 is not AVB capable */
 	if (queue <= 0 || queue >= tx_queues_count)
 		return -EINVAL;
+	if (!priv->dma_cap.av)
+		return -EOPNOTSUPP;
 	if (priv->speed != SPEED_100 && priv->speed != SPEED_1000)
 		return -EOPNOTSUPP;
 
drivers/net/geneve.c +7 -3
index a0cd1c41cf5f..2e6e11d8cf5c 100644
@@ -1426,9 +1426,13 @@ static void geneve_link_config(struct net_device *dev,
 	}
 #if IS_ENABLED(CONFIG_IPV6)
 	case AF_INET6: {
-		struct rt6_info *rt = rt6_lookup(geneve->net,
-						 &info->key.u.ipv6.dst, NULL, 0,
-						 NULL, 0);
+		struct rt6_info *rt;
+
+		if (!__in6_dev_get(dev))
+			break;
+
+		rt = rt6_lookup(geneve->net, &info->key.u.ipv6.dst, NULL, 0,
+				NULL, 0);
 
 		if (rt && rt->dst.dev)
 			ldev_mtu = rt->dst.dev->mtu - GENEVE_IPV6_HLEN;
drivers/net/phy/micrel.c +1 -0
index 51611c7a23d1..22dfbd4c6aaf 100644
@@ -1076,6 +1076,7 @@ static struct phy_driver ksphy_driver[] = {
 	.driver_data	= &ksz9021_type,
 	.probe		= kszphy_probe,
 	.config_init	= ksz9031_config_init,
+	.soft_reset	= genphy_soft_reset,
 	.read_status	= ksz9031_read_status,
 	.ack_interrupt	= kszphy_ack_interrupt,
 	.config_intr	= kszphy_config_intr,
drivers/net/phy/phylink.c +13 -6
index 9b8dd0d0ee42..b60c82065fd1 100644
@@ -475,6 +475,17 @@ static void phylink_run_resolve(struct phylink *pl)
 		queue_work(system_power_efficient_wq, &pl->resolve);
 }
 
+static void phylink_run_resolve_and_disable(struct phylink *pl, int bit)
+{
+	unsigned long state = pl->phylink_disable_state;
+
+	set_bit(bit, &pl->phylink_disable_state);
+	if (state == 0) {
+		queue_work(system_power_efficient_wq, &pl->resolve);
+		flush_work(&pl->resolve);
+	}
+}
+
 static void phylink_fixed_poll(struct timer_list *t)
 {
 	struct phylink *pl = container_of(t, struct phylink, link_poll);
@@ -928,9 +939,7 @@ void phylink_stop(struct phylink *pl)
 	if (pl->link_an_mode == MLO_AN_FIXED && !IS_ERR(pl->link_gpio))
 		del_timer_sync(&pl->link_poll);
 
-	set_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state);
-	queue_work(system_power_efficient_wq, &pl->resolve);
-	flush_work(&pl->resolve);
+	phylink_run_resolve_and_disable(pl, PHYLINK_DISABLE_STOPPED);
 }
 EXPORT_SYMBOL_GPL(phylink_stop);
 
@@ -1637,9 +1646,7 @@ static void phylink_sfp_link_down(void *upstream)
 
 	ASSERT_RTNL();
 
-	set_bit(PHYLINK_DISABLE_LINK, &pl->phylink_disable_state);
-	queue_work(system_power_efficient_wq, &pl->resolve);
-	flush_work(&pl->resolve);
+	phylink_run_resolve_and_disable(pl, PHYLINK_DISABLE_LINK);
 }
 
 static void phylink_sfp_link_up(void *upstream)
drivers/net/phy/sfp-bus.c +2 -0
index ad9db652874d..fef701bfad62 100644
@@ -347,6 +347,7 @@ static int sfp_register_bus(struct sfp_bus *bus)
 				return ret;
 		}
 	}
+	bus->socket_ops->attach(bus->sfp);
 	if (bus->started)
 		bus->socket_ops->start(bus->sfp);
 	bus->netdev->sfp_bus = bus;
@@ -362,6 +363,7 @@ static void sfp_unregister_bus(struct sfp_bus *bus)
 	if (bus->registered) {
 		if (bus->started)
 			bus->socket_ops->stop(bus->sfp);
+		bus->socket_ops->detach(bus->sfp);
 		if (bus->phydev && ops && ops->disconnect_phy)
 			ops->disconnect_phy(bus->upstream);
 	}
drivers/net/phy/sfp.c +21 -9
index fd8bb998ae52..68c8fbf099f8 100644
@@ -184,6 +184,7 @@ struct sfp {
 
 	struct gpio_desc *gpio[GPIO_MAX];
 
+	bool attached;
 	unsigned int state;
 	struct delayed_work poll;
 	struct delayed_work timeout;
@@ -1475,7 +1476,7 @@ static void sfp_sm_event(struct sfp *sfp, unsigned int event)
 	 */
 	switch (sfp->sm_mod_state) {
 	default:
-		if (event == SFP_E_INSERT) {
+		if (event == SFP_E_INSERT && sfp->attached) {
 			sfp_module_tx_disable(sfp);
 			sfp_sm_ins_next(sfp, SFP_MOD_PROBE, T_PROBE_INIT);
 		}
@@ -1607,6 +1608,19 @@ static void sfp_sm_event(struct sfp *sfp, unsigned int event)
 	mutex_unlock(&sfp->sm_mutex);
 }
 
+static void sfp_attach(struct sfp *sfp)
+{
+	sfp->attached = true;
+	if (sfp->state & SFP_F_PRESENT)
+		sfp_sm_event(sfp, SFP_E_INSERT);
+}
+
+static void sfp_detach(struct sfp *sfp)
+{
+	sfp->attached = false;
+	sfp_sm_event(sfp, SFP_E_REMOVE);
+}
+
 static void sfp_start(struct sfp *sfp)
 {
 	sfp_sm_event(sfp, SFP_E_DEV_UP);
@@ -1667,6 +1681,8 @@ static int sfp_module_eeprom(struct sfp *sfp, struct ethtool_eeprom *ee,
 }
 
 static const struct sfp_socket_ops sfp_module_ops = {
+	.attach = sfp_attach,
+	.detach = sfp_detach,
 	.start = sfp_start,
 	.stop = sfp_stop,
 	.module_info = sfp_module_info,
@@ -1834,10 +1850,6 @@ static int sfp_probe(struct platform_device *pdev)
 	dev_info(sfp->dev, "Host maximum power %u.%uW\n",
 		 sfp->max_power_mW / 1000, (sfp->max_power_mW / 100) % 10);
 
-	sfp->sfp_bus = sfp_register_socket(sfp->dev, sfp, &sfp_module_ops);
-	if (!sfp->sfp_bus)
-		return -ENOMEM;
-
 	/* Get the initial state, and always signal TX disable,
 	 * since the network interface will not be up.
 	 */
@@ -1848,10 +1860,6 @@ static int sfp_probe(struct platform_device *pdev)
 		sfp->state |= SFP_F_RATE_SELECT;
 	sfp_set_state(sfp, sfp->state);
 	sfp_module_tx_disable(sfp);
-	rtnl_lock();
-	if (sfp->state & SFP_F_PRESENT)
-		sfp_sm_event(sfp, SFP_E_INSERT);
-	rtnl_unlock();
 
 	for (i = 0; i < GPIO_MAX; i++) {
 		if (gpio_flags[i] != GPIOD_IN || !sfp->gpio[i])
@@ -1884,6 +1892,10 @@ static int sfp_probe(struct platform_device *pdev)
 		dev_warn(sfp->dev,
 			 "No tx_disable pin: SFP modules will always be emitting.\n");
 
+	sfp->sfp_bus = sfp_register_socket(sfp->dev, sfp, &sfp_module_ops);
+	if (!sfp->sfp_bus)
+		return -ENOMEM;
+
 	return 0;
 }
 
drivers/net/phy/sfp.h +2 -0
index 31b0acf337e2..64f54b0bbd8c 100644
@@ -7,6 +7,8 @@
 struct sfp;
 
 struct sfp_socket_ops {
+	void (*attach)(struct sfp *sfp);
+	void (*detach)(struct sfp *sfp);
 	void (*start)(struct sfp *sfp);
 	void (*stop)(struct sfp *sfp);
 	int (*module_info)(struct sfp *sfp, struct ethtool_modinfo *modinfo);
drivers/net/team/team.c +5 -22
index 364f514d56d8..86db1205a396 100644
@@ -256,17 +256,6 @@ static void __team_option_inst_mark_removed_port(struct team *team,
 	}
 }
 
-static bool __team_option_inst_tmp_find(const struct list_head *opts,
-					const struct team_option_inst *needle)
-{
-	struct team_option_inst *opt_inst;
-
-	list_for_each_entry(opt_inst, opts, tmp_list)
-		if (opt_inst == needle)
-			return true;
-	return false;
-}
-
 static int __team_options_register(struct team *team,
 				   const struct team_option *option,
 				   size_t option_count)
@@ -2460,7 +2449,6 @@ static int team_nl_cmd_options_set(struct sk_buff *skb, struct genl_info *info)
 	int err = 0;
 	int i;
 	struct nlattr *nl_option;
-	LIST_HEAD(opt_inst_list);
 
 	rtnl_lock();
 
@@ -2480,6 +2468,7 @@ static int team_nl_cmd_options_set(struct sk_buff *skb, struct genl_info *info)
 		struct nlattr *opt_attrs[TEAM_ATTR_OPTION_MAX + 1];
 		struct nlattr *attr;
 		struct nlattr *attr_data;
+		LIST_HEAD(opt_inst_list);
 		enum team_option_type opt_type;
 		int opt_port_ifindex = 0; /* != 0 for per-port options */
 		u32 opt_array_index = 0;
@@ -2584,23 +2573,17 @@ static int team_nl_cmd_options_set(struct sk_buff *skb, struct genl_info *info)
 			if (err)
 				goto team_put;
 			opt_inst->changed = true;
-
-			/* dumb/evil user-space can send us duplicate opt,
-			 * keep only the last one
-			 */
-			if (__team_option_inst_tmp_find(&opt_inst_list,
-							opt_inst))
-				continue;
-
 			list_add(&opt_inst->tmp_list, &opt_inst_list);
 		}
 		if (!opt_found) {
 			err = -ENOENT;
 			goto team_put;
 		}
-	}
 
-	err = team_nl_send_event_options_get(team, &opt_inst_list);
+		err = team_nl_send_event_options_get(team, &opt_inst_list);
+		if (err)
+			break;
+	}
 
 team_put:
 	team_nl_team_put(team);
drivers/net/wan/fsl_ucc_hdlc.c +61 -1

86 lines not on this page · raw message

drivers/net/wireless/mediatek/mt76/mt76x0/usb.c +29 -17

81 lines not on this page · raw message

drivers/pinctrl/pinctrl-max77620.c +6 -8
index a7f37063518e..3d05bc1937d4 100644
@@ -34,14 +34,12 @@ enum max77620_pin_ppdrv {
 	MAX77620_PIN_PP_DRV,
 };
 
-enum max77620_pinconf_param {
-	MAX77620_ACTIVE_FPS_SOURCE = PIN_CONFIG_END + 1,
-	MAX77620_ACTIVE_FPS_POWER_ON_SLOTS,
-	MAX77620_ACTIVE_FPS_POWER_DOWN_SLOTS,
-	MAX77620_SUSPEND_FPS_SOURCE,
-	MAX77620_SUSPEND_FPS_POWER_ON_SLOTS,
-	MAX77620_SUSPEND_FPS_POWER_DOWN_SLOTS,
-};
+#define MAX77620_ACTIVE_FPS_SOURCE		(PIN_CONFIG_END + 1)
+#define MAX77620_ACTIVE_FPS_POWER_ON_SLOTS	(PIN_CONFIG_END + 2)
+#define MAX77620_ACTIVE_FPS_POWER_DOWN_SLOTS	(PIN_CONFIG_END + 3)
+#define MAX77620_SUSPEND_FPS_SOURCE		(PIN_CONFIG_END + 4)
+#define MAX77620_SUSPEND_FPS_POWER_ON_SLOTS	(PIN_CONFIG_END + 5)
+#define MAX77620_SUSPEND_FPS_POWER_DOWN_SLOTS	(PIN_CONFIG_END + 6)
 
 struct max77620_pin_function {
 	const char *name;
drivers/pinctrl/qcom/pinctrl-qcs404.c +1 -1
index 7aae52a09ff0..4ffd56ff809e 100644
@@ -79,7 +79,7 @@ enum {
 		.intr_cfg_reg = 0,			\
 		.intr_status_reg = 0,			\
 		.intr_target_reg = 0,			\
-		.tile = NORTH,				\
+		.tile = SOUTH,				\
 		.mux_bit = -1,				\
 		.pull_bit = pull,			\
 		.drv_bit = drv,				\
drivers/scsi/cxgbi/cxgb3i/cxgb3i.c +4 -5
index bf07735275a4..0fc382cb977b 100644
@@ -1144,7 +1144,7 @@ static void ddp_clear_map(struct cxgbi_device *cdev, struct cxgbi_ppm *ppm,
 }
 
 static int ddp_setup_conn_pgidx(struct cxgbi_sock *csk,
-				       unsigned int tid, int pg_idx, bool reply)
+				unsigned int tid, int pg_idx)
 {
 	struct sk_buff *skb = alloc_wr(sizeof(struct cpl_set_tcb_field), 0,
 					GFP_KERNEL);
@@ -1160,7 +1160,7 @@ static int ddp_setup_conn_pgidx(struct cxgbi_sock *csk,
 	req = (struct cpl_set_tcb_field *)skb->head;
 	req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD));
 	OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_SET_TCB_FIELD, tid));
-	req->reply = V_NO_REPLY(reply ? 0 : 1);
+	req->reply = V_NO_REPLY(1);
 	req->cpu_idx = 0;
 	req->word = htons(31);
 	req->mask = cpu_to_be64(0xF0000000);
@@ -1177,11 +1177,10 @@ static int ddp_setup_conn_pgidx(struct cxgbi_sock *csk,
  * @tid: connection id
  * @hcrc: header digest enabled
  * @dcrc: data digest enabled
- * @reply: request reply from h/w
  * set up the iscsi digest settings for a connection identified by tid
  */
 static int ddp_setup_conn_digest(struct cxgbi_sock *csk, unsigned int tid,
-			     int hcrc, int dcrc, int reply)
+				 int hcrc, int dcrc)
 {
 	struct sk_buff *skb = alloc_wr(sizeof(struct cpl_set_tcb_field), 0,
 					GFP_KERNEL);
@@ -1197,7 +1196,7 @@ static int ddp_setup_conn_digest(struct cxgbi_sock *csk, unsigned int tid,
 	req = (struct cpl_set_tcb_field *)skb->head;
 	req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD));
 	OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_SET_TCB_FIELD, tid));
-	req->reply = V_NO_REPLY(reply ? 0 : 1);
+	req->reply = V_NO_REPLY(1);
 	req->cpu_idx = 0;
 	req->word = htons(31);
 	req->mask = cpu_to_be64(0x0F000000);
drivers/scsi/cxgbi/cxgb4i/cxgb4i.c +20 -8
index 064ef5735182..bd6cc014cab0 100644
@@ -1548,16 +1548,22 @@ static void do_set_tcb_rpl(struct cxgbi_device *cdev, struct sk_buff *skb)
 	struct cxgbi_sock *csk;
 
 	csk = lookup_tid(t, tid);
-	if (!csk)
+	if (!csk) {
 		pr_err("can't find conn. for tid %u.\n", tid);
+		return;
+	}
 
 	log_debug(1 << CXGBI_DBG_TOE | 1 << CXGBI_DBG_SOCK,
 		"csk 0x%p,%u,%lx,%u, status 0x%x.\n",
 		csk, csk->state, csk->flags, csk->tid, rpl->status);
 
-	if (rpl->status != CPL_ERR_NONE)
+	if (rpl->status != CPL_ERR_NONE) {
 		pr_err("csk 0x%p,%u, SET_TCB_RPL status %u.\n",
 			csk, tid, rpl->status);
+		csk->err = -EINVAL;
+	}
+
+	complete(&csk->cmpl);
 
 	__kfree_skb(skb);
 }
@@ -1984,7 +1990,7 @@ static int ddp_set_map(struct cxgbi_ppm *ppm, struct cxgbi_sock *csk,
 }
 
 static int ddp_setup_conn_pgidx(struct cxgbi_sock *csk, unsigned int tid,
-				int pg_idx, bool reply)
+				int pg_idx)
 {
 	struct sk_buff *skb;
 	struct cpl_set_tcb_field *req;
@@ -2000,7 +2006,7 @@ static int ddp_setup_conn_pgidx(struct cxgbi_sock *csk, unsigned int tid,
 	req = (struct cpl_set_tcb_field *)skb->head;
 	INIT_TP_WR(req, csk->tid);
 	OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_SET_TCB_FIELD, csk->tid));
-	req->reply_ctrl = htons(NO_REPLY_V(reply) | QUEUENO_V(csk->rss_qid));
+	req->reply_ctrl = htons(NO_REPLY_V(0) | QUEUENO_V(csk->rss_qid));
 	req->word_cookie = htons(0);
 	req->mask = cpu_to_be64(0x3 << 8);
 	req->val = cpu_to_be64(pg_idx << 8);
@@ -2009,12 +2015,15 @@ static int ddp_setup_conn_pgidx(struct cxgbi_sock *csk, unsigned int tid,
 	log_debug(1 << CXGBI_DBG_TOE | 1 << CXGBI_DBG_SOCK,
 		"csk 0x%p, tid 0x%x, pg_idx %u.\n", csk, csk->tid, pg_idx);
 
+	reinit_completion(&csk->cmpl);
 	cxgb4_ofld_send(csk->cdev->ports[csk->port_id], skb);
-	return 0;
+	wait_for_completion(&csk->cmpl);
+
+	return csk->err;
 }
 
 static int ddp_setup_conn_digest(struct cxgbi_sock *csk, unsigned int tid,
-				 int hcrc, int dcrc, int reply)
+				 int hcrc, int dcrc)
 {
 	struct sk_buff *skb;
 	struct cpl_set_tcb_field *req;
@@ -2032,7 +2041,7 @@ static int ddp_setup_conn_digest(struct cxgbi_sock *csk, unsigned int tid,
 	req = (struct cpl_set_tcb_field *)skb->head;
 	INIT_TP_WR(req, tid);
 	OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_SET_TCB_FIELD, tid));
-	req->reply_ctrl = htons(NO_REPLY_V(reply) | QUEUENO_V(csk->rss_qid));
+	req->reply_ctrl = htons(NO_REPLY_V(0) | QUEUENO_V(csk->rss_qid));
 	req->word_cookie = htons(0);
 	req->mask = cpu_to_be64(0x3 << 4);
 	req->val = cpu_to_be64(((hcrc ? ULP_CRC_HEADER : 0) |
@@ -2042,8 +2051,11 @@ static int ddp_setup_conn_digest(struct cxgbi_sock *csk, unsigned int tid,
 	log_debug(1 << CXGBI_DBG_TOE | 1 << CXGBI_DBG_SOCK,
 		"csk 0x%p, tid 0x%x, crc %d,%d.\n", csk, csk->tid, hcrc, dcrc);
 
+	reinit_completion(&csk->cmpl);
 	cxgb4_ofld_send(csk->cdev->ports[csk->port_id], skb);
-	return 0;
+	wait_for_completion(&csk->cmpl);
+
+	return csk->err;
 }
 
 static struct cxgbi_ppm *cdev2ppm(struct cxgbi_device *cdev)
drivers/scsi/cxgbi/libcxgbi.c +4 -3
index 75f876409fb9..245742557c03 100644
@@ -573,6 +573,7 @@ static struct cxgbi_sock *cxgbi_sock_create(struct cxgbi_device *cdev)
 	skb_queue_head_init(&csk->receive_queue);
 	skb_queue_head_init(&csk->write_queue);
 	timer_setup(&csk->retry_timer, NULL, 0);
+	init_completion(&csk->cmpl);
 	rwlock_init(&csk->callback_lock);
 	csk->cdev = cdev;
 	csk->flags = 0;
@@ -2251,14 +2252,14 @@ int cxgbi_set_conn_param(struct iscsi_cls_conn *cls_conn,
 		if (!err && conn->hdrdgst_en)
 			err = csk->cdev->csk_ddp_setup_digest(csk, csk->tid,
 							conn->hdrdgst_en,
-							conn->datadgst_en, 0);
+							conn->datadgst_en);
 		break;
 	case ISCSI_PARAM_DATADGST_EN:
 		err = iscsi_set_param(cls_conn, param, buf, buflen);
 		if (!err && conn->datadgst_en)
 			err = csk->cdev->csk_ddp_setup_digest(csk, csk->tid,
 							conn->hdrdgst_en,
-							conn->datadgst_en, 0);
+							conn->datadgst_en);
 		break;
 	case ISCSI_PARAM_MAX_R2T:
 		return iscsi_tcp_set_max_r2t(conn, buf);
@@ -2384,7 +2385,7 @@ int cxgbi_bind_conn(struct iscsi_cls_session *cls_session,
 
 	ppm = csk->cdev->cdev2ppm(csk->cdev);
 	err = csk->cdev->csk_ddp_setup_pgidx(csk, csk->tid,
-					     ppm->tformat.pgsz_idx_dflt, 0);
+					     ppm->tformat.pgsz_idx_dflt);
 	if (err < 0)
 		return err;
 
drivers/scsi/cxgbi/libcxgbi.h +3 -2
index 5d5d8b50d842..1917ff57651d 100644
@@ -149,6 +149,7 @@ struct cxgbi_sock {
 	struct sk_buff_head receive_queue;
 	struct sk_buff_head write_queue;
 	struct timer_list retry_timer;
+	struct completion cmpl;
 	int err;
 	rwlock_t callback_lock;
 	void *user_data;
@@ -490,9 +491,9 @@ struct cxgbi_device {
 				  struct cxgbi_ppm *,
 				  struct cxgbi_task_tag_info *);
 	int (*csk_ddp_setup_digest)(struct cxgbi_sock *,
-				unsigned int, int, int, int);
+				    unsigned int, int, int);
 	int (*csk_ddp_setup_pgidx)(struct cxgbi_sock *,
-				unsigned int, int, bool);
+				   unsigned int, int);
 
 	void (*csk_release_offload_resources)(struct cxgbi_sock *);
 	int (*csk_rx_pdu_ready)(struct cxgbi_sock *, struct sk_buff *);
drivers/scsi/isci/init.c +7 -7
index 08c7b1e25fe4..dde84f744313 100644
@@ -588,6 +588,13 @@ static struct isci_host *isci_host_alloc(struct pci_dev *pdev, int id)
 	shost->max_lun = ~0;
 	shost->max_cmd_len = MAX_COMMAND_SIZE;
 
+	/* turn on DIF support */
+	scsi_host_set_prot(shost,
+			   SHOST_DIF_TYPE1_PROTECTION |
+			   SHOST_DIF_TYPE2_PROTECTION |
+			   SHOST_DIF_TYPE3_PROTECTION);
+	scsi_host_set_guard(shost, SHOST_DIX_GUARD_CRC);
+
 	err = scsi_add_host(shost, &pdev->dev);
 	if (err)
 		goto err_shost;
@@ -675,13 +682,6 @@ static int isci_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 			goto err_host_alloc;
 		}
 		pci_info->hosts[i] = h;
-
-		/* turn on DIF support */
-		scsi_host_set_prot(to_shost(h),
-				   SHOST_DIF_TYPE1_PROTECTION |
-				   SHOST_DIF_TYPE2_PROTECTION |
-				   SHOST_DIF_TYPE3_PROTECTION);
-		scsi_host_set_guard(to_shost(h), SHOST_DIX_GUARD_CRC);
 	}
 
 	err = isci_setup_interrupts(pdev);
drivers/scsi/qedi/qedi_iscsi.c +3 -0
index 2f0a4f2c5ff8..d4821b9dea45 100644
@@ -954,6 +954,7 @@ static int qedi_ep_poll(struct iscsi_endpoint *ep, int timeout_ms)
 
 	qedi_ep = ep->dd_data;
 	if (qedi_ep->state == EP_STATE_IDLE ||
+	    qedi_ep->state == EP_STATE_OFLDCONN_NONE ||
 	    qedi_ep->state == EP_STATE_OFLDCONN_FAILED)
 		return -1;
 
@@ -1036,6 +1037,7 @@ static void qedi_ep_disconnect(struct iscsi_endpoint *ep)
 
 	switch (qedi_ep->state) {
 	case EP_STATE_OFLDCONN_START:
+	case EP_STATE_OFLDCONN_NONE:
 		goto ep_release_conn;
 	case EP_STATE_OFLDCONN_FAILED:
 			break;
@@ -1226,6 +1228,7 @@ static int qedi_set_path(struct Scsi_Host *shost, struct iscsi_path *path_data)
 
 	if (!is_valid_ether_addr(&path_data->mac_addr[0])) {
 		QEDI_NOTICE(&qedi->dbg_ctx, "dst mac NOT VALID\n");
+		qedi_ep->state = EP_STATE_OFLDCONN_NONE;
 		ret = -EIO;
 		goto set_path_exit;
 	}
drivers/scsi/qedi/qedi_iscsi.h +1 -0
index 11260776212f..892d70d54553 100644
@@ -59,6 +59,7 @@ enum {
 	EP_STATE_OFLDCONN_FAILED        = 0x2000,
 	EP_STATE_CONNECT_FAILED         = 0x4000,
 	EP_STATE_DISCONN_TIMEDOUT       = 0x8000,
+	EP_STATE_OFLDCONN_NONE          = 0x10000,
 };
 
 struct qedi_conn;
drivers/scsi/qla1280.c +1 -1
index 15a50cc7e4b3..c8589926014d 100644
@@ -4259,7 +4259,7 @@ qla1280_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
 	ha->devnum = devnum;	/* specifies microcode load address */
 
 #ifdef QLA_64BIT_PTR
-	if (dma_set_mask(&ha->pdev->dev, DMA_BIT_MASK(64))) {
+	if (dma_set_mask_and_coherent(&ha->pdev->dev, DMA_BIT_MASK(64))) {
 		if (dma_set_mask(&ha->pdev->dev, DMA_BIT_MASK(32))) {
 			printk(KERN_WARNING "scsi(%li): Unable to set a "
 			       "suitable DMA mask - aborting\n", ha->host_no);
drivers/scsi/qla4xxx/ql4_os.c +2 -0
index 051164f755a4..a13396c56a6a 100644
@@ -7237,6 +7237,8 @@ static int qla4xxx_sysfs_ddb_tgt_create(struct scsi_qla_host *ha,
 
 	rc = qla4xxx_copy_from_fwddb_param(fnode_sess, fnode_conn,
 					   fw_ddb_entry);
+	if (rc)
+		goto free_sess;
 
 	ql4_printk(KERN_INFO, ha, "%s: sysfs entry %s created\n",
 		   __func__, fnode_sess->dev.kobj.name);
drivers/scsi/sd_zbc.c +5 -3
index 3f81bab48ac2..7d8442c377df 100644
@@ -142,10 +142,12 @@ int sd_zbc_report_zones(struct gendisk *disk, sector_t sector,
 		return -EOPNOTSUPP;
 
 	/*
-	 * Get a reply buffer for the number of requested zones plus a header.
-	 * For ATA, buffers must be aligned to 512B.
+	 * Get a reply buffer for the number of requested zones plus a header,
+	 * without exceeding the device maximum command size. For ATA disks,
+	 * buffers must be aligned to 512B.
 	 */
-	buflen = roundup((nrz + 1) * 64, 512);
+	buflen = min(queue_max_hw_sectors(disk->queue) << 9,
+		     roundup((nrz + 1) * 64, 512));
 	buf = kmalloc(buflen, gfp_mask);
 	if (!buf)
 		return -ENOMEM;
drivers/scsi/ufs/ufs.h +1 -1
index 58087d3916d0..5417ce09b105 100644
@@ -195,7 +195,7 @@ enum ufs_desc_def_size {
 	QUERY_DESC_CONFIGURATION_DEF_SIZE	= 0x90,
 	QUERY_DESC_UNIT_DEF_SIZE		= 0x23,
 	QUERY_DESC_INTERCONNECT_DEF_SIZE	= 0x06,
-	QUERY_DESC_GEOMETRY_DEF_SIZE		= 0x44,
+	QUERY_DESC_GEOMETRY_DEF_SIZE		= 0x48,
 	QUERY_DESC_POWER_DEF_SIZE		= 0x62,
 	QUERY_DESC_HEALTH_DEF_SIZE		= 0x25,
 };
drivers/scsi/ufs/ufshcd.c +2 -0
index 1cb35ab8a4ec..2772ff4357fc 100644
@@ -7924,6 +7924,8 @@ int ufshcd_system_resume(struct ufs_hba *hba)
 	trace_ufshcd_system_resume(dev_name(hba->dev), ret,
 		ktime_to_us(ktime_sub(ktime_get(), start)),
 		hba->curr_dev_pwr_mode, hba->uic_link_state);
+	if (!ret)
+		hba->is_sys_suspended = false;
 	return ret;
 }
 EXPORT_SYMBOL(ufshcd_system_resume);
drivers/soc/fsl/qe/qe_tdm.c +0 -55

67 lines not on this page · raw message

drivers/staging/erofs/dir.c +5 -2
index d1cb0d78ab84..e44ca93dcdc6 100644
@@ -53,8 +53,11 @@ static int erofs_fill_dentries(struct dir_context *ctx,
 			strnlen(de_name, maxsize - nameoff) :
 			le16_to_cpu(de[1].nameoff) - nameoff;
 
-		/* the corrupted directory found */
-		BUG_ON(de_namelen < 0);
+		/* a corrupted entry is found */
+		if (unlikely(de_namelen < 0)) {
+			DBG_BUGON(1);
+			return -EIO;
+		}
 
 #ifdef CONFIG_EROFS_FS_DEBUG
 		dbg_namelen = min(EROFS_NAME_LEN - 1, de_namelen);
drivers/staging/erofs/inode.c +8 -2
index 04c61a9d7b76..d7fbf5f4600f 100644
@@ -133,7 +133,13 @@ static int fill_inline_data(struct inode *inode, void *data,
 			return -ENOMEM;
 
 		m_pofs += vi->inode_isize + vi->xattr_isize;
-		BUG_ON(m_pofs + inode->i_size > PAGE_SIZE);
+
+		/* inline symlink data shouldn't across page boundary as well */
+		if (unlikely(m_pofs + inode->i_size > PAGE_SIZE)) {
+			DBG_BUGON(1);
+			kfree(lnk);
+			return -EIO;
+		}
 
 		/* get in-page inline data */
 		memcpy(lnk, data + m_pofs, inode->i_size);
@@ -171,7 +177,7 @@ static int fill_inode(struct inode *inode, int isdir)
 		return PTR_ERR(page);
 	}
 
-	BUG_ON(!PageUptodate(page));
+	DBG_BUGON(!PageUptodate(page));
 	data = page_address(page);
 
 	err = read_inode(inode, data + ofs);
drivers/staging/erofs/internal.h +45 -25

95 lines not on this page · raw message

drivers/staging/erofs/super.c +6 -13
index f69e619807a1..1c2eb69682ef 100644
@@ -40,7 +40,6 @@ static int __init erofs_init_inode_cache(void)
 
 static void erofs_exit_inode_cache(void)
 {
-	BUG_ON(erofs_inode_cachep == NULL);
 	kmem_cache_destroy(erofs_inode_cachep);
 }
 
@@ -303,8 +302,8 @@ static int managed_cache_releasepage(struct page *page, gfp_t gfp_mask)
 	int ret = 1;	/* 0 - busy */
 	struct address_space *const mapping = page->mapping;
 
-	BUG_ON(!PageLocked(page));
-	BUG_ON(mapping->a_ops != &managed_cache_aops);
+	DBG_BUGON(!PageLocked(page));
+	DBG_BUGON(mapping->a_ops != &managed_cache_aops);
 
 	if (PagePrivate(page))
 		ret = erofs_try_to_free_cached_page(mapping, page);
@@ -317,10 +316,10 @@ static void managed_cache_invalidatepage(struct page *page,
 {
 	const unsigned int stop = length + offset;
 
-	BUG_ON(!PageLocked(page));
+	DBG_BUGON(!PageLocked(page));
 
-	/* Check for overflow */
-	BUG_ON(stop > PAGE_SIZE || stop < length);
+	/* Check for potential overflow in debug mode */
+	DBG_BUGON(stop > PAGE_SIZE || stop < length);
 
 	if (offset == 0 && stop == PAGE_SIZE)
 		while (!managed_cache_releasepage(page, GFP_NOFS))
@@ -442,12 +441,6 @@ static int erofs_read_super(struct super_block *sb,
 
 	erofs_register_super(sb);
 
-	/*
-	 * We already have a positive dentry, which was instantiated
-	 * by d_make_root. Just need to d_rehash it.
-	 */
-	d_rehash(sb->s_root);
-
 	if (!silent)
 		infoln("mounted on %s with opts: %s.", dev_name,
 			(char *)data);
@@ -655,7 +648,7 @@ static int erofs_remount(struct super_block *sb, int *flags, char *data)
 	unsigned int org_inject_rate = erofs_get_fault_rate(sbi);
 	int err;
 
-	BUG_ON(!sb_rdonly(sb));
+	DBG_BUGON(!sb_rdonly(sb));
 	err = parse_options(sb, data);
 	if (err)
 		goto out;
drivers/staging/erofs/unzip_pagevec.h +1 -1
index 0956615b86f7..23856ba2742d 100644
@@ -150,7 +150,7 @@ z_erofs_pagevec_ctor_dequeue(struct z_erofs_pagevec_ctor *ctor,
 	erofs_vtptr_t t;
 
 	if (unlikely(ctor->index >= ctor->nr)) {
-		BUG_ON(ctor->next == NULL);
+		DBG_BUGON(!ctor->next);
 		z_erofs_pagevec_ctor_pagedown(ctor, true);
 	}
 
drivers/staging/erofs/unzip_vle.c +14 -21
index 45e88bada907..1c4b3e0343f5 100644
@@ -20,9 +20,6 @@ static struct kmem_cache *z_erofs_workgroup_cachep __read_mostly;
 
 void z_erofs_exit_zip_subsystem(void)
 {
-	BUG_ON(z_erofs_workqueue == NULL);
-	BUG_ON(z_erofs_workgroup_cachep == NULL);
-
 	destroy_workqueue(z_erofs_workqueue);
 	kmem_cache_destroy(z_erofs_workgroup_cachep);
 }
@@ -366,7 +363,10 @@ z_erofs_vle_work_register(const struct z_erofs_vle_work_finder *f,
 	struct z_erofs_vle_work *work;
 
 	/* if multiref is disabled, grp should never be nullptr */
-	BUG_ON(grp != NULL);
+	if (unlikely(grp)) {
+		DBG_BUGON(1);
+		return ERR_PTR(-EINVAL);
+	}
 
 	/* no available workgroup, let's allocate one */
 	grp = kmem_cache_zalloc(z_erofs_workgroup_cachep, GFP_NOFS);
@@ -745,7 +745,7 @@ static inline void z_erofs_vle_read_endio(struct bio *bio)
 		bool cachemngd = false;
 
 		DBG_BUGON(PageUptodate(page));
-		BUG_ON(page->mapping == NULL);
+		DBG_BUGON(!page->mapping);
 
 #ifdef EROFS_FS_HAS_MANAGED_CACHE
 		if (unlikely(mngda == NULL && !z_erofs_is_stagingpage(page))) {
@@ -803,7 +803,7 @@ static int z_erofs_vle_unzip(struct super_block *sb,
 
 	might_sleep();
 	work = z_erofs_vle_grab_primary_work(grp);
-	BUG_ON(!READ_ONCE(work->nr_pages));
+	DBG_BUGON(!READ_ONCE(work->nr_pages));
 
 	mutex_lock(&work->lock);
 	nr_pages = work->nr_pages;
@@ -852,8 +852,8 @@ static int z_erofs_vle_unzip(struct super_block *sb,
 		else
 			pagenr = z_erofs_onlinepage_index(page);
 
-		BUG_ON(pagenr >= nr_pages);
-		BUG_ON(pages[pagenr] != NULL);
+		DBG_BUGON(pagenr >= nr_pages);
+		DBG_BUGON(pages[pagenr]);
 
 		pages[pagenr] = page;
 	}
@@ -876,9 +876,8 @@ static int z_erofs_vle_unzip(struct super_block *sb,
 		if (z_erofs_is_stagingpage(page))
 			continue;
 #ifdef EROFS_FS_HAS_MANAGED_CACHE
-		else if (page->mapping == mngda) {
-			BUG_ON(PageLocked(page));
-			BUG_ON(!PageUptodate(page));
+		if (page->mapping == mngda) {
+			DBG_BUGON(!PageUptodate(page));
 			continue;
 		}
 #endif
@@ -886,8 +885,8 @@ static int z_erofs_vle_unzip(struct super_block *sb,
 		/* only non-head page could be reused as a compressed page */
 		pagenr = z_erofs_onlinepage_index(page);
 
-		BUG_ON(pagenr >= nr_pages);
-		BUG_ON(pages[pagenr] != NULL);
+		DBG_BUGON(pagenr >= nr_pages);
+		DBG_BUGON(pages[pagenr]);
 		++sparsemem_pages;
 		pages[pagenr] = page;
 
@@ -897,9 +896,6 @@ static int z_erofs_vle_unzip(struct super_block *sb,
 	llen = (nr_pages << PAGE_SHIFT) - work->pageofs;
 
 	if (z_erofs_vle_workgrp_fmt(grp) == Z_EROFS_VLE_WORKGRP_FMT_PLAIN) {
-		/* FIXME! this should be fixed in the future */
-		BUG_ON(grp->llen != llen);
-
 		err = z_erofs_vle_plain_copy(compressed_pages, clusterpages,
 			pages, nr_pages, work->pageofs);
 		goto out;
@@ -914,10 +910,8 @@ static int z_erofs_vle_unzip(struct super_block *sb,
 	if (err != -ENOTSUPP)
 		goto out_percpu;
 
-	if (sparsemem_pages >= nr_pages) {
-		BUG_ON(sparsemem_pages > nr_pages);
+	if (sparsemem_pages >= nr_pages)
 		goto skip_allocpage;
-	}
 
 	for (i = 0; i < nr_pages; ++i) {
 		if (pages[i] != NULL)
@@ -1010,7 +1004,7 @@ static void z_erofs_vle_unzip_wq(struct work_struct *work)
 		struct z_erofs_vle_unzip_io_sb, io.u.work);
 	LIST_HEAD(page_pool);
 
-	BUG_ON(iosb->io.head == Z_EROFS_VLE_WORKGRP_TAIL_CLOSED);
+	DBG_BUGON(iosb->io.head == Z_EROFS_VLE_WORKGRP_TAIL_CLOSED);
 	z_erofs_vle_unzip_all(iosb->sb, &iosb->io, &page_pool);
 
 	put_pages_list(&page_pool);
@@ -1344,7 +1338,6 @@ static int z_erofs_vle_normalaccess_readpages(struct file *filp,
 			continue;
 		}
 
-		BUG_ON(PagePrivate(page));
 		set_page_private(page, (unsigned long)head);
 		head = page;
 	}
drivers/staging/erofs/unzip_vle_lz4.c +1 -1
index 1a428658cbea..16ac335ee59f 100644
@@ -57,7 +57,7 @@ int z_erofs_vle_plain_copy(struct page **compressed_pages,
 			if (compressed_pages[j] != page)
 				continue;
 
-			BUG_ON(mirrored[j]);
+			DBG_BUGON(mirrored[j]);
 			memcpy(percpu_data + j * PAGE_SIZE, dst, PAGE_SIZE);
 			mirrored[j] = true;
 			break;
drivers/staging/erofs/utils.c +6 -6
index d2e3ace91046..b535898ca753 100644
@@ -23,9 +23,6 @@ struct page *erofs_allocpage(struct list_head *pool, gfp_t gfp)
 		list_del(&page->lru);
 	} else {
 		page = alloc_pages(gfp | __GFP_NOFAIL, 0);
-
-		BUG_ON(page == NULL);
-		BUG_ON(page->mapping != NULL);
 	}
 	return page;
 }
@@ -58,7 +55,7 @@ struct erofs_workgroup *erofs_find_workgroup(
 		/* decrease refcount added by erofs_workgroup_put */
 		if (unlikely(oldcount == 1))
 			atomic_long_dec(&erofs_global_shrink_cnt);
-		BUG_ON(index != grp->index);
+		DBG_BUGON(index != grp->index);
 	}
 	rcu_read_unlock();
 	return grp;
@@ -71,8 +68,11 @@ int erofs_register_workgroup(struct super_block *sb,
 	struct erofs_sb_info *sbi;
 	int err;
 
-	/* grp->refcount should not < 1 */
-	BUG_ON(!atomic_read(&grp->refcount));
+	/* grp shouldn't be broken or used before */
+	if (unlikely(atomic_read(&grp->refcount) != 1)) {
+		DBG_BUGON(1);
+		return -EINVAL;
+	}
 
 	err = radix_tree_preload(GFP_NOFS);
 	if (err)
drivers/target/target_core_user.c +61 -27

49 lines not on this page · raw message

drivers/vhost/scsi.c +12 -8
index 73a4adeab096..11bd8b6422eb 100644

Lines of this file are not shown. View the raw message.

drivers/vhost/vhost.c +6 -2
index 5eaeca805c95..b214a72d5caa 100644

Lines of this file are not shown. View the raw message.

drivers/video/backlight/pwm_bl.c +10 -9
index f9ef0673a083..aded3213bfb5 100644

Lines of this file are not shown. View the raw message.

drivers/watchdog/mt7621_wdt.c +1 -0
index 5c4a764717c4..81208cd3f4ec 100644

Lines of this file are not shown. View the raw message.

drivers/watchdog/rt2880_wdt.c +1 -0
index 98967f0a7d10..db7c57d82cfd 100644

Lines of this file are not shown. View the raw message.

drivers/xen/pvcalls-back.c +4 -5
index 2e5d845b5091..7aa64d1b119c 100644

Lines of this file are not shown. View the raw message.

drivers/xen/pvcalls-front.c +72 -28

100 lines not on this page · raw message

fs/afs/flock.c +2 -2
index 0568fd986821..e432bd27a2e7 100644

Lines of this file are not shown. View the raw message.

fs/afs/inode.c +2 -1
index 6b17d3620414..1a4ce07fb406 100644

Lines of this file are not shown. View the raw message.

fs/afs/protocol_yfs.h +11 -0
index 07bc10f076aa..d443e2bfa094 100644

Lines of this file are not shown. View the raw message.

fs/afs/rxrpc.c +42 -11

53 lines not on this page · raw message

fs/afs/yfsclient.c +1 -1
index 12658c1363ae..5aa57929e8c2 100644

Lines of this file are not shown. View the raw message.

fs/ceph/snap.c +2 -1
index 041c27ea8de1..f74193da0e09 100644

Lines of this file are not shown. View the raw message.

fs/proc/base.c +0 -4
index ce3465479447..bde45ca75ba3 100644

Lines of this file are not shown. View the raw message.

include/keys/user-type.h +1 -1
index e098cbe27db5..12babe991594 100644

Lines of this file are not shown. View the raw message.

include/linux/compiler-clang.h +2 -3
index 3e7dafb3ea80..7ddaeb5182e3 100644

Lines of this file are not shown. View the raw message.

include/linux/compiler-gcc.h +0 -4
index 977ddf2774f9..c61c4bb2bd15 100644

Lines of this file are not shown. View the raw message.

include/linux/compiler-intel.h +1 -3
index 517bd14e1222..b17f3cd18334 100644

Lines of this file are not shown. View the raw message.

include/linux/compiler.h +3 -1
index fc5004a4b07d..445348facea9 100644

Lines of this file are not shown. View the raw message.

include/linux/qed/qed_chain.h +31 -0
index 59ddf9af909e..2dd0a9ed5b36 100644

Lines of this file are not shown. View the raw message.

include/linux/skbuff.h +1 -1
index a6d820ad17f0..8e63c166765e 100644

Lines of this file are not shown. View the raw message.

include/linux/virtio_net.h +19 -0
index cb462f9ab7dd..e0348cb0a1dd 100644

Lines of this file are not shown. View the raw message.

include/net/netfilter/nf_flow_table.h +0 -1
index 77e2761d4f2f..ff4eb9869e5b 100644

Lines of this file are not shown. View the raw message.

include/sound/soc.h +6 -0
index 3e0ac310a3df..e721082c84a3 100644

Lines of this file are not shown. View the raw message.

include/trace/events/afs.h +2 -0
index 33d291888ba9..e3f005eae1f7 100644

Lines of this file are not shown. View the raw message.

include/uapi/linux/inet_diag.h +11 -5
index 14565d703291..e8baca85bac6 100644

Lines of this file are not shown. View the raw message.

kernel/bpf/stackmap.c +9 -3
index 90daf285de03..d43b14535827 100644

Lines of this file are not shown. View the raw message.

kernel/trace/trace.c +2 -0
index ff1c4b20cd0a..b331562989bd 100644

Lines of this file are not shown. View the raw message.

kernel/trace/trace_kprobe.c +1 -9
index fec67188c4d2..3387408a15c2 100644

Lines of this file are not shown. View the raw message.

mm/mempolicy.c +3 -3
index d4496d9d34f5..ee2bce59d2bf 100644

Lines of this file are not shown. View the raw message.

net/batman-adv/soft-interface.c +2 -0
index b85ca809e509..ffc83bebfe40 100644

Lines of this file are not shown. View the raw message.

net/bridge/br_fdb.c +5 -0
index e56ba3912a90..8b8abf88befb 100644

Lines of this file are not shown. View the raw message.

net/bridge/br_multicast.c +1 -8
index 6bac0d6b7b94..024139b51d3a 100644

Lines of this file are not shown. View the raw message.

net/ceph/messenger.c +9 -6
index 664f886f464d..b59b81fc1ab6 100644

Lines of this file are not shown. View the raw message.

net/core/filter.c +9 -2
index eb0007f30142..16350f8c8815 100644

Lines of this file are not shown. View the raw message.

net/dsa/port.c +2 -2
index ed0595459df1..792a13068c50 100644

Lines of this file are not shown. View the raw message.

net/ipv4/inet_diag.c +9 -1
index 1a4e9ff02762..5731670c560b 100644

Lines of this file are not shown. View the raw message.

net/ipv4/netfilter/ipt_CLUSTERIP.c +14 -5
index fb1e7f237f53..3cd237b42f44 100644

Lines of this file are not shown. View the raw message.

net/ipv6/netfilter.c +3 -1
index 8b075f0bc351..6d0b1f3e927b 100644

Lines of this file are not shown. View the raw message.

net/ipv6/seg6.c +1 -3
index 8d0ba757a46c..9b2f272ca164 100644

Lines of this file are not shown. View the raw message.

net/ipv6/sit.c +2 -1
index 1e03305c0549..e8a1dabef803 100644

Lines of this file are not shown. View the raw message.

net/ipv6/udp.c +4 -4
index d01ec252cb81..848dd38a907a 100644

Lines of this file are not shown. View the raw message.

net/mac80211/cfg.c +5 -1
index 818aa0060349..517dad83c2fa 100644

Lines of this file are not shown. View the raw message.

net/mac80211/main.c +2 -2
index 7b8320d4a8e4..3131356e290a 100644

Lines of this file are not shown. View the raw message.

net/mac80211/mesh.h +6 -0
index 21526630bf65..e84103b40534 100644

Lines of this file are not shown. View the raw message.

net/mac80211/mesh_pathtbl.c +46 -109

155 lines not on this page · raw message

net/mac80211/rx.c +6 -1
index 85c365fc7a0c..46ecc417c421 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nf_flow_table_core.c +3 -2
index b7a4816add76..cc91b4d6aa22 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nf_tables_api.c +5 -0
index 6e548d7c9f67..5114a0d2a41e 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nfnetlink_osf.c +4 -0
index 6f41dd74729d..1f1d90c1716b 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nft_compat.c +2 -1
index 7334e0b80a5e..c90a4640723f 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nft_flow_offload.c +8 -5
index 974525eb92df..6e6b9adf7d38 100644

Lines of this file are not shown. View the raw message.

net/packet/af_packet.c +1 -1
index 3b1a78906bc0..1cd1d83a4be0 100644

Lines of this file are not shown. View the raw message.

net/sched/cls_tcindex.c +48 -32

80 lines not on this page · raw message

net/sctp/diag.c +1 -0
index 078f01a8d582..435847d98b51 100644

Lines of this file are not shown. View the raw message.

net/sctp/offload.c +1 -0
index 123e9f2dc226..edfcf16e704c 100644

Lines of this file are not shown. View the raw message.

net/sctp/stream.c +3 -1
index f24633114dfd..2936ed17bf9e 100644

Lines of this file are not shown. View the raw message.

net/socket.c +63 -19

82 lines not on this page · raw message

net/sunrpc/auth_gss/auth_gss.c +9 -3
index ba765473d1f0..efeee5586b2a 100644

Lines of this file are not shown. View the raw message.

net/sunrpc/clnt.c +12 -8
index 24cbddc44c88..1ee04e0ec4bc 100644

Lines of this file are not shown. View the raw message.

net/sunrpc/xprt.c +1 -0
index 943f08be7c38..f1ec2110efeb 100644

Lines of this file are not shown. View the raw message.

net/sunrpc/xprtrdma/verbs.c +1 -5
index 919fddec0197..dffedf1df02c 100644

Lines of this file are not shown. View the raw message.

net/xdp/xdp_umem.c +13 -3
index a264cf2accd0..d4de871e7d4d 100644

Lines of this file are not shown. View the raw message.

samples/bpf/Makefile +1 -0
index be0a961450bc..f5ce993c78e4 100644

Lines of this file are not shown. View the raw message.

samples/bpf/asm_goto_workaround.h new file +16 -0
new file mode 100644
index 000000000000..5cd7c1d1a5d5

Lines of this file are not shown. View the raw message.

security/keys/key.c +2 -2
index d97c9394b5dd..249a6da4d277 100644

Lines of this file are not shown. View the raw message.

security/keys/keyring.c +1 -3
index 41bcf57e96f2..99a55145ddcd 100644

Lines of this file are not shown. View the raw message.

security/keys/proc.c +1 -2
index 5af2934965d8..d38be9db2cc0 100644

Lines of this file are not shown. View the raw message.

security/keys/request_key.c +1 -0
index 114f7408feee..738553698649 100644

Lines of this file are not shown. View the raw message.

security/keys/request_key_auth.c +1 -1
index 424e1d90412e..6797843154f0 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_realtek.c +41 -1

42 lines not on this page · raw message

sound/soc/soc-core.c +6 -5
index b29d0f65611e..2d49492d6069 100644

Lines of this file are not shown. View the raw message.

tools/include/uapi/linux/pkt_sched.h new file +1163 -0

1,163 lines not on this page · raw message

tools/testing/selftests/bpf/Makefile +4 -1
index ecd79b7fb107..d5e992f7c7dd 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/bpf/test_progs.c +30 -0
index 6ac7232b0fde..3ec4ce156074 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/bpf/test_sock_addr.c +50 -3

53 lines not on this page · raw message

tools/testing/selftests/net/forwarding/bridge_vlan_aware.sh +46 -1

47 lines not on this page · raw message

tools/testing/selftests/net/ip_defrag.c +87 -9

96 lines not on this page · raw message

tools/testing/selftests/net/ip_defrag.sh +8 -1
index f34672796044..7dd79a9efb17 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/tc-testing/tc-tests/actions/ife.json +44 -44

88 lines not on this page · raw message

tools/testing/selftests/tc-testing/tc-tests/actions/tunnel_key.json +1 -30
index 10b2d894e436..e7e15a7336b6 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.