Skip to contentSkip to conversation

Linux 4.14.177

DISCUSSION Greg KH 1 participant 2 messages Apr 24, 2020 Stable branch

lore
Share & tools
lore

Greg KH

author maintainer
#0 lore raw

I'm announcing the release of the 4.14.177 kernel.

All users of the 4.14 kernel series must upgrade.

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

thanks,

greg k-h

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

 Documentation/sound/hd-audio/index.rst                |    1 
 Documentation/sound/hd-audio/realtek-pc-beep.rst      |  129 +++++++++++++++++
 Makefile                                              |    2 
 arch/arm/net/bpf_jit_32.c                             |   12 +
 arch/arm64/kernel/armv8_deprecated.c                  |    2 
 arch/arm64/kernel/perf_event.c                        |    6 
 arch/arm64/kernel/process.c                           |    8 -
 arch/arm64/kernel/traps.c                             |   65 --------
 arch/mips/cavium-octeon/octeon-irq.c                  |    3 
 arch/powerpc/include/asm/book3s/64/hash-4k.h          |    6 
 arch/powerpc/include/asm/book3s/64/hash-64k.h         |    8 -
 arch/powerpc/include/asm/book3s/64/pgtable.h          |    4 
 arch/powerpc/include/asm/book3s/64/radix.h            |    5 
 arch/powerpc/include/asm/setjmp.h                     |    6 
 arch/powerpc/kernel/Makefile                          |    3 
 arch/powerpc/kernel/idle_book3s.S                     |   27 +++
 arch/powerpc/kernel/kprobes.c                         |    3 
 arch/powerpc/kernel/signal_64.c                       |    4 
 arch/powerpc/mm/tlb_nohash_low.S                      |   12 +
 arch/powerpc/platforms/maple/setup.c                  |   34 ++--
 arch/powerpc/platforms/pseries/lpar.c                 |    2 
 arch/powerpc/sysdev/xive/common.c                     |   12 -
 arch/powerpc/sysdev/xive/native.c                     |    4 
 arch/powerpc/sysdev/xive/spapr.c                      |    4 
 arch/powerpc/sysdev/xive/xive-internal.h              |    7 
 arch/powerpc/xmon/Makefile                            |    3 
 arch/s390/kernel/diag.c                               |    2 
 arch/s390/kernel/processor.c                          |    5 
 arch/s390/kvm/vsie.c                                  |    1 
 arch/s390/mm/gmap.c                                   |    7 
 arch/x86/boot/compressed/head_32.S                    |    2 
 arch/x86/boot/compressed/head_64.S                    |    4 
 arch/x86/entry/entry_32.S                             |    1 
 arch/x86/include/asm/cpufeatures.h                    |    2 
 arch/x86/include/asm/kvm_host.h                       |    2 
 arch/x86/include/asm/microcode_amd.h                  |    2 
 arch/x86/include/asm/pgtable.h                        |    7 
 arch/x86/include/asm/pgtable_types.h                  |    2 
 arch/x86/kernel/acpi/boot.c                           |    2 
 arch/x86/kernel/acpi/cstate.c                         |    3 
 arch/x86/kernel/cpu/intel_rdt.c                       |   68 +++++++--
 arch/x86/kernel/cpu/intel_rdt.h                       |    6 
 arch/x86/kernel/cpu/intel_rdt_rdtgroup.c              |  133 ++++++++++++++----
 arch/x86/kernel/cpu/scattered.c                       |    1 
 arch/x86/kvm/cpuid.c                                  |    3 
 arch/x86/kvm/vmx.c                                    |  106 ++++----------
 arch/x86/kvm/x86.c                                    |   21 ++
 block/bfq-iosched.c                                   |   16 +-
 block/blk-ioc.c                                       |    7 
 block/blk-settings.c                                  |    3 
 drivers/acpi/processor_throttling.c                   |    7 
 drivers/ata/libata-pmp.c                              |    1 
 drivers/ata/libata-scsi.c                             |    9 -
 drivers/base/arch_topology.c                          |    2 
 drivers/block/null_blk.c                              |   10 +
 drivers/block/rbd.c                                   |   25 ++-
 drivers/bus/sunxi-rsb.c                               |    2 
 drivers/char/ipmi/ipmi_msghandler.c                   |    4 
 drivers/clk/at91/clk-usb.c                            |    3 
 drivers/clk/clk.c                                     |   32 ++--
 drivers/clk/tegra/clk-tegra-pmc.c                     |   12 -
 drivers/cpufreq/powernv-cpufreq.c                     |    6 
 drivers/crypto/caam/caamalg_desc.c                    |   16 +-
 drivers/crypto/mxs-dcp.c                              |   58 +++----
 drivers/firmware/efi/efi.c                            |    2 
 drivers/gpio/gpiolib.c                                |   31 ----
 drivers/gpu/drm/amd/amdkfd/kfd_device.c               |    4 
 drivers/gpu/drm/drm_dp_mst_topology.c                 |   15 +-
 drivers/gpu/drm/drm_pci.c                             |   25 ---
 drivers/i2c/busses/i2c-st.c                           |    1 
 drivers/input/serio/i8042-x86ia64io.h                 |   11 +
 drivers/iommu/amd_iommu_types.h                       |    2 
 drivers/iommu/intel-svm.c                             |    7 
 drivers/irqchip/irq-gic-v3-its.c                      |    6 
 drivers/irqchip/irq-mbigen.c                          |    8 -
 drivers/irqchip/irq-versatile-fpga.c                  |   18 +-
 drivers/md/dm-flakey.c                                |    5 
 drivers/md/dm-verity-fec.c                            |    1 
 drivers/md/dm-zoned-metadata.c                        |    1 
 drivers/media/platform/ti-vpe/cal.c                   |   16 +-
 drivers/mfd/dln2.c                                    |    9 -
 drivers/mfd/rts5227.c                                 |    1 
 drivers/misc/echo/echo.c                              |    2 
 drivers/mtd/devices/phram.c                           |   15 +-
 drivers/mtd/lpddr/lpddr_cmds.c                        |    1 
 drivers/net/dsa/bcm_sf2_cfp.c                         |    9 -
 drivers/net/ethernet/amd/xgbe/xgbe-drv.c              |    2 
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_ptp.c        |    3 
 drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c     |    3 
 drivers/net/ethernet/huawei/hinic/hinic_hw_dev.c      |   51 ------
 drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c     |    5 
 drivers/net/ethernet/neterion/vxge/vxge-config.h      |    2 
 drivers/net/ethernet/neterion/vxge/vxge-main.h        |   14 -
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c |    2 
 drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c     |    2 
 drivers/net/wireless/ath/ath9k/main.c                 |    3 
 drivers/net/wireless/ath/wil6210/cfg80211.c           |    7 
 drivers/net/wireless/ath/wil6210/debugfs.c            |    7 
 drivers/net/wireless/ath/wil6210/fw_inc.c             |   58 +++++--
 drivers/net/wireless/ath/wil6210/interrupt.c          |   22 ++
 drivers/net/wireless/ath/wil6210/main.c               |    2 
 drivers/net/wireless/ath/wil6210/pcie_bus.c           |   24 ++-
 drivers/net/wireless/ath/wil6210/pm.c                 |   10 -
 drivers/net/wireless/ath/wil6210/txrx.c               |    4 
 drivers/net/wireless/ath/wil6210/wil6210.h            |    5 
 drivers/net/wireless/ath/wil6210/wmi.c                |   13 +
 drivers/net/wireless/mac80211_hwsim.c                 |   12 -
 drivers/nvdimm/bus.c                                  |    6 
 drivers/nvme/host/fc.c                                |   14 -
 drivers/nvme/target/fcloop.c                          |    1 
 drivers/of/base.c                                     |    3 
 drivers/of/unittest.c                                 |    7 
 drivers/pci/endpoint/pci-epc-mem.c                    |   10 +
 drivers/pci/pcie/aspm.c                               |    4 
 drivers/pci/switch/switchtec.c                        |    2 
 drivers/power/supply/bq27xxx_battery.c                |    5 
 drivers/pwm/pwm-pca9685.c                             |   85 ++++++-----
 drivers/rpmsg/qcom_glink_native.c                     |    1 
 drivers/rpmsg/qcom_glink_smem.c                       |    6 
 drivers/rtc/rtc-88pm860x.c                            |   14 +
 drivers/rtc/rtc-omap.c                                |    4 
 drivers/rtc/rtc-pm8xxx.c                              |   49 +++++-
 drivers/s390/scsi/zfcp_erp.c                          |    2 
 drivers/scsi/lpfc/lpfc_nvme.c                         |    2 
 drivers/scsi/mpt3sas/mpt3sas_scsih.c                  |    8 -
 drivers/scsi/qla2xxx/qla_nvme.c                       |    1 
 drivers/scsi/sg.c                                     |    4 
 drivers/scsi/ufs/ufs-qcom.c                           |    2 
 drivers/scsi/ufs/ufshcd.c                             |   32 +++-
 drivers/soc/imx/gpc.c                                 |   24 +--
 drivers/soc/qcom/smem.c                               |    2 
 drivers/target/iscsi/iscsi_target.c                   |   79 +++-------
 drivers/target/iscsi/iscsi_target.h                   |    1 
 drivers/target/iscsi/iscsi_target_configfs.c          |    5 
 drivers/target/iscsi/iscsi_target_login.c             |    5 
 drivers/tty/ehv_bytechan.c                            |   21 ++
 drivers/usb/dwc3/core.c                               |    5 
 drivers/usb/dwc3/core.h                               |    4 
 drivers/usb/gadget/composite.c                        |    9 +
 drivers/usb/gadget/function/f_fs.c                    |    1 
 drivers/video/fbdev/core/fbmem.c                      |    2 
 drivers/video/fbdev/sis/init301.c                     |    4 
 fs/btrfs/async-thread.c                               |    8 +
 fs/btrfs/async-thread.h                               |    2 
 fs/btrfs/delayed-inode.c                              |   13 +
 fs/btrfs/disk-io.c                                    |   13 +
 fs/btrfs/relocation.c                                 |   39 +++--
 fs/buffer.c                                           |   11 +
 fs/cifs/file.c                                        |    2 
 fs/exec.c                                             |    2 
 fs/ext2/xattr.c                                       |    8 -
 fs/ext4/extents.c                                     |    8 -
 fs/ext4/inode.c                                       |    4 
 fs/ext4/super.c                                       |   11 -
 fs/filesystems.c                                      |    4 
 fs/gfs2/glock.c                                       |    3 
 fs/hfsplus/attributes.c                               |    4 
 fs/jbd2/commit.c                                      |    7 
 fs/nfs/callback_proc.c                                |    2 
 fs/nfs/direct.c                                       |    2 
 fs/nfs/pagelist.c                                     |   17 +-
 fs/nfs/write.c                                        |    1 
 fs/ocfs2/alloc.c                                      |    4 
 include/acpi/processor.h                              |    8 +
 include/keys/big_key-type.h                           |    2 
 include/keys/user-type.h                              |    3 
 include/linux/buffer_head.h                           |    8 +
 include/linux/compiler.h                              |    2 
 include/linux/devfreq_cooling.h                       |    2 
 include/linux/iocontext.h                             |    1 
 include/linux/key-type.h                              |    2 
 include/linux/nvme-fc-driver.h                        |    4 
 include/linux/pci-epc.h                               |    3 
 include/linux/percpu_counter.h                        |    4 
 include/linux/sched.h                                 |    4 
 include/linux/swab.h                                  |    1 
 include/linux/swapops.h                               |    3 
 include/net/ip6_route.h                               |    1 
 include/target/iscsi/iscsi_target_core.h              |    2 
 include/uapi/linux/swab.h                             |   10 +
 kernel/cpu.c                                          |    5 
 kernel/irq/irqdomain.c                                |   10 -
 kernel/kmod.c                                         |    4 
 kernel/locking/lockdep.c                              |    4 
 kernel/locking/locktorture.c                          |    8 -
 kernel/sched/sched.h                                  |    8 -
 kernel/signal.c                                       |    2 
 kernel/trace/trace_events_trigger.c                   |   10 -
 kernel/trace/trace_kprobe.c                           |    2 
 lib/find_bit.c                                        |   16 --
 lib/raid6/neon.uc                                     |    5 
 lib/raid6/recov_neon_inner.c                          |    7 
 mm/page_alloc.c                                       |    8 -
 mm/slub.c                                             |    2 
 mm/vmalloc.c                                          |    8 -
 net/core/dev.c                                        |    3 
 net/core/rtnetlink.c                                  |    2 
 net/dns_resolver/dns_key.c                            |    2 
 net/hsr/hsr_netlink.c                                 |   10 +
 net/ipv4/devinet.c                                    |   13 +
 net/netfilter/nf_tables_api.c                         |    4 
 net/qrtr/qrtr.c                                       |    7 
 net/rxrpc/key.c                                       |   27 +--
 security/keys/big_key.c                               |  119 ++++++++++++----
 security/keys/encrypted-keys/encrypted.c              |    7 
 security/keys/key.c                                   |    2 
 security/keys/keyctl.c                                |   77 +++++++---
 security/keys/keyring.c                               |    6 
 security/keys/request_key_auth.c                      |    7 
 security/keys/trusted.c                               |   14 -
 security/keys/user_defined.c                          |    5 
 sound/core/oss/pcm_plugin.c                           |   32 +++-
 sound/pci/hda/hda_beep.c                              |    6 
 sound/pci/hda/hda_codec.c                             |    1 
 sound/pci/hda/hda_intel.c                             |   35 ++--
 sound/pci/hda/patch_realtek.c                         |   15 +-
 sound/pci/ice1712/prodigy_hifi.c                      |    4 
 sound/soc/intel/atom/sst-atom-controls.c              |    2 
 sound/soc/intel/atom/sst/sst_pci.c                    |    2 
 sound/soc/soc-dapm.c                                  |    8 -
 sound/soc/soc-ops.c                                   |    4 
 sound/soc/soc-pcm.c                                   |    6 
 sound/soc/soc-topology.c                              |    2 
 sound/usb/mixer.c                                     |    2 
 sound/usb/mixer_maps.c                                |   28 +++
 tools/gpio/Makefile                                   |    2 
 tools/objtool/check.c                                 |    5 
 tools/perf/Makefile.config                            |   11 +
 tools/testing/selftests/x86/ptrace_syscall.c          |    8 -
 229 files changed, 1637 insertions(+), 995 deletions(-)

Adrian Huang (1):
iommu/amd: Fix the configuration of GCR3 table root pointer

Alain Volmat (1):
i2c: st: fix missing struct parameter description

Alexander Duyck (1):
mm: Use fixed constant in page_frag_alloc instead of size + 1

Alexander Gordeev (1):
s390/cpuinfo: fix wrong output when CPU0 is offline

Alexander Sverdlin (1):
genirq/irqdomain: Check pointer in irq_domain_alloc_irqs_hierarchy()

Alexandre Belloni (1):

      rtc: 88pm860x: fix possible race condition

Alexey Dobriyan (1):
null_blk: fix spurious IO errors after failed past-wp access

Andrei Botila (1):
crypto: caam - update xts sector size for large input length

Andy Lutomirski (1):
selftests/x86/ptrace_syscall_32: Fix no-vDSO segfault

Andy Shevchenko (1):
mfd: dln2: Fix sanity checking for endpoints

Aneesh Kumar K.V (1):
powerpc/hash64/devmap: Use H_PAGE_THP_HUGE when setting up huge devmap PTE entries

Anssi Hannula (1):
tools: gpio: Fix out-of-tree build regression

Ard Biesheuvel (1):
efi/x86: Ignore the memory attributes table on i386

Arvind Sankar (1):
x86/boot: Use unsigned comparison for addresses

Arvind Yadav (1):
rpmsg: glink: use put_device() if device_register fail

Austin Kim (1):

      mm/vmalloc.c: move 'area->pages' after if statement

Bart Van Assche (2):
null_blk: Fix the null_add_dev() error path
null_blk: Handle null_add_dev() failures properly

Benoit Parrot (1):
media: ti-vpe: cal: fix disable_irqs to only the intended target

Bjorn Andersson (1):
rpmsg: glink: smem: Ensure ordering during tx

Bob Liu (1):
dm zoned: remove duplicate nr_rnd_zones increase in dmz_init_zone()

Bob Peterson (1):
gfs2: Don't demote a glock until its revokes are written

Boqun Feng (1):
locking/lockdep: Avoid recursion in lockdep_count_{for,back}ward_deps()

Can Guo (1):
scsi: ufs: Fix ufshcd_hold() caused scheduling while atomic

Changwei Ge (1):
ocfs2: no need try to truncate file beyond i_size

Chris Lew (1):
soc: qcom: smem: Use le32_to_cpu for comparison

Chris Wilson (1):
drm: Remove PageReserved manipulation from drm_pci_alloc

Christophe Leroy (1):
powerpc/kprobes: Ignore traps that happened in real mode

Claudiu Beznea (1):
clk: at91: usb: continue if clk_hw_round_rate() return zero

Clement Courbet (1):
powerpc: Make setjmp/longjmp signature standard

Colin Ian King (2):
ASoC: Intel: mrfld: fix incorrect check on p->sink
ASoC: Intel: mrfld: return error codes when an error occurs

Cédric Le Goater (1):
powerpc/xive: Use XIVE_BAD_IRQ instead of zero to catch non configured IPIs

Dan Carpenter (3):
libnvdimm: Out of bounds read in __nd_ioctl()
fbdev: potential information leak in do_fb_ioctl()
mtd: lpddr: Fix a double free in probe()

David Hildenbrand (3):
KVM: s390: vsie: Fix region 1 ASCE sanity shadow address checks
KVM: s390: vsie: Fix delivery of addressing exceptions
KVM: s390: vsie: Fix possible race when shadowing region 3 tables

David Howells (1):
KEYS: Use individual pages in big_key for crypto buffers

Dedy Lansky (2):
wil6210: fix temperature debugfs
wil6210: rate limit wil_rx_refill error

Dmitry Osipenko (1):
power: supply: bq27xxx_battery: Silence deferred-probe error

Eric Biggers (2):
fs/filesystems.c: downgrade user-reachable WARN_ONCE() to pr_warn_once()
kmod: make request_module() return an error when autoloading is disabled

Eric Sandeen (1):
ext4: do not commit super on read-only bdev

Eric W. Biederman (1):
signal: Extend exec_id to 64bits

Fenghua Yu (3):
x86/intel_rdt: Enumerate L2 Code and Data Prioritization (CDP) feature x86/intel_rdt: Add two new resources for L2 Code and Data Prioritization (CDP) x86/intel_rdt: Enable L2 CDP in MSR IA32_L2_QOS_CFG

Filipe Manana (1):
Btrfs: fix crash during unmount due to race with delayed inode workers

Florian Fainelli (2):
net: stmmac: dwmac-sunxi: Provide TX and RX fifo sizes
net: dsa: bcm_sf2: Fix overflow checks

Frank Rowand (1):
of: unittest: kmemleak in of_unittest_platform_populate()

Fredrik Strupe (1):
arm64: armv8_deprecated: Fix undef_hook mask for thumb setend

Geert Uytterhoeven (1):
clk: Fix debugfs_create_*() usage

Goldwyn Rodrigues (1):
dm flakey: check for null arg_name in parse_features()

Greg Kroah-Hartman (1):

      Linux 4.14.177

Gustavo A. R. Silva (1):
MIPS: OCTEON: irq: Fix potential NULL pointer dereference

Hamad Kadmany (2):
wil6210: increase firmware ready timeout
wil6210: abort properly in cfg suspend

Hans de Goede (1):
Input: i8042 - add Acer Aspire 5738z to nomux list

Ilya Dryomov (2):
rbd: avoid a deadlock on header_rwsem when flushing notifies
rbd: call rbd_dev_unprobe() after unwatching and flushing notifies

Jack Zhang (1):
drm/amdkfd: kfree the wrong pointer

Jacob Pan (1):
iommu/vt-d: Fix mm reference leak

James Morse (1):
x86/resctrl: Preserve CDP enable over CPU hotplug

James Smart (1):
nvme-fc: Revert "add module to ops template to allow module references"

Jan Engelhardt (1):
acpi/x86: ignore unspecified bit positions in the ACPI global lock field

Jan Kara (2):
ext4: do not zeroout extents beyond i_disksize
ext2: fix debug reference to ext2_xattr_cache

Jim Mattson (1):
kvm: x86: Host feature SSBD doesn't imply guest feature SPEC_CTRL_SSBD

Joe Moriarty (1):
drm: NULL pointer dereference [null-pointer-deref] (CWE 476) problem

John Allen (1):
x86/microcode/AMD: Increase microcode PATCH_MAX_SIZE

John Garry (1):
libata: Remove extra scsi_host_put() in ata_scsi_add_hosts()

Josef Bacik (5):
btrfs: remove a BUG_ON() from merge_reloc_roots()
btrfs: track reloc roots based on their commit root bytenr
btrfs: drop block from cache on error in relocation
btrfs: use nofs allocations for running delayed items
btrfs: check commit root generation in should_ignore_root

Josh Poimboeuf (1):
objtool: Fix switch table detection in .text.unlikely

Josh Triplett (2):
ext4: fix incorrect group count in ext4_fill_super error message
ext4: fix incorrect inodes per group in error message

Kai-Heng Feng (1):
libata: Return correct status in sata_pmp_eh_recover_pm() when ATA_DFLAG_DETACH is set

Kees Cook (1):
slub: improve bit diffusion for freelist ptr obfuscation

Kishon Vijay Abraham I (1):
PCI: endpoint: Fix for concurrent memory allocation in OB address region

Konstantin Khlebnikov (2):
block: keep bdi->io_pages in sync with max_sectors_kb for stacked devices
net: revert default NAPI poll timeout to 2 jiffies

Laurentiu Tudor (1):
powerpc/fsl_booke: Avoid creating duplicate tlb1 entry

Lazar Alexei (1):
wil6210: fix PCIe bus mastering in case of interface down

Li Bin (1):
scsi: sg: add sg_remove_request in sg_common_write

Lior David (2):
wil6210: add block size checks during FW load
wil6210: fix length check in __wmi_send

Logan Gunthorpe (1):
PCI/switchtec: Fix init_completion race condition with poll_wait()

Lucas Stach (1):
soc: imx: gpc: fix power up sequencing

Luke Nelson (1):
arm, bpf: Fix bugs with ALU64 {RSH, ARSH} BPF_K shift by 0

Luo bin (2):
hinic: fix a bug of waitting for IO stopped
hinic: fix wrong para of wait_for_completion_timeout

Lyude Paul (1):
drm/dp_mst: Fix clearing payload state on topology disable

Marc Zyngier (1):
irqchip/gic-v4: Provide irq_retrigger to avoid circular locking dependency

Martin Blumenstingl (1):
thermal: devfreq_cooling: inline all stubs for CONFIG_DEVFREQ_THERMAL=n

Masami Hiramatsu (1):
ftrace/kprobe: Show the maxactive number on kprobe_events

Maurizio Lombardi (2):
scsi: target: remove boilerplate code
scsi: target: fix hang when multiple threads try to destroy the same iscsi session

Michael Ellerman (2):
powerpc/powernv/idle: Restore AMR/UAMOR/AMOR after idle powerpc/64/tm: Don't let userspace set regs->trap via sigreturn

Michael Mueller (1):
s390/diag: fix display of diagnose call statistics

Michael Wang (1):
sched: Avoid scale real weight down to zero

Misono Tomohiro (1):
NFS: direct.c: Fix memory leak of dreq when nfs_get_lock_context fails

Mohit Aggarwal (1):
rtc: pm8xxx: Fix issue in RTC write path

Nathan Chancellor (4):
rtc: omap: Use define directive for PIN_CONFIG_ACTIVE_HIGH
misc: echo: Remove unnecessary parentheses and simplify check for zero
video: fbdev: sis: Remove unnecessary parentheses and commented code powerpc/maple: Fix declaration made after definition

Neil Armstrong (1):
usb: dwc3: core: add support for disabling SS instances in park mode

Oliver O'Halloran (1):
cpufreq: powernv: Fix use-after-free

Ondrej Jirman (1):
bus: sunxi-rsb: Return correct data when mixing 16-bit and 8-bit reads

Pablo Neira Ayuso (1):
netfilter: nf_tables: report EOPNOTSUPP on unsupported flags/object type

Paul E. McKenney (1):
locktorture: Print ratio of acquisitions, not failures

Prasad Sodagudi (1):
arch_topology: Fix section miss match warning due to free_raw_capacity()

Qian Cai (3):
ext4: fix a data race at inode->i_blocks
percpu_counter: fix a data race at vm_committed_as
x86: ACPI: fix CPU hotplug deadlock

Raju Rangoju (1):
cxgb4/ptp: pass the sign of offset delta in FW CMD

Randy Dunlap (1):
ext2: fix empty body warnings when -Wextra is used

Reinette Chatre (1):
x86/resctrl: Fix invalid attempt at removing the default resource group

Remi Pommarel (1):
ath9k: Handle txpower changes even when TPC is disabled

Rob Herring (1):

      of: fix missing kobject init for !SYSFS && OF_DYNAMIC config

Roman Gushchin (1):
ext4: use non-movable memory for superblock readahead

Roopa Prabhu (1):
net: rtnl_configure_link: fix dev flags changes arg to __dev_notify_flags

Rosioru Dragos (1):
crypto: mxs-dcp - fix scatterlist linearization for hash

Sahitya Tummala (1):
block: Fix use-after-free issue accessing struct io_cq

Sam Lunt (1):
perf tools: Support Python 3.8+ in Makefile

Sean Christopherson (3):
KVM: nVMX: Properly handle userspace interrupt window request
KVM: x86: Allocate new rmap and large page tracking when moving memslot
KVM: VMX: Always VMCLEAR in-use VMCSes during crash with kexec support

Sebastian Andrzej Siewior (1):
amd-xgbe: Use __napi_schedule() in BH context

Segher Boessenkool (1):
powerpc: Add attributes for setjmp/longjmp

Shetty, Harshini X (EXT-Sony Mobile) (1):
dm verity fec: fix memory leak in verity_fec_dtr

Simon Gander (1):
hfsplus: fix crash and filesystem corruption when deleting files

Sowjanya Komatineni (1):
clk: tegra: Fix Tegra PMC clock out parents

Sreekanth Reddy (1):
scsi: mpt3sas: Fix kernel panic observed on soft HBA unplug

Sriharsha Allenki (1):
usb: gadget: f_fs: Fix use after free issue as part of queue failure

Steffen Maier (1):
scsi: zfcp: fix missing erp_lock in port recovery trigger for point-to-point

Stephen Rothwell (1):
tty: evh_bytechan: Fix out of bounds accesses

Steven Price (1):
include/linux/swapops.h: correct guards for non_swap_entry()

Subhash Jadavani (1):
scsi: ufs: ufs-qcom: remove broken hci version quirk

Sungbo Eo (2):
irqchip/versatile-fpga: Handle chained IRQs properly irqchip/versatile-fpga: Apply clear-mask earlier

Sven Van Asbroeck (1):
pwm: pca9685: Fix PWM/GPIO inter-operation

Taehee Yoo (1):
hsr: check protocol version in hsr_newlink()

Takashi Iwai (8):
ALSA: usb-audio: Add mixer workaround for TRX40 and co
ALSA: hda: Add driver blacklist
ALSA: hda: Fix potential access overflow in beep helper
ALSA: ice1724: Fix invalid access for enumerated ctl items
ALSA: pcm: oss: Fix regression by buffer overflow fix
ALSA: hda: Initialize power_state field properly
ALSA: usb-audio: Don't override ignore_ctl_error value from the map
ALSA: hda: Don't release card at firmware loading error

Taras Chornyi (1):
net: ipv4: devinet: Fix crash when add/del multicast IP with autojoin

Thinh Nguyen (1):
usb: gadget: composite: Inform controller driver of self-powered

Thomas Gleixner (1):
x86/entry/32: Add missing ASM_CLAC to general_protection entry

Thomas Hebb (2):
ALSA: doc: Document PC Beep Hidden Register on Realtek ALC256
ALSA: hda/realtek - Set principled PC Beep configuration for ALC256

Thomas Hellstrom (1):
x86: Don't let pgprot_modify() change the page encryption bit

Tim Stallard (1):
net: ipv6: do not consider routes via gateways for anycast address check

Timur Tabi (1):
Revert "gpio: set up initial state from .get_direction()"

Trond Myklebust (3):
NFS: Fix a page leak in nfs_destroy_unlinked_subrequests() NFSv4/pnfs: Return valid stateids in nfs_layout_find_inode_by_stateid()
NFS: Fix memory leaks in nfs_pageio_stop_mirroring()

Tuomas Tynkkynen (1):
mac80211_hwsim: Use kstrndup() in place of kasprintf()

Vegard Nossum (1):
compiler.h: fix error in BUILD_BUG_ON() reporting

Venkat Gopalakrishnan (1):
scsi: ufs: make sure all interrupts are processed

Vitaly Kuznetsov (1):
KVM: VMX: fix crash cleanup when KVM wasn't used

Waiman Long (1):
KEYS: Don't write out to userspace while holding key semaphore

Wang Wenhu (1):
net: qrtr: send msgs from local of same id as broadcast

Wei Yongjun (1):
rpmsg: glink: Fix missing mutex_init() in qcom_glink_alloc_channel()

Wen Yang (2):
ipmi: fix hung processes in __get_guid()
mtd: phram: fix a double free issue in error path

Will Deacon (1):
arm64: traps: Don't print stack or raw PC/LR values in backtraces

Xiao Yang (1):
tracing: Fix the race between registering 'snapshot' event trigger and triggering 'snapshot' operation

Xu Wang (1):
qlcnic: Fix bad kzalloc null test

Xu YiPing (1):
arm64: perf: remove unsupported events for Cortex-A73

Yang Xu (1):
KEYS: reaching the keys quotas correctly

Yicong Yang (1):
PCI/ASPM: Clear the correct bits when enabling L1 substates

Yilu Lin (1):
CIFS: Fix bug which the return value by asynchronous read is error

YueHaibing (2):
misc: rtsx: set correct pcr_ops for rts522A powerpc/pseries: Drop pointless static qualifier in vpa_debugfs_init()

Yury Norov (1):
uapi: rename ext2_swab() to swab() and share globally in swab.h

Zenghui Yu (1):
irqchip/mbigen: Free msi_desc on device teardown

Zheng Wei (1):
net: vxge: fix wrong __VA_ARGS__ usage

Zhenzhong Duan (1):
x86/speculation: Remove redundant arch_smt_update() invocation

Zhiqiang Liu (1):
block, bfq: fix use-after-free in bfq_idle_slice_timer_body

[email protected] (1):
lib/raid6: use vdupq_n_u8 to avoid endianness warnings

zhangyi (F) (1):
jbd2: improve comments about freeing data buffers whose page mapping is NULL

이경택 (4):
ASoC: fix regwmask
ASoC: dapm: connect virtual mux with default value
ASoC: dpcm: allow start or stop during pause for backend
ASoC: topology: use name_prefix for new kcontrol

author maintainer
#1 lore raw
Documentation/sound/hd-audio/index.rst +1 -0
index f8a72ffffe66..6e12de9fc34e 100644
@@ -8,3 +8,4 @@ HD-Audio
    models
    controls
    dp-mst
+   realtek-pc-beep
Documentation/sound/hd-audio/realtek-pc-beep.rst new file +129 -0

129 lines not on this page · raw message

Makefile +1 -1
index 9db2e7f90769..d81fb98737f7 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 4
 PATCHLEVEL = 14
-SUBLEVEL = 176
+SUBLEVEL = 177
 EXTRAVERSION =
 NAME = Petit Gorille
 
arch/arm/net/bpf_jit_32.c +10 -2
index b18fb70c5dcf..e13aca6e6d4b 100644
@@ -796,7 +796,11 @@ static inline void emit_a32_rsh_i64(const u8 dst[], bool dstk,
 	}
 
 	/* Do LSR operation */
-	if (val < 32) {
+	if (val == 0) {
+		/* An immediate value of 0 encodes a shift amount of 32
+		 * for LSR. To shift by 0, don't do anything.
+		 */
+	} else if (val < 32) {
 		emit(ARM_MOV_SI(tmp2[1], rd, SRTYPE_LSR, val), ctx);
 		emit(ARM_ORR_SI(rd, tmp2[1], rm, SRTYPE_ASL, 32 - val), ctx);
 		emit(ARM_MOV_SI(rm, rm, SRTYPE_LSR, val), ctx);
@@ -829,7 +833,11 @@ static inline void emit_a32_arsh_i64(const u8 dst[], bool dstk,
 	}
 
 	/* Do ARSH operation */
-	if (val < 32) {
+	if (val == 0) {
+		/* An immediate value of 0 encodes a shift amount of 32
+		 * for ASR. To shift by 0, don't do anything.
+		 */
+	} else if (val < 32) {
 		emit(ARM_MOV_SI(tmp2[1], rd, SRTYPE_LSR, val), ctx);
 		emit(ARM_ORR_SI(rd, tmp2[1], rm, SRTYPE_ASL, 32 - val), ctx);
 		emit(ARM_MOV_SI(rm, rm, SRTYPE_ASR, val), ctx);
arch/arm64/kernel/armv8_deprecated.c +1 -1
index a4dc115d7659..092046704cbc 100644
@@ -607,7 +607,7 @@ static struct undef_hook setend_hooks[] = {
 	},
 	{
 		/* Thumb mode */
-		.instr_mask	= 0x0000fff7,
+		.instr_mask	= 0xfffffff7,
 		.instr_val	= 0x0000b650,
 		.pstate_mask	= (COMPAT_PSR_T_BIT | COMPAT_PSR_MODE_MASK),
 		.pstate_val	= (COMPAT_PSR_T_BIT | COMPAT_PSR_MODE_USR),
arch/arm64/kernel/perf_event.c +0 -6
index 05fdae70e9f6..53df84b2a07f 100644
@@ -262,12 +262,6 @@ static const unsigned armv8_a73_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
 
 	[C(L1D)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV8_IMPDEF_PERFCTR_L1D_CACHE_RD,
 	[C(L1D)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV8_IMPDEF_PERFCTR_L1D_CACHE_WR,
-
-	[C(NODE)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV8_IMPDEF_PERFCTR_BUS_ACCESS_RD,
-	[C(NODE)][C(OP_WRITE)][C(RESULT_ACCESS)] = ARMV8_IMPDEF_PERFCTR_BUS_ACCESS_WR,
-
-	[C(NODE)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV8_IMPDEF_PERFCTR_BUS_ACCESS_RD,
-	[C(NODE)][C(OP_WRITE)][C(RESULT_ACCESS)] = ARMV8_IMPDEF_PERFCTR_BUS_ACCESS_WR,
 };
 
 static const unsigned armv8_thunder_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
arch/arm64/kernel/process.c +3 -5
index ee5ce03c9315..2ff327651ebe 100644
@@ -186,11 +186,9 @@ void __show_regs(struct pt_regs *regs)
 	}
 
 	show_regs_print_info(KERN_DEFAULT);
-	print_symbol("PC is at %s\n", instruction_pointer(regs));
-	print_symbol("LR is at %s\n", lr);
-	printk("pc : [<%016llx>] lr : [<%016llx>] pstate: %08llx\n",
-	       regs->pc, lr, regs->pstate);
-	printk("sp : %016llx\n", sp);
+	print_symbol("pc : %s\n", regs->pc);
+	print_symbol("lr : %s\n", lr);
+	printk("sp : %016llx pstate : %08llx\n", sp, regs->pstate);
 
 	i = top_reg;
 
arch/arm64/kernel/traps.c +3 -62

85 lines not on this page · raw message

arch/mips/cavium-octeon/octeon-irq.c +3 -0
index b3aec101a65d..a27b3d70393f 100644
@@ -2199,6 +2199,9 @@ static int octeon_irq_cib_map(struct irq_domain *d,
 	}
 
 	cd = kzalloc(sizeof(*cd), GFP_KERNEL);
+	if (!cd)
+		return -ENOMEM;
+
 	cd->host_data = host_data;
 	cd->bit = hw;
 
arch/powerpc/include/asm/book3s/64/hash-4k.h +6 -0
index 197ced1eaaa0..4a16115b47eb 100644
@@ -108,6 +108,12 @@ extern pmd_t hash__pmdp_huge_get_and_clear(struct mm_struct *mm,
 extern int hash__has_transparent_hugepage(void);
 #endif
 
+static inline pmd_t hash__pmd_mkdevmap(pmd_t pmd)
+{
+	BUG();
+	return pmd;
+}
+
 #endif /* !__ASSEMBLY__ */
 
 #endif /* _ASM_POWERPC_BOOK3S_64_HASH_4K_H */
arch/powerpc/include/asm/book3s/64/hash-64k.h +7 -1
index 8d40cf03cb67..2194866225f8 100644
@@ -181,7 +181,7 @@ static inline void mark_hpte_slot_valid(unsigned char *hpte_slot_array,
  */
 static inline int hash__pmd_trans_huge(pmd_t pmd)
 {
-	return !!((pmd_val(pmd) & (_PAGE_PTE | H_PAGE_THP_HUGE)) ==
+	return !!((pmd_val(pmd) & (_PAGE_PTE | H_PAGE_THP_HUGE | _PAGE_DEVMAP)) ==
 		  (_PAGE_PTE | H_PAGE_THP_HUGE));
 }
 
@@ -209,6 +209,12 @@ extern pmd_t hash__pmdp_huge_get_and_clear(struct mm_struct *mm,
 				       unsigned long addr, pmd_t *pmdp);
 extern int hash__has_transparent_hugepage(void);
 #endif /*  CONFIG_TRANSPARENT_HUGEPAGE */
+
+static inline pmd_t hash__pmd_mkdevmap(pmd_t pmd)
+{
+	return __pmd(pmd_val(pmd) | (_PAGE_PTE | H_PAGE_THP_HUGE | _PAGE_DEVMAP));
+}
+
 #endif	/* __ASSEMBLY__ */
 
 #endif /* _ASM_POWERPC_BOOK3S_64_HASH_64K_H */
arch/powerpc/include/asm/book3s/64/pgtable.h +3 -1
index 4dd13b503dbb..bcb79a96a6c8 100644
@@ -1179,7 +1179,9 @@ extern void serialize_against_pte_lookup(struct mm_struct *mm);
 
 static inline pmd_t pmd_mkdevmap(pmd_t pmd)
 {
-	return __pmd(pmd_val(pmd) | (_PAGE_PTE | _PAGE_DEVMAP));
+	if (radix_enabled())
+		return radix__pmd_mkdevmap(pmd);
+	return hash__pmd_mkdevmap(pmd);
 }
 
 static inline int pmd_devmap(pmd_t pmd)
arch/powerpc/include/asm/book3s/64/radix.h +5 -0
index 19c44e1495ae..7a1fc49aaf99 100644
@@ -289,6 +289,11 @@ extern pmd_t radix__pmdp_huge_get_and_clear(struct mm_struct *mm,
 extern int radix__has_transparent_hugepage(void);
 #endif
 
+static inline pmd_t radix__pmd_mkdevmap(pmd_t pmd)
+{
+	return __pmd(pmd_val(pmd) | (_PAGE_PTE | _PAGE_DEVMAP));
+}
+
 extern int __meminit radix__vmemmap_create_mapping(unsigned long start,
 					     unsigned long page_size,
 					     unsigned long phys);
arch/powerpc/include/asm/setjmp.h +4 -2
index 279d03a1eec6..6941fe202bc8 100644
@@ -12,7 +12,9 @@
 
 #define JMP_BUF_LEN    23
 
-extern long setjmp(long *);
-extern void longjmp(long *, long);
+typedef long jmp_buf[JMP_BUF_LEN];
+
+extern int setjmp(jmp_buf env) __attribute__((returns_twice));
+extern void longjmp(jmp_buf env, int val) __attribute__((noreturn));
 
 #endif /* _ASM_POWERPC_SETJMP_H */
arch/powerpc/kernel/Makefile +0 -3
index 5607ce67d178..681f966b7211 100644
@@ -5,9 +5,6 @@
 
 CFLAGS_ptrace.o		+= -DUTS_MACHINE='"$(UTS_MACHINE)"'
 
-# Avoid clang warnings around longjmp/setjmp declarations
-CFLAGS_crash.o += -ffreestanding
-
 subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
 
 ifeq ($(CONFIG_PPC64),y)
arch/powerpc/kernel/idle_book3s.S +23 -4
index 74fc20431082..01b823bdb49c 100644
@@ -163,8 +163,11 @@ core_idle_lock_held:
 	bne-	core_idle_lock_held
 	blr
 
-/* Reuse an unused pt_regs slot for IAMR */
+/* Reuse some unused pt_regs slots for AMR/IAMR/UAMOR/UAMOR */
+#define PNV_POWERSAVE_AMR	_TRAP
 #define PNV_POWERSAVE_IAMR	_DAR
+#define PNV_POWERSAVE_UAMOR	_DSISR
+#define PNV_POWERSAVE_AMOR	RESULT
 
 /*
  * Pass requested state in r3:
@@ -198,8 +201,16 @@ pnv_powersave_common:
 	SAVE_NVGPRS(r1)
 
 BEGIN_FTR_SECTION
+	mfspr	r4, SPRN_AMR
 	mfspr	r5, SPRN_IAMR
+	mfspr	r6, SPRN_UAMOR
+	std	r4, PNV_POWERSAVE_AMR(r1)
 	std	r5, PNV_POWERSAVE_IAMR(r1)
+	std	r6, PNV_POWERSAVE_UAMOR(r1)
+BEGIN_FTR_SECTION_NESTED(42)
+	mfspr	r7, SPRN_AMOR
+	std	r7, PNV_POWERSAVE_AMOR(r1)
+END_FTR_SECTION_NESTED_IFSET(CPU_FTR_HVMODE, 42)
 END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
 
 	mfcr	r5
@@ -951,12 +962,20 @@ END_FTR_SECTION_IFSET(CPU_FTR_HVMODE)
 	REST_GPR(2, r1)
 
 BEGIN_FTR_SECTION
-	/* IAMR was saved in pnv_powersave_common() */
+	/* These regs were saved in pnv_powersave_common() */
+	ld	r4, PNV_POWERSAVE_AMR(r1)
 	ld	r5, PNV_POWERSAVE_IAMR(r1)
+	ld	r6, PNV_POWERSAVE_UAMOR(r1)
+	mtspr	SPRN_AMR, r4
 	mtspr	SPRN_IAMR, r5
+	mtspr	SPRN_UAMOR, r6
+BEGIN_FTR_SECTION_NESTED(42)
+	ld	r7, PNV_POWERSAVE_AMOR(r1)
+	mtspr	SPRN_AMOR, r7
+END_FTR_SECTION_NESTED_IFSET(CPU_FTR_HVMODE, 42)
 	/*
-	 * We don't need an isync here because the upcoming mtmsrd is
-	 * execution synchronizing.
+	 * We don't need an isync here after restoring IAMR because the upcoming
+	 * mtmsrd is execution synchronizing.
 	 */
 END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
 
arch/powerpc/kernel/kprobes.c +3 -0
index 10b46b35c059..07d3f3b40246 100644
@@ -279,6 +279,9 @@ int kprobe_handler(struct pt_regs *regs)
 	if (user_mode(regs))
 		return 0;
 
+	if (!(regs->msr & MSR_IR) || !(regs->msr & MSR_DR))
+		return 0;
+
 	/*
 	 * We don't want to be preempted for the entire
 	 * duration of kprobe processing
arch/powerpc/kernel/signal_64.c +3 -1
index b75bf6e74209..3e8edb1387cc 100644
@@ -469,8 +469,10 @@ static long restore_tm_sigcontexts(struct task_struct *tsk,
 	err |= __get_user(tsk->thread.ckpt_regs.ccr,
 			  &sc->gp_regs[PT_CCR]);
 
+	/* Don't allow userspace to set the trap value */
+	regs->trap = 0;
+
 	/* These regs are not checkpointed; they can go in 'regs'. */
-	err |= __get_user(regs->trap, &sc->gp_regs[PT_TRAP]);
 	err |= __get_user(regs->dar, &sc->gp_regs[PT_DAR]);
 	err |= __get_user(regs->dsisr, &sc->gp_regs[PT_DSISR]);
 	err |= __get_user(regs->result, &sc->gp_regs[PT_RESULT]);
arch/powerpc/mm/tlb_nohash_low.S +11 -1
index 048b8e9f4492..63964af9a162 100644
@@ -400,7 +400,7 @@ _GLOBAL(set_context)
  * extern void loadcam_entry(unsigned int index)
  *
  * Load TLBCAM[index] entry in to the L2 CAM MMU
- * Must preserve r7, r8, r9, and r10
+ * Must preserve r7, r8, r9, r10 and r11
  */
 _GLOBAL(loadcam_entry)
 	mflr	r5
@@ -436,6 +436,10 @@ END_MMU_FTR_SECTION_IFSET(MMU_FTR_BIG_PHYS)
  */
 _GLOBAL(loadcam_multi)
 	mflr	r8
+	/* Don't switch to AS=1 if already there */
+	mfmsr	r11
+	andi.	r11,r11,MSR_IS
+	bne	10f
 
 	/*
 	 * Set up temporary TLB entry that is the same as what we're
@@ -461,6 +465,7 @@ _GLOBAL(loadcam_multi)
 	mtmsr	r6
 	isync
 
+10:
 	mr	r9,r3
 	add	r10,r3,r4
 2:	bl	loadcam_entry
@@ -469,6 +474,10 @@ _GLOBAL(loadcam_multi)
 	mr	r3,r9
 	blt	2b
 
+	/* Don't return to AS=0 if we were in AS=1 at function start */
+	andi.	r11,r11,MSR_IS
+	bne	3f
+
 	/* Return to AS=0 and clear the temporary entry */
 	mfmsr	r6
 	rlwinm.	r6,r6,0,~(MSR_IS|MSR_DS)
@@ -484,6 +493,7 @@ _GLOBAL(loadcam_multi)
 	tlbwe
 	isync
 
+3:
 	mtlr	r8
 	blr
 #endif
arch/powerpc/platforms/maple/setup.c +17 -17
index b7f937563827..d1fee2d35b49 100644
@@ -299,23 +299,6 @@ static int __init maple_probe(void)
 	return 1;
 }
 
-define_machine(maple) {
-	.name			= "Maple",
-	.probe			= maple_probe,
-	.setup_arch		= maple_setup_arch,
-	.init_IRQ		= maple_init_IRQ,
-	.pci_irq_fixup		= maple_pci_irq_fixup,
-	.pci_get_legacy_ide_irq	= maple_pci_get_legacy_ide_irq,
-	.restart		= maple_restart,
-	.halt			= maple_halt,
-       	.get_boot_time		= maple_get_boot_time,
-       	.set_rtc_time		= maple_set_rtc_time,
-       	.get_rtc_time		= maple_get_rtc_time,
-      	.calibrate_decr		= generic_calibrate_decr,
-	.progress		= maple_progress,
-	.power_save		= power4_idle,
-};
-
 #ifdef CONFIG_EDAC
 /*
  * Register a platform device for CPC925 memory controller on
@@ -372,3 +355,20 @@ static int __init maple_cpc925_edac_setup(void)
 }
 machine_device_initcall(maple, maple_cpc925_edac_setup);
 #endif
+
+define_machine(maple) {
+	.name			= "Maple",
+	.probe			= maple_probe,
+	.setup_arch		= maple_setup_arch,
+	.init_IRQ		= maple_init_IRQ,
+	.pci_irq_fixup		= maple_pci_irq_fixup,
+	.pci_get_legacy_ide_irq	= maple_pci_get_legacy_ide_irq,
+	.restart		= maple_restart,
+	.halt			= maple_halt,
+	.get_boot_time		= maple_get_boot_time,
+	.set_rtc_time		= maple_set_rtc_time,
+	.get_rtc_time		= maple_get_rtc_time,
+	.calibrate_decr		= generic_calibrate_decr,
+	.progress		= maple_progress,
+	.power_save		= power4_idle,
+};
arch/powerpc/platforms/pseries/lpar.c +1 -1
index c0ae3847b8db..215b14a373cb 100644
@@ -1060,7 +1060,7 @@ static int __init vpa_debugfs_init(void)
 {
 	char name[16];
 	long i;
-	static struct dentry *vpa_dir;
+	struct dentry *vpa_dir;
 
 	if (!firmware_has_feature(FW_FEATURE_SPLPAR))
 		return 0;
arch/powerpc/sysdev/xive/common.c +3 -9
index a820370883d9..b7ae5a027714 100644
@@ -72,13 +72,6 @@ static u32 xive_ipi_irq;
 /* Xive state for each CPU */
 static DEFINE_PER_CPU(struct xive_cpu *, xive_cpu);
 
-/*
- * A "disabled" interrupt should never fire, to catch problems
- * we set its logical number to this
- */
-#define XIVE_BAD_IRQ		0x7fffffff
-#define XIVE_MAX_IRQ		(XIVE_BAD_IRQ - 1)
-
 /* An invalid CPU target */
 #define XIVE_INVALID_TARGET	(-1)
 
@@ -1073,7 +1066,7 @@ static int xive_setup_cpu_ipi(unsigned int cpu)
 	xc = per_cpu(xive_cpu, cpu);
 
 	/* Check if we are already setup */
-	if (xc->hw_ipi != 0)
+	if (xc->hw_ipi != XIVE_BAD_IRQ)
 		return 0;
 
 	/* Grab an IPI from the backend, this will populate xc->hw_ipi */
@@ -1110,7 +1103,7 @@ static void xive_cleanup_cpu_ipi(unsigned int cpu, struct xive_cpu *xc)
 	/* Disable the IPI and free the IRQ data */
 
 	/* Already cleaned up ? */
-	if (xc->hw_ipi == 0)
+	if (xc->hw_ipi == XIVE_BAD_IRQ)
 		return;
 
 	/* Mask the IPI */
@@ -1266,6 +1259,7 @@ static int xive_prepare_cpu(unsigned int cpu)
 		if (np)
 			xc->chip_id = of_get_ibm_chip_id(np);
 		of_node_put(np);
+		xc->hw_ipi = XIVE_BAD_IRQ;
 
 		per_cpu(xive_cpu, cpu) = xc;
 	}
arch/powerpc/sysdev/xive/native.c +2 -2
index aac61374afeb..30cdcbfa1c04 100644
@@ -310,7 +310,7 @@ static void xive_native_put_ipi(unsigned int cpu, struct xive_cpu *xc)
 	s64 rc;
 
 	/* Free the IPI */
-	if (!xc->hw_ipi)
+	if (xc->hw_ipi == XIVE_BAD_IRQ)
 		return;
 	for (;;) {
 		rc = opal_xive_free_irq(xc->hw_ipi);
@@ -318,7 +318,7 @@ static void xive_native_put_ipi(unsigned int cpu, struct xive_cpu *xc)
 			msleep(1);
 			continue;
 		}
-		xc->hw_ipi = 0;
+		xc->hw_ipi = XIVE_BAD_IRQ;
 		break;
 	}
 }
arch/powerpc/sysdev/xive/spapr.c +2 -2
index 7fc41bf30fd5..10235098a726 100644
@@ -443,11 +443,11 @@ static int xive_spapr_get_ipi(unsigned int cpu, struct xive_cpu *xc)
 
 static void xive_spapr_put_ipi(unsigned int cpu, struct xive_cpu *xc)
 {
-	if (!xc->hw_ipi)
+	if (xc->hw_ipi == XIVE_BAD_IRQ)
 		return;
 
 	xive_irq_bitmap_free(xc->hw_ipi);
-	xc->hw_ipi = 0;
+	xc->hw_ipi = XIVE_BAD_IRQ;
 }
 #endif /* CONFIG_SMP */
 
arch/powerpc/sysdev/xive/xive-internal.h +7 -0
index f34abed0c05f..48808dbb25dc 100644
@@ -9,6 +9,13 @@
 #ifndef __XIVE_INTERNAL_H
 #define __XIVE_INTERNAL_H
 
+/*
+ * A "disabled" interrupt should never fire, to catch problems
+ * we set its logical number to this
+ */
+#define XIVE_BAD_IRQ		0x7fffffff
+#define XIVE_MAX_IRQ		(XIVE_BAD_IRQ - 1)
+
 /* Each CPU carry one of these with various per-CPU state */
 struct xive_cpu {
 #ifdef CONFIG_SMP
arch/powerpc/xmon/Makefile +0 -3
index a60c44b4a3e5..93974b0a5a99 100644
@@ -1,9 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 # Makefile for xmon
 
-# Avoid clang warnings around longjmp/setjmp declarations
-subdir-ccflags-y := -ffreestanding
-
 subdir-ccflags-$(CONFIG_PPC_WERROR) += -Werror
 
 GCOV_PROFILE := n
arch/s390/kernel/diag.c +1 -1
index 53a5316cc4b7..35c842aa8705 100644
@@ -79,7 +79,7 @@ static int show_diag_stat(struct seq_file *m, void *v)
 
 static void *show_diag_stat_start(struct seq_file *m, loff_t *pos)
 {
-	return *pos <= nr_cpu_ids ? (void *)((unsigned long) *pos + 1) : NULL;
+	return *pos <= NR_DIAG_STAT ? (void *)((unsigned long) *pos + 1) : NULL;
 }
 
 static void *show_diag_stat_next(struct seq_file *m, void *v, loff_t *pos)
arch/s390/kernel/processor.c +4 -1
index 6fe2e1875058..675d4be0c2b7 100644
@@ -157,8 +157,9 @@ static void show_cpu_mhz(struct seq_file *m, unsigned long n)
 static int show_cpuinfo(struct seq_file *m, void *v)
 {
 	unsigned long n = (unsigned long) v - 1;
+	unsigned long first = cpumask_first(cpu_online_mask);
 
-	if (!n)
+	if (n == first)
 		show_cpu_summary(m, v);
 	if (!machine_has_cpu_mhz)
 		return 0;
@@ -171,6 +172,8 @@ static inline void *c_update(loff_t *pos)
 {
 	if (*pos)
 		*pos = cpumask_next(*pos - 1, cpu_online_mask);
+	else
+		*pos = cpumask_first(cpu_online_mask);
 	return *pos < nr_cpu_ids ? (void *)*pos + 1 : NULL;
 }
 
arch/s390/kvm/vsie.c +1 -0
index 061906f98dc5..0120383219c0 100644
@@ -1027,6 +1027,7 @@ static int vsie_run(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
 		scb_s->iprcc = PGM_ADDRESSING;
 		scb_s->pgmilc = 4;
 		scb_s->gpsw.addr = __rewind_psw(scb_s->gpsw, 4);
+		rc = 1;
 	}
 	return rc;
 }
arch/s390/mm/gmap.c +6 -1
index ec9292917d3f..a29d2e88b00e 100644
@@ -762,14 +762,18 @@ static void gmap_call_notifier(struct gmap *gmap, unsigned long start,
 static inline unsigned long *gmap_table_walk(struct gmap *gmap,
 					     unsigned long gaddr, int level)
 {
+	const int asce_type = gmap->asce & _ASCE_TYPE_MASK;
 	unsigned long *table;
 
 	if ((gmap->asce & _ASCE_TYPE_MASK) + 4 < (level * 4))
 		return NULL;
 	if (gmap_is_shadow(gmap) && gmap->removed)
 		return NULL;
-	if (gaddr & (-1UL << (31 + ((gmap->asce & _ASCE_TYPE_MASK) >> 2)*11)))
+
+	if (asce_type != _ASCE_TYPE_REGION1 &&
+	    gaddr & (-1UL << (31 + (asce_type >> 2) * 11)))
 		return NULL;
+
 	table = gmap->table;
 	switch (gmap->asce & _ASCE_TYPE_MASK) {
 	case _ASCE_TYPE_REGION1:
@@ -1683,6 +1687,7 @@ int gmap_shadow_r3t(struct gmap *sg, unsigned long saddr, unsigned long r3t,
 		goto out_free;
 	} else if (*table & _REGION_ENTRY_ORIGIN) {
 		rc = -EAGAIN;		/* Race with shadow */
+		goto out_free;
 	}
 	crst_table_init(s_r3t, _REGION3_ENTRY_EMPTY);
 	/* mark as invalid as long as the parent table is not protected */
arch/x86/boot/compressed/head_32.S +1 -1
index 37380c0d5999..01d628ea3402 100644
@@ -106,7 +106,7 @@ ENTRY(startup_32)
 	notl	%eax
 	andl    %eax, %ebx
 	cmpl	$LOAD_PHYSICAL_ADDR, %ebx
-	jge	1f
+	jae	1f
 #endif
 	movl	$LOAD_PHYSICAL_ADDR, %ebx
 1:
arch/x86/boot/compressed/head_64.S +2 -2
index 39fdede523f2..a25127916e67 100644
@@ -105,7 +105,7 @@ ENTRY(startup_32)
 	notl	%eax
 	andl	%eax, %ebx
 	cmpl	$LOAD_PHYSICAL_ADDR, %ebx
-	jge	1f
+	jae	1f
 #endif
 	movl	$LOAD_PHYSICAL_ADDR, %ebx
 1:
@@ -280,7 +280,7 @@ ENTRY(startup_64)
 	notq	%rax
 	andq	%rax, %rbp
 	cmpq	$LOAD_PHYSICAL_ADDR, %rbp
-	jge	1f
+	jae	1f
 #endif
 	movq	$LOAD_PHYSICAL_ADDR, %rbp
 1:
arch/x86/entry/entry_32.S +1 -0
index 49adabd94f88..c19974a49378 100644
@@ -1057,6 +1057,7 @@ ENTRY(int3)
 END(int3)
 
 ENTRY(general_protection)
+	ASM_CLAC
 	pushl	$do_general_protection
 	jmp	common_exception
 END(general_protection)
arch/x86/include/asm/cpufeatures.h +1 -1
index b4bef819d5d5..157cfaf1064c 100644
@@ -205,7 +205,7 @@
 #define X86_FEATURE_RETPOLINE		( 7*32+12) /* "" Generic Retpoline mitigation for Spectre variant 2 */
 #define X86_FEATURE_RETPOLINE_AMD	( 7*32+13) /* "" AMD Retpoline mitigation for Spectre variant 2 */
 #define X86_FEATURE_INTEL_PPIN		( 7*32+14) /* Intel Processor Inventory Number */
-
+#define X86_FEATURE_CDP_L2		( 7*32+15) /* Code and Data Prioritization L2 */
 #define X86_FEATURE_MSR_SPEC_CTRL	( 7*32+16) /* "" MSR SPEC_CTRL is implemented */
 #define X86_FEATURE_SSBD		( 7*32+17) /* Speculative Store Bypass Disable */
 #define X86_FEATURE_MBA			( 7*32+18) /* Memory Bandwidth Allocation */
arch/x86/include/asm/kvm_host.h +1 -1
index 2cdf654ed132..9529fe69e1d9 100644
@@ -1032,7 +1032,7 @@ struct kvm_x86_ops {
 	bool (*mpx_supported)(void);
 	bool (*xsaves_supported)(void);
 
-	int (*check_nested_events)(struct kvm_vcpu *vcpu, bool external_intr);
+	int (*check_nested_events)(struct kvm_vcpu *vcpu);
 
 	void (*sched_in)(struct kvm_vcpu *kvm, int cpu);
 
arch/x86/include/asm/microcode_amd.h +1 -1
index 209492849566..5c524d4f71cd 100644
@@ -41,7 +41,7 @@ struct microcode_amd {
 	unsigned int			mpb[0];
 };
 
-#define PATCH_MAX_SIZE PAGE_SIZE
+#define PATCH_MAX_SIZE (3 * PAGE_SIZE)
 
 #ifdef CONFIG_MICROCODE_AMD
 extern void __init load_ucode_amd_bsp(unsigned int family);
arch/x86/include/asm/pgtable.h +5 -2
index 6a4b1a54ff47..98a337e3835d 100644
@@ -588,12 +588,15 @@ static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot)
 	return __pmd(val);
 }
 
-/* mprotect needs to preserve PAT bits when updating vm_page_prot */
+/*
+ * mprotect needs to preserve PAT and encryption bits when updating
+ * vm_page_prot
+ */
 #define pgprot_modify pgprot_modify
 static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot)
 {
 	pgprotval_t preservebits = pgprot_val(oldprot) & _PAGE_CHG_MASK;
-	pgprotval_t addbits = pgprot_val(newprot);
+	pgprotval_t addbits = pgprot_val(newprot) & ~_PAGE_CHG_MASK;
 	return __pgprot(preservebits | addbits);
 }
 
arch/x86/include/asm/pgtable_types.h +1 -1
index 85f8279c885a..e6c870c24065 100644
@@ -124,7 +124,7 @@
  */
 #define _PAGE_CHG_MASK	(PTE_PFN_MASK | _PAGE_PCD | _PAGE_PWT |		\
 			 _PAGE_SPECIAL | _PAGE_ACCESSED | _PAGE_DIRTY |	\
-			 _PAGE_SOFT_DIRTY | _PAGE_DEVMAP)
+			 _PAGE_SOFT_DIRTY | _PAGE_DEVMAP | _PAGE_ENC)
 #define _HPAGE_CHG_MASK (_PAGE_CHG_MASK | _PAGE_PSE)
 
 /*
arch/x86/kernel/acpi/boot.c +1 -1
index 6dda3595acf8..40d7072be709 100644
@@ -1738,7 +1738,7 @@ int __acpi_acquire_global_lock(unsigned int *lock)
 		new = (((old & ~0x3) + 2) + ((old >> 1) & 0x1));
 		val = cmpxchg(lock, old, new);
 	} while (unlikely (val != old));
-	return (new < 3) ? -1 : 0;
+	return ((new & 0x3) < 3) ? -1 : 0;
 }
 
 int __acpi_release_global_lock(unsigned int *lock)
arch/x86/kernel/acpi/cstate.c +2 -1
index dde437f5d14f..596e7640d895 100644
@@ -133,7 +133,8 @@ int acpi_processor_ffh_cstate_probe(unsigned int cpu,
 
 	/* Make sure we are running on right CPU */
 
-	retval = work_on_cpu(cpu, acpi_processor_ffh_cstate_probe_cpu, cx);
+	retval = call_on_cpu(cpu, acpi_processor_ffh_cstate_probe_cpu, cx,
+			     false);
 	if (retval == 0) {
 		/* Use the hint in CST */
 		percpu_entry->states[cx->index].eax = cx->address;
arch/x86/kernel/cpu/intel_rdt.c +58 -10

106 lines not on this page · raw message

arch/x86/kernel/cpu/intel_rdt.h +6 -0
index a43a72d8e88e..b43a786ec15f 100644
@@ -7,12 +7,15 @@
 #include <linux/jump_label.h>
 
 #define IA32_L3_QOS_CFG		0xc81
+#define IA32_L2_QOS_CFG		0xc82
 #define IA32_L3_CBM_BASE	0xc90
 #define IA32_L2_CBM_BASE	0xd10
 #define IA32_MBA_THRTL_BASE	0xd50
 
 #define L3_QOS_CDP_ENABLE	0x01ULL
 
+#define L2_QOS_CDP_ENABLE	0x01ULL
+
 /*
  * Event IDs are used to program IA32_QM_EVTSEL before reading event
  * counter from IA32_QM_CTR
@@ -354,6 +357,8 @@ enum {
 	RDT_RESOURCE_L3DATA,
 	RDT_RESOURCE_L3CODE,
 	RDT_RESOURCE_L2,
+	RDT_RESOURCE_L2DATA,
+	RDT_RESOURCE_L2CODE,
 	RDT_RESOURCE_MBA,
 
 	/* Must be the last */
@@ -437,5 +442,6 @@ void cqm_setup_limbo_handler(struct rdt_domain *dom, unsigned long delay_ms);
 void cqm_handle_limbo(struct work_struct *work);
 bool has_busy_rmid(struct rdt_resource *r, struct rdt_domain *d);
 void __check_limbo(struct rdt_domain *d, bool force_free);
+void rdt_domain_reconfigure_cdp(struct rdt_resource *r);
 
 #endif /* _ASM_X86_INTEL_RDT_H */
arch/x86/kernel/cpu/intel_rdt_rdtgroup.c +106 -27

215 lines not on this page · raw message

arch/x86/kernel/cpu/scattered.c +1 -0
index ed7ce5184a77..0b9c7150cb23 100644
@@ -28,6 +28,7 @@ static const struct cpuid_bit cpuid_bits[] = {
 	{ X86_FEATURE_CAT_L3,		CPUID_EBX,  1, 0x00000010, 0 },
 	{ X86_FEATURE_CAT_L2,		CPUID_EBX,  2, 0x00000010, 0 },
 	{ X86_FEATURE_CDP_L3,		CPUID_ECX,  2, 0x00000010, 1 },
+	{ X86_FEATURE_CDP_L2,		CPUID_ECX,  2, 0x00000010, 2 },
 	{ X86_FEATURE_MBA,		CPUID_EBX,  3, 0x00000010, 0 },
 	{ X86_FEATURE_HW_PSTATE,	CPUID_EDX,  7, 0x80000007, 0 },
 	{ X86_FEATURE_CPB,		CPUID_EDX,  9, 0x80000007, 0 },
arch/x86/kvm/cpuid.c +2 -1
index 1152afad524f..6ec1cfd0addd 100644
@@ -494,7 +494,8 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,
 				entry->edx |= F(SPEC_CTRL);
 			if (boot_cpu_has(X86_FEATURE_STIBP))
 				entry->edx |= F(INTEL_STIBP);
-			if (boot_cpu_has(X86_FEATURE_SSBD))
+			if (boot_cpu_has(X86_FEATURE_SPEC_CTRL_SSBD) ||
+			    boot_cpu_has(X86_FEATURE_AMD_SSBD))
 				entry->edx |= F(SPEC_CTRL_SSBD);
 			/*
 			 * We emulate ARCH_CAPABILITIES in software even
arch/x86/kvm/vmx.c +34 -72

188 lines not on this page · raw message

arch/x86/kvm/x86.c +16 -5
index d6851636edab..5f44827e4962 100644
@@ -6638,7 +6638,7 @@ static void update_cr8_intercept(struct kvm_vcpu *vcpu)
 	kvm_x86_ops->update_cr8_intercept(vcpu, tpr, max_irr);
 }
 
-static int inject_pending_event(struct kvm_vcpu *vcpu, bool req_int_win)
+static int inject_pending_event(struct kvm_vcpu *vcpu)
 {
 	int r;
 
@@ -6665,7 +6665,7 @@ static int inject_pending_event(struct kvm_vcpu *vcpu, bool req_int_win)
 	}
 
 	if (is_guest_mode(vcpu) && kvm_x86_ops->check_nested_events) {
-		r = kvm_x86_ops->check_nested_events(vcpu, req_int_win);
+		r = kvm_x86_ops->check_nested_events(vcpu);
 		if (r != 0)
 			return r;
 	}
@@ -6706,7 +6706,7 @@ static int inject_pending_event(struct kvm_vcpu *vcpu, bool req_int_win)
 		 * KVM_REQ_EVENT only on certain events and not unconditionally?
 		 */
 		if (is_guest_mode(vcpu) && kvm_x86_ops->check_nested_events) {
-			r = kvm_x86_ops->check_nested_events(vcpu, req_int_win);
+			r = kvm_x86_ops->check_nested_events(vcpu);
 			if (r != 0)
 				return r;
 		}
@@ -7152,7 +7152,7 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
 			goto out;
 		}
 
-		if (inject_pending_event(vcpu, req_int_win) != 0)
+		if (inject_pending_event(vcpu) != 0)
 			req_immediate_exit = true;
 		else {
 			/* Enable NMI/IRQ window open exits if needed.
@@ -7360,7 +7360,7 @@ static inline int vcpu_block(struct kvm *kvm, struct kvm_vcpu *vcpu)
 static inline bool kvm_vcpu_running(struct kvm_vcpu *vcpu)
 {
 	if (is_guest_mode(vcpu) && kvm_x86_ops->check_nested_events)
-		kvm_x86_ops->check_nested_events(vcpu, false);
+		kvm_x86_ops->check_nested_events(vcpu);
 
 	return (vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE &&
 		!vcpu->arch.apf.halted);
@@ -8584,6 +8584,13 @@ int kvm_arch_create_memslot(struct kvm *kvm, struct kvm_memory_slot *slot,
 {
 	int i;
 
+	/*
+	 * Clear out the previous array pointers for the KVM_MR_MOVE case.  The
+	 * old arrays will be freed by __kvm_set_memory_region() if installing
+	 * the new memslot is successful.
+	 */
+	memset(&slot->arch, 0, sizeof(slot->arch));
+
 	for (i = 0; i < KVM_NR_PAGE_SIZES; ++i) {
 		struct kvm_lpage_info *linfo;
 		unsigned long ugfn;
@@ -8657,6 +8664,10 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
 				const struct kvm_userspace_memory_region *mem,
 				enum kvm_mr_change change)
 {
+	if (change == KVM_MR_MOVE)
+		return kvm_arch_create_memslot(kvm, memslot,
+					       mem->memory_size >> PAGE_SHIFT);
+
 	return 0;
 }
 
block/bfq-iosched.c +12 -4
index 93863c6173e6..959bee9fa911 100644
@@ -4541,20 +4541,28 @@ static void bfq_prepare_request(struct request *rq, struct bio *bio)
 	spin_unlock_irq(&bfqd->lock);
 }
 
-static void bfq_idle_slice_timer_body(struct bfq_queue *bfqq)
+static void
+bfq_idle_slice_timer_body(struct bfq_data *bfqd, struct bfq_queue *bfqq)
 {
-	struct bfq_data *bfqd = bfqq->bfqd;
 	enum bfqq_expiration reason;
 	unsigned long flags;
 
 	spin_lock_irqsave(&bfqd->lock, flags);
-	bfq_clear_bfqq_wait_request(bfqq);
 
+	/*
+	 * Considering that bfqq may be in race, we should firstly check
+	 * whether bfqq is in service before doing something on it. If
+	 * the bfqq in race is not in service, it has already been expired
+	 * through __bfq_bfqq_expire func and its wait_request flags has
+	 * been cleared in __bfq_bfqd_reset_in_service func.
+	 */
 	if (bfqq != bfqd->in_service_queue) {
 		spin_unlock_irqrestore(&bfqd->lock, flags);
 		return;
 	}
 
+	bfq_clear_bfqq_wait_request(bfqq);
+
 	if (bfq_bfqq_budget_timeout(bfqq))
 		/*
 		 * Also here the queue can be safely expired
@@ -4599,7 +4607,7 @@ static enum hrtimer_restart bfq_idle_slice_timer(struct hrtimer *timer)
 	 * early.
 	 */
 	if (bfqq)
-		bfq_idle_slice_timer_body(bfqq);
+		bfq_idle_slice_timer_body(bfqd, bfqq);
 
 	return HRTIMER_NORESTART;
 }
block/blk-ioc.c +7 -0
index f23311e4b201..e56a480b6f92 100644
@@ -87,6 +87,7 @@ static void ioc_destroy_icq(struct io_cq *icq)
 	 * making it impossible to determine icq_cache.  Record it in @icq.
 	 */
 	icq->__rcu_icq_cache = et->icq_cache;
+	icq->flags |= ICQ_DESTROYED;
 	call_rcu(&icq->__rcu_head, icq_free_icq_rcu);
 }
 
@@ -230,15 +231,21 @@ static void __ioc_clear_queue(struct list_head *icq_list)
 {
 	unsigned long flags;
 
+	rcu_read_lock();
 	while (!list_empty(icq_list)) {
 		struct io_cq *icq = list_entry(icq_list->next,
 					       struct io_cq, q_node);
 		struct io_context *ioc = icq->ioc;
 
 		spin_lock_irqsave(&ioc->lock, flags);
+		if (icq->flags & ICQ_DESTROYED) {
+			spin_unlock_irqrestore(&ioc->lock, flags);
+			continue;
+		}
 		ioc_destroy_icq(icq);
 		spin_unlock_irqrestore(&ioc->lock, flags);
 	}
+	rcu_read_unlock();
 }
 
 /**
block/blk-settings.c +3 -0
index 6c2faaa38cc1..e0a744921ed3 100644
@@ -717,6 +717,9 @@ void disk_stack_limits(struct gendisk *disk, struct block_device *bdev,
 		printk(KERN_NOTICE "%s: Warning: Device %s is misaligned\n",
 		       top, bottom);
 	}
+
+	t->backing_dev_info->io_pages =
+		t->limits.max_sectors >> (PAGE_SHIFT - 9);
 }
 EXPORT_SYMBOL(disk_stack_limits);
 
drivers/acpi/processor_throttling.c +0 -7
index 7f9aff4b8d62..9fdc13a2f2d5 100644
@@ -909,13 +909,6 @@ static long __acpi_processor_get_throttling(void *data)
 	return pr->throttling.acpi_processor_get_throttling(pr);
 }
 
-static int call_on_cpu(int cpu, long (*fn)(void *), void *arg, bool direct)
-{
-	if (direct || (is_percpu_thread() && cpu == smp_processor_id()))
-		return fn(arg);
-	return work_on_cpu(cpu, fn, arg);
-}
-
 static int acpi_processor_get_throttling(struct acpi_processor *pr)
 {
 	if (!pr)
drivers/ata/libata-pmp.c +1 -0
index 85aa76116a30..7924d0635718 100644
@@ -764,6 +764,7 @@ static int sata_pmp_eh_recover_pmp(struct ata_port *ap,
 
 	if (dev->flags & ATA_DFLAG_DETACH) {
 		detach = 1;
+		rc = -ENODEV;
 		goto fail;
 	}
 
drivers/ata/libata-scsi.c +3 -6
index eb0c4ee20525..2f81d6534270 100644
@@ -4571,22 +4571,19 @@ int ata_scsi_add_hosts(struct ata_host *host, struct scsi_host_template *sht)
 		 */
 		shost->max_host_blocked = 1;
 
-		rc = scsi_add_host_with_dma(ap->scsi_host,
-						&ap->tdev, ap->host->dev);
+		rc = scsi_add_host_with_dma(shost, &ap->tdev, ap->host->dev);
 		if (rc)
-			goto err_add;
+			goto err_alloc;
 	}
 
 	return 0;
 
- err_add:
-	scsi_host_put(host->ports[i]->scsi_host);
  err_alloc:
 	while (--i >= 0) {
 		struct Scsi_Host *shost = host->ports[i]->scsi_host;
 
+		/* scsi_host_put() is in ata_devres_release() */
 		scsi_remove_host(shost);
-		scsi_host_put(shost);
 	}
 	return rc;
 }
drivers/base/arch_topology.c +1 -1
index 41be9ff7d70a..3da53cc6cf2b 100644
@@ -96,7 +96,7 @@ subsys_initcall(register_cpu_capacity_sysctl);
 static u32 capacity_scale;
 static u32 *raw_capacity;
 
-static int __init free_raw_capacity(void)
+static int free_raw_capacity(void)
 {
 	kfree(raw_capacity);
 	raw_capacity = NULL;
drivers/block/null_blk.c +9 -1
index f01d4a8a783a..b12e373aa956 100644
@@ -622,6 +622,7 @@ static struct nullb_cmd *__alloc_cmd(struct nullb_queue *nq)
 	if (tag != -1U) {
 		cmd = &nq->cmds[tag];
 		cmd->tag = tag;
+		cmd->error = BLK_STS_OK;
 		cmd->nq = nq;
 		if (nq->dev->irqmode == NULL_IRQ_TIMER) {
 			hrtimer_init(&cmd->timer, CLOCK_MONOTONIC,
@@ -1399,6 +1400,7 @@ static blk_status_t null_queue_rq(struct blk_mq_hw_ctx *hctx,
 		cmd->timer.function = null_cmd_timer_expired;
 	}
 	cmd->rq = bd->rq;
+	cmd->error = BLK_STS_OK;
 	cmd->nq = nq;
 
 	blk_mq_start_request(bd->rq);
@@ -1593,7 +1595,12 @@ static void null_nvm_unregister(struct nullb *nullb) {}
 
 static void null_del_dev(struct nullb *nullb)
 {
-	struct nullb_device *dev = nullb->dev;
+	struct nullb_device *dev;
+
+	if (!nullb)
+		return;
+
+	dev = nullb->dev;
 
 	ida_simple_remove(&nullb_indexes, nullb->index);
 
@@ -1919,6 +1926,7 @@ static int null_add_dev(struct nullb_device *dev)
 	cleanup_queues(nullb);
 out_free_nullb:
 	kfree(nullb);
+	dev->nullb = NULL;
 out:
 	return rv;
 }
drivers/block/rbd.c +17 -8
index f2b1994d58a0..557cf52f674b 100644
@@ -3847,6 +3847,10 @@ static void cancel_tasks_sync(struct rbd_device *rbd_dev)
 	cancel_work_sync(&rbd_dev->unlock_work);
 }
 
+/*
+ * header_rwsem must not be held to avoid a deadlock with
+ * rbd_dev_refresh() when flushing notifies.
+ */
 static void rbd_unregister_watch(struct rbd_device *rbd_dev)
 {
 	WARN_ON(waitqueue_active(&rbd_dev->lock_waitq));
@@ -6044,9 +6048,10 @@ static int rbd_dev_header_name(struct rbd_device *rbd_dev)
 
 static void rbd_dev_image_release(struct rbd_device *rbd_dev)
 {
-	rbd_dev_unprobe(rbd_dev);
 	if (rbd_dev->opts)
 		rbd_unregister_watch(rbd_dev);
+
+	rbd_dev_unprobe(rbd_dev);
 	rbd_dev->image_format = 0;
 	kfree(rbd_dev->spec->image_id);
 	rbd_dev->spec->image_id = NULL;
@@ -6057,6 +6062,9 @@ static void rbd_dev_image_release(struct rbd_device *rbd_dev)
  * device.  If this image is the one being mapped (i.e., not a
  * parent), initiate a watch on its header object before using that
  * object to get detailed information about the rbd image.
+ *
+ * On success, returns with header_rwsem held for write if called
+ * with @depth == 0.
  */
 static int rbd_dev_image_probe(struct rbd_device *rbd_dev, int depth)
 {
@@ -6087,9 +6095,12 @@ static int rbd_dev_image_probe(struct rbd_device *rbd_dev, int depth)
 		}
 	}
 
+	if (!depth)
+		down_write(&rbd_dev->header_rwsem);
+
 	ret = rbd_dev_header_info(rbd_dev);
 	if (ret)
-		goto err_out_watch;
+		goto err_out_probe;
 
 	/*
 	 * If this image is the one being mapped, we have pool name and
@@ -6133,10 +6144,11 @@ static int rbd_dev_image_probe(struct rbd_device *rbd_dev, int depth)
 	return 0;
 
 err_out_probe:
-	rbd_dev_unprobe(rbd_dev);
-err_out_watch:
+	if (!depth)
+		up_write(&rbd_dev->header_rwsem);
 	if (!depth)
 		rbd_unregister_watch(rbd_dev);
+	rbd_dev_unprobe(rbd_dev);
 err_out_format:
 	rbd_dev->image_format = 0;
 	kfree(rbd_dev->spec->image_id);
@@ -6194,12 +6206,9 @@ static ssize_t do_rbd_add(struct bus_type *bus,
 		goto err_out_rbd_dev;
 	}
 
-	down_write(&rbd_dev->header_rwsem);
 	rc = rbd_dev_image_probe(rbd_dev, 0);
-	if (rc < 0) {
-		up_write(&rbd_dev->header_rwsem);
+	if (rc < 0)
 		goto err_out_rbd_dev;
-	}
 
 	/* If we are mapping a snapshot it must be marked read-only */
 
drivers/bus/sunxi-rsb.c +1 -1
index 1b76d9585902..2ca2cc56bcef 100644
@@ -345,7 +345,7 @@ static int sunxi_rsb_read(struct sunxi_rsb *rsb, u8 rtaddr, u8 addr,
 	if (ret)
 		goto unlock;
 
-	*buf = readl(rsb->regs + RSB_DATA);
+	*buf = readl(rsb->regs + RSB_DATA) & GENMASK(len * 8 - 1, 0);
 
 unlock:
 	mutex_unlock(&rsb->lock);
drivers/char/ipmi/ipmi_msghandler.c +3 -1
index c82d9fd2f05a..f72a272eeb9b 100644
@@ -2647,7 +2647,9 @@ get_guid(ipmi_smi_t intf)
 	if (rv)
 		/* Send failed, no GUID available. */
 		intf->bmc->guid_set = 0;
-	wait_event(intf->waitq, intf->bmc->guid_set != 2);
+	else
+		wait_event(intf->waitq, intf->bmc->guid_set != 2);
+
 	intf->null_user_handler = NULL;
 }
 
drivers/clk/at91/clk-usb.c +3 -0
index 791770a563fc..6fac6383d024 100644
@@ -78,6 +78,9 @@ static int at91sam9x5_clk_usb_determine_rate(struct clk_hw *hw,
 			tmp_parent_rate = req->rate * div;
 			tmp_parent_rate = clk_hw_round_rate(parent,
 							   tmp_parent_rate);
+			if (!tmp_parent_rate)
+				continue;
+
 			tmp_rate = DIV_ROUND_CLOSEST(tmp_parent_rate, div);
 			if (tmp_rate < req->rate)
 				tmp_diff = req->rate - tmp_rate;
drivers/clk/clk.c +15 -17
index 8341a128dab1..44b6f23cc851 100644
@@ -2172,18 +2172,16 @@ static int clk_debug_create_one(struct clk_core *core, struct dentry *pdentry)
 
 	core->dentry = d;
 
-	d = debugfs_create_u32("clk_rate", S_IRUGO, core->dentry,
-			(u32 *)&core->rate);
+	d = debugfs_create_ulong("clk_rate", 0444, core->dentry, &core->rate);
 	if (!d)
 		goto err_out;
 
-	d = debugfs_create_u32("clk_accuracy", S_IRUGO, core->dentry,
-			(u32 *)&core->accuracy);
+	d = debugfs_create_ulong("clk_accuracy", 0444, core->dentry,
+				 &core->accuracy);
 	if (!d)
 		goto err_out;
 
-	d = debugfs_create_u32("clk_phase", S_IRUGO, core->dentry,
-			(u32 *)&core->phase);
+	d = debugfs_create_u32("clk_phase", 0444, core->dentry, &core->phase);
 	if (!d)
 		goto err_out;
 
@@ -2192,23 +2190,23 @@ static int clk_debug_create_one(struct clk_core *core, struct dentry *pdentry)
 	if (!d)
 		goto err_out;
 
-	d = debugfs_create_u32("clk_prepare_count", S_IRUGO, core->dentry,
-			(u32 *)&core->prepare_count);
+	d = debugfs_create_u32("clk_prepare_count", 0444, core->dentry,
+			       &core->prepare_count);
 	if (!d)
 		goto err_out;
 
-	d = debugfs_create_u32("clk_enable_count", S_IRUGO, core->dentry,
-			(u32 *)&core->enable_count);
+	d = debugfs_create_u32("clk_enable_count", 0444, core->dentry,
+			       &core->enable_count);
 	if (!d)
 		goto err_out;
 
-	d = debugfs_create_u32("clk_notifier_count", S_IRUGO, core->dentry,
-			(u32 *)&core->notifier_count);
+	d = debugfs_create_u32("clk_notifier_count", 0444, core->dentry,
+			       &core->notifier_count);
 	if (!d)
 		goto err_out;
 
 	if (core->num_parents > 1) {
-		d = debugfs_create_file("clk_possible_parents", S_IRUGO,
+		d = debugfs_create_file("clk_possible_parents", 0444,
 				core->dentry, core, &possible_parents_fops);
 		if (!d)
 			goto err_out;
@@ -2304,22 +2302,22 @@ static int __init clk_debug_init(void)
 	if (!rootdir)
 		return -ENOMEM;
 
-	d = debugfs_create_file("clk_summary", S_IRUGO, rootdir, &all_lists,
+	d = debugfs_create_file("clk_summary", 0444, rootdir, &all_lists,
 				&clk_summary_fops);
 	if (!d)
 		return -ENOMEM;
 
-	d = debugfs_create_file("clk_dump", S_IRUGO, rootdir, &all_lists,
+	d = debugfs_create_file("clk_dump", 0444, rootdir, &all_lists,
 				&clk_dump_fops);
 	if (!d)
 		return -ENOMEM;
 
-	d = debugfs_create_file("clk_orphan_summary", S_IRUGO, rootdir,
+	d = debugfs_create_file("clk_orphan_summary", 0444, rootdir,
 				&orphan_list, &clk_summary_fops);
 	if (!d)
 		return -ENOMEM;
 
-	d = debugfs_create_file("clk_orphan_dump", S_IRUGO, rootdir,
+	d = debugfs_create_file("clk_orphan_dump", 0444, rootdir,
 				&orphan_list, &clk_dump_fops);
 	if (!d)
 		return -ENOMEM;
drivers/clk/tegra/clk-tegra-pmc.c +6 -6
index a35579a3f884..476dab494c44 100644
@@ -60,16 +60,16 @@ struct pmc_clk_init_data {
 
 static DEFINE_SPINLOCK(clk_out_lock);
 
-static const char *clk_out1_parents[] = { "clk_m", "clk_m_div2",
-	"clk_m_div4", "extern1",
+static const char *clk_out1_parents[] = { "osc", "osc_div2",
+	"osc_div4", "extern1",
 };
 
-static const char *clk_out2_parents[] = { "clk_m", "clk_m_div2",
-	"clk_m_div4", "extern2",
+static const char *clk_out2_parents[] = { "osc", "osc_div2",
+	"osc_div4", "extern2",
 };
 
-static const char *clk_out3_parents[] = { "clk_m", "clk_m_div2",
-	"clk_m_div4", "extern3",
+static const char *clk_out3_parents[] = { "osc", "osc_div2",
+	"osc_div4", "extern3",
 };
 
 static struct pmc_clk_init_data pmc_clks[] = {
drivers/cpufreq/powernv-cpufreq.c +6 -0
index 33854bf127f9..25c9a6cdd861 100644
@@ -1041,6 +1041,12 @@ static int init_chip_info(void)
 
 static inline void clean_chip_info(void)
 {
+	int i;
+
+	/* flush any pending work items */
+	if (chips)
+		for (i = 0; i < nr_chips; i++)
+			cancel_work_sync(&chips[i].throttle);
 	kfree(chips);
 }
 
drivers/crypto/caam/caamalg_desc.c +14 -2
index b23c7b72525c..a3d507fb9ea5 100644
@@ -1280,7 +1280,13 @@ EXPORT_SYMBOL(cnstr_shdsc_ablkcipher_givencap);
  */
 void cnstr_shdsc_xts_ablkcipher_encap(u32 * const desc, struct alginfo *cdata)
 {
-	__be64 sector_size = cpu_to_be64(512);
+	/*
+	 * Set sector size to a big value, practically disabling
+	 * sector size segmentation in xts implementation. We cannot
+	 * take full advantage of this HW feature with existing
+	 * crypto API / dm-crypt SW architecture.
+	 */
+	__be64 sector_size = cpu_to_be64(BIT(15));
 	u32 *key_jump_cmd;
 
 	init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX);
@@ -1332,7 +1338,13 @@ EXPORT_SYMBOL(cnstr_shdsc_xts_ablkcipher_encap);
  */
 void cnstr_shdsc_xts_ablkcipher_decap(u32 * const desc, struct alginfo *cdata)
 {
-	__be64 sector_size = cpu_to_be64(512);
+	/*
+	 * Set sector size to a big value, practically disabling
+	 * sector size segmentation in xts implementation. We cannot
+	 * take full advantage of this HW feature with existing
+	 * crypto API / dm-crypt SW architecture.
+	 */
+	__be64 sector_size = cpu_to_be64(BIT(15));
 	u32 *key_jump_cmd;
 
 	init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX);
drivers/crypto/mxs-dcp.c +28 -30

83 lines not on this page · raw message

drivers/firmware/efi/efi.c +1 -1
index f50072b51aef..b39b7e6d4e4d 100644
@@ -550,7 +550,7 @@ int __init efi_config_parse_tables(void *config_tables, int count, int sz,
 		}
 	}
 
-	if (efi_enabled(EFI_MEMMAP))
+	if (!IS_ENABLED(CONFIG_X86_32) && efi_enabled(EFI_MEMMAP))
 		efi_memattr_init();
 
 	/* Parse the EFI Properties table if it exists */
drivers/gpio/gpiolib.c +7 -24
index f0777a7a4305..d5b42cc86d71 100644
@@ -1245,31 +1245,14 @@ int gpiochip_add_data(struct gpio_chip *chip, void *data)
 		struct gpio_desc *desc = &gdev->descs[i];
 
 		desc->gdev = gdev;
-		/*
-		 * REVISIT: most hardware initializes GPIOs as inputs
-		 * (often with pullups enabled) so power usage is
-		 * minimized. Linux code should set the gpio direction
-		 * first thing; but until it does, and in case
-		 * chip->get_direction is not set, we may expose the
-		 * wrong direction in sysfs.
-		 */
-
-		if (chip->get_direction) {
-			/*
-			 * If we have .get_direction, set up the initial
-			 * direction flag from the hardware.
-			 */
-			int dir = chip->get_direction(chip, i);
 
-			if (!dir)
-				set_bit(FLAG_IS_OUT, &desc->flags);
-		} else if (!chip->direction_input) {
-			/*
-			 * If the chip lacks the .direction_input callback
-			 * we logically assume all lines are outputs.
-			 */
-			set_bit(FLAG_IS_OUT, &desc->flags);
-		}
+		/* REVISIT: most hardware initializes GPIOs as inputs (often
+		 * with pullups enabled) so power usage is minimized. Linux
+		 * code should set the gpio direction first thing; but until
+		 * it does, and in case chip->get_direction is not set, we may
+		 * expose the wrong direction in sysfs.
+		 */
+		desc->flags = !chip->direction_input ? (1 << FLAG_IS_OUT) : 0;
 	}
 
 #ifdef CONFIG_PINCTRL
drivers/gpu/drm/amd/amdkfd/kfd_device.c +2 -2
index 61fff25b4ce7..ecd4eba221c0 100644
@@ -550,9 +550,9 @@ int kfd_gtt_sa_allocate(struct kfd_dev *kfd, unsigned int size,
 	return 0;
 
 kfd_gtt_no_free_chunk:
-	pr_debug("Allocation failed with mem_obj = %p\n", mem_obj);
+	pr_debug("Allocation failed with mem_obj = %p\n", *mem_obj);
 	mutex_unlock(&kfd->gtt_sa_lock);
-	kfree(mem_obj);
+	kfree(*mem_obj);
 	return -ENOMEM;
 }
 
drivers/gpu/drm/drm_dp_mst_topology.c +11 -4
index f0d819fc16cd..42eaeae86bb8 100644
@@ -1043,10 +1043,12 @@ static bool drm_dp_port_setup_pdt(struct drm_dp_mst_port *port)
 		lct = drm_dp_calculate_rad(port, rad);
 
 		port->mstb = drm_dp_add_mst_branch_device(lct, rad);
-		port->mstb->mgr = port->mgr;
-		port->mstb->port_parent = port;
+		if (port->mstb) {
+			port->mstb->mgr = port->mgr;
+			port->mstb->port_parent = port;
 
-		send_link = true;
+			send_link = true;
+		}
 		break;
 	}
 	return send_link;
@@ -2038,6 +2040,7 @@ int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool ms
 	int ret = 0;
 	struct drm_dp_mst_branch *mstb = NULL;
 
+	mutex_lock(&mgr->payload_lock);
 	mutex_lock(&mgr->lock);
 	if (mst_state == mgr->mst_state)
 		goto out_unlock;
@@ -2096,7 +2099,10 @@ int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool ms
 		/* this can fail if the device is gone */
 		drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL, 0);
 		ret = 0;
-		memset(mgr->payloads, 0, mgr->max_payloads * sizeof(struct drm_dp_payload));
+		memset(mgr->payloads, 0,
+		       mgr->max_payloads * sizeof(mgr->payloads[0]));
+		memset(mgr->proposed_vcpis, 0,
+		       mgr->max_payloads * sizeof(mgr->proposed_vcpis[0]));
 		mgr->payload_mask = 0;
 		set_bit(0, &mgr->payload_mask);
 		mgr->vcpi_mask = 0;
@@ -2104,6 +2110,7 @@ int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool ms
 
 out_unlock:
 	mutex_unlock(&mgr->lock);
+	mutex_unlock(&mgr->payload_lock);
 	if (mstb)
 		drm_dp_put_mst_branch_device(mstb);
 	return ret;
drivers/gpu/drm/drm_pci.c +2 -23
index 1235c9877d6f..2078d7706a67 100644
@@ -46,8 +46,6 @@
 drm_dma_handle_t *drm_pci_alloc(struct drm_device * dev, size_t size, size_t align)
 {
 	drm_dma_handle_t *dmah;
-	unsigned long addr;
-	size_t sz;
 
 	/* pci_alloc_consistent only guarantees alignment to the smallest
 	 * PAGE_SIZE order which is greater than or equal to the requested size.
@@ -61,22 +59,13 @@ drm_dma_handle_t *drm_pci_alloc(struct drm_device * dev, size_t size, size_t ali
 		return NULL;
 
 	dmah->size = size;
-	dmah->vaddr = dma_alloc_coherent(&dev->pdev->dev, size, &dmah->busaddr, GFP_KERNEL | __GFP_COMP);
+	dmah->vaddr = dma_alloc_coherent(&dev->pdev->dev, size, &dmah->busaddr, GFP_KERNEL);
 
 	if (dmah->vaddr == NULL) {
 		kfree(dmah);
 		return NULL;
 	}
 
-	memset(dmah->vaddr, 0, size);
-
-	/* XXX - Is virt_to_page() legal for consistent mem? */
-	/* Reserve */
-	for (addr = (unsigned long)dmah->vaddr, sz = size;
-	     sz > 0; addr += PAGE_SIZE, sz -= PAGE_SIZE) {
-		SetPageReserved(virt_to_page((void *)addr));
-	}
-
 	return dmah;
 }
 
@@ -89,19 +78,9 @@ EXPORT_SYMBOL(drm_pci_alloc);
  */
 void __drm_legacy_pci_free(struct drm_device * dev, drm_dma_handle_t * dmah)
 {
-	unsigned long addr;
-	size_t sz;
-
-	if (dmah->vaddr) {
-		/* XXX - Is virt_to_page() legal for consistent mem? */
-		/* Unreserve */
-		for (addr = (unsigned long)dmah->vaddr, sz = dmah->size;
-		     sz > 0; addr += PAGE_SIZE, sz -= PAGE_SIZE) {
-			ClearPageReserved(virt_to_page((void *)addr));
-		}
+	if (dmah->vaddr)
 		dma_free_coherent(&dev->pdev->dev, dmah->size, dmah->vaddr,
 				  dmah->busaddr);
-	}
 }
 
 /**
drivers/i2c/busses/i2c-st.c +1 -0
index 9e62f893958a..81158ae8bfe3 100644
@@ -437,6 +437,7 @@ static void st_i2c_wr_fill_tx_fifo(struct st_i2c_dev *i2c_dev)
 /**
  * st_i2c_rd_fill_tx_fifo() - Fill the Tx FIFO in read mode
  * @i2c_dev: Controller's private data
+ * @max: Maximum amount of data to fill into the Tx FIFO
  *
  * This functions fills the Tx FIFO with fixed pattern when
  * in read mode to trigger clock.
drivers/input/serio/i8042-x86ia64io.h +11 -0
index 136f6e7bf797..0d0f977a2f39 100644
@@ -534,6 +534,17 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = {
 			DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo LaVie Z"),
 		},
 	},
+	{
+		/*
+		 * Acer Aspire 5738z
+		 * Touchpad stops working in mux mode when dis- + re-enabled
+		 * with the touchpad enable/disable toggle hotkey
+		 */
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5738"),
+		},
+	},
 	{ }
 };
 
drivers/iommu/amd_iommu_types.h +1 -1
index 3054c0971759..74c8638aac2b 100644
@@ -348,7 +348,7 @@
 
 #define DTE_GCR3_VAL_A(x)	(((x) >> 12) & 0x00007ULL)
 #define DTE_GCR3_VAL_B(x)	(((x) >> 15) & 0x0ffffULL)
-#define DTE_GCR3_VAL_C(x)	(((x) >> 31) & 0xfffffULL)
+#define DTE_GCR3_VAL_C(x)	(((x) >> 31) & 0x1fffffULL)
 
 #define DTE_GCR3_INDEX_A	0
 #define DTE_GCR3_INDEX_B	1
drivers/iommu/intel-svm.c +4 -3
index f5573bb9f450..837459762eb3 100644
@@ -613,14 +613,15 @@ static irqreturn_t prq_event_thread(int irq, void *d)
 		 * any faults on kernel addresses. */
 		if (!svm->mm)
 			goto bad_req;
-		/* If the mm is already defunct, don't handle faults. */
-		if (!mmget_not_zero(svm->mm))
-			goto bad_req;
 
 		/* If address is not canonical, return invalid response */
 		if (!is_canonical_address(address))
 			goto bad_req;
 
+		/* If the mm is already defunct, don't handle faults. */
+		if (!mmget_not_zero(svm->mm))
+			goto bad_req;
+
 		down_read(&svm->mm->mmap_sem);
 		vma = find_extend_vma(svm->mm, address);
 		if (!vma || address < vma->vm_start)
drivers/irqchip/irq-gic-v3-its.c +6 -0
index 799df1e598db..84b23d902d5b 100644
@@ -2591,12 +2591,18 @@ static int its_vpe_set_irqchip_state(struct irq_data *d,
 	return 0;
 }
 
+static int its_vpe_retrigger(struct irq_data *d)
+{
+	return !its_vpe_set_irqchip_state(d, IRQCHIP_STATE_PENDING, true);
+}
+
 static struct irq_chip its_vpe_irq_chip = {
 	.name			= "GICv4-vpe",
 	.irq_mask		= its_vpe_mask_irq,
 	.irq_unmask		= its_vpe_unmask_irq,
 	.irq_eoi		= irq_chip_eoi_parent,
 	.irq_set_affinity	= its_vpe_set_affinity,
+	.irq_retrigger		= its_vpe_retrigger,
 	.irq_set_irqchip_state	= its_vpe_set_irqchip_state,
 	.irq_set_vcpu_affinity	= its_vpe_set_vcpu_affinity,
 };
drivers/irqchip/irq-mbigen.c +7 -1
index f7fdbf5d183b..c98358be0bc8 100644
@@ -231,10 +231,16 @@ static int mbigen_irq_domain_alloc(struct irq_domain *domain,
 	return 0;
 }
 
+static void mbigen_irq_domain_free(struct irq_domain *domain, unsigned int virq,
+				   unsigned int nr_irqs)
+{
+	platform_msi_domain_free(domain, virq, nr_irqs);
+}
+
 static const struct irq_domain_ops mbigen_domain_ops = {
 	.translate	= mbigen_domain_translate,
 	.alloc		= mbigen_irq_domain_alloc,
-	.free		= irq_domain_free_irqs_common,
+	.free		= mbigen_irq_domain_free,
 };
 
 static int mbigen_of_create_domain(struct platform_device *pdev,
drivers/irqchip/irq-versatile-fpga.c +13 -5
index 928858dada75..f1386733d3bc 100644
@@ -6,6 +6,7 @@
 #include <linux/irq.h>
 #include <linux/io.h>
 #include <linux/irqchip.h>
+#include <linux/irqchip/chained_irq.h>
 #include <linux/irqchip/versatile-fpga.h>
 #include <linux/irqdomain.h>
 #include <linux/module.h>
@@ -68,12 +69,16 @@ static void fpga_irq_unmask(struct irq_data *d)
 
 static void fpga_irq_handle(struct irq_desc *desc)
 {
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct fpga_irq_data *f = irq_desc_get_handler_data(desc);
-	u32 status = readl(f->base + IRQ_STATUS);
+	u32 status;
+
+	chained_irq_enter(chip, desc);
 
+	status = readl(f->base + IRQ_STATUS);
 	if (status == 0) {
 		do_bad_IRQ(desc);
-		return;
+		goto out;
 	}
 
 	do {
@@ -82,6 +87,9 @@ static void fpga_irq_handle(struct irq_desc *desc)
 		status &= ~(1 << irq);
 		generic_handle_irq(irq_find_mapping(f->domain, irq));
 	} while (status);
+
+out:
+	chained_irq_exit(chip, desc);
 }
 
 /*
@@ -204,6 +212,9 @@ int __init fpga_irq_of_init(struct device_node *node,
 	if (of_property_read_u32(node, "valid-mask", &valid_mask))
 		valid_mask = 0;
 
+	writel(clear_mask, base + IRQ_ENABLE_CLEAR);
+	writel(clear_mask, base + FIQ_ENABLE_CLEAR);
+
 	/* Some chips are cascaded from a parent IRQ */
 	parent_irq = irq_of_parse_and_map(node, 0);
 	if (!parent_irq) {
@@ -213,9 +224,6 @@ int __init fpga_irq_of_init(struct device_node *node,
 
 	fpga_irq_init(base, node->name, 0, parent_irq, valid_mask, node);
 
-	writel(clear_mask, base + IRQ_ENABLE_CLEAR);
-	writel(clear_mask, base + FIQ_ENABLE_CLEAR);
-
 	/*
 	 * On Versatile AB/PB, some secondary interrupts have a direct
 	 * pass-thru to the primary controller for IRQs 20 and 22-31 which need
drivers/md/dm-flakey.c +5 -0
index b1b68e01b889..53cd31199f21 100644
@@ -70,6 +70,11 @@ static int parse_features(struct dm_arg_set *as, struct flakey_c *fc,
 		arg_name = dm_shift_arg(as);
 		argc--;
 
+		if (!arg_name) {
+			ti->error = "Insufficient feature arguments";
+			return -EINVAL;
+		}
+
 		/*
 		 * drop_writes
 		 */
drivers/md/dm-verity-fec.c +1 -0
index e13f90832b6b..285148100cde 100644
@@ -552,6 +552,7 @@ void verity_fec_dtr(struct dm_verity *v)
 	mempool_destroy(f->rs_pool);
 	mempool_destroy(f->prealloc_pool);
 	mempool_destroy(f->extra_pool);
+	mempool_destroy(f->output_pool);
 	kmem_cache_destroy(f->cache);
 
 	if (f->data_bufio)
drivers/md/dm-zoned-metadata.c +0 -1
index e3b67b145027..4d658a0c6025 100644
@@ -1105,7 +1105,6 @@ static int dmz_init_zone(struct dmz_metadata *zmd, struct dm_zone *zone,
 
 	if (blkz->type == BLK_ZONE_TYPE_CONVENTIONAL) {
 		set_bit(DMZ_RND, &zone->flags);
-		zmd->nr_rnd_zones++;
 	} else if (blkz->type == BLK_ZONE_TYPE_SEQWRITE_REQ ||
 		   blkz->type == BLK_ZONE_TYPE_SEQWRITE_PREF) {
 		set_bit(DMZ_SEQ, &zone->flags);
drivers/media/platform/ti-vpe/cal.c +8 -8
index 42e383a48ffe..b6dcae1ecc1b 100644
@@ -544,16 +544,16 @@ static void enable_irqs(struct cal_ctx *ctx)
 
 static void disable_irqs(struct cal_ctx *ctx)
 {
+	u32 val;
+
 	/* Disable IRQ_WDMA_END 0/1 */
-	reg_write_field(ctx->dev,
-			CAL_HL_IRQENABLE_CLR(2),
-			CAL_HL_IRQ_CLEAR,
-			CAL_HL_IRQ_MASK(ctx->csi2_port));
+	val = 0;
+	set_field(&val, CAL_HL_IRQ_CLEAR, CAL_HL_IRQ_MASK(ctx->csi2_port));
+	reg_write(ctx->dev, CAL_HL_IRQENABLE_CLR(2), val);
 	/* Disable IRQ_WDMA_START 0/1 */
-	reg_write_field(ctx->dev,
-			CAL_HL_IRQENABLE_CLR(3),
-			CAL_HL_IRQ_CLEAR,
-			CAL_HL_IRQ_MASK(ctx->csi2_port));
+	val = 0;
+	set_field(&val, CAL_HL_IRQ_CLEAR, CAL_HL_IRQ_MASK(ctx->csi2_port));
+	reg_write(ctx->dev, CAL_HL_IRQENABLE_CLR(3), val);
 	/* Todo: Add VC_IRQ and CSI2_COMPLEXIO_IRQ handling */
 	reg_write(ctx->dev, CAL_CSI2_VC_IRQENABLE(1), 0);
 }
drivers/mfd/dln2.c +7 -2
index 95d0f2df0ad4..672831d5ee32 100644
@@ -93,6 +93,11 @@ struct dln2_mod_rx_slots {
 	spinlock_t lock;
 };
 
+enum dln2_endpoint {
+	DLN2_EP_OUT	= 0,
+	DLN2_EP_IN	= 1,
+};
+
 struct dln2_dev {
 	struct usb_device *usb_dev;
 	struct usb_interface *interface;
@@ -740,10 +745,10 @@ static int dln2_probe(struct usb_interface *interface,
 	    hostif->desc.bNumEndpoints < 2)
 		return -ENODEV;
 
-	epin = &hostif->endpoint[0].desc;
-	epout = &hostif->endpoint[1].desc;
+	epout = &hostif->endpoint[DLN2_EP_OUT].desc;
 	if (!usb_endpoint_is_bulk_out(epout))
 		return -ENODEV;
+	epin = &hostif->endpoint[DLN2_EP_IN].desc;
 	if (!usb_endpoint_is_bulk_in(epin))
 		return -ENODEV;
 
drivers/mfd/rts5227.c +1 -0
index ff296a4bf3d2..dc6a9432a4b6 100644
@@ -369,6 +369,7 @@ static const struct pcr_ops rts522a_pcr_ops = {
 void rts522a_init_params(struct rtsx_pcr *pcr)
 {
 	rts5227_init_params(pcr);
+	pcr->ops = &rts522a_pcr_ops;
 
 	pcr->reg_pm_ctrl3 = RTS522A_PM_CTRL3;
 }
drivers/misc/echo/echo.c +1 -1
index 9597e9523cac..fff13176f9b8 100644
@@ -454,7 +454,7 @@ int16_t oslec_update(struct oslec_state *ec, int16_t tx, int16_t rx)
 	 */
 	ec->factor = 0;
 	ec->shift = 0;
-	if ((ec->nonupdate_dwell == 0)) {
+	if (!ec->nonupdate_dwell) {
 		int p, logp, shift;
 
 		/* Determine:
drivers/mtd/devices/phram.c +9 -6
index 8b66e52ca3cc..9734e6903fe6 100644
@@ -247,22 +247,25 @@ static int phram_setup(const char *val)
 
 	ret = parse_num64(&start, token[1]);
 	if (ret) {
-		kfree(name);
 		parse_err("illegal start address\n");
+		goto error;
 	}
 
 	ret = parse_num64(&len, token[2]);
 	if (ret) {
-		kfree(name);
 		parse_err("illegal device length\n");
+		goto error;
 	}
 
 	ret = register_device(name, start, len);
-	if (!ret)
-		pr_info("%s device: %#llx at %#llx\n", name, len, start);
-	else
-		kfree(name);
+	if (ret)
+		goto error;
+
+	pr_info("%s device: %#llx at %#llx\n", name, len, start);
+	return 0;
 
+error:
+	kfree(name);
 	return ret;
 }
 
drivers/mtd/lpddr/lpddr_cmds.c +0 -1
index 018c75faadb3..e1c283ccbbde 100644
@@ -81,7 +81,6 @@ struct mtd_info *lpddr_cmdset(struct map_info *map)
 	shared = kmalloc(sizeof(struct flchip_shared) * lpddr->numchips,
 						GFP_KERNEL);
 	if (!shared) {
-		kfree(lpddr);
 		kfree(mtd);
 		return NULL;
 	}
drivers/net/dsa/bcm_sf2_cfp.c +3 -6
index 7f8d269dd75a..814618c0b632 100644
@@ -130,17 +130,14 @@ static int bcm_sf2_cfp_rule_set(struct dsa_switch *ds, int port,
 	    (fs->m_ext.vlan_etype || fs->m_ext.data[1]))
 		return -EINVAL;
 
-	if (fs->location != RX_CLS_LOC_ANY && fs->location >= CFP_NUM_RULES)
+	if (fs->location != RX_CLS_LOC_ANY &&
+	    fs->location > bcm_sf2_cfp_rule_size(priv))
 		return -EINVAL;
 
 	if (fs->location != RX_CLS_LOC_ANY &&
 	    test_bit(fs->location, priv->cfp.used))
 		return -EBUSY;
 
-	if (fs->location != RX_CLS_LOC_ANY &&
-	    fs->location > bcm_sf2_cfp_rule_size(priv))
-		return -EINVAL;
-
 	ip_frag = be32_to_cpu(fs->m_ext.data[0]);
 
 	/* We do not support discarding packets, check that the
@@ -333,7 +330,7 @@ static int bcm_sf2_cfp_rule_del(struct bcm_sf2_priv *priv, int port,
 	int ret;
 	u32 reg;
 
-	if (loc >= CFP_NUM_RULES)
+	if (loc > bcm_sf2_cfp_rule_size(priv))
 		return -EINVAL;
 
 	/* Refuse deletion of unused rules, and the default reserved rule */
drivers/net/ethernet/amd/xgbe/xgbe-drv.c +1 -1
index c65d2cdcc7cf..8556962e6824 100644
@@ -515,7 +515,7 @@ static void xgbe_isr_task(unsigned long data)
 				xgbe_disable_rx_tx_ints(pdata);
 
 				/* Turn on polling */
-				__napi_schedule_irqoff(&pdata->napi);
+				__napi_schedule(&pdata->napi);
 			}
 		} else {
 			/* Don't clear Rx/Tx status if doing per channel DMA
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ptp.c +3 -0
index 9f9d6cae39d5..758f2b836328 100644
@@ -246,6 +246,9 @@ static int  cxgb4_ptp_fineadjtime(struct adapter *adapter, s64 delta)
 			     FW_PTP_CMD_PORTID_V(0));
 	c.retval_len16 = cpu_to_be32(FW_CMD_LEN16_V(sizeof(c) / 16));
 	c.u.ts.sc = FW_PTP_SC_ADJ_FTIME;
+	c.u.ts.sign = (delta < 0) ? 1 : 0;
+	if (delta < 0)
+		delta = -delta;
 	c.u.ts.tm = cpu_to_be64(delta);
 
 	err = t4_wr_mbox(adapter, adapter->mbox, &c, sizeof(c), NULL);
drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c +2 -1
index 7d95f0866fb0..e1de97effcd2 100644
@@ -398,7 +398,8 @@ static int cmdq_sync_cmd_direct_resp(struct hinic_cmdq *cmdq,
 
 	spin_unlock_bh(&cmdq->cmdq_lock);
 
-	if (!wait_for_completion_timeout(&done, CMDQ_TIMEOUT)) {
+	if (!wait_for_completion_timeout(&done,
+					 msecs_to_jiffies(CMDQ_TIMEOUT))) {
 		spin_lock_bh(&cmdq->cmdq_lock);
 
 		if (cmdq->errcode[curr_prod_idx] == &errcode)
drivers/net/ethernet/huawei/hinic/hinic_hw_dev.c +2 -49

63 lines not on this page · raw message

drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c +3 -2
index 278dc13f3dae..9fcf2e5e0003 100644
@@ -52,7 +52,7 @@
 
 #define MSG_NOT_RESP                    0xFFFF
 
-#define MGMT_MSG_TIMEOUT                1000
+#define MGMT_MSG_TIMEOUT                5000
 
 #define mgmt_to_pfhwdev(pf_mgmt)        \
 		container_of(pf_mgmt, struct hinic_pfhwdev, pf_to_mgmt)
@@ -276,7 +276,8 @@ static int msg_to_mgmt_sync(struct hinic_pf_to_mgmt *pf_to_mgmt,
 		goto unlock_sync_msg;
 	}
 
-	if (!wait_for_completion_timeout(recv_done, MGMT_MSG_TIMEOUT)) {
+	if (!wait_for_completion_timeout(recv_done,
+					 msecs_to_jiffies(MGMT_MSG_TIMEOUT))) {
 		dev_err(&pdev->dev, "MGMT timeout, MSG id = %d\n", msg_id);
 		err = -ETIMEDOUT;
 		goto unlock_sync_msg;
drivers/net/ethernet/neterion/vxge/vxge-config.h +1 -1
index cfa970417f81..fe4a4315d20d 100644
@@ -2065,7 +2065,7 @@ vxge_hw_vpath_strip_fcs_check(struct __vxge_hw_device *hldev, u64 vpath_mask);
 	if ((level >= VXGE_ERR && VXGE_COMPONENT_LL & VXGE_DEBUG_ERR_MASK) ||  \
 	    (level >= VXGE_TRACE && VXGE_COMPONENT_LL & VXGE_DEBUG_TRACE_MASK))\
 		if ((mask & VXGE_DEBUG_MASK) == mask)			       \
-			printk(fmt "\n", __VA_ARGS__);			       \
+			printk(fmt "\n", ##__VA_ARGS__);		       \
 } while (0)
 #else
 #define vxge_debug_ll(level, mask, fmt, ...)
drivers/net/ethernet/neterion/vxge/vxge-main.h +7 -7
index 3a79d93b8445..5b535aa10d23 100644
@@ -454,49 +454,49 @@ int vxge_fw_upgrade(struct vxgedev *vdev, char *fw_name, int override);
 
 #if (VXGE_DEBUG_LL_CONFIG & VXGE_DEBUG_MASK)
 #define vxge_debug_ll_config(level, fmt, ...) \
-	vxge_debug_ll(level, VXGE_DEBUG_LL_CONFIG, fmt, __VA_ARGS__)
+	vxge_debug_ll(level, VXGE_DEBUG_LL_CONFIG, fmt, ##__VA_ARGS__)
 #else
 #define vxge_debug_ll_config(level, fmt, ...)
 #endif
 
 #if (VXGE_DEBUG_INIT & VXGE_DEBUG_MASK)
 #define vxge_debug_init(level, fmt, ...) \
-	vxge_debug_ll(level, VXGE_DEBUG_INIT, fmt, __VA_ARGS__)
+	vxge_debug_ll(level, VXGE_DEBUG_INIT, fmt, ##__VA_ARGS__)
 #else
 #define vxge_debug_init(level, fmt, ...)
 #endif
 
 #if (VXGE_DEBUG_TX & VXGE_DEBUG_MASK)
 #define vxge_debug_tx(level, fmt, ...) \
-	vxge_debug_ll(level, VXGE_DEBUG_TX, fmt, __VA_ARGS__)
+	vxge_debug_ll(level, VXGE_DEBUG_TX, fmt, ##__VA_ARGS__)
 #else
 #define vxge_debug_tx(level, fmt, ...)
 #endif
 
 #if (VXGE_DEBUG_RX & VXGE_DEBUG_MASK)
 #define vxge_debug_rx(level, fmt, ...) \
-	vxge_debug_ll(level, VXGE_DEBUG_RX, fmt, __VA_ARGS__)
+	vxge_debug_ll(level, VXGE_DEBUG_RX, fmt, ##__VA_ARGS__)
 #else
 #define vxge_debug_rx(level, fmt, ...)
 #endif
 
 #if (VXGE_DEBUG_MEM & VXGE_DEBUG_MASK)
 #define vxge_debug_mem(level, fmt, ...) \
-	vxge_debug_ll(level, VXGE_DEBUG_MEM, fmt, __VA_ARGS__)
+	vxge_debug_ll(level, VXGE_DEBUG_MEM, fmt, ##__VA_ARGS__)
 #else
 #define vxge_debug_mem(level, fmt, ...)
 #endif
 
 #if (VXGE_DEBUG_ENTRYEXIT & VXGE_DEBUG_MASK)
 #define vxge_debug_entryexit(level, fmt, ...) \
-	vxge_debug_ll(level, VXGE_DEBUG_ENTRYEXIT, fmt, __VA_ARGS__)
+	vxge_debug_ll(level, VXGE_DEBUG_ENTRYEXIT, fmt, ##__VA_ARGS__)
 #else
 #define vxge_debug_entryexit(level, fmt, ...)
 #endif
 
 #if (VXGE_DEBUG_INTR & VXGE_DEBUG_MASK)
 #define vxge_debug_intr(level, fmt, ...) \
-	vxge_debug_ll(level, VXGE_DEBUG_INTR, fmt, __VA_ARGS__)
+	vxge_debug_ll(level, VXGE_DEBUG_INTR, fmt, ##__VA_ARGS__)
 #else
 #define vxge_debug_intr(level, fmt, ...)
 #endif
drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c +1 -1
index 07f9067affc6..cda5b0a9e948 100644
@@ -1720,7 +1720,7 @@ static int qlcnic_83xx_get_reset_instruction_template(struct qlcnic_adapter *p_d
 
 	ahw->reset.seq_error = 0;
 	ahw->reset.buff = kzalloc(QLC_83XX_RESTART_TEMPLATE_SIZE, GFP_KERNEL);
-	if (p_dev->ahw->reset.buff == NULL)
+	if (ahw->reset.buff == NULL)
 		return -ENOMEM;
 
 	p_buff = p_dev->ahw->reset.buff;
drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c +2 -0
index fc1fa0f9f338..57694eada995 100644
@@ -155,6 +155,8 @@ static int sun7i_gmac_probe(struct platform_device *pdev)
 	plat_dat->init = sun7i_gmac_init;
 	plat_dat->exit = sun7i_gmac_exit;
 	plat_dat->fix_mac_speed = sun7i_fix_speed;
+	plat_dat->tx_fifo_size = 4096;
+	plat_dat->rx_fifo_size = 16384;
 
 	ret = sun7i_gmac_init(pdev, plat_dat->bsp_priv);
 	if (ret)
drivers/net/wireless/ath/ath9k/main.c +3 -0
index 72ad84fde5c1..8e084670c3c2 100644
@@ -1456,6 +1456,9 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
 		ath_chanctx_set_channel(sc, ctx, &hw->conf.chandef);
 	}
 
+	if (changed & IEEE80211_CONF_CHANGE_POWER)
+		ath9k_set_txpower(sc, NULL);
+
 	mutex_unlock(&sc->mutex);
 	ath9k_ps_restore(sc);
 
drivers/net/wireless/ath/wil6210/cfg80211.c +5 -2
index c374ed311520..58784e77e215 100644
@@ -1735,9 +1735,12 @@ static int wil_cfg80211_suspend(struct wiphy *wiphy,
 
 	wil_dbg_pm(wil, "suspending\n");
 
-	wil_p2p_stop_discovery(wil);
-
+	mutex_lock(&wil->mutex);
+	mutex_lock(&wil->p2p_wdev_mutex);
+	wil_p2p_stop_radio_operations(wil);
 	wil_abort_scan(wil, true);
+	mutex_unlock(&wil->p2p_wdev_mutex);
+	mutex_unlock(&wil->mutex);
 
 out:
 	return rc;
drivers/net/wireless/ath/wil6210/debugfs.c +4 -3
index 6db00c167d2e..3a98f75c5d7e 100644
@@ -1093,7 +1093,7 @@ static const struct file_operations fops_ssid = {
 };
 
 /*---------temp------------*/
-static void print_temp(struct seq_file *s, const char *prefix, u32 t)
+static void print_temp(struct seq_file *s, const char *prefix, s32 t)
 {
 	switch (t) {
 	case 0:
@@ -1101,7 +1101,8 @@ static void print_temp(struct seq_file *s, const char *prefix, u32 t)
 		seq_printf(s, "%s N/A\n", prefix);
 	break;
 	default:
-		seq_printf(s, "%s %d.%03d\n", prefix, t / 1000, t % 1000);
+		seq_printf(s, "%s %s%d.%03d\n", prefix, (t < 0 ? "-" : ""),
+			   abs(t / 1000), abs(t % 1000));
 		break;
 	}
 }
@@ -1109,7 +1110,7 @@ static void print_temp(struct seq_file *s, const char *prefix, u32 t)
 static int wil_temp_debugfs_show(struct seq_file *s, void *data)
 {
 	struct wil6210_priv *wil = s->private;
-	u32 t_m, t_r;
+	s32 t_m, t_r;
 	int rc = wmi_get_temperature(wil, &t_m, &t_r);
 
 	if (rc) {
drivers/net/wireless/ath/wil6210/fw_inc.c +38 -20

95 lines not on this page · raw message

drivers/net/wireless/ath/wil6210/interrupt.c +21 -1
index 59def4f3fcf3..5cf341702dc1 100644
@@ -358,6 +358,25 @@ static void wil_cache_mbox_regs(struct wil6210_priv *wil)
 	wil_mbox_ring_le2cpus(&wil->mbox_ctl.tx);
 }
 
+static bool wil_validate_mbox_regs(struct wil6210_priv *wil)
+{
+	size_t min_size = sizeof(struct wil6210_mbox_hdr) +
+		sizeof(struct wmi_cmd_hdr);
+
+	if (wil->mbox_ctl.rx.entry_size < min_size) {
+		wil_err(wil, "rx mbox entry too small (%d)\n",
+			wil->mbox_ctl.rx.entry_size);
+		return false;
+	}
+	if (wil->mbox_ctl.tx.entry_size < min_size) {
+		wil_err(wil, "tx mbox entry too small (%d)\n",
+			wil->mbox_ctl.tx.entry_size);
+		return false;
+	}
+
+	return true;
+}
+
 static irqreturn_t wil6210_irq_misc(int irq, void *cookie)
 {
 	struct wil6210_priv *wil = cookie;
@@ -393,7 +412,8 @@ static irqreturn_t wil6210_irq_misc(int irq, void *cookie)
 	if (isr & ISR_MISC_FW_READY) {
 		wil_dbg_irq(wil, "IRQ: FW ready\n");
 		wil_cache_mbox_regs(wil);
-		set_bit(wil_status_mbox_ready, wil->status);
+		if (wil_validate_mbox_regs(wil))
+			set_bit(wil_status_mbox_ready, wil->status);
 		/**
 		 * Actual FW ready indicated by the
 		 * WMI_FW_READY_EVENTID
drivers/net/wireless/ath/wil6210/main.c +1 -1
index bac829aa950d..a3dc42841526 100644
@@ -871,7 +871,7 @@ static void wil_bl_crash_info(struct wil6210_priv *wil, bool is_err)
 
 static int wil_wait_for_fw_ready(struct wil6210_priv *wil)
 {
-	ulong to = msecs_to_jiffies(1000);
+	ulong to = msecs_to_jiffies(2000);
 	ulong left = wait_for_completion_timeout(&wil->wmi_ready, to);
 
 	if (0 == left) {
drivers/net/wireless/ath/wil6210/pcie_bus.c +15 -9
index 6a3ab4bf916d..b2c3cf6db881 100644
@@ -393,6 +393,9 @@ static int wil6210_suspend(struct device *dev, bool is_runtime)
 	int rc = 0;
 	struct pci_dev *pdev = to_pci_dev(dev);
 	struct wil6210_priv *wil = pci_get_drvdata(pdev);
+	struct net_device *ndev = wil_to_ndev(wil);
+	bool keep_radio_on = ndev->flags & IFF_UP &&
+			     wil->keep_radio_on_during_sleep;
 
 	wil_dbg_pm(wil, "suspend: %s\n", is_runtime ? "runtime" : "system");
 
@@ -400,14 +403,14 @@ static int wil6210_suspend(struct device *dev, bool is_runtime)
 	if (rc)
 		goto out;
 
-	rc = wil_suspend(wil, is_runtime);
+	rc = wil_suspend(wil, is_runtime, keep_radio_on);
 	if (!rc) {
 		wil->suspend_stats.successful_suspends++;
 
-		/* If platform device supports keep_radio_on_during_sleep
-		 * it will control PCIe master
+		/* In case radio stays on, platform device will control
+		 * PCIe master
 		 */
-		if (!wil->keep_radio_on_during_sleep)
+		if (!keep_radio_on)
 			/* disable bus mastering */
 			pci_clear_master(pdev);
 	}
@@ -420,20 +423,23 @@ static int wil6210_resume(struct device *dev, bool is_runtime)
 	int rc = 0;
 	struct pci_dev *pdev = to_pci_dev(dev);
 	struct wil6210_priv *wil = pci_get_drvdata(pdev);
+	struct net_device *ndev = wil_to_ndev(wil);
+	bool keep_radio_on = ndev->flags & IFF_UP &&
+			     wil->keep_radio_on_during_sleep;
 
 	wil_dbg_pm(wil, "resume: %s\n", is_runtime ? "runtime" : "system");
 
-	/* If platform device supports keep_radio_on_during_sleep it will
-	 * control PCIe master
+	/* In case radio stays on, platform device will control
+	 * PCIe master
 	 */
-	if (!wil->keep_radio_on_during_sleep)
+	if (!keep_radio_on)
 		/* allow master */
 		pci_set_master(pdev);
-	rc = wil_resume(wil, is_runtime);
+	rc = wil_resume(wil, is_runtime, keep_radio_on);
 	if (rc) {
 		wil_err(wil, "device failed to resume (%d)\n", rc);
 		wil->suspend_stats.failed_resumes++;
-		if (!wil->keep_radio_on_during_sleep)
+		if (!keep_radio_on)
 			pci_clear_master(pdev);
 	} else {
 		wil->suspend_stats.successful_resumes++;
drivers/net/wireless/ath/wil6210/pm.c +2 -8
index 8f5d1b447aaa..8378742ecd49 100644
@@ -279,12 +279,9 @@ static int wil_resume_radio_off(struct wil6210_priv *wil)
 	return rc;
 }
 
-int wil_suspend(struct wil6210_priv *wil, bool is_runtime)
+int wil_suspend(struct wil6210_priv *wil, bool is_runtime, bool keep_radio_on)
 {
 	int rc = 0;
-	struct net_device *ndev = wil_to_ndev(wil);
-	bool keep_radio_on = ndev->flags & IFF_UP &&
-			     wil->keep_radio_on_during_sleep;
 
 	wil_dbg_pm(wil, "suspend: %s\n", is_runtime ? "runtime" : "system");
 
@@ -307,12 +304,9 @@ int wil_suspend(struct wil6210_priv *wil, bool is_runtime)
 	return rc;
 }
 
-int wil_resume(struct wil6210_priv *wil, bool is_runtime)
+int wil_resume(struct wil6210_priv *wil, bool is_runtime, bool keep_radio_on)
 {
 	int rc = 0;
-	struct net_device *ndev = wil_to_ndev(wil);
-	bool keep_radio_on = ndev->flags & IFF_UP &&
-			     wil->keep_radio_on_during_sleep;
 	unsigned long long suspend_time_usec = 0;
 
 	wil_dbg_pm(wil, "resume: %s\n", is_runtime ? "runtime" : "system");
drivers/net/wireless/ath/wil6210/txrx.c +2 -2
index 16750056b8b5..b483c4266097 100644
@@ -636,8 +636,8 @@ static int wil_rx_refill(struct wil6210_priv *wil, int count)
 			v->swtail = next_tail) {
 		rc = wil_vring_alloc_skb(wil, v, v->swtail, headroom);
 		if (unlikely(rc)) {
-			wil_err(wil, "Error %d in wil_rx_refill[%d]\n",
-				rc, v->swtail);
+			wil_err_ratelimited(wil, "Error %d in rx refill[%d]\n",
+					    rc, v->swtail);
 			break;
 		}
 	}
drivers/net/wireless/ath/wil6210/wil6210.h +3 -2
index 315ec8b59662..0bfd51adcc81 100644
@@ -865,6 +865,7 @@ void wil_mbox_ring_le2cpus(struct wil6210_mbox_ring *r);
 int wil_find_cid(struct wil6210_priv *wil, const u8 *mac);
 void wil_set_ethtoolops(struct net_device *ndev);
 
+void __iomem *wmi_buffer_block(struct wil6210_priv *wil, __le32 ptr, u32 size);
 void __iomem *wmi_buffer(struct wil6210_priv *wil, __le32 ptr);
 void __iomem *wmi_addr(struct wil6210_priv *wil, u32 ptr);
 int wmi_read_hdr(struct wil6210_priv *wil, __le32 ptr,
@@ -1000,8 +1001,8 @@ int wil_request_firmware(struct wil6210_priv *wil, const char *name,
 bool wil_fw_verify_file_exists(struct wil6210_priv *wil, const char *name);
 
 int wil_can_suspend(struct wil6210_priv *wil, bool is_runtime);
-int wil_suspend(struct wil6210_priv *wil, bool is_runtime);
-int wil_resume(struct wil6210_priv *wil, bool is_runtime);
+int wil_suspend(struct wil6210_priv *wil, bool is_runtime, bool keep_radio_on);
+int wil_resume(struct wil6210_priv *wil, bool is_runtime, bool keep_radio_on);
 bool wil_is_wmi_idle(struct wil6210_priv *wil);
 int wmi_resume(struct wil6210_priv *wil);
 int wmi_suspend(struct wil6210_priv *wil);
drivers/net/wireless/ath/wil6210/wmi.c +11 -2
index 798516f42f2f..22bfa10ea827 100644
@@ -140,13 +140,15 @@ static u32 wmi_addr_remap(u32 x)
 /**
  * Check address validity for WMI buffer; remap if needed
  * @ptr - internal (linker) fw/ucode address
+ * @size - if non zero, validate the block does not
+ *  exceed the device memory (bar)
  *
  * Valid buffer should be DWORD aligned
  *
  * return address for accessing buffer from the host;
  * if buffer is not valid, return NULL.
  */
-void __iomem *wmi_buffer(struct wil6210_priv *wil, __le32 ptr_)
+void __iomem *wmi_buffer_block(struct wil6210_priv *wil, __le32 ptr_, u32 size)
 {
 	u32 off;
 	u32 ptr = le32_to_cpu(ptr_);
@@ -161,10 +163,17 @@ void __iomem *wmi_buffer(struct wil6210_priv *wil, __le32 ptr_)
 	off = HOSTADDR(ptr);
 	if (off > wil->bar_size - 4)
 		return NULL;
+	if (size && ((off + size > wil->bar_size) || (off + size < off)))
+		return NULL;
 
 	return wil->csr + off;
 }
 
+void __iomem *wmi_buffer(struct wil6210_priv *wil, __le32 ptr_)
+{
+	return wmi_buffer_block(wil, ptr_, 0);
+}
+
 /**
  * Check address validity
  */
@@ -222,7 +231,7 @@ static int __wmi_send(struct wil6210_priv *wil, u16 cmdid, void *buf, u16 len)
 	uint retry;
 	int rc = 0;
 
-	if (sizeof(cmd) + len > r->entry_size) {
+	if (len > r->entry_size - sizeof(cmd)) {
 		wil_err(wil, "WMI size too large: %d bytes, max is %d\n",
 			(int)(sizeof(cmd) + len), r->entry_size);
 		return -ERANGE;
drivers/net/wireless/mac80211_hwsim.c +6 -6
index 27224dc26413..a8ec5b2c5abb 100644
@@ -3134,9 +3134,9 @@ static int hwsim_new_radio_nl(struct sk_buff *msg, struct genl_info *info)
 		param.no_vif = true;
 
 	if (info->attrs[HWSIM_ATTR_RADIO_NAME]) {
-		hwname = kasprintf(GFP_KERNEL, "%.*s",
-				   nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]),
-				   (char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]));
+		hwname = kstrndup((char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]),
+				  nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]),
+				  GFP_KERNEL);
 		if (!hwname)
 			return -ENOMEM;
 		param.hwname = hwname;
@@ -3175,9 +3175,9 @@ static int hwsim_del_radio_nl(struct sk_buff *msg, struct genl_info *info)
 	if (info->attrs[HWSIM_ATTR_RADIO_ID]) {
 		idx = nla_get_u32(info->attrs[HWSIM_ATTR_RADIO_ID]);
 	} else if (info->attrs[HWSIM_ATTR_RADIO_NAME]) {
-		hwname = kasprintf(GFP_KERNEL, "%.*s",
-				   nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]),
-				   (char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]));
+		hwname = kstrndup((char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]),
+				  nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]),
+				  GFP_KERNEL);
 		if (!hwname)
 			return -ENOMEM;
 	} else
drivers/nvdimm/bus.c +4 -2
index 2f1b54fab399..83e18b367944 100644
@@ -951,8 +951,10 @@ static int __nd_ioctl(struct nvdimm_bus *nvdimm_bus, struct nvdimm *nvdimm,
 			return -EFAULT;
 	}
 
-	if (!desc || (desc->out_num + desc->in_num == 0) ||
-			!test_bit(cmd, &cmd_mask))
+	if (!desc ||
+	    (desc->out_num + desc->in_num == 0) ||
+	    cmd > ND_CMD_CALL ||
+	    !test_bit(cmd, &cmd_mask))
 		return -ENOTTY;
 
 	/* fail write commands (when read-only) */
drivers/nvme/host/fc.c +2 -12
index 9e4d2ecf736d..058d542647dd 100644
@@ -337,8 +337,7 @@ nvme_fc_register_localport(struct nvme_fc_port_info *pinfo,
 	    !template->ls_req || !template->fcp_io ||
 	    !template->ls_abort || !template->fcp_abort ||
 	    !template->max_hw_queues || !template->max_sgl_segments ||
-	    !template->max_dif_sgl_segments || !template->dma_boundary ||
-	    !template->module) {
+	    !template->max_dif_sgl_segments || !template->dma_boundary) {
 		ret = -EINVAL;
 		goto out_reghost_failed;
 	}
@@ -1763,7 +1762,6 @@ nvme_fc_ctrl_free(struct kref *ref)
 {
 	struct nvme_fc_ctrl *ctrl =
 		container_of(ref, struct nvme_fc_ctrl, ref);
-	struct nvme_fc_lport *lport = ctrl->lport;
 	unsigned long flags;
 
 	if (ctrl->ctrl.tagset) {
@@ -1789,7 +1787,6 @@ nvme_fc_ctrl_free(struct kref *ref)
 	if (ctrl->ctrl.opts)
 		nvmf_free_options(ctrl->ctrl.opts);
 	kfree(ctrl);
-	module_put(lport->ops->module);
 }
 
 static void
@@ -2768,15 +2765,10 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts,
 		goto out_fail;
 	}
 
-	if (!try_module_get(lport->ops->module)) {
-		ret = -EUNATCH;
-		goto out_free_ctrl;
-	}
-
 	idx = ida_simple_get(&nvme_fc_ctrl_cnt, 0, 0, GFP_KERNEL);
 	if (idx < 0) {
 		ret = -ENOSPC;
-		goto out_mod_put;
+		goto out_free_ctrl;
 	}
 
 	ctrl->ctrl.opts = opts;
@@ -2923,8 +2915,6 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts,
 out_free_ida:
 	put_device(ctrl->dev);
 	ida_simple_remove(&nvme_fc_ctrl_cnt, ctrl->cnum);
-out_mod_put:
-	module_put(lport->ops->module);
 out_free_ctrl:
 	kfree(ctrl);
 out_fail:
drivers/nvme/target/fcloop.c +0 -1
index b8fe8702065b..096523d8dd42 100644
@@ -693,7 +693,6 @@ fcloop_targetport_delete(struct nvmet_fc_target_port *targetport)
 #define FCLOOP_DMABOUND_4G		0xFFFFFFFF
 
 static struct nvme_fc_port_template fctemplate = {
-	.module			= THIS_MODULE,
 	.localport_delete	= fcloop_localport_delete,
 	.remoteport_delete	= fcloop_remoteport_delete,
 	.create_queue		= fcloop_create_queue,
drivers/of/base.c +0 -3
index 41b254be0295..c0281be8e061 100644
@@ -169,9 +169,6 @@ int __of_attach_node_sysfs(struct device_node *np)
 	struct property *pp;
 	int rc;
 
-	if (!IS_ENABLED(CONFIG_SYSFS))
-		return 0;
-
 	if (!of_kset)
 		return 0;
 
drivers/of/unittest.c +5 -2
index 4bf6a9db6ac0..55c98f119df2 100644
@@ -887,10 +887,13 @@ static void __init of_unittest_platform_populate(void)
 
 	of_platform_populate(np, match, NULL, &test_bus->dev);
 	for_each_child_of_node(np, child) {
-		for_each_child_of_node(child, grandchild)
-			unittest(of_find_device_by_node(grandchild),
+		for_each_child_of_node(child, grandchild) {
+			pdev = of_find_device_by_node(grandchild);
+			unittest(pdev,
 				 "Could not create device for node '%s'\n",
 				 grandchild->name);
+			of_dev_put(pdev);
+		}
 	}
 
 	of_platform_depopulate(&test_bus->dev);
drivers/pci/endpoint/pci-epc-mem.c +8 -2
index 83b7d5d3fc3e..60fbfe92e0ef 100644
@@ -90,6 +90,7 @@ int __pci_epc_mem_init(struct pci_epc *epc, phys_addr_t phys_base, size_t size,
 	mem->page_size = page_size;
 	mem->pages = pages;
 	mem->size = size;
+	mutex_init(&mem->lock);
 
 	epc->mem = mem;
 
@@ -133,7 +134,7 @@ void __iomem *pci_epc_mem_alloc_addr(struct pci_epc *epc,
 				     phys_addr_t *phys_addr, size_t size)
 {
 	int pageno;
-	void __iomem *virt_addr;
+	void __iomem *virt_addr = NULL;
 	struct pci_epc_mem *mem = epc->mem;
 	unsigned int page_shift = ilog2(mem->page_size);
 	int order;
@@ -141,15 +142,18 @@ void __iomem *pci_epc_mem_alloc_addr(struct pci_epc *epc,
 	size = ALIGN(size, mem->page_size);
 	order = pci_epc_mem_get_order(mem, size);
 
+	mutex_lock(&mem->lock);
 	pageno = bitmap_find_free_region(mem->bitmap, mem->pages, order);
 	if (pageno < 0)
-		return NULL;
+		goto ret;
 
 	*phys_addr = mem->phys_base + (pageno << page_shift);
 	virt_addr = ioremap(*phys_addr, size);
 	if (!virt_addr)
 		bitmap_release_region(mem->bitmap, pageno, order);
 
+ret:
+	mutex_unlock(&mem->lock);
 	return virt_addr;
 }
 EXPORT_SYMBOL_GPL(pci_epc_mem_alloc_addr);
@@ -175,7 +179,9 @@ void pci_epc_mem_free_addr(struct pci_epc *epc, phys_addr_t phys_addr,
 	pageno = (phys_addr - mem->phys_base) >> page_shift;
 	size = ALIGN(size, mem->page_size);
 	order = pci_epc_mem_get_order(mem, size);
+	mutex_lock(&mem->lock);
 	bitmap_release_region(mem->bitmap, pageno, order);
+	mutex_unlock(&mem->lock);
 }
 EXPORT_SYMBOL_GPL(pci_epc_mem_free_addr);
 
drivers/pci/pcie/aspm.c +2 -2
index 6b4e82a4b64e..6f58767b5190 100644
@@ -693,9 +693,9 @@ static void pcie_config_aspm_l1ss(struct pcie_link_state *link, u32 state)
 
 	/* Enable what we need to enable */
 	pci_clear_and_set_dword(parent, up_cap_ptr + PCI_L1SS_CTL1,
-				PCI_L1SS_CAP_L1_PM_SS, val);
+				PCI_L1SS_CTL1_L1SS_MASK, val);
 	pci_clear_and_set_dword(child, dw_cap_ptr + PCI_L1SS_CTL1,
-				PCI_L1SS_CAP_L1_PM_SS, val);
+				PCI_L1SS_CTL1_L1SS_MASK, val);
 }
 
 static void pcie_config_aspm_dev(struct pci_dev *pdev, u32 val)
drivers/pci/switch/switchtec.c +1 -1
index bf229b442e72..6ef0d4b756f0 100644
@@ -412,7 +412,7 @@ static int mrpc_queue_cmd(struct switchtec_user *stuser)
 	kref_get(&stuser->kref);
 	stuser->read_len = sizeof(stuser->data);
 	stuser_set_state(stuser, MRPC_QUEUED);
[… more lines in the raw message]

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

drivers/power/supply/bq27xxx_battery.c +4 -1
index 51f0961ecf3e..a7d8cadf172c 100644

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

drivers/pwm/pwm-pca9685.c +48 -37

85 lines not on this page · raw message

drivers/rpmsg/qcom_glink_native.c +1 -0
index 114481c9fba1..7802663efe33 100644

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

drivers/rpmsg/qcom_glink_smem.c +5 -1
index 2b54e71886d9..ed616b0bc563 100644

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

drivers/rtc/rtc-88pm860x.c +8 -6
index 7d3e5168fcef..efbbde7379f1 100644

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

drivers/rtc/rtc-omap.c +1 -3
index ae6506a8b4f5..b25a2ba5ac48 100644

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

drivers/rtc/rtc-pm8xxx.c +38 -11

49 lines not on this page · raw message

drivers/s390/scsi/zfcp_erp.c +1 -1
index 8f90e4cea254..168f7c84edba 100644

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

drivers/scsi/lpfc/lpfc_nvme.c +0 -2
index af937b91765e..fcf4b4175d77 100644

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

drivers/scsi/mpt3sas/mpt3sas_scsih.c +4 -4
index 9ef0c6265cd2..400c055167b0 100644

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

drivers/scsi/qla2xxx/qla_nvme.c +0 -1
index 7dceed021236..6b33a1f24f56 100644

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

drivers/scsi/sg.c +3 -1
index 3a406b40f150..b5f589b7b43d 100644

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

drivers/scsi/ufs/ufs-qcom.c +1 -1
index c87d770b519a..f2b8de195d8a 100644

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

drivers/scsi/ufs/ufshcd.c +24 -8
index c35045324695..78d9c2c48236 100644

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

drivers/soc/imx/gpc.c +13 -11
index 3a12123de466..0e083fe8b893 100644

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

drivers/soc/qcom/smem.c +1 -1
index 18ec52f2078a..89dd50fa404f 100644

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

drivers/target/iscsi/iscsi_target.c +23 -56

79 lines not on this page · raw message

drivers/target/iscsi/iscsi_target.h +0 -1
index 42de1843aa40..f0d2cbf594c9 100644

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

drivers/target/iscsi/iscsi_target_configfs.c +4 -1
index 0ebc4818e132..4191e4a8a9ed 100644

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

drivers/target/iscsi/iscsi_target_login.c +3 -2
index 27893d90c4ef..55df6f99e669 100644

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

drivers/tty/ehv_bytechan.c +18 -3
index a1c7125cb968..5a348efb91ad 100644

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

drivers/usb/dwc3/core.c +5 -0
index 021899c58028..010201dbd029 100644

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

drivers/usb/dwc3/core.h +4 -0
index 40bf0e0768d9..8747f9f02229 100644

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

drivers/usb/gadget/composite.c +9 -0
index 5a4cf779b269..c1f037af9702 100644

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

drivers/usb/gadget/function/f_fs.c +1 -0
index 282396e8eec6..819fd77a2da4 100644

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

drivers/video/fbdev/core/fbmem.c +1 -1
index 83961a22bef1..07dcf687a52b 100644

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

drivers/video/fbdev/sis/init301.c +1 -3
index 1ec9c3e0e1d8..f23a381442d3 100644

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

fs/btrfs/async-thread.c +8 -0
index 72d7589072f5..92615badc173 100644

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

fs/btrfs/async-thread.h +2 -0
index fc957e00cef1..2a25aef6ef2a 100644

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

fs/btrfs/delayed-inode.c +13 -0
index 87414fc9e268..416fb50a5378 100644

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

fs/btrfs/disk-io.c +13 -0
index 6b4fee5c79f9..096c015b22a4 100644

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

fs/btrfs/relocation.c +25 -14
index d4c00edd16d2..f4397dd19583 100644

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

fs/buffer.c +11 -0
index bdca7b10e239..cae7f24a0410 100644

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

fs/cifs/file.c +1 -1
index 5e75c5f77f4c..662977b8d6ae 100644

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

fs/exec.c +1 -1
index 7def97f6aac2..f687e7d59beb 100644

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

fs/ext2/xattr.c +4 -4
index dd8f10db82e9..bd1d68ff3a9f 100644

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

fs/ext4/extents.c +4 -4
index 20d68554680f..fa6ae9014e8f 100644

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

fs/ext4/inode.c +2 -2
index 1e2edebd0929..5b0d5ca2c2b2 100644

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

fs/ext4/super.c +6 -5
index f5646bcad770..0ced133a36ec 100644

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

fs/filesystems.c +3 -1
index f2728a4a03a1..8fb7cda40997 100644

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

fs/gfs2/glock.c +3 -0
index aea1ed0aebd0..1e2ff4b32c79 100644

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

fs/hfsplus/attributes.c +4 -0
index e6d554476db4..eeebe80c6be4 100644

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

fs/jbd2/commit.c +4 -3
index 1a4bd8d9636e..6870103a0f59 100644

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

fs/nfs/callback_proc.c +2 -0
index b8d55da2f04d..440ff8e7082b 100644

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

fs/nfs/direct.c +2 -0
index 9d07b53e1647..e6ea4511c41c 100644

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

fs/nfs/pagelist.c +8 -9
index ceb6892d9bbd..7c01936be7c7 100644

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

fs/nfs/write.c +1 -0
index 89f36040adf6..7b6bda68aa86 100644

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

fs/ocfs2/alloc.c +4 -0
index addd7c5f2d3e..bed54e8adcf9 100644

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

include/acpi/processor.h +8 -0
index d591bb77f592..f4bff2313547 100644

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

include/keys/big_key-type.h +1 -1
index e0970a578188..a7207a965466 100644

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

include/keys/user-type.h +1 -2
index 12babe991594..0d8f3cd3056f 100644

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

include/linux/buffer_head.h +8 -0
index afa37f807f12..2e1077ea77db 100644

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

include/linux/compiler.h +1 -1
index f84d332085c3..3ffe3f3f7903 100644

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

include/linux/devfreq_cooling.h +1 -1
index 4635f95000a4..79a6e37a1d6f 100644

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

include/linux/iocontext.h +1 -0
index dba15ca8e60b..1dcd9198beb7 100644

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

include/linux/key-type.h +1 -1
index dfb3ba782d2c..535b310a4c3b 100644

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

include/linux/nvme-fc-driver.h +0 -4
index e9c3b98df3e2..a726f96010d5 100644

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

include/linux/pci-epc.h +3 -0
index f7a04e1af112..abbc74621f38 100644

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

include/linux/percpu_counter.h +2 -2
index 73a7bf30fe9a..3f3cece31148 100644

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

include/linux/sched.h +2 -2
index b06577652643..99650f05c271 100644

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

include/linux/swab.h +1 -0
index e466fd159c85..bcff5149861a 100644

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

include/linux/swapops.h +2 -1
index 1d3877c39a00..0b8c86096752 100644

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

include/net/ip6_route.h +1 -0
index bee528135cf1..9f7f81117434 100644

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

include/target/iscsi/iscsi_target_core.h +1 -1
index cf5f3fff1f1a..fd7e4d1df9a1 100644

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

include/uapi/linux/swab.h +10 -0
index 23cd84868cc3..fa7f97da5b76 100644

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

kernel/cpu.c +1 -4
index 96c0a868232e..d8c77bfb6e7e 100644

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

kernel/irq/irqdomain.c +5 -5
index b269ae16b10c..0d54f8256b9f 100644

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

kernel/kmod.c +2 -2
index bc6addd9152b..a2de58de6ab6 100644

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

kernel/locking/lockdep.c +4 -0
index 90a3469a7a88..03e3ab61a2ed 100644

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

kernel/locking/locktorture.c +4 -4
index 6dca260eeccf..032868be3259 100644

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

kernel/sched/sched.h +7 -1
index 268f560ec998..391d73a12ad7 100644

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

kernel/signal.c +1 -1
index c066168f8854..deb36b35c30b 100644

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

kernel/trace/trace_events_trigger.c +3 -7
index 31e91efe243e..6fb5eb7b57dc 100644

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

kernel/trace/trace_kprobe.c +2 -0
index ea20274a105a..d66aed6e9c75 100644

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

lib/find_bit.c +2 -14
index 6ed74f78380c..883ef3755a1c 100644

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

lib/raid6/neon.uc +2 -3
index d5242f544551..b7c68030da4f 100644

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

lib/raid6/recov_neon_inner.c +2 -5
index 8cd20c9f834a..7d00c31a6547 100644

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

mm/page_alloc.c +4 -4
index 6f71518a4558..08af4e3de6fb 100644

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

mm/slub.c +1 -1
index 958a8f7a3c25..3c1a16f03b2b 100644

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

mm/vmalloc.c +5 -3
index d00961ba0c42..88091fd704f4 100644

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

net/core/dev.c +2 -1
index 36d926d2d5f0..4f32a3251b64 100644

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

net/core/rtnetlink.c +1 -1
index 7c479c1ffd77..cb15338cfda4 100644

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

net/dns_resolver/dns_key.c +1 -1
index 5f5d9eafccf5..ea133857f19e 100644

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

net/hsr/hsr_netlink.c +8 -2
index 37708dabebd1..606bc7fe5cc7 100644

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

net/ipv4/devinet.c +9 -4
index 5f020c051af9..096a28f9720d 100644

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

net/netfilter/nf_tables_api.c +2 -2
index 91490446ebb4..5b8d5bfeb7ac 100644

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

net/qrtr/qrtr.c +4 -3
index 8d9a244f4534..944ce686bfe5 100644

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

net/rxrpc/key.c +9 -18
index e7f6b8823eb6..ad9d1b21cb0b 100644

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

security/keys/big_key.c +90 -29

119 lines not on this page · raw message

security/keys/encrypted-keys/encrypted.c +3 -4
index d92cbf9687c3..571f6d486838 100644

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

security/keys/key.c +1 -1
index 17244f5f54c6..5f4cb271464a 100644

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

security/keys/keyctl.c +59 -18

77 lines not on this page · raw message

security/keys/keyring.c +1 -5
index 359b9cba3d0d..f7cf371bcd2a 100644

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

security/keys/request_key_auth.c +3 -4
index 1d34b2a5f485..13ac3b1e57da 100644

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

security/keys/trusted.c +2 -12
index 98aa89ff7bfd..01e8544f79a5 100644

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

security/keys/user_defined.c +2 -3
index 9f558bedba23..0e723b676aef 100644

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

sound/core/oss/pcm_plugin.c +24 -8
index 40d2d39151bf..3ecc070738e8 100644

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

sound/pci/hda/hda_beep.c +5 -1
index c397e7da0eac..7ccfb09535e1 100644

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

sound/pci/hda/hda_codec.c +1 -0
index a6f7561e7bb9..7d65fe31c825 100644

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

sound/pci/hda/hda_intel.c +21 -14
index 890793ad85ca..d392c1ec0b28 100644

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

sound/pci/hda/patch_realtek.c +9 -6
index b500dad33ea9..3fded87817c6 100644

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

sound/pci/ice1712/prodigy_hifi.c +2 -2
index 2697402b5195..41f6450a2539 100644

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

sound/soc/intel/atom/sst-atom-controls.c +1 -1
index 0f3604b55942..6044b3bbb121 100644

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

sound/soc/intel/atom/sst/sst_pci.c +1 -1
index 6906ee624cf6..438c7bcd8c4c 100644

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

sound/soc/soc-dapm.c +7 -1
index fb2fef166672..7861cf7a4488 100644

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

sound/soc/soc-ops.c +2 -2
index 500f98c730b9..d5ef627e93be 100644

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

sound/soc/soc-pcm.c +4 -2
index e75822dd9930..fd4b71729eed 100644

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

sound/soc/soc-topology.c +1 -1
index 1a912f72bddd..a215b9ad148c 100644

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

sound/usb/mixer.c +1 -1
index e6e4c3b9d9d3..7b75208d5cea 100644

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

sound/usb/mixer_maps.c +28 -0
index eaa03acd4686..26ce6838e842 100644

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

tools/gpio/Makefile +1 -1
index 6a73c06e069c..3dbf7e8b07a5 100644

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

tools/objtool/check.c +1 -4
index 5422543faff8..ccd5319d1284 100644

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

tools/perf/Makefile.config +10 -1
index b97e31498ff7..8baaf9797101 100644

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

tools/testing/selftests/x86/ptrace_syscall.c +6 -2
index 6f22238f3217..12aaa063196e 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.