Linux 4.14.177
Greg KH
maintainerI'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
Greg KH
maintainerDocumentation/sound/hd-audio/index.rst +1 -0
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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_modifystatic 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 msint 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
@@ -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 alireturn 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -693,7 +693,6 @@ fcloop_targetport_delete(struct nvmet_fc_target_port *targetport)#define FCLOOP_DMABOUND_4G 0xFFFFFFFFstatic 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 );
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/rtc/rtc-pm8xxx.c +38 -11
49 lines not on this page · raw message
drivers/target/iscsi/iscsi_target.c +23 -56
79 lines not on this page · raw message
drivers/target/iscsi/iscsi_target_configfs.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/target/iscsi/iscsi_target_login.c +3 -2
Lines of this file are not shown. View the raw message.
include/target/iscsi/iscsi_target_core.h +1 -1
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
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
sound/soc/intel/atom/sst-atom-controls.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/x86/ptrace_syscall.c +6 -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.