Linux 5.14.9
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.14.9 kernel.
All users of the 5.14 kernel series must upgrade.
The updated 5.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.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
------------
Makefile | 2 arch/alpha/include/asm/io.h | 6 arch/arm64/include/asm/assembler.h | 5 arch/arm64/include/asm/mte.h | 6 arch/arm64/include/asm/string.h | 2 arch/arm64/kernel/cpufeature.c | 8 arch/arm64/kernel/mte.c | 10 arch/arm64/kernel/process.c | 2 arch/arm64/lib/strcmp.S | 2 arch/arm64/lib/strncmp.S | 2 arch/m68k/include/asm/raw_io.h | 20 - arch/parisc/include/asm/page.h | 2 arch/sparc/kernel/ioport.c | 4 arch/sparc/kernel/mdesc.c | 3 arch/x86/include/asm/pkeys.h | 2 arch/x86/include/asm/special_insns.h | 2 arch/x86/kernel/setup.c | 26 - arch/x86/mm/fault.c | 26 - arch/x86/xen/enlighten_pv.c | 15 block/blk-cgroup.c | 8 block/blk-integrity.c | 9 block/blk-mq-tag.c | 2 drivers/android/binder.c | 58 ++- drivers/android/binder_internal.h | 2 drivers/base/swnode.c | 3 drivers/comedi/comedi_fops.c | 1 drivers/cpufreq/intel_pstate.c | 22 - drivers/edac/dmc520_edac.c | 2 drivers/edac/synopsys_edac.c | 2 drivers/fpga/machxo2-spi.c | 6 drivers/gpio/gpio-uniphier.c | 4 drivers/gpio/gpiolib-acpi.c | 6 drivers/gpu/drm/amd/amdkfd/kfd_device.c | 44 +- drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 1 drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 152 +++++-- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 53 ++ drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 10 drivers/gpu/drm/amd/pm/powerplay/si_dpm.c | 2 drivers/gpu/drm/ttm/ttm_pool.c | 3 drivers/gpu/drm/vc4/vc4_hdmi.c | 44 -- drivers/irqchip/Kconfig | 1 drivers/irqchip/irq-armada-370-xp.c | 4 drivers/irqchip/irq-gic-v3-its.c | 2 drivers/mcb/mcb-core.c | 12 drivers/md/md.c | 5 drivers/misc/bcm-vk/bcm_vk_tty.c | 6 drivers/misc/genwqe/card_base.c | 2 drivers/net/dsa/mv88e6xxx/chip.c | 16 drivers/net/dsa/mv88e6xxx/devlink.c | 73 --- drivers/net/dsa/mv88e6xxx/devlink.h | 6 drivers/net/dsa/realtek-smi-core.c | 2 drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c | 4 drivers/net/ethernet/broadcom/bgmac-bcma.c | 2 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 drivers/net/ethernet/broadcom/bnxt/bnxt.h | 5 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 2 drivers/net/ethernet/cadence/macb_pci.c | 2 drivers/net/ethernet/freescale/enetc/enetc.c | 7 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c | 8 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 80 ++-- drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c | 10 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c | 2 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 52 +- drivers/net/ethernet/i825xx/82596.c | 2 drivers/net/ethernet/mediatek/mtk_ppe_offload.c | 3 drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 3 drivers/net/ethernet/mscc/ocelot.c | 11 drivers/net/ethernet/qlogic/qed/qed_iwarp.c | 8 drivers/net/ethernet/qlogic/qed/qed_roce.c | 8 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 drivers/net/hamradio/6pack.c | 4 drivers/net/phy/phylink.c | 30 + drivers/net/usb/hso.c | 12 drivers/net/virtio_net.c | 4 drivers/net/vxlan.c | 2 drivers/nfc/st-nci/spi.c | 1 drivers/nvme/host/core.c | 33 - drivers/nvme/host/multipath.c | 7 drivers/nvme/host/rdma.c | 16 drivers/nvme/host/tcp.c | 13 drivers/nvme/target/configfs.c | 2 drivers/platform/x86/amd-pmc.c | 2 drivers/platform/x86/dell/Kconfig | 3 drivers/platform/x86/intel_punit_ipc.c | 3 drivers/regulator/max14577-regulator.c | 2 drivers/regulator/qcom-rpmh-regulator.c | 2 drivers/s390/net/qeth_core_main.c | 3 drivers/scsi/lpfc/lpfc_attr.c | 3 drivers/scsi/qla2xxx/qla_init.c | 3 drivers/scsi/scsi_transport_iscsi.c | 8 drivers/scsi/sd_zbc.c | 8 drivers/scsi/ufs/ufshcd.c | 81 +--- drivers/scsi/ufs/ufshcd.h | 5 drivers/scsi/ufs/ufshci.h | 1 drivers/spi/spi-tegra20-slink.c | 4 drivers/spi/spi.c | 8 drivers/staging/greybus/uart.c | 62 +-- drivers/target/target_core_configfs.c | 32 + drivers/thermal/intel/int340x_thermal/processor_thermal_device.c | 5 drivers/thermal/thermal_core.c | 7 drivers/tty/serial/8250/8250_omap.c | 2 drivers/tty/serial/mvebu-uart.c | 2 drivers/tty/synclink_gt.c | 44 +- drivers/usb/cdns3/cdns3-gadget.c | 14 drivers/usb/class/cdc-acm.c | 7 drivers/usb/class/cdc-acm.h | 2 drivers/usb/core/hcd.c | 29 + drivers/usb/dwc2/gadget.c | 193 +++++----- drivers/usb/dwc3/core.c | 30 - drivers/usb/gadget/function/f_uac2.c | 19 drivers/usb/gadget/function/u_audio.c | 13 drivers/usb/gadget/udc/r8a66597-udc.c | 2 drivers/usb/host/bcma-hcd.c | 5 drivers/usb/host/xhci.c | 1 drivers/usb/isp1760/isp1760-hcd.c | 6 drivers/usb/musb/tusb6010.c | 1 drivers/usb/serial/cp210x.c | 36 + drivers/usb/serial/mos7840.c | 2 drivers/usb/serial/option.c | 11 drivers/usb/storage/unusual_devs.h | 9 drivers/usb/storage/unusual_uas.h | 2 drivers/xen/balloon.c | 62 ++- fs/afs/dir.c | 46 -- fs/afs/dir_edit.c | 4 fs/afs/fs_probe.c | 8 fs/afs/fsclient.c | 31 + fs/afs/inode.c | 10 fs/afs/internal.h | 11 fs/afs/protocol_afs.h | 15 fs/afs/protocol_yfs.h | 6 fs/afs/write.c | 12 fs/btrfs/space-info.c | 5 fs/cifs/cifsglob.h | 1 fs/cifs/connect.c | 5 fs/cifs/file.c | 4 fs/cifs/misc.c | 4 fs/io_uring.c | 13 fs/lockd/svcxdr.h | 13 fs/ocfs2/dlmglue.c | 3 fs/qnx4/dir.c | 69 ++- include/linux/compiler.h | 2 include/linux/pkeys.h | 2 include/linux/usb/hcd.h | 2 include/net/dsa.h | 8 include/trace/events/erofs.h | 6 include/uapi/linux/android/binder.h | 7 kernel/bpf/verifier.c | 2 kernel/dma/debug.c | 3 kernel/entry/kvm.c | 4 kernel/rseq.c | 14 kernel/trace/blktrace.c | 8 mm/debug.c | 3 mm/memory-failure.c | 2 mm/util.c | 4 net/core/dev.c | 16 net/dsa/dsa2.c | 64 ++- net/ipv4/nexthop.c | 21 - net/ipv6/ip6_fib.c | 3 net/mptcp/protocol.c | 4 net/smc/smc_clc.c | 3 net/smc/smc_core.c | 2 tools/lib/perf/evsel.c | 64 ++- tools/testing/selftests/arm64/signal/test_signals.h | 2 tools/testing/selftests/arm64/signal/test_signals_utils.c | 10 164 files changed, 1439 insertions(+), 862 deletions(-)
Andreas Larsson (1):
sparc32: page align size in arch_dma_alloc
Andy Shevchenko (1):
platform/x86/intel: punit_ipc: Drop wrong use of ACPI_PTR()
Antoine Tenart (1):
thermal/drivers/int340x: Do not set a wrong tcc offset on resume
Anton Eidelman (1):
nvme-multipath: fix ANA state updates when a namespace is not present
Aya Levin (1):
net/mlx4_en: Don't allow aRFS for encapsulated packets
Baokun Li (1):
scsi: iscsi: Adjust iface sysfs attr detection
Bart Van Assche (4):
scsi: sd_zbc: Support disks with more than 2**32 logical blocks
scsi: ufs: Revert "Utilize Transfer Request List Completion Notification Register"
scsi: ufs: Retry aborted SCSI commands instead of completing these successfully
scsi: ufs: core: Unbreak the reset handler
Bixuan Cui (1):
bpf: Add oversize check before call kvcalloc()
Borislav Petkov (1):
EDAC/dmc520: Assign the proper type to dimm->edac_mode
Carlo Lobrano (1):
USB: serial: option: add Telit LN920 compositions
Chen Jun (1):
mm: fix uninitialized use in overcommit_policy_handler
Christian Lamparter (1):
net: bgmac-bcma: handle deferred probe error due to mac-address
Christoph Hellwig (3):
nvme: keep ctrl->namespaces ordered
md: fix a lock order reversal in md_alloc
block: check if a profile is actually registered in blk_integrity_unregister
Christophe JAILLET (1):
misc: genwqe: Fixes DMA mask setting
Chuck Lever (1):
NLM: Fix svcxdr_encode_owner()
Claudiu Manoil (2):
enetc: Fix illegal access when reading affinity_hint
enetc: Fix uninitialized struct dim_sample field usage
Cristian Marussi (1):
kselftest/arm64: signal: Skip tests if required features are missing
Dan Carpenter (7):
usb: gadget: r8a66597: fix a loop in set_feature()
usb: musb: tusb6010: uninitialized data in tusb_fifo_write_unaligned()
mcb: fix error handling in mcb_alloc_bus()
thermal/core: Potential buffer overflow in thermal_build_list_of_policies()
cifs: fix a sign extension bug
scsi: lpfc: Use correct scnprintf() limit
nvmet: fix a width vs precision bug in nvmet_subsys_attr_serial_show()
Dan Li (1):
arm64: Mark __stack_chk_guard as __ro_after_init
David Howells (4):
afs: Fix page leak
afs: Fix incorrect triggering of sillyrename on 3rd-party invalidation
afs: Fix corruption in reads at fpos 2G-4G from an OpenAFS server
afs: Fix updating of i_blocks on file/dir extension
Dmitry Baryshkov (1):
regulator: qcom-rpmh-regulator: fix pm8009-1 ldo7 resource name
Dmitry Bogdanov (1):
scsi: qla2xxx: Restore initiator in dual mode
Doug Smythies (1):
cpufreq: intel_pstate: Override parameters if HWP forced by BIOS
Felix Fietkau (1):
net: ethernet: mtk_eth_soc: avoid creating duplicate offload entries
Felix Kuehling (1):
drm/amdkfd: make needs_pcie_atomics FW-version dependent
Gao Xiang (1):
erofs: fix up erofs_lookup tracepoint
Greg Kroah-Hartman (1):
Linux 5.14.9
Guenter Roeck (5):
m68k: Double cast io functions to unsigned long
compiler.h: Introduce absolute_pointer macro
net: i825xx: Use absolute_pointer for memcpy from fixed memory location
alpha: Declare virt_to_phys and virt_to_bus parameter as pointer to volatile
net: 6pack: Fix tx timeout and slot time
Hamza Mahfooz (1):
dma-debug: prevent an error message from causing runtime problems
Hans de Goede (1):
gpiolib: acpi: Make set-debounce-timeout failures non fatal
Hao Xu (2):
io_uring: fix race between poll completion and cancel_hash insertion
io_uring: fix missing set of EPOLLONESHOT for CQ ring overflow
Helge Deller (1):
parisc: Use absolute_pointer() to define PAGE0
Huang Rui (1):
drm/ttm: fix type mismatch error on sparc64
Ian Abbott (1):
comedi: Fix memory leak in compat_insnlist()
Ian Rogers (1):
libperf evsel: Make use of FD robust.
Ido Schimmel (2):
nexthop: Fix division by zero while replacing a resilient group
nexthop: Fix memory leaks in nexthop notification chain listeners
Jack Pham (2):
usb: gadget: f_uac2: Add missing companion descriptor for feedback EP
usb: gadget: f_uac2: Populate SS descriptors' wBytesPerInterval
Jan Beulich (1):
xen/x86: fix PV trap handling on secondary processors
Jason Wang (1):
virtio-net: fix pages leaking when building skb in big mode
Jens Axboe (2):
io_uring: put provided buffer meta data under memcg accounting
io_uring: don't punt files update to io-wq unconditionally
Jesper Nilsson (1):
net: stmmac: allow CSR clock of 300MHz
Jian Shen (2):
net: hns3: fix change RSS 'hfunc' ineffective issue
net: hns3: fix inconsistent vf id print
Jiapeng Chong (1):
fpga: machxo2-spi: Fix missing error code in machxo2_write_complete()
Jiaran Zhang (1):
net: hns3: fix misuse vf id and vport id in some logs
Jiashuo Liang (1):
x86/fault: Fix wrong signal when vsyscall fails with pkey
Johan Hovold (5):
USB: cdc-acm: fix minor-number release
staging: greybus: uart: fix tty use after free
misc: bcm-vk: fix tty registration race
net: hso: fix muxed tty registration
USB: serial: cp210x: fix dropped characters with CP2102
Juergen Gross (3):
xen/balloon: use a kernel thread instead a workqueue x86/setup: Call early_reserve_memory() earlier xen/balloon: fix balloon kthread freezing
Julian Sikorski (1):
Re-enable UAS for LaCie Rugged USB3-FW with fk quirk
Julian Wiedmann (1):
s390/qeth: fix NULL deref in qeth_clear_working_pool_list()
Kaige Fu (1):
irqchip/gic-v3-its: Fix potential VPE leak on error
Karsten Graul (2):
net/smc: add missing error check in smc_clc_prfx_set() net/smc: fix 'workqueue leaked lock' in smc_conn_abort_work
Kees Cook (1):
x86/asm: Fix SETZ size enqcmds() build failure
Kishon Vijay Abraham I (2):
usb: core: hcd: Add support for deferring roothub registration
xhci: Set HCD flag to defer primary roothub registration
Krzysztof Kozlowski (3):
USB: serial: mos7840: remove duplicated 0xac24 device ID
USB: serial: option: remove duplicate USB device ID
regulator: max14577: Revert "regulator: max14577: Add proper module aliases strings"
Kunihiko Hayashi (1):
gpio: uniphier: Fix void functions to remove return value
Laurentiu Tudor (1):
software node: balance refcount for managed software nodes
Li Jinlin (1):
blk-cgroup: fix UAF by grabbing blkcg lock before destroying blkg pd
Li Jun (1):
usb: dwc3: core: balance phy init and exit
Li Li (1):
binder: fix freeze race
Lihong Kou (1):
block: flush the integrity workqueue in blk_integrity_unregister
Lijo Lazar (1):
drm/amd/pm: Update intermediate power state for SI
Linus Torvalds (5):
sparc: avoid stringop-overread errors
qnx4: avoid stringop-overread errors
spi: Fix tegra20 build with CONFIG_PM=n Revert drm/vc4 hdmi runtime PM changes
qnx4: work around gcc false positive warning bug
Marc Zyngier (1):
irqchip/armada-370-xp: Fix ack/eoi breakage
Mario Limonciello (1):
platform/x86: amd-pmc: Increase the response register timeout
Mark Brown (3):
kselftest/arm64: signal: Add SVE to the set of features we can check for
spi: Revert modalias changes
nfc: st-nci: Add SPI ID matching DT compatible
Maurizio Lombardi (1):
scsi: target: Fix the pgr/alua_support_store functions
Meenakshikumar Somasundaram (1):
drm/amd/display: Link training retry fix for abort case
Michael Chan (1):
bnxt_en: Fix TX timeout when TX ring size is set to the smallest
Minas Harutyunyan (2):
usb: dwc2: gadget: Fix ISOC flow for BDMA and Slave
usb: dwc2: gadget: Fix ISOC transfer complete handling for DDMA
Ming Lei (1):
blk-mq: avoid to iterate over stale request
Naohiro Aota (1):
scsi: sd_zbc: Ensure buffer size is aligned to SECTOR_SIZE
Naoya Horiguchi (1):
mm, hwpoison: add is_free_buddy_page() in HWPoisonHandlable()
Nathan Rossi (1):
net: phylink: Update SFP selected interface on advertising changes
Nishanth Menon (1):
serial: 8250: 8250_omap: Fix RX_LVL register offset
Ondrej Zary (1):
usb-storage: Add quirk for ScanLogic SL11R-IDE older than 2.6c
Pali Rohár (1):
serial: mvebu-uart: fix driver's tx_empty callback
Paolo Abeni (1):
mptcp: ensure tx skbs always have the MPTCP ext
Pavel Hofman (1):
usb: gadget: u_audio: EP-OUT bInterval in fback frequency
Pawel Laszczak (1):
usb: cdns3: fix race condition before setting doorbell
Peter Collingbourne (1):
arm64: add MTE supported check to thread switching and syscall entry/exit
Philip Yang (2):
drm/amdkfd: map SVM range with correct access permission drm/amdkfd: fix dma mapping leaking warning
Qingqing Zhuo (1):
drm/amd/display: Fix unstable HPCP compliance on Chrome Barcelo
Qu Wenruo (1):
btrfs: prevent __btrfs_dump_space_info() to underflow its free space
Rafał Miłecki (1):
Revert "USB: bcma: Add a check for devm_gpiod_get"
Randy Dunlap (3):
platform/x86: dell: fix DELL_WMI_PRIVACY dependencies & build error
tty: synclink_gt: rename a conflicting function name irqchip/goldfish-pic: Select GENERIC_IRQ_CHIP to fix build
Robin Murphy (1):
arm64: Mitigate MTE issues with str{n}cmp()
Rohith Surabattula (2):
cifs: Not to defer close on file when lock is set
cifs: Fix soft lockup during fsstress
Rui Miguel Silva (1):
usb: isp1760: do not sleep in field register poll
Ruozhu Li (1):
nvme-rdma: destroy cm id before destroy qp to avoid use after free
Sagi Grimberg (1):
nvme-tcp: fix incorrect h2cdata pdu offset accounting
Sai Krishna Potthuri (1):
EDAC/synopsys: Fix wrong value type assignment for edac_mode
Sean Christopherson (1):
KVM: rseq: Update rseq when processing NOTIFY_RESUME on xfer to KVM guest
Shai Malin (1):
qed: rdma - don't wait for resources under hw error recovery flow
Simon Ser (2):
amd/display: downgrade validation failure log level amd/display: enable panel orientation quirks
Slark Xiao (1):
USB: serial: option: add device id for Foxconn T99W265
Steve French (1):
cifs: fix incorrect check for null pointer in header_assemble
Sudarsana Reddy Kalluru (1):
atlantic: Fix issue in the pm resume flow.
Todd Kjos (1):
binder: make sure fd closes complete
Tom Rix (1):
fpga: machxo2-spi: Return an error on failure
Tong Zhang (1):
net: macb: fix use after free on rmmod
Uwe Brandt (1):
USB: serial: cp210x: add ID for GW Instek GDM-834x Digital Multimeter
Vladimir Oltean (5):
net: dsa: tear down devlink port regions when tearing down the devlink port on error
net: dsa: fix dsa_tree_setup error path
net: dsa: don't allocate the slave_mii_bus using devres
net: dsa: realtek: register the MDIO bus under devres
net: mscc: ocelot: fix forwarding from BLOCKING ports remaining enabled
Weizhao Ouyang (1):
mm/debug: sync up MR_CONTIG_RANGE and MR_LONGTERM_PIN
Wengang Wang (1):
ocfs2: drop acl cache for directories too
Xuan Zhuo (1):
napi: fix race inside napi_enable
Yufeng Mo (2):
net: hns3: check queue id range before using
net: hns3: fix a return value error in hclge_get_reset_status()
Zhihao Cheng (1):
blktrace: Fix uaf in blk_trace access after removing by sysfs
dann frazier (1):
arm64: Restore forced disabling of KPTI on ThunderX
liaoguojia (1):
net: hns3: check vlan id before using it
zhang kai (1):
ipv6: delay fib6_sernum increase in fib6_add
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 14 -SUBLEVEL = 8 +SUBLEVEL = 9 EXTRAVERSION = NAME = Opossums on Parade
arch/alpha/include/asm/io.h +3 -3
@@ -60,7 +60,7 @@ extern inline void set_hae(unsigned long new_hae)* Change virtual addresses to physical addresses and vv. */ #ifdef USE_48_BIT_KSEG -static inline unsigned long virt_to_phys (void *address) +static inline unsigned long virt_to_phys (volatile void *address) {return (unsigned long )address -IDENT_ADDR ; }
@@ -70,7 +70,7 @@ static inline void * phys_to_virt(unsigned long address) return (void *) (address + IDENT_ADDR); }#else -static inline unsigned long virt_to_phys (void *address) +static inline unsigned long virt_to_phys (volatile void *address) {unsigned long phys = (unsigned long )address;
@@ -106,7 +106,7 @@ static inline void * phys_to_virt(unsigned long address)extern unsigned long __direct_map_base;extern unsigned long __direct_map_size; -static inline unsigned long __deprecated virt_to_bus (void *address) +static inline unsigned long __deprecated virt_to_bus (volatile void *address) {unsigned long phys =virt_to_phys (address);unsigned long bus = phys + __direct_map_base;
arch/arm64/include/asm/assembler.h +5 -0
@@ -525,6 +525,11 @@ alternative_endif#define EXPORT_SYMBOL_NOKASAN (name) EXPORT_SYMBOL(name)#endif +#ifdef CONFIG_KASAN_HW_TAGS +#define EXPORT_SYMBOL_NOHWKASAN (name) +#else +#define EXPORT_SYMBOL_NOHWKASAN (name) EXPORT_SYMBOL_NOKASAN(name) +#endif /* * Emit a 64-bit absolute little endian symbol reference in a way that * ensures that it will be resolved at build time, even when building a
arch/arm64/include/asm/mte.h +6 -0
@@ -105,11 +105,17 @@ void mte_check_tfsr_el1(void);static inline void mte_check_tfsr_entry (void ) { +if (!system_supports_mte ()) +return ; +mte_check_tfsr_el1 (); }static inline void mte_check_tfsr_exit (void ) { +if (!system_supports_mte ()) +return ; +/* * The asynchronous faults are sync'ed automatically with * TFSR_EL1 on kernel entry but for exit an explicit dsb()
arch/arm64/include/asm/string.h +2 -0
@@ -12,11 +12,13 @@ extern char *strrchr(const char *, int c);#define __HAVE_ARCH_STRCHRextern char *strchr (const char *,int c); +#ifndef CONFIG_KASAN_HW_TAGS #define __HAVE_ARCH_STRCMPextern int strcmp (const char *,const char *);#define __HAVE_ARCH_STRNCMPextern int strncmp (const char *,const char *,__kernel_size_t ); +#endif #define __HAVE_ARCH_STRLENextern __kernel_size_t strlen (const char *);
arch/arm64/kernel/cpufeature.c +6 -2
@@ -1500,9 +1500,13 @@ static bool unmap_kernel_at_el0(const struct arm64_cpu_capabilities *entry,/* * For reasons that aren't entirely clear, enabling KPTI on Cavium * ThunderX leads to apparent I-cache corruption of kernel text, which -* ends as well as you might imagine. Don't even try. +* ends as well as you might imagine. Don't even try. We cannot rely +* on the cpus_have_*cap() helpers here to detect the CPU erratum +* because cpucap detection order may change. However, since we know +* affected CPUs are always in a homogeneous configuration, it is +* safe to rely on this_cpu_has_cap() here. */ -if (cpus_have_const_cap (ARM64_WORKAROUND_CAVIUM_27456 )) { +if (this_cpu_has_cap (ARM64_WORKAROUND_CAVIUM_27456 )) { str ="ARM64_WORKAROUND_CAVIUM_27456" ; __kpti_forced =-1 ; }
arch/arm64/kernel/mte.c +4 -6
@@ -173,12 +173,7 @@ bool mte_report_once(void)#ifdef CONFIG_KASAN_HW_TAGS void mte_check_tfsr_el1 (void ) { -u64 tfsr_el1; - -if (!system_supports_mte ()) -return ; - - tfsr_el1 =read_sysreg_s (SYS_TFSR_EL1 ); +u64 tfsr_el1 =read_sysreg_s (SYS_TFSR_EL1 );if (unlikely (tfsr_el1 &SYS_TFSR_EL1_TF1 )) {/*
@@ -221,6 +216,9 @@ void mte_thread_init_user(void)void mte_thread_switch (struct task_struct *next) { +if (!system_supports_mte ()) +return ; +/* * Check if an async tag exception occurred at EL1. *
arch/arm64/kernel/process.c +1 -1
@@ -60,7 +60,7 @@#if defined(CONFIG_STACKPROTECTOR ) && !defined(CONFIG_STACKPROTECTOR_PER_TASK )#include <linux/stackprotector.h> -unsigned long __stack_chk_guard__read_mostly ; +unsigned long __stack_chk_guard__ro_after_init ;EXPORT_SYMBOL (__stack_chk_guard);#endif
arch/arm64/lib/strcmp.S +1 -1
@@ -173,4 +173,4 @@ L(done): ret SYM_FUNC_END_PI(strcmp) -EXPORT_SYMBOL_NOKASAN(strcmp) +EXPORT_SYMBOL_NOHWKASAN(strcmp)
arch/arm64/lib/strncmp.S +1 -1
@@ -258,4 +258,4 @@ L(ret0): ret SYM_FUNC_END_PI(strncmp) -EXPORT_SYMBOL_NOKASAN(strncmp) +EXPORT_SYMBOL_NOHWKASAN(strncmp)
arch/m68k/include/asm/raw_io.h +10 -10
@@ -17,21 +17,21 @@* two accesses to memory, which may be undesirable for some devices. */ #define in_8 (addr) \ - ({ u8 __v = (*(__force volatile u8 *) (addr)); __v; }) + ({ u8 __v = (*(__force volatile u8 *) (unsigned long)(addr)); __v; })#define in_be16 (addr) \ - ({ u16 __v = (*(__force volatile u16 *) (addr)); __v; }) + ({ u16 __v = (*(__force volatile u16 *) (unsigned long)(addr)); __v; })#define in_be32 (addr) \ - ({ u32 __v = (*(__force volatile u32 *) (addr)); __v; }) + ({ u32 __v = (*(__force volatile u32 *) (unsigned long)(addr)); __v; })#define in_le16 (addr) \ - ({ u16 __v = le16_to_cpu(*(__force volatile __le16 *) (addr)); __v; }) + ({ u16 __v = le16_to_cpu(*(__force volatile __le16 *) (unsigned long)(addr)); __v; })#define in_le32 (addr) \ - ({ u32 __v = le32_to_cpu(*(__force volatile __le32 *) (addr)); __v; }) + ({ u32 __v = le32_to_cpu(*(__force volatile __le32 *) (unsigned long)(addr)); __v; }) -#define out_8 (addr,b) (void)((*(__force volatile u8 *) (addr)) = (b)) -#define out_be16 (addr,w) (void)((*(__force volatile u16 *) (addr)) = (w)) -#define out_be32 (addr,l) (void)((*(__force volatile u32 *) (addr)) = (l)) -#define out_le16 (addr,w) (void)((*(__force volatile __le16 *) (addr)) = cpu_to_le16(w)) -#define out_le32 (addr,l) (void)((*(__force volatile __le32 *) (addr)) = cpu_to_le32(l)) +#define out_8 (addr,b) (void)((*(__force volatile u8 *) (unsigned long)(addr)) = (b)) +#define out_be16 (addr,w) (void)((*(__force volatile u16 *) (unsigned long)(addr)) = (w)) +#define out_be32 (addr,l) (void)((*(__force volatile u32 *) (unsigned long)(addr)) = (l)) +#define out_le16 (addr,w) (void)((*(__force volatile __le16 *) (unsigned long)(addr)) = cpu_to_le16(w)) +#define out_le32 (addr,l) (void)((*(__force volatile __le32 *) (unsigned long)(addr)) = cpu_to_le32(l))#define raw_inb in_8#define raw_inw in_be16
arch/parisc/include/asm/page.h +1 -1
@@ -184,7 +184,7 @@ extern int npmem_ranges;#include <asm-generic/getorder.h> #include <asm/pdc.h> -#define PAGE0 ((struct zeropage *)__PAGE_OFFSET) +#define PAGE0 ((struct zeropage *)absolute_pointer(__PAGE_OFFSET))/* DEFINITION OF THE ZERO-PAGE (PAG0) */ /* based on work by Jason Eckhardt ([email protected]) */
arch/sparc/kernel/ioport.c +3 -1
@@ -356,7 +356,9 @@ void *arch_dma_alloc(struct device *dev, size_t size, dma_addr_t *dma_handle,void arch_dma_free (struct device *dev,size_t size,void *cpu_addr,dma_addr_t dma_addr,unsigned long attrs) { -if (!sparc_dma_free_resource (cpu_addr,PAGE_ALIGN (size))) + size =PAGE_ALIGN (size); + +if (!sparc_dma_free_resource (cpu_addr, size))return ;dma_make_coherent (dma_addr, size);
arch/sparc/kernel/mdesc.c +2 -1
@@ -39,6 +39,7 @@ struct mdesc_hdr {u32 node_sz;/* node block size */ u32 name_sz;/* name block size */ u32 data_sz;/* data block size */ +char data[]; } __attribute__((aligned(16)));struct mdesc_elem {
@@ -612,7 +613,7 @@ EXPORT_SYMBOL(mdesc_get_node_info);static struct mdesc_elem *node_block (struct mdesc_hdr *mdesc) { -return (struct mdesc_elem *) (mdesc +1 ); +return (struct mdesc_elem *) mdesc->data; }static void *name_block (struct mdesc_hdr *mdesc)
arch/x86/include/asm/pkeys.h +0 -2
@@ -2,8 +2,6 @@#ifndef _ASM_X86_PKEYS_H#define _ASM_X86_PKEYS_H -#define ARCH_DEFAULT_PKEY 0 -/* * If more than 16 keys are ever supported, a thorough audit * will be necessary to ensure that the types that store key
arch/x86/include/asm/special_insns.h +1 -1
@@ -275,7 +275,7 @@ static inline int enqcmds(void __iomem *dst, const void *src) {const struct {char _[64 ]; } *__src = src;struct {char _[64 ]; }__iomem *__dst = dst; -int zf; +bool zf;/* * ENQCMDS %(rdx), rax
arch/x86/kernel/setup.c +14 -12
@@ -839,6 +839,20 @@ void __init setup_arch(char **cmdline_p) x86_init.oem.arch_setup (); +/* +* Do some memory reservations *before* memory is added to memblock, so +* memblock allocations won't overwrite it. +* +* After this point, everything still needed from the boot loader or +* firmware or kernel text should be early reserved or marked not RAM in +* e820. All other memory is free game. +* +* This call needs to happen before e820__memory_setup() which calls the +* xen_memory_setup() on Xen dom0 which relies on the fact that those +* early reservations have happened already. +*/ +early_reserve_memory (); + iomem_resource.end = (1ULL << boot_cpu_data.x86_phys_bits) -1 ;e820__memory_setup ();parse_setup_data ();
@@ -885,18 +899,6 @@ void __init setup_arch(char **cmdline_p)parse_early_param (); -/* -* Do some memory reservations *before* memory is added to -* memblock, so memblock allocations won't overwrite it. -* Do it after early param, so we could get (unlikely) panic from -* serial. -* -* After this point everything still needed from the boot loader or -* firmware or kernel text should be early reserved or marked not -* RAM in e820. All other memory is free game. -*/ -early_reserve_memory (); -#ifdef CONFIG_MEMORY_HOTPLUG /* * Memory used by the kernel cannot be hot-removed because Linux
arch/x86/mm/fault.c +18 -8
@@ -710,7 +710,8 @@ page_fault_oops(struct pt_regs *regs, unsigned long error_code, static noinline voidkernelmode_fixup_or_oops (struct pt_regs *regs,unsigned long error_code, -unsigned long address,int signal,int si_code) +unsigned long address,int signal,int si_code, +u32 pkey) {WARN_ON_ONCE (user_mode (regs));
@@ -735,8 +736,12 @@ kernelmode_fixup_or_oops(struct pt_regs *regs, unsigned long error_code,set_signal_archinfo (address, error_code); -/* XXX: hwpoison faults will set the wrong code. */ -force_sig_fault (signal, si_code, (void __user *)address); +if (si_code ==SEGV_PKUERR ) { +force_sig_pkuerr ((void __user *)address, pkey); + }else { +/* XXX: hwpoison faults will set the wrong code. */ +force_sig_fault (signal, si_code, (void __user *)address); + } }/*
@@ -798,7 +803,8 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,struct task_struct *tsk = current;if (!user_mode (regs)) { -kernelmode_fixup_or_oops (regs, error_code, address, pkey, si_code); +kernelmode_fixup_or_oops (regs, error_code, address, +SIGSEGV , si_code, pkey);return ; }
@@ -930,7 +936,8 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address, {/* Kernel mode? Handle exceptions or die: */ if (!user_mode (regs)) { -kernelmode_fixup_or_oops (regs, error_code, address,SIGBUS ,BUS_ADRERR ); +kernelmode_fixup_or_oops (regs, error_code, address, +SIGBUS ,BUS_ADRERR ,ARCH_DEFAULT_PKEY );return ; }
@@ -1396,7 +1403,8 @@ void do_user_addr_fault(struct pt_regs *regs,*/ if (!user_mode (regs))kernelmode_fixup_or_oops (regs, error_code, address, -SIGBUS ,BUS_ADRERR ); +SIGBUS ,BUS_ADRERR , +ARCH_DEFAULT_PKEY );return ; }
@@ -1416,7 +1424,8 @@ void do_user_addr_fault(struct pt_regs *regs,return ;if (fatal_signal_pending (current) && !user_mode (regs)) { -kernelmode_fixup_or_oops (regs, error_code, address,0 ,0 ); +kernelmode_fixup_or_oops (regs, error_code, address, +0 ,0 ,ARCH_DEFAULT_PKEY );return ; }
@@ -1424,7 +1433,8 @@ void do_user_addr_fault(struct pt_regs *regs,/* Kernel mode? Handle exceptions or die: */ if (!user_mode (regs)) {kernelmode_fixup_or_oops (regs, error_code, address, -SIGSEGV ,SEGV_MAPERR ); +SIGSEGV ,SEGV_MAPERR , +ARCH_DEFAULT_PKEY );return ; }
arch/x86/xen/enlighten_pv.c +9 -6
@@ -756,8 +756,8 @@ static void xen_write_idt_entry(gate_desc *dt, int entrynum, const gate_desc *g)preempt_enable (); } -static void xen_convert_trap_info (const struct desc_ptr *desc, -struct trap_info *traps) +static unsigned xen_convert_trap_info (const struct desc_ptr *desc, +struct trap_info *traps,bool full) {unsigned in, out, count;
@@ -767,17 +767,18 @@ static void xen_convert_trap_info(const struct desc_ptr *desc,for (in = out =0 ; in < count; in++) {gate_desc *entry = (gate_desc *)(desc->address) + in; -if (cvt_gate_to_trap (in, entry, &traps[out])) +if (cvt_gate_to_trap (in, entry, &traps[out]) || full) out++; } - traps[out].address =0 ; + +return out; }void xen_copy_trap_info (struct trap_info *traps) {const struct desc_ptr *desc =this_cpu_ptr (&idt_desc); -xen_convert_trap_info (desc, traps); +xen_convert_trap_info (desc, traps, true); }/* Load a new IDT into Xen. In principle this can be per-CPU, so we
@@ -787,6 +788,7 @@ static void xen_load_idt(const struct desc_ptr *desc) {static DEFINE_SPINLOCK (lock);static struct trap_info traps[257 ]; +unsigned out;trace_xen_cpu_load_idt (desc);
@@ -794,7 +796,8 @@ static void xen_load_idt(const struct desc_ptr *desc)memcpy (this_cpu_ptr (&idt_desc), desc,sizeof (idt_desc)); -xen_convert_trap_info (desc, traps); + out =xen_convert_trap_info (desc, traps, false); +memset (&traps[out],0 ,sizeof (traps[0 ]));xen_mc_flush ();if (HYPERVISOR_set_trap_table (traps))
block/blk-cgroup.c +8 -0
@@ -1385,10 +1385,14 @@ int blkcg_activate_policy(struct request_queue *q,/* alloc failed, nothing's initialized yet, free everything */ spin_lock_irq (&q->queue_lock);list_for_each_entry (blkg, &q->blkg_list, q_node) { +struct blkcg *blkcg = blkg->blkcg; + +spin_lock (&blkcg->lock);if (blkg->pd[pol->plid]) { pol->pd_free_fn (blkg->pd[pol->plid]); blkg->pd[pol->plid] =NULL ; } +spin_unlock (&blkcg->lock); }spin_unlock_irq (&q->queue_lock); ret = -ENOMEM ;
@@ -1420,12 +1424,16 @@ void blkcg_deactivate_policy(struct request_queue *q,__clear_bit (pol->plid, q->blkcg_pols);list_for_each_entry (blkg, &q->blkg_list, q_node) { +struct blkcg *blkcg = blkg->blkcg; + +spin_lock (&blkcg->lock);if (blkg->pd[pol->plid]) {if (pol->pd_offline_fn) pol->pd_offline_fn (blkg->pd[pol->plid]); pol->pd_free_fn (blkg->pd[pol->plid]); blkg->pd[pol->plid] =NULL ; } +spin_unlock (&blkcg->lock); }spin_unlock_irq (&q->queue_lock);
block/blk-integrity.c +8 -1
@@ -426,8 +426,15 @@ EXPORT_SYMBOL(blk_integrity_register);*/ void blk_integrity_unregister (struct gendisk *disk) { +struct blk_integrity *bi = &disk->queue->integrity; + +if (!bi->profile) +return ; + +/* ensure all bios are off the integrity workqueue */ +blk_flush_integrity ();blk_queue_flag_clear (QUEUE_FLAG_STABLE_WRITES , disk->queue); -memset (&disk->queue->integrity,0 ,sizeof (struct blk_integrity )); +memset (bi,0 ,sizeof (*bi)); }EXPORT_SYMBOL (blk_integrity_unregister);
block/blk-mq-tag.c +1 -1
@@ -208,7 +208,7 @@ static struct request *blk_mq_find_and_get_req(struct blk_mq_tags *tags,spin_lock_irqsave (&tags->lock, flags); rq = tags->rqs[bitnr]; -if (!rq || !refcount_inc_not_zero (&rq->ref)) +if (!rq || rq->tag != bitnr || !refcount_inc_not_zero (&rq->ref)) rq =NULL ;spin_unlock_irqrestore (&tags->lock, flags);return rq;
drivers/android/binder.c +46 -12
131 lines not on this page · raw message
drivers/android/binder_internal.h +2 -0
@@ -378,6 +378,8 @@ struct binder_ref {* binder transactions * (protected by @inner_lock) * @sync_recv: process received sync transactions since last frozen +* bit 0: received sync transaction after being frozen +* bit 1: new pending sync transaction during freezing * (protected by @inner_lock) * @async_recv: process received async transactions since last frozen * (protected by @inner_lock)
drivers/base/swnode.c +3 -0
@@ -1113,6 +1113,9 @@ int device_create_managed_software_node(struct device *dev,to_swnode (fwnode)->managed = true;set_secondary_fwnode (dev, fwnode); +if (device_is_registered (dev)) +software_node_notify (dev,KOBJ_ADD ); +return 0 ; }EXPORT_SYMBOL_GPL (device_create_managed_software_node);
drivers/comedi/comedi_fops.c +1 -0
@@ -3090,6 +3090,7 @@ static int compat_insnlist(struct file *file, unsigned long arg)mutex_lock (&dev->mutex); rc =do_insnlist_ioctl (dev, insns, insnlist32.n_insns, file);mutex_unlock (&dev->mutex); +kfree (insns);return rc; }
drivers/cpufreq/intel_pstate.c +14 -8
@@ -3251,11 +3251,15 @@ static int __init intel_pstate_init(void)if (boot_cpu_data.x86_vendor !=X86_VENDOR_INTEL )return -ENODEV ; -if (no_load) -return -ENODEV ; - id =x86_match_cpu (hwp_support_ids);if (id) { +bool hwp_forced =intel_pstate_hwp_is_enabled (); + +if (hwp_forced) +pr_info ("HWP enabled by BIOS\n" ); +else if (no_load) +return -ENODEV ; +copy_cpu_funcs (&core_funcs);/* * Avoid enabling HWP for processors without EPP support,
@@ -3265,8 +3269,7 @@ static int __init intel_pstate_init(void)* If HWP is enabled already, though, there is no choice but to * deal with it. */ -if ((!no_hwp &&boot_cpu_has (X86_FEATURE_HWP_EPP )) || -intel_pstate_hwp_is_enabled ()) { +if ((!no_hwp &&boot_cpu_has (X86_FEATURE_HWP_EPP )) || hwp_forced) { hwp_active++; hwp_mode_bdw = id->driver_data; intel_pstate.attr = hwp_cpufreq_attrs;
@@ -3278,7 +3281,11 @@ static int __init intel_pstate_init(void) goto hwp_cpu_matched; } +pr_info ("HWP not enabled\n" ); }else { +if (no_load) +return -ENODEV ; + id =x86_match_cpu (intel_pstate_cpu_ids);if (!id) {pr_info ("CPU model not supported\n" );
@@ -3357,10 +3364,9 @@ static int __init intel_pstate_setup(char *str)else if (!strcmp (str,"passive" )) default_driver = &intel_cpufreq; -if (!strcmp (str,"no_hwp" )) { -pr_info ("HWP disabled\n" ); +if (!strcmp (str,"no_hwp" )) no_hwp =1 ; - } +if (!strcmp (str,"force" )) force_load =1 ;if (!strcmp (str,"hwp_only" ))
drivers/edac/dmc520_edac.c +1 -1
@@ -464,7 +464,7 @@ static void dmc520_init_csrow(struct mem_ctl_info *mci) dimm->grain = pvt->mem_width_in_bytes; dimm->dtype = dt; dimm->mtype = mt; - dimm->edac_mode =EDAC_FLAG_SECDED ; + dimm->edac_mode =EDAC_SECDED ; dimm->nr_pages = pages_per_rank / csi->nr_channels; } }
drivers/edac/synopsys_edac.c +1 -1
@@ -782,7 +782,7 @@ static void init_csrows(struct mem_ctl_info *mci)for (j =0 ; j < csi->nr_channels; j++) { dimm = csi->channels[j]->dimm; - dimm->edac_mode =EDAC_FLAG_SECDED ; + dimm->edac_mode =EDAC_SECDED ; dimm->mtype = p_data->get_mtype (priv->baseaddr); dimm->nr_pages = (size >>PAGE_SHIFT ) / csi->nr_channels; dimm->grain =SYNPS_EDAC_ERR_GRAIN ;
drivers/fpga/machxo2-spi.c +5 -1
@@ -225,8 +225,10 @@ static int machxo2_write_init(struct fpga_manager *mgr, goto fail;get_status (spi, &status); -if (test_bit (FAIL , &status)) +if (test_bit (FAIL , &status)) { + ret = -EINVAL ; goto fail; + }dump_status_reg (&status);spi_message_init (&msg);
@@ -313,6 +315,7 @@ static int machxo2_write_complete(struct fpga_manager *mgr,dump_status_reg (&status);if (!test_bit (DONE , &status)) {machxo2_cleanup (mgr); + ret = -EINVAL ; goto fail; }
@@ -335,6 +338,7 @@ static int machxo2_write_complete(struct fpga_manager *mgr,break ;if (++refreshloop ==MACHXO2_MAX_REFRESH_LOOP ) {machxo2_cleanup (mgr); + ret = -EINVAL ; goto fail; } }while (1 );
drivers/gpio/gpio-uniphier.c +2 -2
@@ -184,7 +184,7 @@ static void uniphier_gpio_irq_mask(struct irq_data *data)uniphier_gpio_reg_update (priv,UNIPHIER_GPIO_IRQ_EN , mask,0 ); -return irq_chip_mask_parent (data); +irq_chip_mask_parent (data); }static void uniphier_gpio_irq_unmask (struct irq_data *data)
@@ -194,7 +194,7 @@ static void uniphier_gpio_irq_unmask(struct irq_data *data)uniphier_gpio_reg_update (priv,UNIPHIER_GPIO_IRQ_EN , mask, mask); -return irq_chip_unmask_parent (data); +irq_chip_unmask_parent (data); }static int uniphier_gpio_irq_set_type (struct irq_data *data,unsigned int type)
drivers/gpio/gpiolib-acpi.c +4 -2
@@ -313,9 +313,11 @@ static struct gpio_desc *acpi_request_own_gpiod(struct gpio_chip *chip, ret =gpio_set_debounce_timeout (desc, agpio->debounce_timeout);if (ret) -gpiochip_free_own_desc (desc); +dev_warn (chip->parent, +"Failed to set debounce-timeout for pin 0x%04X, err %d\n" , + pin, ret); -return ret ?ERR_PTR (ret) : desc; +return desc; }static bool acpi_gpio_in_ignore_list (const char *controller_in,int pin_in)
drivers/gpu/drm/amd/amdkfd/kfd_device.c +28 -16
110 lines not on this page · raw message
drivers/gpu/drm/amd/amdkfd/kfd_priv.h +1 -0
@@ -206,6 +206,7 @@ struct kfd_device_info {bool supports_cwsr;bool needs_iommu_device;bool needs_pci_atomics; +uint32_t no_atomic_fw_version;unsigned int num_sdma_engines;unsigned int num_xgmi_sdma_engines;unsigned int num_sdma_queues_per_engine;
drivers/gpu/drm/amd/amdkfd/kfd_svm.c +100 -52
248 lines not on this page · raw message
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +50 -3
77 lines not on this page · raw message
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +7 -3
@@ -1849,9 +1849,13 @@ bool perform_link_training_with_retries(dp_disable_link_phy (link, signal);/* Abort link training if failure due to sink being unplugged. */ -if (status ==LINK_TRAINING_ABORT ) -break ; -else if (do_fallback) { +if (status ==LINK_TRAINING_ABORT ) { +enum dc_connection_type type = dc_connection_none; + +dc_link_detect_sink (link, &type); +if (type == dc_connection_none) +break ; + }else if (do_fallback) {decide_fallback_link_setting (*link_setting, ¤t_setting, status);/* Fail link training if reduced link bandwidth no longer meets * stream requirements.
drivers/gpu/drm/amd/pm/powerplay/si_dpm.c +2 -0
@@ -6870,6 +6870,8 @@ static int si_dpm_enable(struct amdgpu_device *adev)si_enable_auto_throttle_source (adev,AMDGPU_DPM_AUTO_THROTTLE_SRC_THERMAL , true);si_thermal_start_thermal_controller (adev); +ni_update_current_ps (adev, boot_ps); +return 0 ; }
drivers/gpu/drm/ttm/ttm_pool.c +2 -1
@@ -383,7 +383,8 @@ int ttm_pool_alloc(struct ttm_pool *pool, struct ttm_tt *tt,else gfp_flags |=GFP_HIGHUSER ; -for (order =min (MAX_ORDER -1UL ,__fls (num_pages)); num_pages; + for (order = min_t(unsigned int, MAX_ORDER - 1, __fls(num_pages)); + num_pages; order = min_t(unsigned int, order, __fls(num_pages))) {bool apply_caching = false;struct ttm_pool_type *pt;
drivers/gpu/drm/vc4/vc4_hdmi.c +10 -34
101 lines not on this page · raw message
drivers/irqchip/Kconfig +1 -0
@@ -409,6 +409,7 @@ config MESON_IRQ_GPIO config GOLDFISH_PIC bool "Goldfish programmable interrupt controller" depends on MIPS && (GOLDFISH || COMPILE_TEST) + select GENERIC_IRQ_CHIP select IRQ_DOMAIN help Say yes here to enable Goldfish interrupt controller driver used
drivers/irqchip/irq-armada-370-xp.c +2 -2
@@ -359,16 +359,16 @@ static void armada_370_xp_ipi_send_mask(struct irq_data *d, ARMADA_370_XP_SW_TRIG_INT_OFFS); } -static void armada_370_xp_ipi_eoi (struct irq_data *d) +static void armada_370_xp_ipi_ack (struct irq_data *d) {writel (~BIT (d->hwirq), per_cpu_int_base +ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS ); }static struct irq_chip ipi_irqchip = { .name ="IPI" , + .irq_ack = armada_370_xp_ipi_ack, .irq_mask = armada_370_xp_ipi_mask, .irq_unmask = armada_370_xp_ipi_unmask, - .irq_eoi = armada_370_xp_ipi_eoi, .ipi_send_mask = armada_370_xp_ipi_send_mask, };
drivers/irqchip/irq-gic-v3-its.c +1 -1
@@ -4501,7 +4501,7 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virqif (err) {if (i >0 ) -its_vpe_irq_domain_free (domain, virq, i -1 ); +its_vpe_irq_domain_free (domain, virq, i);its_lpi_free (bitmap, base, nr_ids);its_free_prop_table (vprop_page);
drivers/mcb/mcb-core.c +6 -6
@@ -277,8 +277,8 @@ struct mcb_bus *mcb_alloc_bus(struct device *carrier) bus_nr =ida_simple_get (&mcb_ida,0 ,0 ,GFP_KERNEL );if (bus_nr <0 ) { - rc = bus_nr; - goto err_free; +kfree (bus); +return ERR_PTR (bus_nr); } bus->bus_nr = bus_nr;
@@ -293,12 +293,12 @@ struct mcb_bus *mcb_alloc_bus(struct device *carrier)dev_set_name (&bus->dev,"mcb:%d" , bus_nr); rc =device_add (&bus->dev);if (rc) - goto err_free; + goto err_put;return bus; -err_free: -put_device (carrier); -kfree (bus); + +err_put: +put_device (&bus->dev);return ERR_PTR (rc); }EXPORT_SYMBOL_NS_GPL (mcb_alloc_bus,MCB );
drivers/md/md.c +0 -5
@@ -5700,10 +5700,6 @@ static int md_alloc(dev_t dev, char *name) disk->flags |=GENHD_FL_EXT_DEVT ; disk->events |=DISK_EVENT_MEDIA_CHANGE ; mddev->gendisk = disk; -/* As soon as we call add_disk(), another thread could get -* through to md_open, so make sure it doesn't get too far -*/ -mutex_lock (&mddev->open_mutex);add_disk (disk); error =kobject_add (&mddev->kobj, &disk_to_dev (disk)->kobj,"%s" ,"md" );
@@ -5718,7 +5714,6 @@ static int md_alloc(dev_t dev, char *name)if (mddev->kobj.sd &&sysfs_create_group (&mddev->kobj, &md_bitmap_group))pr_debug ("pointless warning\n" ); -mutex_unlock (&mddev->open_mutex); abort:mutex_unlock (&disks_mutex);if (!error && mddev->kobj.sd) {
drivers/misc/bcm-vk/bcm_vk_tty.c +3 -3
@@ -267,13 +267,13 @@ int bcm_vk_tty_init(struct bcm_vk *vk, char *name)struct device *tty_dev;tty_port_init (&vk->tty[i].port); - tty_dev =tty_port_register_device (&vk->tty[i].port, tty_drv, - i, dev); + tty_dev =tty_port_register_device_attr (&vk->tty[i].port, + tty_drv, i, dev, vk, +NULL );if (IS_ERR (tty_dev)) { err =PTR_ERR (tty_dev); goto unwind; } -dev_set_drvdata (tty_dev, vk); vk->tty[i].is_opened = false; }
drivers/misc/genwqe/card_base.c +1 -1
@@ -1090,7 +1090,7 @@ static int genwqe_pci_setup(struct genwqe_dev *cd)/* check for 64-bit DMA address supported (DAC) */ /* check for 32-bit DMA address supported (SAC) */ -if (dma_set_mask_and_coherent (&pci_dev->dev,DMA_BIT_MASK (64 )) || +if (dma_set_mask_and_coherent (&pci_dev->dev,DMA_BIT_MASK (64 )) &&dma_set_mask_and_coherent (&pci_dev->dev,DMA_BIT_MASK (32 ))) {dev_err (&pci_dev->dev,"err: neither DMA32 nor DMA64 supported\n" );
drivers/net/dsa/mv88e6xxx/chip.c +14 -2
@@ -3012,7 +3012,7 @@ static void mv88e6xxx_teardown(struct dsa_switch *ds) {mv88e6xxx_teardown_devlink_params (ds);dsa_devlink_resources_unregister (ds); -mv88e6xxx_teardown_devlink_regions (ds); +mv88e6xxx_teardown_devlink_regions_global (ds); }static int mv88e6xxx_setup (struct dsa_switch *ds)
@@ -3147,7 +3147,7 @@ static int mv88e6xxx_setup(struct dsa_switch *ds)if (err) goto out_resources; - err =mv88e6xxx_setup_devlink_regions (ds); + err =mv88e6xxx_setup_devlink_regions_global (ds);if (err) goto out_params;
@@ -3161,6 +3161,16 @@ static int mv88e6xxx_setup(struct dsa_switch *ds)return err; } +static int mv88e6xxx_port_setup (struct dsa_switch *ds,int port) +{ +return mv88e6xxx_setup_devlink_regions_port (ds, port); +} + +static void mv88e6xxx_port_teardown (struct dsa_switch *ds,int port) +{ +mv88e6xxx_teardown_devlink_regions_port (ds, port); +} +/* prod_id for switch families which do not have a PHY model number */ static const u16 family_prod_id_table[] = { [MV88E6XXX_FAMILY_6341 ] =MV88E6XXX_PORT_SWITCH_ID_PROD_6341 ,
@@ -6055,6 +6065,8 @@ static const struct dsa_switch_ops mv88e6xxx_switch_ops = { .change_tag_protocol = mv88e6xxx_change_tag_protocol, .setup = mv88e6xxx_setup, .teardown = mv88e6xxx_teardown, + .port_setup = mv88e6xxx_port_setup, + .port_teardown = mv88e6xxx_port_teardown, .phylink_validate = mv88e6xxx_validate, .phylink_mac_link_state = mv88e6xxx_serdes_pcs_get_state, .phylink_mac_config = mv88e6xxx_mac_config,
drivers/net/dsa/mv88e6xxx/devlink.c +9 -64
105 lines not on this page · raw message
drivers/net/dsa/mv88e6xxx/devlink.h +4 -2
@@ -12,8 +12,10 @@ int mv88e6xxx_devlink_param_get(struct dsa_switch *ds, u32 id, struct devlink_param_gset_ctx *ctx);int mv88e6xxx_devlink_param_set (struct dsa_switch *ds,u32 id,struct devlink_param_gset_ctx *ctx); -int mv88e6xxx_setup_devlink_regions (struct dsa_switch *ds); -void mv88e6xxx_teardown_devlink_regions (struct dsa_switch *ds); +int mv88e6xxx_setup_devlink_regions_global (struct dsa_switch *ds); +void mv88e6xxx_teardown_devlink_regions_global (struct dsa_switch *ds); +int mv88e6xxx_setup_devlink_regions_port (struct dsa_switch *ds,int port); +void mv88e6xxx_teardown_devlink_regions_port (struct dsa_switch *ds,int port); int mv88e6xxx_devlink_info_get(struct dsa_switch *ds, struct devlink_info_req *req,
drivers/net/dsa/realtek-smi-core.c +1 -1
@@ -368,7 +368,7 @@ int realtek_smi_setup_mdio(struct realtek_smi *smi) smi->slave_mii_bus->parent = smi->dev; smi->ds->slave_mii_bus = smi->slave_mii_bus; - ret =of_mdiobus_register (smi->slave_mii_bus, mdio_np); + ret =devm_of_mdiobus_register (smi->dev, smi->slave_mii_bus, mdio_np);if (ret) {dev_err (smi->dev,"unable to register MDIO bus %s\n" , smi->slave_mii_bus->id);
drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c +2 -2
@@ -419,13 +419,13 @@ static int atl_resume_common(struct device *dev, bool deep)if (deep) {/* Reinitialize Nic/Vecs objects */ aq_nic_deinit (nic, !nic->aq_hw->aq_nic_cfg->wol); + } +if (netif_running (nic->ndev)) { ret =aq_nic_init (nic);if (ret) goto err_exit; - } -if (netif_running (nic->ndev)) { ret =aq_nic_start (nic);if (ret) goto err_exit;
drivers/net/ethernet/broadcom/bgmac-bcma.c +2 -0
@@ -129,6 +129,8 @@ static int bgmac_probe(struct bcma_device *core)bcma_set_drvdata (core, bgmac); err =of_get_mac_address (bgmac->dev->of_node, bgmac->net_dev->dev_addr); +if (err == -EPROBE_DEFER ) +return err;/* If no MAC address assigned via device tree, check SPROM */ if (err) {
drivers/net/ethernet/broadcom/bnxt/bnxt.c +4 -4
@@ -385,7 +385,7 @@ static bool bnxt_txr_netif_try_stop_queue(struct bnxt *bp,* netif_tx_queue_stopped(). */ smp_mb (); -if (bnxt_tx_avail (bp, txr) > bp->tx_wake_thresh) { +if (bnxt_tx_avail (bp, txr) >= bp->tx_wake_thresh) {netif_tx_wake_queue (txq);return false; }
@@ -758,7 +758,7 @@ static void bnxt_tx_int(struct bnxt *bp, struct bnxt_napi *bnapi, int nr_pkts)smp_mb ();if (unlikely (netif_tx_queue_stopped (txq)) && -bnxt_tx_avail (bp, txr) > bp->tx_wake_thresh && +bnxt_tx_avail (bp, txr) >= bp->tx_wake_thresh &&READ_ONCE (txr->dev_state) !=BNXT_DEV_STATE_CLOSING )netif_tx_wake_queue (txq); }
@@ -2375,7 +2375,7 @@ static int __bnxt_poll_work(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,if (TX_CMP_TYPE (txcmp) ==CMP_TYPE_TX_L2_CMP ) { tx_pkts++;/* return full budget so NAPI will complete. */ -if (unlikely (tx_pkts > bp->tx_wake_thresh)) { +if (unlikely (tx_pkts >= bp->tx_wake_thresh)) { rx_pkts = budget; raw_cons =NEXT_RAW_CMP (raw_cons);if (budget)
@@ -3531,7 +3531,7 @@ static int bnxt_init_tx_rings(struct bnxt *bp)u16 i; bp->tx_wake_thresh =max_t (int, bp->tx_ring_size /2 , -MAX_SKB_FRAGS +1 ); +BNXT_MIN_TX_DESC_CNT );for (i =0 ; i < bp->tx_nr_rings; i++) {struct bnxt_tx_ring_info *txr = &bp->tx_ring[i];
drivers/net/ethernet/broadcom/bnxt/bnxt.h +5 -0
@@ -615,6 +615,11 @@ struct nqe_cn {#define BNXT_MAX_RX_JUM_DESC_CNT (RX_DESC_CNT * MAX_RX_AGG_PAGES - 1)#define BNXT_MAX_TX_DESC_CNT (TX_DESC_CNT * MAX_TX_PAGES - 1) +/* Minimum TX BDs for a TX packet with MAX_SKB_FRAGS + 1. We need one extra +* BD because the first TX BD is always a long BD. +*/ +#define BNXT_MIN_TX_DESC_CNT (MAX_SKB_FRAGS + 2) +#define RX_RING (x) (((x) & ~(RX_DESC_CNT - 1)) >> (BNXT_PAGE_SHIFT - 4))#define RX_IDX (x) ((x) & (RX_DESC_CNT - 1))
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +1 -1
@@ -784,7 +784,7 @@ static int bnxt_set_ringparam(struct net_device *dev,if ((ering->rx_pending >BNXT_MAX_RX_DESC_CNT ) || (ering->tx_pending >BNXT_MAX_TX_DESC_CNT ) || - (ering->tx_pending <=MAX_SKB_FRAGS )) + (ering->tx_pending <BNXT_MIN_TX_DESC_CNT ))return -EINVAL ;if (netif_running (dev))
drivers/net/ethernet/cadence/macb_pci.c +1 -1
@@ -111,9 +111,9 @@ static void macb_remove(struct pci_dev *pdev)struct platform_device *plat_dev =pci_get_drvdata (pdev);struct macb_platform_data *plat_data =dev_get_platdata (&plat_dev->dev); -platform_device_unregister (plat_dev);clk_unregister (plat_data->pclk);clk_unregister (plat_data->hclk); +platform_device_unregister (plat_dev); }static const struct pci_device_id dev_id_table[] = {
drivers/net/ethernet/freescale/enetc/enetc.c +2 -5
@@ -419,7 +419,7 @@ static void enetc_rx_dim_work(struct work_struct *w)static void enetc_rx_net_dim (struct enetc_int_vector *v) { -struct dim_sample dim_sample; +struct dim_sample dim_sample = {}; v->comp_cnt++;
@@ -1879,7 +1879,6 @@ static void enetc_clear_bdrs(struct enetc_ndev_priv *priv)static int enetc_setup_irqs (struct enetc_ndev_priv *priv) {struct pci_dev *pdev = priv->si->pdev; -cpumask_t cpu_mask;int i, j, err;for (i =0 ; i < priv->bdr_int_num; i++) {
@@ -1908,9 +1907,7 @@ static int enetc_setup_irqs(struct enetc_ndev_priv *priv)enetc_wr (hw,ENETC_SIMSITRV (idx), entry); } -cpumask_clear (&cpu_mask); -cpumask_set_cpu (i %num_online_cpus (), &cpu_mask); -irq_set_affinity_hint (irq, &cpu_mask); +irq_set_affinity_hint (irq,get_cpu_mask (i %num_online_cpus ())); }return 0 ;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c +4 -4
@@ -1878,12 +1878,12 @@ static void hclge_handle_over_8bd_err(struct hclge_dev *hdev,return ; } -dev_err (dev,"PPU_PF_ABNORMAL_INT_ST over_8bd_no_fe found, vf_id(%u), queue_id(%u)\n" , +dev_err (dev,"PPU_PF_ABNORMAL_INT_ST over_8bd_no_fe found, vport(%u), queue_id(%u)\n" , vf_id, q_id);if (vf_id) {if (vf_id >= hdev->num_alloc_vport) { -dev_err (dev,"invalid vf id(%u)\n" , vf_id); +dev_err (dev,"invalid vport(%u)\n" , vf_id);return ; }
@@ -1896,8 +1896,8 @@ static void hclge_handle_over_8bd_err(struct hclge_dev *hdev, ret =hclge_inform_reset_assert_to_vf (&hdev->vport[vf_id]);if (ret) -dev_err (dev,"inform reset to vf(%u) failed %d!\n" , - hdev->vport->vport_id, ret); +dev_err (dev,"inform reset to vport(%u) failed %d!\n" , + vf_id, ret); }else {set_bit (HNAE3_FUNC_RESET , reset_requests); }
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +55 -25
160 lines not on this page · raw message
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c +9 -1
@@ -564,7 +564,7 @@ static int hclge_reset_vf(struct hclge_vport *vport)struct hclge_dev *hdev = vport->back;dev_warn (&hdev->pdev->dev,"PF received VF reset request from VF %u!" , - vport->vport_id); + vport->vport_id -HCLGE_VF_VPORT_START_NUM );return hclge_func_reset_cmd (hdev, vport->vport_id); }
@@ -588,9 +588,17 @@ static void hclge_get_queue_id_in_pf(struct hclge_vport *vport,struct hclge_mbx_vf_to_pf_cmd *mbx_req, struct hclge_respond_to_vf_msg *resp_msg) { + struct hnae3_handle *handle = &vport->nic; +struct hclge_dev *hdev = vport->back;u16 queue_id, qid_in_pf;memcpy (&queue_id, mbx_req->msg.data,sizeof (queue_id)); +if (queue_id >= handle->kinfo.num_tqps) { +dev_err (&hdev->pdev->dev,"Invalid queue id(%u) from VF %u\n" , + queue_id, mbx_req->mbx_src_vfid); +return ; + } + qid_in_pf =hclge_covert_handle_qid_global (&vport->nic, queue_id);memcpy (resp_msg->data, &qid_in_pf,sizeof (qid_in_pf)); resp_msg->len =sizeof (qid_in_pf);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c +1 -1
@@ -581,7 +581,7 @@ int hclge_tm_qs_shaper_cfg(struct hclge_vport *vport, int max_tx_rate) ret =hclge_cmd_send (&hdev->hw, &desc,1 );if (ret) {dev_err (&hdev->pdev->dev, -"vf%u, qs%u failed to set tx_rate:%d, ret=%d\n" , +"vport%u, qs%u failed to set tx_rate:%d, ret=%d\n" , vport->vport_id, shap_cfg_cmd->qs_id, max_tx_rate, ret);return ret;
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +34 -18
74 lines not on this page · raw message
drivers/net/ethernet/i825xx/82596.c +1 -1
@@ -1155,7 +1155,7 @@ struct net_device * __init i82596_probe(int unit) err = -ENODEV ; goto out; } -memcpy (eth_addr, (void *)0xfffc1f2c ,ETH_ALEN );/* YUCK! Get addr from NOVRAM */ +memcpy (eth_addr,absolute_pointer (0xfffc1f2c ),ETH_ALEN );/* YUCK! Get addr from NOVRAM */ dev->base_addr =MVME_I596_BASE ; dev->irq = (unsigned ) MVME16x_IRQ_I596; goto found;
drivers/net/ethernet/mediatek/mtk_ppe_offload.c +3 -0
@@ -186,6 +186,9 @@ mtk_flow_offload_replace(struct mtk_eth *eth, struct flow_cls_offload *f)int hash;int i; +if (rhashtable_lookup (ð->flow_table, &f->cookie, mtk_flow_ht_params)) +return -EEXIST ; +if (flow_rule_match_key (rule,FLOW_DISSECTOR_KEY_META )) {struct flow_match_meta match;
drivers/net/ethernet/mellanox/mlx4/en_netdev.c +3 -0
@@ -372,6 +372,9 @@ mlx4_en_filter_rfs(struct net_device *net_dev, const struct sk_buff *skb,int nhoff =skb_network_offset (skb);int ret =0 ; +if (skb->encapsulation) +return -EPROTONOSUPPORT ; +if (skb->protocol !=htons (ETH_P_IP ))return -EPROTONOSUPPORT ;
drivers/net/ethernet/mscc/ocelot.c +8 -3
@@ -1260,14 +1260,19 @@ static u32 ocelot_get_bond_mask(struct ocelot *ocelot, struct net_device *bond,return mask; } -static u32 ocelot_get_bridge_fwd_mask (struct ocelot *ocelot, +static u32 ocelot_get_bridge_fwd_mask (struct ocelot *ocelot,int src_port,struct net_device *bridge) { +struct ocelot_port *ocelot_port = ocelot->ports[src_port];u32 mask =0 ;int port; +if (!ocelot_port || ocelot_port->bridge != bridge || + ocelot_port->stp_state !=BR_STATE_FORWARDING ) +return 0 ; +for (port =0 ; port < ocelot->num_phys_ports; port++) { -struct ocelot_port *ocelot_port = ocelot->ports[port]; + ocelot_port = ocelot->ports[port];if (!ocelot_port)continue ;
@@ -1333,7 +1338,7 @@ void ocelot_apply_bridge_fwd_mask(struct ocelot *ocelot)struct net_device *bridge = ocelot_port->bridge;struct net_device *bond = ocelot_port->bond; - mask =ocelot_get_bridge_fwd_mask (ocelot, bridge); + mask =ocelot_get_bridge_fwd_mask (ocelot, port, bridge); mask |= cpu_fwd_mask; mask &= ~BIT (port);if (bond) {
drivers/net/ethernet/qlogic/qed/qed_iwarp.c +8 -0
@@ -1297,6 +1297,14 @@ qed_iwarp_wait_cid_map_cleared(struct qed_hwfn *p_hwfn, struct qed_bmap *bmap) prev_weight = weight;while (weight) { +/* If the HW device is during recovery, all resources are +* immediately reset without receiving a per-cid indication +* from HW. In this case we don't expect the cid_map to be +* cleared. +*/ +if (p_hwfn->cdev->recov_in_prog) +return 0 ; +msleep (QED_IWARP_MAX_CID_CLEAN_TIME ); weight =bitmap_weight (bmap->bitmap, bmap->max_count);
drivers/net/ethernet/qlogic/qed/qed_roce.c +8 -0
@@ -77,6 +77,14 @@ void qed_roce_stop(struct qed_hwfn *p_hwfn)* Beyond the added delay we clear the bitmap anyway. */ while (bitmap_weight (rcid_map->bitmap, rcid_map->max_count)) { +/* If the HW device is during recovery, all resources are +* immediately reset without receiving a per-cid indication +* from HW. In this case we don't expect the cid bitmap to be +* cleared. +*/ +if (p_hwfn->cdev->recov_in_prog) +return ; +msleep (100 );if (wait_count++ >20 ) {DP_NOTICE (p_hwfn,"cid bitmap wait timed out\n" );
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +1 -1
@@ -309,7 +309,7 @@ static void stmmac_clk_csr_set(struct stmmac_priv *priv) priv->clk_csr =STMMAC_CSR_100_150M ; else if ((clk_rate >= CSR_F_150M) && (clk_rate < CSR_F_250M)) priv->clk_csr = STMMAC_CSR_150_250M; - else if ((clk_rate >= CSR_F_250M) && (clk_rate < CSR_F_300M)) + else if ((clk_rate >= CSR_F_250M) && (clk_rate <= CSR_F_300M)) priv->clk_csr = STMMAC_CSR_250_300M; }
drivers/net/hamradio/6pack.c +2 -2
@@ -68,9 +68,9 @@#define SIXP_DAMA_OFF 0/* default level 2 parameters */ -#define SIXP_TXDELAY (HZ/4)/* in 1 s */ +#define SIXP_TXDELAY 25/* 250 ms */ #define SIXP_PERSIST 50/* in 256ths */ -#define SIXP_SLOTTIME (HZ/10)/* in 1 s */ +#define SIXP_SLOTTIME 10/* 100 ms */ #define SIXP_INIT_RESYNC_TIMEOUT (3*HZ/2)/* in 1 s */ #define SIXP_RESYNC_TIMEOUT 5*HZ/* in 1 s */
drivers/net/phy/phylink.c +29 -1
@@ -1604,6 +1604,32 @@ int phylink_ethtool_ksettings_set(struct phylink *pl,if (config.an_enabled &&phylink_is_empty_linkmode (config.advertising))return -EINVAL ; +/* If this link is with an SFP, ensure that changes to advertised modes +* also cause the associated interface to be selected such that the +* link can be configured correctly. +*/ +if (pl->sfp_port && pl->sfp_bus) { + config.interface =sfp_select_interface (pl->sfp_bus, + config.advertising); +if (config.interface ==PHY_INTERFACE_MODE_NA ) { +phylink_err (pl, +"selection of interface failed, advertisement %*pb\n" , + __ETHTOOL_LINK_MODE_MASK_NBITS, + config.advertising); +return -EINVAL ; + } + +/* Revalidate with the selected interface */ +linkmode_copy (support, pl->supported); +if (phylink_validate (pl, support, &config)) { +phylink_err (pl,"validation of %s/%s with support %*pb failed\n" , +phylink_an_mode_str (pl->cur_link_an_mode), +phy_modes (config.interface), + __ETHTOOL_LINK_MODE_MASK_NBITS, support); +return -EINVAL ; + } + } +mutex_lock (&pl->state_mutex); pl->link_config.speed = config.speed; pl->link_config.duplex = config.duplex;
@@ -2183,7 +2209,9 @@ static int phylink_sfp_config(struct phylink *pl, u8 mode,if (phy_interface_mode_is_8023z (iface) && pl->phydev)return -EINVAL ; - changed = !linkmode_equal (pl->supported, support); + changed = !linkmode_equal (pl->supported, support) || + !linkmode_equal (pl->link_config.advertising, + config.advertising);if (changed) {linkmode_copy (pl->supported, support);linkmode_copy (pl->link_config.advertising, config.advertising);
drivers/net/usb/hso.c +5 -7
@@ -2720,14 +2720,14 @@ struct hso_device *hso_create_mux_serial_device(struct usb_interface *interface, serial =kzalloc (sizeof (*serial),GFP_KERNEL );if (!serial) - goto exit; + goto err_free_dev; hso_dev->port_data.dev_serial = serial; serial->parent = hso_dev;if (hso_serial_common_create (serial,1 ,CTRL_URB_RX_SIZE ,CTRL_URB_TX_SIZE )) - goto exit; + goto err_free_serial; serial->tx_data_length--; serial->write_data = hso_mux_serial_write_data;
@@ -2743,11 +2743,9 @@ struct hso_device *hso_create_mux_serial_device(struct usb_interface *interface,/* done, return it */ return hso_dev; -exit: -if (serial) { -tty_unregister_device (tty_drv, serial->minor); -kfree (serial); - } +err_free_serial: +kfree (serial); +err_free_dev:kfree (hso_dev);return NULL ;
drivers/net/virtio_net.c +4 -0
@@ -435,6 +435,10 @@ static struct sk_buff *page_to_skb(struct virtnet_info *vi,skb_reserve (skb, p - buf);skb_put (skb, len); + + page = (struct page *)page->private; +if (page) +give_pages (rq, page); goto ok; }
drivers/net/vxlan.c +1 -1
@@ -4756,12 +4756,12 @@ static void __net_exit vxlan_exit_batch_net(struct list_head *net_list)LIST_HEAD (list);unsigned int h; -rtnl_lock ();list_for_each_entry (net, net_list, exit_list) {struct vxlan_net *vn =net_generic (net, vxlan_net_id);unregister_nexthop_notifier (net, &vn->nexthop_notifier_block); } +rtnl_lock ();list_for_each_entry (net, net_list, exit_list)vxlan_destroy_tunnels (net, &list);
drivers/nfc/st-nci/spi.c +1 -0
@@ -278,6 +278,7 @@ static int st_nci_spi_remove(struct spi_device *dev)static struct spi_device_id st_nci_spi_id_table[] = { {ST_NCI_SPI_DRIVER_NAME ,0 }, + {"st21nfcb-spi" ,0 }, {} };MODULE_DEVICE_TABLE (spi, st_nci_spi_id_table);
drivers/nvme/host/core.c +17 -16
@@ -13,7 +13,6 @@#include <linux/kernel.h> #include <linux/module.h> #include <linux/backing-dev.h> -#include <linux/list_sort.h> #include <linux/slab.h> #include <linux/types.h> #include <linux/pr.h>
@@ -3688,15 +3687,6 @@ static int nvme_init_ns_head(struct nvme_ns *ns, unsigned nsid,return ret; } -static int ns_cmp (void *priv,const struct list_head *a, -const struct list_head *b) -{ - struct nvme_ns *nsa = container_of(a, struct nvme_ns, list); - struct nvme_ns *nsb = container_of(b, struct nvme_ns, list); - -return nsa->head->ns_id - nsb->head->ns_id; -} -struct nvme_ns *nvme_find_get_ns (struct nvme_ctrl *ctrl,unsigned nsid) {struct nvme_ns *ns, *ret =NULL ;
@@ -3717,6 +3707,22 @@ struct nvme_ns *nvme_find_get_ns(struct nvme_ctrl *ctrl, unsigned nsid) }EXPORT_SYMBOL_NS_GPL (nvme_find_get_ns,NVME_TARGET_PASSTHRU ); +/* +* Add the namespace to the controller list while keeping the list ordered. +*/ +static void nvme_ns_add_to_ctrl_list (struct nvme_ns *ns) +{ +struct nvme_ns *tmp; + +list_for_each_entry_reverse (tmp, &ns->ctrl->namespaces, list) { +if (tmp->head->ns_id < ns->head->ns_id) { +list_add (&ns->list, &tmp->list); +return ; + } + } +list_add (&ns->list, &ns->ctrl->namespaces); +} +static void nvme_alloc_ns (struct nvme_ctrl *ctrl,unsigned nsid,struct nvme_ns_ids *ids) {
@@ -3778,9 +3784,8 @@ static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid, }down_write (&ctrl->namespaces_rwsem); -list_add_tail (&ns->list, &ctrl->namespaces); +nvme_ns_add_to_ctrl_list (ns);up_write (&ctrl->namespaces_rwsem); -nvme_get_ctrl (ctrl);device_add_disk (ctrl->device, ns->disk, nvme_ns_id_attr_groups);
@@ -4059,10 +4064,6 @@ static void nvme_scan_work(struct work_struct *work)if (nvme_scan_ns_list (ctrl) !=0 )nvme_scan_ns_sequential (ctrl);mutex_unlock (&ctrl->scan_lock); - -down_write (&ctrl->namespaces_rwsem); -list_sort (NULL , &ctrl->namespaces, ns_cmp); -up_write (&ctrl->namespaces_rwsem); }/*
drivers/nvme/host/multipath.c +5 -2
@@ -583,14 +583,17 @@ static int nvme_update_ana_state(struct nvme_ctrl *ctrl,down_read (&ctrl->namespaces_rwsem);list_for_each_entry (ns, &ctrl->namespaces, list) { -unsigned nsid =le32_to_cpu (desc->nsids[n]); - +unsigned nsid; +again: + nsid =le32_to_cpu (desc->nsids[n]);if (ns->head->ns_id < nsid)continue ;if (ns->head->ns_id == nsid)nvme_update_ns_ana_state (desc, ns);if (++n == nr_nsids)break ; +if (ns->head->ns_id > nsid) + goto again; }up_read (&ctrl->namespaces_rwsem);return 0 ;
drivers/nvme/host/rdma.c +3 -13
@@ -656,8 +656,8 @@ static void nvme_rdma_free_queue(struct nvme_rdma_queue *queue)if (!test_and_clear_bit (NVME_RDMA_Q_ALLOCATED , &queue->flags))return ; -nvme_rdma_destroy_queue_ib (queue);rdma_destroy_id (queue->cm_id); +nvme_rdma_destroy_queue_ib (queue);mutex_destroy (&queue->queue_lock); }
@@ -1815,14 +1815,10 @@ static int nvme_rdma_conn_established(struct nvme_rdma_queue *queue)for (i =0 ; i < queue->queue_size; i++) { ret =nvme_rdma_post_recv (queue, &queue->rsp_ring[i]);if (ret) - goto out_destroy_queue_ib; +return ret; }return 0 ; - -out_destroy_queue_ib: -nvme_rdma_destroy_queue_ib (queue); -return ret; } static int nvme_rdma_conn_rejected(struct nvme_rdma_queue *queue,
@@ -1916,14 +1912,10 @@ static int nvme_rdma_route_resolved(struct nvme_rdma_queue *queue)if (ret) {dev_err (ctrl->ctrl.device,"rdma_connect_locked failed (%d).\n" , ret); - goto out_destroy_queue_ib; +return ret; }return 0 ; - -out_destroy_queue_ib: -nvme_rdma_destroy_queue_ib (queue); -return ret; } static int nvme_rdma_cm_handler(struct rdma_cm_id *cm_id,
@@ -1954,8 +1946,6 @@ static int nvme_rdma_cm_handler(struct rdma_cm_id *cm_id,case RDMA_CM_EVENT_ROUTE_ERROR :case RDMA_CM_EVENT_CONNECT_ERROR :case RDMA_CM_EVENT_UNREACHABLE : -nvme_rdma_destroy_queue_ib (queue); - fallthrough;case RDMA_CM_EVENT_ADDR_ERROR :dev_dbg (queue->ctrl->ctrl.device,"CM error event %d\n" , ev->event);
drivers/nvme/host/tcp.c +10 -3
@@ -614,7 +614,7 @@ static int nvme_tcp_setup_h2c_data_pdu(struct nvme_tcp_request *req,cpu_to_le32 (data->hdr.hlen + hdgst + req->pdu_len + ddgst); data->ttag = pdu->ttag; data->command_id =nvme_cid (rq); - data->data_offset =cpu_to_le32 (req->data_sent); + data->data_offset = pdu->r2t_offset; data->data_length =cpu_to_le32 (req->pdu_len);return 0 ; }
@@ -940,7 +940,15 @@ static int nvme_tcp_try_send_data(struct nvme_tcp_request *req)nvme_tcp_ddgst_update (queue->snd_hash, page, offset, ret); -/* fully successful last write*/ +/* +* update the request iterator except for the last payload send +* in the request where we don't want to modify it as we may +* compete with the RX path completing the request. +*/ +if (req->data_sent + ret < req->data_len) +nvme_tcp_advance_req (req, ret); + +/* fully successful last send in current PDU */ if (last && ret == len) {if (queue->data_digest) { nvme_tcp_ddgst_final(queue->snd_hash,
@@ -952,7 +960,6 @@ static int nvme_tcp_try_send_data(struct nvme_tcp_request *req) }return 1 ; } -nvme_tcp_advance_req (req, ret); }return -EAGAIN ; }
drivers/nvme/target/configfs.c +1 -1
@@ -1067,7 +1067,7 @@ static ssize_t nvmet_subsys_attr_serial_show(struct config_item *item, {struct nvmet_subsys *subsys =to_subsys (item); -return snprintf (page,PAGE_SIZE ,"%*s\n" , +return snprintf (page,PAGE_SIZE ,"%.*s\n" ,NVMET_SN_MAX_SIZE , subsys->serial); }
drivers/platform/x86/amd-pmc.c +1 -1
@@ -71,7 +71,7 @@#define AMD_CPU_ID_YC 0x14B5#define PMC_MSG_DELAY_MIN_US 100 -#define RESPONSE_REGISTER_LOOP_MAX 200 +#define RESPONSE_REGISTER_LOOP_MAX 20000#define SOC_SUBSYSTEM_IP_MAX 12#define DELAY_MIN_US 2000
drivers/platform/x86/dell/Kconfig +1 -2
@@ -166,8 +166,7 @@ config DELL_WMI config DELL_WMI_PRIVACY bool "Dell WMI Hardware Privacy Support" - depends on DELL_WMI - depends on LEDS_TRIGGER_AUDIO + depends on LEDS_TRIGGER_AUDIO = y || DELL_WMI = LEDS_TRIGGER_AUDIO help This option adds integration with the "Dell Hardware Privacy" feature of Dell laptops to the dell-wmi driver.
drivers/platform/x86/intel_punit_ipc.c +1 -2
@@ -8,7 +8,6 @@* which provide mailbox interface for power management usage. */ -#include <linux/acpi.h> #include <linux/bitops.h> #include <linux/delay.h> #include <linux/device.h>
@@ -319,7 +318,7 @@ static struct platform_driver intel_punit_ipc_driver = { .remove = intel_punit_ipc_remove, .driver = { .name = "intel_punit_ipc", - .acpi_match_table = ACPI_PTR(punit_ipc_acpi_ids), + .acpi_match_table = punit_ipc_acpi_ids, }, };
drivers/regulator/max14577-regulator.c +0 -2
@@ -269,5 +269,3 @@ module_exit(max14577_regulator_exit);MODULE_AUTHOR ("Krzysztof Kozlowski <[email protected]>" );MODULE_DESCRIPTION ("Maxim 14577/77836 regulator driver" );MODULE_LICENSE ("GPL" ); -MODULE_ALIAS ("platform:max14577-regulator" ); -MODULE_ALIAS ("platform:max77836-regulator" );
drivers/regulator/qcom-rpmh-regulator.c +1 -1
@@ -991,7 +991,7 @@ static const struct rpmh_vreg_init_data pm8009_1_vreg_data[] = {RPMH_VREG ("ldo4" ,"ldo%s4" , &pmic5_nldo,"vdd-l4" ),RPMH_VREG ("ldo5" ,"ldo%s5" , &pmic5_pldo,"vdd-l5-l6" ),RPMH_VREG ("ldo6" ,"ldo%s6" , &pmic5_pldo,"vdd-l5-l6" ), - RPMH_VREG("ldo7", "ldo%s6", &pmic5_pldo_lv, "vdd-l7"), + RPMH_VREG("ldo7", "ldo%s7", &pmic5_pldo_lv, "vdd-l7"), {} };
drivers/s390/net/qeth_core_main.c +3 -0
@@ -207,6 +207,9 @@ static void qeth_clear_working_pool_list(struct qeth_card *card) &card->qdio.in_buf_pool.entry_list, list)list_del (&pool_entry->list); +if (!queue) +return ; +for (i =0 ; i <ARRAY_SIZE (queue->bufs); i++) queue->bufs[i].pool_entry =NULL ; }
drivers/scsi/lpfc/lpfc_attr.c +2 -1
@@ -6022,7 +6022,8 @@ lpfc_sg_seg_cnt_show(struct device *dev, struct device_attribute *attr, len =scnprintf (buf,PAGE_SIZE ,"SGL sz: %d total SGEs: %d\n" , phba->cfg_sg_dma_buf_size, phba->cfg_total_seg_cnt); - len +=scnprintf (buf + len,PAGE_SIZE ,"Cfg: %d SCSI: %d NVME: %d\n" , + len +=scnprintf (buf + len,PAGE_SIZE - len, +"Cfg: %d SCSI: %d NVME: %d\n" , phba->cfg_sg_seg_cnt, phba->cfg_scsi_seg_cnt, phba->cfg_nvme_seg_cnt);return len;
drivers/scsi/qla2xxx/qla_init.c +2 -1
@@ -7014,7 +7014,8 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)return 0 ;break ;case QLA2XXX_INI_MODE_DUAL : -if (!qla_dual_mode_enabled (vha)) +if (!qla_dual_mode_enabled (vha) && + !qla_ini_mode_enabled (vha))return 0 ;break ;case QLA2XXX_INI_MODE_ENABLED :
drivers/scsi/scsi_transport_iscsi.c +4 -4
@@ -441,9 +441,7 @@ static umode_t iscsi_iface_attr_is_visible(struct kobject *kobj,struct iscsi_transport *t = iface->transport;int param =-1 ; -if (attr == &dev_attr_iface_enabled.attr) - param =ISCSI_NET_PARAM_IFACE_ENABLE ; -else if (attr == &dev_attr_iface_def_taskmgmt_tmo.attr) +if (attr == &dev_attr_iface_def_taskmgmt_tmo.attr) param =ISCSI_IFACE_PARAM_DEF_TASKMGMT_TMO ;else if (attr == &dev_attr_iface_header_digest.attr) param =ISCSI_IFACE_PARAM_HDRDGST_EN ;
@@ -483,7 +481,9 @@ static umode_t iscsi_iface_attr_is_visible(struct kobject *kobj,if (param !=-1 )return t->attr_is_visible (ISCSI_IFACE_PARAM , param); -if (attr == &dev_attr_iface_vlan_id.attr) +if (attr == &dev_attr_iface_enabled.attr) + param =ISCSI_NET_PARAM_IFACE_ENABLE ; +else if (attr == &dev_attr_iface_vlan_id.attr) param =ISCSI_NET_PARAM_VLAN_ID ;else if (attr == &dev_attr_iface_vlan_priority.attr) param =ISCSI_NET_PARAM_VLAN_PRIORITY ;
drivers/scsi/sd_zbc.c +4 -4
@@ -154,8 +154,8 @@ static void *sd_zbc_alloc_report_buffer(struct scsi_disk *sdkp,/* * Report zone buffer size should be at most 64B times the number of -* zones requested plus the 64B reply header, but should be at least -* SECTOR_SIZE for ATA devices. +* zones requested plus the 64B reply header, but should be aligned +* to SECTOR_SIZE for ATA devices. * Make sure that this size does not exceed the hardware capabilities. * Furthermore, since the report zone command cannot be split, make * sure that the allocated buffer can always be mapped by limiting the
@@ -174,7 +174,7 @@ static void *sd_zbc_alloc_report_buffer(struct scsi_disk *sdkp, *buflen = bufsize;return buf; } - bufsize >>=1 ; + bufsize =rounddown (bufsize >>1 ,SECTOR_SIZE ); }return NULL ;
@@ -280,7 +280,7 @@ static void sd_zbc_update_wp_offset_workfn(struct work_struct *work) {struct scsi_disk *sdkp;unsigned long flags; -unsigned int zno; +sector_t zno;int ret; sdkp = container_of(work, struct scsi_disk, zone_wp_offset_work);
drivers/scsi/ufs/ufshcd.c +35 -46
164 lines not on this page · raw message
drivers/scsi/ufs/ufshcd.h +0 -5
@@ -1160,11 +1160,6 @@ static inline u32 ufshcd_vops_get_ufs_hci_version(struct ufs_hba *hba)return ufshcd_readl (hba,REG_UFS_VERSION ); } -static inline bool ufshcd_has_utrlcnr (struct ufs_hba *hba) -{ -return (hba->ufs_version >=ufshci_version (3 ,0 )); -} -static inline int ufshcd_vops_clk_scale_notify (struct ufs_hba *hba,bool up,enum ufs_notify_change_status status) {
drivers/scsi/ufs/ufshci.h +0 -1
@@ -39,7 +39,6 @@ enum {REG_UTP_TRANSFER_REQ_DOOR_BELL =0x58 ,REG_UTP_TRANSFER_REQ_LIST_CLEAR =0x5C ,REG_UTP_TRANSFER_REQ_LIST_RUN_STOP =0x60 , -REG_UTP_TRANSFER_REQ_LIST_COMPL =0x64 ,REG_UTP_TASK_REQ_LIST_BASE_L =0x70 ,REG_UTP_TASK_REQ_LIST_BASE_H =0x74 , REG_UTP_TASK_REQ_DOOR_BELL = 0x78,
drivers/spi/spi-tegra20-slink.c +2 -2
@@ -1206,7 +1206,7 @@ static int tegra_slink_resume(struct device *dev) }#endif -static int tegra_slink_runtime_suspend (struct device *dev) +static int __maybe_unused tegra_slink_runtime_suspend (struct device *dev) {struct spi_master *master =dev_get_drvdata (dev);struct tegra_slink_data *tspi =spi_master_get_devdata (master);
@@ -1218,7 +1218,7 @@ static int tegra_slink_runtime_suspend(struct device *dev)return 0 ; } -static int tegra_slink_runtime_resume (struct device *dev) +static int __maybe_unused tegra_slink_runtime_resume (struct device *dev) {struct spi_master *master =dev_get_drvdata (dev);struct tegra_slink_data *tspi =spi_master_get_devdata (master);
drivers/spi/spi.c +0 -8
@@ -58,10 +58,6 @@ modalias_show(struct device *dev, struct device_attribute *a, char *buf)const struct spi_device *spi =to_spi_device (dev);int len; - len =of_device_modalias (dev, buf,PAGE_SIZE ); -if (len != -ENODEV ) -return len; - len =acpi_device_modalias (dev, buf,PAGE_SIZE -1 );if (len != -ENODEV )return len;
@@ -367,10 +363,6 @@ static int spi_uevent(struct device *dev, struct kobj_uevent_env *env)const struct spi_device *spi =to_spi_device (dev);int rc; - rc =of_device_uevent_modalias (dev, env); -if (rc != -ENODEV ) -return rc; - rc =acpi_device_uevent_modalias (dev, env);if (rc != -ENODEV )return rc;
drivers/staging/greybus/uart.c +32 -30
135 lines not on this page · raw message
drivers/target/target_core_configfs.c +20 -12
@@ -1110,20 +1110,24 @@ static ssize_t alua_support_store(struct config_item *item, {struct se_dev_attrib *da =to_attrib (item);struct se_device *dev = da->da_dev; -bool flag; +bool flag, oldflag;int ret; + ret =strtobool (page, &flag); +if (ret <0 ) +return ret; + + oldflag = !(dev->transport_flags &TRANSPORT_FLAG_PASSTHROUGH_ALUA ); +if (flag == oldflag) +return count; +if (!(dev->transport->transport_flags_changeable &TRANSPORT_FLAG_PASSTHROUGH_ALUA )) {pr_err ("dev[%p]: Unable to change SE Device alua_support:" " alua_support has fixed value\n" , dev); -return -EINVAL ; +return -ENOSYS ; } - ret =strtobool (page, &flag); -if (ret <0 ) -return ret; -if (flag) dev->transport_flags &= ~TRANSPORT_FLAG_PASSTHROUGH_ALUA ;else
@@ -1145,20 +1149,24 @@ static ssize_t pgr_support_store(struct config_item *item, {struct se_dev_attrib *da =to_attrib (item);struct se_device *dev = da->da_dev; -bool flag; +bool flag, oldflag;int ret; + ret =strtobool (page, &flag); +if (ret <0 ) +return ret; + + oldflag = !(dev->transport_flags &TRANSPORT_FLAG_PASSTHROUGH_PGR ); +if (flag == oldflag) +return count; +if (!(dev->transport->transport_flags_changeable &TRANSPORT_FLAG_PASSTHROUGH_PGR )) {pr_err ("dev[%p]: Unable to change SE Device pgr_support:" " pgr_support has fixed value\n" , dev); -return -EINVAL ; +return -ENOSYS ; } - ret =strtobool (page, &flag); -if (ret <0 ) -return ret; -if (flag) dev->transport_flags &= ~TRANSPORT_FLAG_PASSTHROUGH_PGR ;else
drivers/thermal/intel/int340x_thermal/processor_thermal_device.c +3 -2
@@ -107,7 +107,7 @@ static int tcc_offset_update(unsigned int tcc)return 0 ; } -static unsigned int tcc_offset_save; +static int tcc_offset_save =-1 ; static ssize_t tcc_offset_degree_celsius_store(struct device *dev, struct device_attribute *attr, const char *buf,
@@ -352,7 +352,8 @@ int proc_thermal_resume(struct device *dev) proc_dev =dev_get_drvdata (dev);proc_thermal_read_ppcc (proc_dev); -tcc_offset_update (tcc_offset_save); +if (tcc_offset_save >=0 ) +tcc_offset_update (tcc_offset_save);return 0 ; }
drivers/thermal/thermal_core.c +3 -4
@@ -222,15 +222,14 @@ int thermal_build_list_of_policies(char *buf) {struct thermal_governor *pos;ssize_t count =0 ; -ssize_t size =PAGE_SIZE ;mutex_lock (&thermal_governor_lock);list_for_each_entry (pos, &thermal_governor_list, governor_list) { - size =PAGE_SIZE - count; - count +=scnprintf (buf + count, size,"%s " , pos->name); + count +=scnprintf (buf + count,PAGE_SIZE - count,"%s " , + pos->name); } - count +=scnprintf (buf + count, size,"\n" ); + count +=scnprintf (buf + count,PAGE_SIZE - count,"\n" );mutex_unlock (&thermal_governor_lock);
drivers/tty/serial/8250/8250_omap.c +1 -1
@@ -106,7 +106,7 @@#define UART_OMAP_EFR2_TIMEOUT_BEHAVE BIT(6)/* RX FIFO occupancy indicator */ -#define UART_OMAP_RX_LVL 0x64 +#define UART_OMAP_RX_LVL 0x19struct omap8250_priv {int line;
drivers/tty/serial/mvebu-uart.c +1 -1
@@ -163,7 +163,7 @@ static unsigned int mvebu_uart_tx_empty(struct uart_port *port) st =readl (port->membase +UART_STAT );spin_unlock_irqrestore (&port->lock, flags); -return (st &STAT_TX_FIFO_EMP ) ?TIOCSER_TEMT :0 ; +return (st &STAT_TX_EMP ) ?TIOCSER_TEMT :0 ; }static unsigned int mvebu_uart_get_mctrl (struct uart_port *port)
drivers/tty/synclink_gt.c +22 -22
114 lines not on this page · raw message
drivers/usb/dwc2/gadget.c +107 -86
193 lines not on this page · raw message
drivers/xen/balloon.c +45 -17
62 lines not on this page · raw message
fs/afs/dir.c +7 -39
46 lines not on this page · raw message
fs/qnx4/dir.c +52 -17
69 lines not on this page · raw message
net/dsa/dsa2.c +56 -8
64 lines not on this page · raw message
tools/lib/perf/evsel.c +41 -23
64 lines not on this page · raw message
tools/testing/selftests/arm64/signal/test_signals.h +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/arm64/signal/test_signals_utils.c +8 -2
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.