5.7.6-rc1 review
Subsystems (5)
Greg Kroah-Hartman
maintainercover 5.7.6-rc1 review
This is the start of the stable review cycle for the 5.7.6 release. There are 477 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 25 Jun 2020 19:52:30 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.6-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.7.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 5.7.6-rc1
Jon Derrick <[email protected]>
iommu/vt-d: Remove real DMA lookup in find_domain
Ahmed S. Darwish <[email protected]>
net: core: device_rename: Use rwsem instead of a seqcount
Alexander Sverdlin <[email protected]>
net: octeon: mgmt: Repair filling of RX ring
Chen Yu <[email protected]>
e1000e: Do not wake up the system via WOL if device wakeup is disabled
Nicholas Piggin <[email protected]>
powerpc/64s: Fix KVM interrupt using wrong save area
Jiri Olsa <[email protected]>
kretprobe: Prevent triggering kretprobe from within kprobe_flush_task
Masami Hiramatsu <[email protected]>
kprobes: Fix to protect kick_kprobe_optimizer() by kprobe_mutex
Stefano Brivio <[email protected]>
netfilter: nft_set_pipapo: Disable preemption before getting per-CPU pointer
Stefano Brivio <[email protected]>
netfilter: nft_set_rbtree: Don't account for expired elements on insertion
Kefeng Wang <[email protected]>
sample-trace-array: Fix sleeping function called from invalid context
Kefeng Wang <[email protected]>
sample-trace-array: Remove trace_array 'sample-instance'
Masami Hiramatsu <[email protected]>
tools/bootconfig: Fix to return 0 if succeeded to show the bootconfig
Masami Hiramatsu <[email protected]>
tools/bootconfig: Fix to use correct quotes for value
Masami Hiramatsu <[email protected]>
proc/bootconfig: Fix to use correct quotes for value
Vamshi K Sthambamkadi <[email protected]>
tracing/probe: Fix memleak in fetch_op_data operations
Steven Rostedt (VMware) <[email protected]>
tracing: Make ftrace packed events have align of 1
Eric Biggers <[email protected]>
crypto: algboss - don't wait during notifier callback
Herbert Xu <[email protected]>
crypto: algif_skcipher - Cap recv SG list at ctx->used
Swathi Dhanavanthri <[email protected]>
drm/i915/tgl: Make Wa_14010229206 permanent
Harry Wentland <[email protected]>
Revert "drm/amd/display: disable dcn20 abm feature for bring up"
Chris Wilson <[email protected]>
drm/i915/gt: Move gen4 GT workarounds from init_clock_gating to workarounds
Chris Wilson <[email protected]>
drm/i915/gt: Move vlv GT workarounds from init_clock_gating to workarounds
Chris Wilson <[email protected]>
drm/i915/gt: Move ilk GT workarounds from init_clock_gating to workarounds
Chris Wilson <[email protected]>
drm/i915/gt: Move snb GT workarounds from init_clock_gating to workarounds
Chris Wilson <[email protected]>
drm/i915/gt: Move ivb GT workarounds from init_clock_gating to workarounds
Chris Wilson <[email protected]>
drm/i915/gt: Move hsw GT workarounds from init_clock_gating to workarounds
Chris Wilson <[email protected]>
drm/i915/gt: Incrementally check for rewinding
Khaled Almahallawy <[email protected]>
drm/i915/tc: fix the reset of ln0
Imre Deak <[email protected]>
drm/i915/icl+: Fix hotplug interrupt disabling after storm detection
Denis Efremov <[email protected]>
drm/amd/display: Use kvfree() to free coeff in build_regamma()
Lorenz Brun <[email protected]>
drm/amdkfd: Use correct major in devcgroup check
Jeykumar Sankaran <[email protected]>
drm/connector: notify userspace on hotplug after register complete
Chris Wilson <[email protected]>
drm/i915: Whitelist context-local timestamp in the gen9 cmdparser
Chris Wilson <[email protected]>
drm/i915/gem: Avoid iterating an empty list
Jordan Crouse <[email protected]>
drm/msm: Check for powered down HW in the devfreq callbacks
Imre Deak <[email protected]>
drm/i915: Fix AUX power domain toggling across TypeC mode resets
Dmitry V. Levin <[email protected]>
s390: fix syscall_get_error for compat processes
Eric Biggers <[email protected]>
f2fs: avoid utf8_strncasecmp() with unstable name
Eric Biggers <[email protected]>
f2fs: split f2fs_d_compare() from f2fs_match_name()
Denis Efremov <[email protected]>
net/mlx5: DR, Fix freeing in dr_create_rc_qp()
Lyude Paul <[email protected]>
drm/dp_mst: Increase ACT retry timeout to 3s
Theodore Ts'o <[email protected]>
ext4: avoid race conditions when remounting with options that change dax
Xiaoguang Wang <[email protected]>
io_uring: fix possible race condition against REQ_F_NEED_CLEANUP
Jens Axboe <[email protected]>
io_uring: reap poll completions while waiting for refs to drop on exit
Jens Axboe <[email protected]>
io_uring: acquire 'mm' for task_work for SQPOLL
Xiaoguang Wang <[email protected]>
io_uring: add memory barrier to synchronize io_kiocb's result and iopoll_completed
Xiaoguang Wang <[email protected]>
io_uring: don't fail links for EAGAIN error in IOPOLL mode
Xiaoguang Wang <[email protected]>
io_uring: fix io_kiocb.flags modification race in IOPOLL mode
Thomas Zimmermann <[email protected]>
drm/ast: Don't check new mode if CRTC is being disabled
Tom Rix <[email protected]>
selinux: fix undefined return of cond_evaluate_expr
Tom Rix <[email protected]>
selinux: fix a double free in cond_read_node()/cond_read_list()
Tom Rix <[email protected]>
selinux: fix double free
Sandeep Raghuraman <[email protected]>
drm/amdgpu: Replace invalid device ID with a valid device ID
Alex Deucher <[email protected]>
drm/amdgpu/display: use blanked rather than plane state for sync groups
Huacai Chen <[email protected]>
drm/qxl: Use correct notify port address when creating cursor ring
Lyude Paul <[email protected]>
drm/dp_mst: Reformat drm_dp_check_act_status() a bit
Takashi Iwai <[email protected]>
drm/nouveau/kms: Fix regression by audio component transition
Kuninori Morimoto <[email protected]>
sh: Convert iounmap() macros to inline functions
Andreas Färber <[email protected]>
arm64: dts: realtek: rtd129x: Carve out boot ROM from memory
Andreas Färber <[email protected]>
arm64: dts: realtek: rtd129x: Use reserved-memory for RPC regions
zhangyi (F) <[email protected]>
ext4, jbd2: ensure panic by fix a race between jbd2 abort and ext4 error handlers
Eric Biggers <[email protected]>
ext4: avoid utf8_strncasecmp() with unstable name
Jeffle Xu <[email protected]>
ext4: fix partial cluster initialization when splitting extent
Sivaprakash Murugesan <[email protected]>
pinctrl: qcom: ipq6018 Add missing pins in qpic pin group
Wolfram Sang <[email protected]>
drm: encoder_slave: fix refcouting error for modules
Kai-Heng Feng <[email protected]>
libata: Use per port sync for detach
Will Deacon <[email protected]>
arm64: hw_breakpoint: Don't invoke overflow handler on uaccess watchpoints
Barry Song <[email protected]>
arm64: mm: reserve hugetlb CMA after numa_init
Ido Schimmel <[email protected]>
mlxsw: spectrum: Adjust headroom buffers for 8x ports
Martin <[email protected]>
bareudp: Fixed configuration to avoid having garbage values
Sven Auhagen <[email protected]>
mvpp2: remove module bugfix
Jason Yan <[email protected]>
block: Fix use-after-free in blkdev_get()
Heiko Carstens <[email protected]>
s390/numa: let NODES_SHIFT depend on NEED_MULTIPLE_NODES
Dinghao Liu <[email protected]>
scsi: ufs-bsg: Fix runtime PM imbalance on error
Vladimir Oltean <[email protected]>
net: dsa: sja1105: fix PTP timestamping with large tc-taprio cycles
Vasundhara Volam <[email protected]>
bnxt_en: Return from timer if interface is not in open state.
Michael Chan <[email protected]>
bnxt_en: Fix AER reset logic on 57500 chips.
Michael Chan <[email protected]>
bnxt_en: Re-enable SRIOV during resume.
Michael Chan <[email protected]>
bnxt_en: Simplify bnxt_resume().
David Howells <[email protected]>
afs: Fix the mapping of the UAEOVERFLOW abort code
David Howells <[email protected]>
afs: Remove the error argument from afs_protocol_error()
David Howells <[email protected]>
afs: Set error flag rather than return error from file status decode
David Howells <[email protected]>
afs: Always include dir in bulk status fetch from afs_do_lookup()
David Howells <[email protected]>
afs: Fix EOF corruption
David Howells <[email protected]>
afs: afs_write_end() should change i_size under the right lock
David Howells <[email protected]>
afs: Fix non-setting of mtime when writing into mmap
Aneesh Kumar K.V <[email protected]>
powerpc: Fix kernel crash in show_instructions() w/DEBUG_VIRTUAL
Dan Carpenter <[email protected]>
crypto: marvell/octeontx - Fix a potential NULL dereference
Herbert Xu <[email protected]>
crypto: hisilicon - Cap block size at 2^31
Zhiqiang Liu <[email protected]>
bcache: fix potential deadlock problem in btree_gc_coalesce
yangerkun <[email protected]>
ext4: stop overwrite the errcode in ext4_setup_super
Ian Rogers <[email protected]>
perf parse-events: Fix an incompatible pointer
Sumanth Korikkar <[email protected]>
perf probe: Fix user attribute access in kprobes
Hongbo Yao <[email protected]>
perf stat: Fix NULL pointer dereference
Gaurav Singh <[email protected]>
perf report: Fix NULL pointer dereference in hists__fprintf_nr_sample_events()
Qais Yousef <[email protected]>
usb/ehci-platform: Set PM runtime as active on resume
Qais Yousef <[email protected]>
usb/xhci-plat: Set PM runtime as active on resume
Andrii Nakryiko <[email protected]>
bpf: Undo internal BPF_PROBE_MEM in BPF insns dump
Andrii Nakryiko <[email protected]>
libbpf: Support pre-initializing .bss global variables
Andrey Ignatov <[email protected]>
bpf: Fix memlock accounting for sock_hash
Lorenz Bauer <[email protected]>
bpf: sockmap: Don't attach programs to UDP sockets
Alex Elder <[email protected]>
net: ipa: program upper nibbles of sequencer type
Brett Creeley <[email protected]>
iavf: fix speed reporting over virtchnl
Li RongQing <[email protected]>
xdp: Fix xsk_generic_xmit errno
Chuck Lever <[email protected]>
NFS: Fix direct WRITE throughput regression
Zheng Bin <[email protected]>
nfs: set invalid blocks after NFSv4 writes
Christoph Hellwig <[email protected]>
nvme-pci: use simple suspend when a HMB is enabled
Daniel Wagner <[email protected]>
nvme-fc: don't call nvme_cleanup_cmd() for AENs
Tobias Klauser <[email protected]>
tools, bpftool: Fix memory leak in codegen error cases
YiFei Zhu <[email protected]>
net/filter: Permit reading NET in load_bytes_relative when MAC not set
Tony Luck <[email protected]>
x86/mce/dev-mcelog: Fix -Wstringop-truncation warning about strncpy()
Vitaly Kuznetsov <[email protected]>
x86/idt: Keep spurious entries unset in system_vectors
Colin Ian King <[email protected]>
drm/ast: fix missing break in switch statement for format->cpp[0] case 4
Christophe JAILLET <[email protected]>
scsi: acornscsi: Fix an error handling path in acornscsi_probe()
Andrii Nakryiko <[email protected]>
libbpf: Handle GCC noreturn-turned-volatile quirk
Jernej Skrabec <[email protected]>
drm/sun4i: hdmi ddc clk: Fix size of m divider
Jean-Philippe Brucker <[email protected]>
tracing/probe: Fix bpf_task_fd_query() for kprobes and uprobes
Jakub Sitnicki <[email protected]>
bpf, sockhash: Synchronize delete from bucket list on map free
dihu <[email protected]>
bpf/sockmap: Fix kernel panic at __tcp_bpf_recvmsg
Hans de Goede <[email protected]>
ASoC: rt5645: Add platform-data for Asus T101HA
Hans de Goede <[email protected]>
ASoC: Intel: bytcr_rt5640: Add quirk for Toshiba Encore WT10-A tablet
Pierre-Louis Bossart <[email protected]>
ASoC: SOF: nocodec: conditionally set dpcm_capture/dpcm_playback flags
Bard Liao <[email protected]>
ASoC: core: only convert non DPCM link to DPCM link
Pierre-Louis Bossart <[email protected]>
ASoC: soc-pcm: dpcm: fix playback/capture checks
Zhihao Cheng <[email protected]>
afs: Fix memory leak in afs_put_sysnames()
Eric Biggers <[email protected]>
f2fs: don't return vmalloc() memory from f2fs_kmalloc()
tannerlove <[email protected]>
selftests/net: in timestamping, strncpy needs to preserve null byte
Shaokun Zhang <[email protected]>
drivers/perf: hisi: Fix wrong value for all counters enable
Joe Perches <[email protected]>
arm64: ftrace: Change CONFIG_FTRACE_WITH_REGS to CONFIG_DYNAMIC_FTRACE_WITH_REGS
Dong Aisheng <[email protected]>
mailbox: imx: Add context save/restore for suspend/resume
Max Staudt <[email protected]>
i2c: icy: Fix build with CONFIG_AMIGA_PCMCIA=n
Logan Gunthorpe <[email protected]>
NTB: ntb_test: Fix bug when counting remote files
Logan Gunthorpe <[email protected]>
NTB: perf: Fix race condition when run with ntb_test
Logan Gunthorpe <[email protected]>
NTB: perf: Fix support for hardware that doesn't have port numbers
Logan Gunthorpe <[email protected]>
NTB: perf: Don't require one more memory window than number of peers
Logan Gunthorpe <[email protected]>
NTB: Revert the change to use the NTB device dev for DMA allocations
Logan Gunthorpe <[email protected]>
NTB: ntb_tool: reading the link file should not end in a NULL byte
Sanjay R Mehta <[email protected]>
ntb_tool: pass correct struct device to dma_alloc_coherent
Sanjay R Mehta <[email protected]>
ntb_perf: pass correct struct device to dma_alloc_coherent
Dan Murphy <[email protected]>
net: mscc: Fix OF_MDIO config check
Dan Murphy <[email protected]>
net: marvell: Fix OF_MDIO config check
Dan Murphy <[email protected]>
net: dp83867: Fix OF_MDIO config check
Bob Peterson <[email protected]>
gfs2: fix use-after-free on transaction ail lists
Vitaly Kuznetsov <[email protected]>
KVM: selftests: Fix build with "make ARCH=x86_64"
Chaitanya Kulkarni <[email protected]>
blktrace: fix endianness for blk_log_remap()
Chaitanya Kulkarni <[email protected]>
blktrace: fix endianness in get_pdu_int()
Chaitanya Kulkarni <[email protected]>
blktrace: use errno instead of bi_status
Ram Pai <[email protected]>
selftests/vm/pkeys: fix alloc_random_pkey() to make it really random
Arnd Bergmann <[email protected]>
include/linux/bitops.h: avoid clang shift-count-overflow warnings
Jann Horn <[email protected]>
lib/zlib: remove outdated and incorrect pre-increment optimization
Jiri Benc <[email protected]>
geneve: change from tx_error to tx_dropped on missing metadata
Dan Carpenter <[email protected]>
bpf: Fix an error code in check_btf_func()
Kees Cook <[email protected]>
pwm: Add missing "CONFIG_" prefix
Tero Kristo <[email protected]>
crypto: omap-sham - add proper load balancing support for multicore
Jens Axboe <[email protected]>
ext4: don't block for O_DIRECT if IOCB_NOWAIT is set
Harshad Shirwadkar <[email protected]>
ext4: handle ext4_mark_inode_dirty errors
Nicholas Kazlauskas <[email protected]>
drm/amd/display: Revalidate bandwidth before commiting DC updates
Ka-Cheong Poon <[email protected]>
RDMA/cm: Spurious WARNING triggered in cm_destroy_id()
J. Bruce Fields <[email protected]>
nfsd: safer handling of corrupted c_type
Christophe JAILLET <[email protected]>
pinctrl: freescale: imx: Use 'devm_of_iomap()' to avoid a resource leak in case of error in 'imx_pinctrl_probe()'
Christophe JAILLET <[email protected]>
pinctrl: freescale: imx: Fix an error handling path in 'imx_pinctrl_probe()'
yu kuai <[email protected]>
pinctrl: sirf: add missing put_device() call in sirfsoc_gpio_probe()
Christophe JAILLET <[email protected]>
pinctrl: imxl: Fix an error handling path in 'imx1_pinctrl_core_probe()'
Masahiro Yamada <[email protected]>
modpost: fix -i (--ignore-errors) MAKEFLAGS detection
Can Guo <[email protected]>
scsi: ufs: Don't update urgent bkops level when toggling auto bkops
Qiushi Wu <[email protected]>
scsi: iscsi: Fix reference count leak in iscsi_boot_create_kobj
Bob Peterson <[email protected]>
gfs2: Allow lock_nolock mount to specify jid=X
Uwe Kleine-König <[email protected]>
pwm: imx27: Fix rounding behavior
J. Bruce Fields <[email protected]>
nfsd4: make drc_slab global, not per-net
Luis Henriques <[email protected]>
ceph: don't return -ESTALE if there's still an open file
Ben Skeggs <[email protected]>
drm/nouveau/disp/gm200-: fix NV_PDISP_SOR_HDMI2_CTRL(n) selection
Stafford Horne <[email protected]>
openrisc: Fix issue with argument clobbering for clone/fork
David Howells <[email protected]>
rxrpc: Adjust /proc/net/rxrpc/calls to display call->debug_id not user_ID
Wei Yongjun <[email protected]>
mailbox: zynqmp-ipi: Fix NULL vs IS_ERR() check in zynqmp_ipi_mbox_probe()
Dan Carpenter <[email protected]>
mailbox: imx: Fix return in imx_mu_scu_xlate()
Chuhong Yuan <[email protected]>
rtc: rv3028: Add missed check for devm_regmap_init_i2c()
Qiushi Wu <[email protected]>
vfio/mdev: Fix reference count leak in add_mdev_supported_type
Kai Vehmanen <[email protected]>
ASoC: SOF: Intel: hda: fix generic hda codec support
Xiyu Yang <[email protected]>
ASoC: fsl_asrc_dma: Fix dma_chan leak when config DMA channel failed
Martin Blumenstingl <[email protected]>
usb: dwc3: meson-g12a: fix error path when fetching the reset line fails
Christophe JAILLET <[email protected]>
extcon: adc-jack: Fix an error handling path in 'adc_jack_probe()'
Nicholas Piggin <[email protected]>
powerpc/64s/kuap: Add missing isync to KUAP restore paths
huhai <[email protected]>
powerpc/4xx: Don't unmap NULL mbase
Nathan Chancellor <[email protected]>
input: i8042 - Remove special PowerPC handling
Arnd Bergmann <[email protected]>
ARM: davinci: fix build failure without I2C
Dan Carpenter <[email protected]>
of: Fix a refcounting bug in __of_attach_node_sysfs()
Olga Kornievskaia <[email protected]>
NFSv4.1 fix rpc_call_done assignment for BIND_CONN_TO_SESSION
Fedor Tokarev <[email protected]>
net: sunrpc: Fix off-by-one issues in 'rpc_ntop6'
Charles Keepax <[email protected]>
ASoC: dapm: Move dai_link widgets to runtime to fix use after free
Dan Williams <[email protected]>
/dev/mem: Revoke mappings when a driver claims the region
John Hubbard <[email protected]>
misc: xilinx-sdfec: improve get_user_pages_fast() error handling
Eddie James <[email protected]>
clk: ast2600: Fix AHB clock divider for A1
Chunyan Zhang <[email protected]>
clk: sprd: return correct type of value for _sprd_pll_recalc_rate
Laurent Dufour <[email protected]>
KVM: PPC: Book3S HV: Relax check on H_SVM_INIT_ABORT
Qian Cai <[email protected]>
KVM: PPC: Book3S: Fix some RCU-list locks
Qian Cai <[email protected]>
KVM: PPC: Book3S HV: Ignore kmemleak false positives
Vignesh Raghavendra <[email protected]>
scsi: ufs: ti-j721e-ufs: Fix unwinding of pm_runtime changes
Gabriel Krisman Bertazi <[email protected]>
scsi: iscsi: Fix deadlock on recovery path during GFP_IO reclaim
Tejas Patel <[email protected]>
clk: zynqmp: Fix divider2 calculation
Jeffrey Hugo <[email protected]>
scsi: ufs-qcom: Fix scheduling while atomic issue
Nathan Chancellor <[email protected]>
clk: bcm2835: Fix return type of bcm2835_register_gate
Dan Carpenter <[email protected]>
scsi: target: tcmu: Fix a use after free in tcmu_check_expired_queue_cmd()
Qiushi Wu <[email protected]>
ASoC: fix incomplete error-handling in img_i2s_in_probe.
Christophe Leroy <[email protected]>
powerpc/8xx: Drop CONFIG_8xx_COPYBACK option
Christophe Leroy <[email protected]>
powerpc/32s: Don't warn when mapping RO data ROX.
Wei Yongjun <[email protected]>
mfd: wcd934x: Drop kfree for memory allocated with devm_kzalloc
Amelie Delaunay <[email protected]>
mfd: stmfx: Disable IRQ in suspend to avoid spurious interrupt
Amelie Delaunay <[email protected]>
mfd: stmfx: Fix stmfx_irq_init error path
Amelie Delaunay <[email protected]>
mfd: stmfx: Reset chip on resume as supply was disabled
Borislav Petkov <[email protected]>
x86/apic: Make TSC deadline timer detection message visible
Potnuri Bharat Teja <[email protected]>
RDMA/iw_cxgb4: cleanup device debugfs entries on ULD remove
Siddharth Gupta <[email protected]>
scripts: headers_install: Exit with error on config leak
Tiezhu Yang <[email protected]>
pinctrl: Fix return value about devm_platform_ioremap_resource()
Pawel Laszczak <[email protected]>
usb: gadget: Fix issue with config_ep_by_speed function
Qiushi Wu <[email protected]>
usb: gadget: fix potential double-free in m66592_probe.
Colin Ian King <[email protected]>
usb: gadget: lpc32xx_udc: don't dereference ep pointer before null check
Nathan Chancellor <[email protected]>
USB: gadget: udc: s3c2410_udc: Remove pointless NULL check in s3c2410_udc_nuke
Fabrice Gasnier <[email protected]>
usb: dwc2: gadget: move gadget resume after the core is in L0 state
Stefan Riedmueller <[email protected]>
watchdog: da9062: No need to ping manually before setting timeout
Andrei Vagin <[email protected]>
selftests/timens: handle a case when alarm clocks are not supported
Maor Gottlieb <[email protected]>
IB/cma: Fix ports memory leak in cma_configfs
Jonathan Bakker <[email protected]>
iio: light: gp2ap002: Take runtime PM reference on light read
Marc Zyngier <[email protected]>
PCI: amlogic: meson: Don't use FAST_LINK_MODE to set up link
Marc Zyngier <[email protected]>
PCI: dwc: Fix inner MSI IRQ domain registration
Wei Yongjun <[email protected]>
PCI: dwc: pci-dra7xx: Use devm_platform_ioremap_resource_byname()
Hemant Kumar <[email protected]>
bus: mhi: core: Read transfer length from an event properly
Bjorn Helgaas <[email protected]>
PCI/PTM: Inherit Switch Downstream Port PTM settings from Upstream Port
Boris Ostrovsky <[email protected]>
xen/cpuhotplug: Fix initial CPU offlining for PV(H) guests
Gal Pressman <[email protected]>
RDMA/efa: Fix setting of wrong bit in get/set_feature commands
Hannes Reinecke <[email protected]>
dm zoned: return NULL if dmz_get_zone_for_reclaim() fails to find a zone
Christophe Leroy <[email protected]>
powerpc/kasan: Fix error detection on memory allocation
Qian Cai <[email protected]>
powerpc/64s/pgtable: fix an undefined behaviour
Chen Zhou <[email protected]>
powerpc/powernv: add NULL check after kzalloc
Vidya Sagar <[email protected]>
arm64: tegra: Fix flag for 64-bit resources in 'ranges' property
Jon Hunter <[email protected]>
arm64: tegra: Fix ethernet phy-mode for Jetson Xavier
Miklos Szeredi <[email protected]>
fuse: copy_file_range should truncate cache
Miklos Szeredi <[email protected]>
fuse: fix copy_file_range cache issues
Wei Yongjun <[email protected]>
firmware: imx: scu: Fix possible memory leak in imx_scu_probe()
Ye Bin <[email protected]>
scsi: core: Fix incorrect usage of shost_for_each_device
Bodo Stroesser <[email protected]>
scsi: target: tcmu: Userspace must not complete queued commands
Lang Cheng <[email protected]>
RDMA/hns: Fix cmdq parameter of querying pf timer resource
Lijun Ou <[email protected]>
RDMA/hns: Bugfix for querying qkey
Marek Szyprowski <[email protected]>
clk: samsung: exynos5433: Add IGNORE_UNUSED flag to sclk_i2s1
Souptick Joarder <[email protected]>
fpga: dfl: afu: Corrected error handling levels
Suzuki K Poulose <[email protected]>
coresight: etm4x: Fix use-after-free of per-cpu etm drvdata
Suzuki K Poulose <[email protected]>
coresight: Fix support for sparsely populated ports
Gregory CLEMENT <[email protected]>
tty: n_gsm: Fix bogus i++ in gsm_data_kick
Tang Bin <[email protected]>
USB: host: ehci-mxc: Add error handling in ehci_mxc_drv_probe()
Hans de Goede <[email protected]>
ASoC: Intel: bytcr_rt5640: Add quirk for Toshiba Encore WT8-A tablet
Roy Spliet <[email protected]>
drm/msm/mdp5: Fix mdp5_init error path for failed mdp5_kms allocation
Bjorn Andersson <[email protected]>
drm/msm: Fix undefined "rd_full" link error
Qais Yousef <[email protected]>
usb/ohci-platform: Fix a warning when hibernating
Alex Williamson <[email protected]>
vfio-pci: Mask cap zero
Jean-Philippe Brucker <[email protected]>
iommu/arm-smmu-v3: Don't reserve implementation defined register space
Geoff Levand <[email protected]>
powerpc/ps3: Fix kexec shutdown hang
Sanket Parmar <[email protected]>
phy: cadence: sierra: Fix for USB3 U1/U2 state
Bharat Gooty <[email protected]>
drivers: phy: sr-usb: do not use internal fsm for USB2 phy init
Pali Rohár <[email protected]>
PCI: aardvark: Issue PERST via GPIO
Marek Behún <[email protected]>
PCI: aardvark: Improve link training
Pali Rohár <[email protected]>
PCI: aardvark: Train link immediately after enabling training
Nicholas Piggin <[email protected]>
powerpc/pseries/ras: Fix FWNMI_VALID off by one
Nicholas Piggin <[email protected]>
powerpc/64s/exceptions: Machine check reconcile irq state
Nicholas Piggin <[email protected]>
powerpc/64s/exception: Fix machine check no-loss idle wakeup
Pierre-Louis Bossart <[email protected]>
ASoC: codecs: rt*-sdw: fix memory leak in set_sdw_stream()
Feng Tang <[email protected]>
ipmi: use vzalloc instead of kmalloc for user creation
Lars Povlsen <[email protected]>
pinctrl: ocelot: Always register GPIO driver
Marek Behún <[email protected]>
arm64: dts: marvell: armada-37xx: Set pcie_reset_pin to gpio function
Oded Gabbay <[email protected]>
habanalabs: increase timeout during reset
Mika Westerberg <[email protected]>
PCI/PM: Assume ports without DLL Link Active train links in 100 ms
Cristian Klein <[email protected]>
HID: Add quirks for Trust Panora Graphic Tablet
Erwin Burema <[email protected]>
ALSA: usb-audio: Add duplex sound support for USB devices using implicit feedback
Thomas Ebeling <[email protected]>
ALSA: usb-audio: fixing upper volume limit for RME Babyface Pro routing crosspoints
Jérôme Pouiller <[email protected]>
staging: wfx: fix value of scan timeout
Gregory CLEMENT <[email protected]>
tty: n_gsm: Fix waking up upper tty layer when room available
Gregory CLEMENT <[email protected]>
tty: n_gsm: Fix SOF skipping
Michael Ellerman <[email protected]>
powerpc/64: Don't initialise init_task->thread.regs
Rob Herring <[email protected]>
PCI: Fix pci_register_host_bridge() device_register() error handling
Tero Kristo <[email protected]>
clk: ti: composite: fix memory leak
Bjorn Andersson <[email protected]>
arm64: dts: qcom: c630: Add WiFi node
Bjorn Andersson <[email protected]>
arm64: dts: qcom: db820c: Fix invalid pm8994 supplies
Wei Yongjun <[email protected]>
USB: ohci-sm501: fix error return code in ohci_hcd_sm501_drv_probe()
Wei Yongjun <[email protected]>
phy: ti: j721e-wiz: Fix some error return code in wiz_probe()
Arnd Bergmann <[email protected]>
dlm: remove BUG() before panic()
Sibi Sankar <[email protected]>
remoteproc: qcom_q6v5_mss: Drop accesses to MPSS PERPH register space
Dafna Hirschfeld <[email protected]>
pinctrl: rockchip: fix memleak in rockchip_dt_node_to_map
Christophe JAILLET <[email protected]>
ASoC: ti: omap-mcbsp: Fix an error handling path in 'asoc_mcbsp_probe()'
Christophe JAILLET <[email protected]>
ASoC: ux500: mop500: Fix some refcounted resources issues
Yongbo Zhang <[email protected]>
SoC: rsnd: add interrupt support for SSI BUSIF buffer
Masahiro Yamada <[email protected]>
unicore32: do not evaluate compiler's library path when cleaning
Masahiro Yamada <[email protected]>
um: do not evaluate compiler's library path when cleaning
Chao Yu <[email protected]>
f2fs: compress: fix zstd data corruption
Chao Yu <[email protected]>
f2fs: fix potential use-after-free issue
YueHaibing <[email protected]>
f2fs: Fix wrong stub helper update_sit_info
Suganath Prabu S <[email protected]>
scsi: mpt3sas: Fix double free warnings
Bodo Stroesser <[email protected]>
scsi: target: loopback: Fix READ with data and sensebytes
Loic Poulain <[email protected]>
arm64: dts: msm8996: Fix CSI IRQ types
Wei Yongjun <[email protected]>
remoteproc/mediatek: fix invalid use of sizeof in scp_ipi_init()
Wei Yongjun <[email protected]>
ASoC: SOF: core: fix error return code in sof_probe_continue()
Nicolas Saenz Julienne <[email protected]>
PCI: brcmstb: Assert fundamental reset on initialization
Dmitry Osipenko <[email protected]>
power: supply: smb347-charger: IRQSTAT_D is volatile
Christophe JAILLET <[email protected]>
power: supply: lp8788: Fix an error handling path in 'lp8788_charger_probe()'
Takashi Sakamoto <[email protected]>
ALSA: firewire-lib: fix invalid assignment to union data for directional parameter
Viacheslav Dubeyko <[email protected]>
scsi: qla2xxx: Fix warning after FC target reset
Kai-Heng Feng <[email protected]>
PCI/ASPM: Allow ASPM on links to PCIe-to-PCI/PCI-X Bridges
Andrew Murray <[email protected]>
PCI: rcar: Fix incorrect programming of OB windows
Kuppuswamy Sathyanarayanan <[email protected]>
drivers: base: Fix NULL pointer exception in __platform_driver_probe() if a driver developer is foolish
Russell King <[email protected]>
i2c: pxa: fix i2c_pxa_scream_blue_murder() debug output
Christophe JAILLET <[email protected]>
PCI: v3-semi: Fix a memory leak in v3_pci_probe() error handling paths
Arnd Bergmann <[email protected]>
staging: wfx: avoid compiler warning on empty array
Matej Dujava <[email protected]>
staging: sm750fb: add missing case while setting FB_VISUAL
Oscar Carter <[email protected]>
staging: wilc1000: Increase the size of wid_list array
Thinh Nguyen <[email protected]>
usb: dwc3: gadget: Properly handle failed kick_transfer
Neil Armstrong <[email protected]>
usb: dwc3: meson-g12a: check return of dwc3_meson_g12a_usb_init
Thinh Nguyen <[email protected]>
usb: dwc3: gadget: Properly handle ClearFeature(halt)
Arnd Bergmann <[email protected]>
HID: intel-ish-hid: avoid bogus uninitialized-variable warning
Andrew Jeffery <[email protected]>
ARM: dts: aspeed: Change KCS nodes to v2 binding
Eddie James <[email protected]>
ARM: dts: aspeed: ast2600: Set arch timer always-on
Pierre-Louis Bossart <[email protected]>
soundwire: slave: don't init debugfs on device registration error
Yong Zhi <[email protected]>
ASoC: max98373: reorder max98373_reset() in resume
Martin Blumenstingl <[email protected]>
clk: meson: meson8b: Don't rely on u-boot to init all GP_PLL registers
Kai-Heng Feng <[email protected]>
ASoC: SOF: Update correct LED status at the first time usage of update_mute_led()
Neil Armstrong <[email protected]>
arm64: dts: meson: fix leds subnodes name
Neil Armstrong <[email protected]>
arm64: dts: meson-g12b-ugoos-am6: fix board compatible
Arnd Bergmann <[email protected]>
ASoC: rt5682: fix I2C/Soundwire dependencies
Sudip Mukherjee <[email protected]>
thermal/drivers/ti-soc-thermal: Avoid dereferencing ERR_PTR
Arnd Bergmann <[email protected]>
ASoC: component: suppress uninitialized-variable warning
Uwe Kleine-König <[email protected]>
gpio: pca953x: fix handling of automatic address incrementing
Martin Blumenstingl <[email protected]>
clk: meson: meson8b: Fix the vclk_div{1, 2, 4, 6, 12}_en gate bitsMartin Blumenstingl <[email protected]>
clk: meson: meson8b: Fix the polarity of the RESET_N lines
Martin Blumenstingl <[email protected]>
clk: meson: meson8b: Fix the first parent of vid_pll_in_sel
Nicolas Saenz Julienne <[email protected]>
of: property: Do not link to disabled devices
Nicolas Saenz Julienne <[email protected]>
of: property: Fix create device links for all child-supplier dependencies
Wei Yongjun <[email protected]>
gpio: mlxbf2: fix return value check in mlxbf2_gpio_get_lock_res()
Srinivas Kandagatla <[email protected]>
slimbus: ngd: get drvdata from correct device
Raghavendra Rao Ananta <[email protected]>
tty: hvc: Fix data abort due to race in hvc_open
Jérôme Pouiller <[email protected]>
staging: wfx: fix double init of tx_policy_upload_work
Jérôme Pouiller <[email protected]>
staging: wfx: fix overflow in frame counters
Julian Wiedmann <[email protected]>
s390/qdio: put thinint indicator after early error
Julian Wiedmann <[email protected]>
s390/qdio: tear down thinint indicator after early error
Julian Wiedmann <[email protected]>
s390/qdio: consistently restore the IRQ handler
Stephan Gerhold <[email protected]>
Input: mms114 - add extra compatible for mms345l
Takashi Iwai <[email protected]>
ALSA: usb-audio: Fix racy list management in output queue
Alexander Tsoy <[email protected]>
ALSA: usb-audio: Improve frames size computation
Xiyu Yang <[email protected]>
staging: gasket: Fix mapping refcnt leak when register/store fails
Xiyu Yang <[email protected]>
staging: gasket: Fix mapping refcnt leak when put attribute fails
Bjorn Andersson <[email protected]>
arm64: dts: qcom: sm8250: Fix PDC compatible and reg
Christoph Hellwig <[email protected]>
firmware: qcom_scm: fix bogous abuse of dma-direct internals
Jonathan Marek <[email protected]>
arm64: dts: qcom: fix pm8150 gpio interrupts
Vasily Averin <[email protected]>
fuse: BUG_ON correction in fuse_dev_splice_write()
Vivek Goyal <[email protected]>
virtiofs: schedule blocking async replies in separate worker
Jason Yan <[email protected]>
pinctrl: rza1: Fix wrong array assignment of rza1l_swio_entries
Alexandru Ardelean <[email protected]>
iio: buffer-dmaengine: use %zu specifier for sprintf(align)
Chad Dupuis <[email protected]>
scsi: qedf: Fix crash when MFW calls for protocol stats while function is still probing
Andy Shevchenko <[email protected]>
gpio: dwapb: Append MODULE_ALIAS for platform driver
Thomas Ebeling <[email protected]>
ALSA: usb-audio: RME Babyface Pro mixer patch
Yishai Hadas <[email protected]>
RDMA/mlx5: Fix udata response upon SRQ creation
Vincent Stehlé <[email protected]>
ARM: dts: sun8i-h2-plus-bananapi-m2-zero: Fix led polarity
Amit Kucheria <[email protected]>
arm64: dts: qcom: msm8916: remove unit name for thermal trip points
Nilesh Javali <[email protected]>
scsi: qedi: Do not flush offload work if ARP not resolved
Hsin-Yi Wang <[email protected]>
arm64: dts: mt8173: fix unit name warnings
Sergio Paracuellos <[email protected]>
staging: mt7621-pci: fix PCIe interrupt mapping
Aiman Najjar <[email protected]>
staging: rtl8712: fix multiline derefernce warnings
Chen Zhou <[email protected]>
staging: greybus: fix a missing-check bug in gb_lights_light_config()
Andreas Färber <[email protected]>
arm64: dts: realtek: rtd129x: Fix GIC CPU masks for RTD1293
Nicolas Saenz Julienne <[email protected]>
ARM: dts: bcm283x: Use firmware PM driver for V3D
Hans de Goede <[email protected]>
x86/purgatory: Disable various profiling and sanitizing options
John Johansen <[email protected]>
apparmor: fix nnp subset test for unconfined
Sabrina Dubroca <[email protected]>
bpf: tcp: Recv() should return 0 when the peer socket is closed
Thomas Falcon <[email protected]>
ibmvnic: Flush existing work items before device removal
Jonas Karlman <[email protected]>
media: v4l2-ctrls: Unset correct HEVC loop filter flag
Marek Szyprowski <[email protected]>
media: s5p-mfc: Properly handle dma_parms for the allocated devices
Tyrel Datwyler <[email protected]>
scsi: ibmvscsi: Don't send host info in adapter info MAD after LPM
Simon Arlott <[email protected]>
scsi: sr: Fix sr_probe() missing deallocate of device minor
Simon Arlott <[email protected]>
scsi: sr: Fix sr_probe() missing mutex_destroy
Jakub Sitnicki <[email protected]>
bpf, sockhash: Fix memory leak when unlinking sockets in sock_hash_free
Pavel Machek (CIP) <[email protected]>
ASoC: meson: add missing free_irq() in error path
Chuhong Yuan <[email protected]>
xfs: Add the missed xfs_perag_put() for xfs_ifree_cluster()
Chao Yu <[email protected]>
f2fs: handle readonly filesystem in f2fs_ioc_shutdown()
Mauricio Faria de Oliveira <[email protected]>
apparmor: check/put label on apparmor_sk_clone_security()
Martin Blumenstingl <[email protected]>
net: dsa: lantiq_gswip: fix and improve the unsupported interface error
John Johansen <[email protected]>
apparmor: fix introspection of of task mode for unconfined tasks
ashimida <[email protected]>
mksysmap: Fix the mismatch of '.L' symbols in System.map
Logan Gunthorpe <[email protected]>
NTB: Fix the default port and peer numbers for legacy drivers
Logan Gunthorpe <[email protected]>
NTB: ntb_pingpong: Choose doorbells based on port number
Colin Ian King <[email protected]>
ASoC: meson: fix memory leak of links if allocation of ldata fails
Ahmed S. Darwish <[email protected]>
net: mdiobus: Disable preemption upon u64_stats update
Wang Hai <[email protected]>
yam: fix possible memory leak in yam_init_driver
Tero Kristo <[email protected]>
crypto: omap-sham - huge buffer access fixes
Thierry Reding <[email protected]>
drm/nouveau: gr/gk20a: Use firmware version 0
Arnd Bergmann <[email protected]>
clk: sprd: fix compile-testing
Will Deacon <[email protected]>
sparc32: mm: Don't try to free page-table pages if ctor() fails
Navid Emamdoost <[email protected]>
pwm: img: Call pm_runtime_put() in pm_runtime_get_sync() failed case
Pingfan Liu <[email protected]>
powerpc/crashkernel: Take "mem=" option into account
John Stultz <[email protected]>
ASoC: qcom: q6asm-dai: kCFI fix
Paulo Alcantara <[email protected]>
cifs: set up next DFS target before generic_ip_connect()
Qiushi Wu <[email protected]>
RDMA/core: Fix several reference count leaks.
Jon Derrick <[email protected]>
PCI: vmd: Filter resource type bits from shadow register
Xiyu Yang <[email protected]>
nfsd: Fix svc_xprt refcnt leak when setup callback client failed
Kajol Jain <[email protected]>
powerpc/perf/hv-24x7: Fix inconsistent output values incase multiple hv-24x7 events run
Mark Zhang <[email protected]>
IB/mlx5: Fix DEVX support for MLX5_CMD_OP_INIT2INIT_QP command
Alain Volmat <[email protected]>
clk: clk-flexgen: fix clock-critical handling
Sudhakar Panneerselvam <[email protected]>
scsi: vhost: Notify TCM about the maximum sg entries supported per command
Xiyu Yang <[email protected]>
scsi: lpfc: Fix lpfc_nodelist leak when processing unsolicited event
Quanyang Wang <[email protected]>
clk: zynqmp: fix memory leak in zynqmp_register_clocks
Dan Carpenter <[email protected]>
scsi: cxgb3i: Fix some leaks in init_act_open()
Marek Szyprowski <[email protected]>
mfd: wm8994: Fix driver operation if loaded as modules
Christophe Leroy <[email protected]>
powerpc/ptdump: Add _PAGE_COHERENT flag
Peter Chen <[email protected]>
usb: gadget: core: sync interrupt before unbind the udc
Andy Shevchenko <[email protected]>
gpio: dwapb: Call acpi_gpiochip_free_interrupts() on GPIO chip de-registration
Dinghao Liu <[email protected]>
usb: cdns3: Fix runtime PM imbalance on error
Omer Shpigelman <[email protected]>
habanalabs: don't allow hard reset with open processes
Christophe JAILLET <[email protected]>
m68k/PCI: Fix a memory leak in an error handling path
Jon Derrick <[email protected]>
PCI: pci-bridge-emul: Fix PCIe bit conflicts
Aneesh Kumar K.V <[email protected]>
powerpc/book3s64/radix/tlb: Determine hugepage flush correctly
Luo Jiaxing <[email protected]>
scsi: hisi_sas: Do not reset phy timer to wait for stray phy up
Aharon Landau <[email protected]>
RDMA/mlx5: Add init2init as a modify command
Sai Prakash Ranjan <[email protected]>
coresight: tmc: Fix TMC mode read in tmc_read_prepare_etb()
Maulik Shah <[email protected]>
arm64: dts: qcom: sc7180: Correct the pdc interrupt ranges
Qian Cai <[email protected]>
vfio/pci: fix memory leaks in alloc_perm_bits()
Andre Przywara <[email protected]>
arm64: dts: fvp/juno: Fix node address fields
Emmanuel Nicolet <[email protected]>
ps3disk: use the default segment boundary
Pali Rohár <[email protected]>
PCI: aardvark: Don't blindly enable ASPM L0s and don't write to read-only register
Andre Przywara <[email protected]>
arm64: dts: fvp: Fix GIC child nodes
Daniel Baluta <[email protected]>
ASoC: SOF: Do nothing when DSP PM callbacks are not set
Geert Uytterhoeven <[email protected]>
clk: renesas: cpg-mssr: Fix STBCR suspend/resume handling
Lars Povlsen <[email protected]>
pinctrl: ocelot: Fix GPIO interrupt decoding on Jaguar2
Kamal Heib <[email protected]>
RDMA/srpt: Fix disabling device management
Yishai Hadas <[email protected]>
RDMA/uverbs: Fix create WQ to use the given user handle
Andre Przywara <[email protected]>
arm64: dts: juno: Fix GIC child nodes
Marek Behún <[email protected]>
arm64: dts: armada-3720-turris-mox: fix SFP binding
Marek Behún <[email protected]>
arm64: dts: armada-3720-turris-mox: forbid SDR104 on SDIO for FCC purposes
Martin Wilck <[email protected]>
dm mpath: switch paths in dm_blk_ioctl() code path
Srinivas Kandagatla <[email protected]>
misc: fastrpc: fix potential fastrpc_invoke_ctx leak
Srinivas Kandagatla <[email protected]>
misc: fastrpc: Fix an incomplete memory release in fastrpc_rpmsg_probe()
Michael Auchter <[email protected]>
nvmem: ensure sysfs writes handle write-protect pin
Serge Semin <[email protected]>
serial: 8250: Fix max baud limit in generic 8250 port
Bryan O'Donoghue <[email protected]>
usb: roles: Switch on role-switch uevent reporting
Oliver Neukum <[email protected]>
usblp: poison URBs upon disconnect
Jérôme Pouiller <[email protected]>
staging: wfx: fix output of rx_stats on big endian hosts
Marek Szyprowski <[email protected]>
clk: samsung: Mark top ISP and CAM clocks on Exynos542x as critical
Sibi Sankar <[email protected]>
remoteproc: qcom_q6v5_mss: map/unmap mpss segments before/after use
Russell King <[email protected]>
i2c: pxa: clear all master action bits in i2c_pxa_stop_message()
Konstantin Khlebnikov <[email protected]>
f2fs: report delalloc reserve as non-free in statfs for project quota
Chao Yu <[email protected]>
f2fs: compress: let lz4 compressor handle output buffer budget properly
Andreas Klinger <[email protected]>
iio: bmp280: fix compensation of humidity
Qiushi Wu <[email protected]>
rtc: mc13xxx: fix a double-unlock issue
Christophe Leroy <[email protected]>
powerpc/kasan: Fix stack overflow by increasing THREAD_SHIFT
Jim Quinlan <[email protected]>
PCI: brcmstb: Fix window register offset from 4 to 8
Marco Felsch <[email protected]>
Input: edt-ft5x06 - fix get_default register write access
Viacheslav Dubeyko <[email protected]>
scsi: qla2xxx: Fix issue with adapter's stopping state
Kunihiko Hayashi <[email protected]>
PCI: endpoint: functions/pci-epf-test: Fix DMA channel release
Ard Biesheuvel <[email protected]>
PCI: Allow pci_resize_resource() for devices on root bus
Dan Carpenter <[email protected]>
ALSA: isa/wavefront: prevent out of bounds write in ioctl
Kai-Heng Feng <[email protected]>
ALSA: hda/realtek - Introduce polarity for micmute LED GPIO
Neil Armstrong <[email protected]>
arm64: dts: meson: fixup SCP sram nodes
Dan Carpenter <[email protected]>
scsi: qedi: Check for buffer overflow in qedi_set_path()
Johannes Thumshirn <[email protected]>
scsi: core: free sgtables in case command setup fails
Neil Armstrong <[email protected]>
arm64: dts: meson-gxbb-kii-pro: fix board compatible
Arnd Bergmann <[email protected]>
ASoC: codecs: wm97xx: fix ac97 dependency
Yoshihiro Shimoda <[email protected]>
arm64: dts: renesas: Fix IOMMU device node names
Marek Vasut <[email protected]>
ARM: dts: stm32: Add missing ethernet PHY reset on AV96
Linus Walleij <[email protected]>
ARM: integrator: Add some Kconfig selections
Xiyu Yang <[email protected]>
ASoC: davinci-mcasp: Fix dma_chan refcnt leak when getting dma type
Yoshihiro Shimoda <[email protected]>
ARM: dts: renesas: Fix IOMMU device node names
Jon Hunter <[email protected]>
backlight: lp855x: Ensure regulators are disabled on probe failure
Shengjiu Wang <[email protected]>
ASoC: fsl_esai: Disable exception interrupt before scheduling tasklet
Dan Carpenter <[email protected]>
staging: wfx: check ssidlen and prevent an array overflow
Bryan O'Donoghue <[email protected]>
clk: qcom: msm8916: Fix the address location of pll->config_reg
Alex Elder <[email protected]>
remoteproc: Fix IDR initialisation in rproc_alloc()
Andy Shevchenko <[email protected]>
iio: pressure: bmp280: Tolerate IRQ before registering
YueHaibing <[email protected]>
ASoC: SOF: imx8: Fix randbuild error
Adam Honse <[email protected]>
i2c: piix4: Detect secondary SMBus controller on AMD AM4 chipsets
Dan Carpenter <[email protected]>
rtc: rc5t619: Fix an ERR_PTR vs NULL check
Dmitry Osipenko <[email protected]>
ASoC: tegra: tegra_wm8903: Support nvidia, headset property
Rikard Falkeborn <[email protected]>
clk: sunxi: Fix incorrect usage of round_down()
Enric Balletbo i Serra <[email protected]>
power: supply: bq24257_charger: Replace depends on REGMAP_I2C with select
Jérôme Pouiller <[email protected]>
staging: wfx: fix potential deadlock in wfx_tx_flush()
-------------
Diffstat:
Makefile | 4 +- .../arm/boot/dts/aspeed-bmc-facebook-tiogapass.dts | 4 +- arch/arm/boot/dts/aspeed-g5.dtsi | 24 +- arch/arm/boot/dts/aspeed-g6.dtsi | 25 +- arch/arm/boot/dts/bcm2835-common.dtsi | 1 - arch/arm/boot/dts/bcm2835-rpi-common.dtsi | 12 + arch/arm/boot/dts/bcm2835.dtsi | 1 + arch/arm/boot/dts/bcm2836.dtsi | 1 + arch/arm/boot/dts/bcm2837.dtsi | 1 + arch/arm/boot/dts/r8a7743.dtsi | 12 +- arch/arm/boot/dts/r8a7744.dtsi | 12 +- arch/arm/boot/dts/r8a7745.dtsi | 12 +- arch/arm/boot/dts/r8a7790.dtsi | 12 +- arch/arm/boot/dts/r8a7791.dtsi | 14 +- arch/arm/boot/dts/r8a7793.dtsi | 14 +- arch/arm/boot/dts/r8a7794.dtsi | 12 +- arch/arm/boot/dts/stm32mp157a-avenger96.dts | 3 + .../boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts | 2 +- arch/arm/boot/dts/vexpress-v2m-rs1.dtsi | 10 +- arch/arm/mach-davinci/board-dm644x-evm.c | 26 +- arch/arm/mach-integrator/Kconfig | 7 +- arch/arm64/Kconfig.platforms | 2 +- arch/arm64/boot/dts/amlogic/meson-axg.dtsi | 6 +- .../boot/dts/amlogic/meson-g12b-ugoos-am6.dts | 2 +- .../boot/dts/amlogic/meson-gx-libretech-pc.dtsi | 4 +- arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 10 +- arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts | 2 +- .../boot/dts/amlogic/meson-gxbb-nanopi-k2.dts | 2 +- .../boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts | 2 +- .../arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 2 +- .../boot/dts/amlogic/meson-gxbb-vega-s95.dtsi | 2 +- .../boot/dts/amlogic/meson-gxbb-wetek-play2.dts | 4 +- arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi | 2 +- .../dts/amlogic/meson-gxl-s905x-libretech-cc.dts | 4 +- arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts | 4 +- arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi | 4 +- arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts | 2 +- arch/arm64/boot/dts/arm/foundation-v8-gicv2.dtsi | 2 +- arch/arm64/boot/dts/arm/foundation-v8-gicv3.dtsi | 8 +- arch/arm64/boot/dts/arm/foundation-v8.dtsi | 92 ++--- arch/arm64/boot/dts/arm/juno-base.dtsi | 50 +-- arch/arm64/boot/dts/arm/juno-motherboard.dtsi | 6 +- .../boot/dts/arm/rtsm_ve-motherboard-rs2.dtsi | 2 +- arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi | 6 +- arch/arm64/boot/dts/marvell/armada-3720-db.dts | 3 + .../boot/dts/marvell/armada-3720-espressobin.dtsi | 1 + .../boot/dts/marvell/armada-3720-turris-mox.dts | 8 +- arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 2 +- arch/arm64/boot/dts/mediatek/mt8173.dtsi | 22 +- arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi | 2 +- arch/arm64/boot/dts/nvidia/tegra194.dtsi | 12 +- arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi | 14 +- arch/arm64/boot/dts/qcom/msm8916.dtsi | 8 +- arch/arm64/boot/dts/qcom/msm8996.dtsi | 20 +- arch/arm64/boot/dts/qcom/pm8150.dtsi | 14 +- arch/arm64/boot/dts/qcom/pm8150b.dtsi | 14 +- arch/arm64/boot/dts/qcom/pm8150l.dtsi | 14 +- arch/arm64/boot/dts/qcom/sc7180.dtsi | 3 +- .../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts | 11 + arch/arm64/boot/dts/qcom/sm8250.dtsi | 4 +- arch/arm64/boot/dts/realtek/rtd1293-ds418j.dts | 6 +- arch/arm64/boot/dts/realtek/rtd1293.dtsi | 12 +- arch/arm64/boot/dts/realtek/rtd1295-mele-v9.dts | 6 +- .../arm64/boot/dts/realtek/rtd1295-probox2-ava.dts | 6 +- arch/arm64/boot/dts/realtek/rtd1295-zidoo-x9s.dts | 4 +- arch/arm64/boot/dts/realtek/rtd1295.dtsi | 21 +- arch/arm64/boot/dts/realtek/rtd1296-ds418.dts | 4 +- arch/arm64/boot/dts/realtek/rtd1296.dtsi | 8 +- arch/arm64/boot/dts/realtek/rtd129x.dtsi | 32 +- arch/arm64/boot/dts/renesas/r8a774a1.dtsi | 18 +- arch/arm64/boot/dts/renesas/r8a774b1.dtsi | 18 +- arch/arm64/boot/dts/renesas/r8a774c0.dtsi | 18 +- arch/arm64/boot/dts/renesas/r8a77950.dtsi | 14 +- arch/arm64/boot/dts/renesas/r8a77951.dtsi | 34 +- arch/arm64/boot/dts/renesas/r8a77960.dtsi | 22 +- arch/arm64/boot/dts/renesas/r8a77965.dtsi | 20 +- arch/arm64/boot/dts/renesas/r8a77970.dtsi | 10 +- arch/arm64/boot/dts/renesas/r8a77980.dtsi | 16 +- arch/arm64/boot/dts/renesas/r8a77990.dtsi | 20 +- arch/arm64/boot/dts/renesas/r8a77995.dtsi | 20 +- arch/arm64/kernel/ftrace.c | 3 +- arch/arm64/kernel/hw_breakpoint.c | 44 ++- arch/arm64/mm/init.c | 15 +- arch/m68k/coldfire/pci.c | 4 +- arch/openrisc/kernel/entry.S | 4 +- arch/powerpc/Kconfig | 1 + arch/powerpc/configs/adder875_defconfig | 1 - arch/powerpc/configs/ep88xc_defconfig | 1 - arch/powerpc/configs/mpc866_ads_defconfig | 1 - arch/powerpc/configs/mpc885_ads_defconfig | 1 - arch/powerpc/configs/tqm8xx_defconfig | 1 - arch/powerpc/include/asm/book3s/64/kup-radix.h | 11 +- arch/powerpc/include/asm/book3s/64/pgtable.h | 23 +- arch/powerpc/include/asm/nohash/32/mmu-8xx.h | 2 - arch/powerpc/include/asm/processor.h | 1 - arch/powerpc/kernel/exceptions-64s.S | 37 +- arch/powerpc/kernel/head_64.S | 9 +- arch/powerpc/kernel/head_8xx.S | 15 +- arch/powerpc/kernel/process.c | 20 +- arch/powerpc/kexec/core.c | 8 +- arch/powerpc/kvm/book3s_64_mmu_radix.c | 16 +- arch/powerpc/kvm/book3s_64_vio.c | 18 +- arch/powerpc/kvm/book3s_hv.c | 11 +- arch/powerpc/mm/book3s32/mmu.c | 6 +- arch/powerpc/mm/book3s64/radix_tlb.c | 4 +- arch/powerpc/mm/kasan/kasan_init_32.c | 5 +- arch/powerpc/mm/ptdump/shared.c | 5 + arch/powerpc/perf/hv-24x7.c | 10 - arch/powerpc/platforms/4xx/pci.c | 4 +- arch/powerpc/platforms/8xx/Kconfig | 9 - arch/powerpc/platforms/powernv/opal.c | 4 + arch/powerpc/platforms/ps3/mm.c | 22 +- arch/powerpc/platforms/pseries/ras.c | 5 +- arch/s390/Kconfig | 1 + arch/s390/include/asm/syscall.h | 12 +- arch/sh/include/asm/io.h | 2 +- arch/sparc/mm/srmmu.c | 1 - arch/um/drivers/Makefile | 4 +- arch/unicore32/lib/Makefile | 4 +- arch/x86/kernel/apic/apic.c | 2 +- arch/x86/kernel/cpu/mce/dev-mcelog.c | 2 +- arch/x86/kernel/idt.c | 6 +- arch/x86/kernel/kprobes/core.c | 16 +- arch/x86/purgatory/Makefile | 5 +- crypto/algboss.c | 2 - crypto/algif_skcipher.c | 6 +- drivers/ata/libata-core.c | 11 +- drivers/base/platform.c | 2 + drivers/block/ps3disk.c | 1 - drivers/bus/mhi/core/main.c | 9 +- drivers/char/ipmi/ipmi_msghandler.c | 7 +- drivers/char/mem.c | 101 ++++- drivers/clk/Makefile | 2 +- drivers/clk/bcm/clk-bcm2835.c | 10 +- drivers/clk/clk-ast2600.c | 31 +- drivers/clk/meson/meson8b.c | 100 +++-- drivers/clk/meson/meson8b.h | 4 + drivers/clk/qcom/gcc-msm8916.c | 8 +- drivers/clk/renesas/renesas-cpg-mssr.c | 8 +- drivers/clk/samsung/clk-exynos5420.c | 16 +- drivers/clk/samsung/clk-exynos5433.c | 3 +- drivers/clk/sprd/pll.c | 2 +- drivers/clk/st/clk-flexgen.c | 1 + drivers/clk/sunxi/clk-sunxi.c | 2 +- drivers/clk/ti/composite.c | 1 + drivers/clk/zynqmp/clkc.c | 15 +- drivers/clk/zynqmp/divider.c | 17 +- drivers/crypto/hisilicon/sgl.c | 3 +- drivers/crypto/marvell/octeontx/otx_cptvf_algs.c | 11 +- drivers/crypto/omap-sham.c | 75 ++-- drivers/extcon/extcon-adc-jack.c | 3 +- drivers/firmware/imx/imx-scu.c | 1 + drivers/firmware/qcom_scm.c | 9 +- drivers/fpga/dfl-afu-dma-region.c | 4 +- drivers/gpio/gpio-dwapb.c | 34 +- drivers/gpio/gpio-mlxbf2.c | 4 +- drivers/gpio/gpio-pca953x.c | 44 ++- drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 3 +- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 11 +- drivers/gpu/drm/amd/display/dc/core/dc.c | 30 +- .../drm/amd/display/modules/color/color_gamma.c | 2 +- drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c | 2 +- drivers/gpu/drm/ast/ast_mode.c | 4 + drivers/gpu/drm/drm_connector.c | 5 + drivers/gpu/drm/drm_dp_mst_topology.c | 58 +-- drivers/gpu/drm/drm_encoder_slave.c | 5 +- drivers/gpu/drm/drm_sysfs.c | 3 - drivers/gpu/drm/i915/display/intel_ddi.c | 2 +- drivers/gpu/drm/i915/display/intel_dp.c | 5 +- drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 15 +- drivers/gpu/drm/i915/gt/intel_engine_cs.c | 4 +- drivers/gpu/drm/i915/gt/intel_lrc.c | 21 +- drivers/gpu/drm/i915/gt/intel_ring.c | 4 + drivers/gpu/drm/i915/gt/intel_workarounds.c | 253 ++++++++++++- drivers/gpu/drm/i915/gt/selftest_mocs.c | 18 +- drivers/gpu/drm/i915/gt/selftest_ring.c | 110 ++++++ drivers/gpu/drm/i915/i915_cmd_parser.c | 4 + drivers/gpu/drm/i915/i915_irq.c | 1 + drivers/gpu/drm/i915/i915_reg.h | 2 +- drivers/gpu/drm/i915/intel_pm.c | 206 +--------- .../gpu/drm/i915/selftests/i915_mock_selftests.h | 1 + drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 6 + drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 8 + drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 7 + drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 3 +- drivers/gpu/drm/msm/msm_rd.c | 4 +- drivers/gpu/drm/nouveau/dispnv50/disp.c | 16 +- .../gpu/drm/nouveau/nvkm/engine/disp/hdmigm200.c | 4 +- drivers/gpu/drm/nouveau/nvkm/engine/gr/gk20a.c | 2 +- drivers/gpu/drm/qxl/qxl_kms.c | 2 +- drivers/gpu/drm/sun4i/sun4i_hdmi.h | 2 +- drivers/gpu/drm/sun4i/sun4i_hdmi_ddc_clk.c | 2 +- drivers/hid/hid-ids.h | 3 + drivers/hid/hid-quirks.c | 1 + drivers/hid/intel-ish-hid/ishtp-fw-loader.c | 2 + drivers/hwtracing/coresight/coresight-etm4x.c | 1 + drivers/hwtracing/coresight/coresight-platform.c | 85 +++-- drivers/hwtracing/coresight/coresight-tmc-etf.c | 16 +- drivers/hwtracing/coresight/coresight.c | 7 +- drivers/i2c/busses/i2c-icy.c | 1 + drivers/i2c/busses/i2c-piix4.c | 3 +- drivers/i2c/busses/i2c-pxa.c | 13 +- drivers/iio/buffer/industrialio-buffer-dmaengine.c | 2 +- drivers/iio/light/gp2ap002.c | 19 +- drivers/iio/pressure/bmp280-core.c | 7 +- drivers/infiniband/core/cm.c | 4 +- drivers/infiniband/core/cma_configfs.c | 13 + drivers/infiniband/core/sysfs.c | 10 +- drivers/infiniband/core/uverbs_cmd.c | 3 +- drivers/infiniband/hw/cxgb4/device.c | 1 + drivers/infiniband/hw/efa/efa_com_cmd.c | 4 +- drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 34 +- drivers/infiniband/hw/mlx5/devx.c | 5 + drivers/infiniband/hw/mlx5/srq.c | 10 +- drivers/infiniband/ulp/srpt/ib_srpt.c | 8 +- drivers/input/serio/i8042-ppcio.h | 57 --- drivers/input/serio/i8042.h | 2 - drivers/input/touchscreen/edt-ft5x06.c | 12 +- drivers/input/touchscreen/mms114.c | 17 +- drivers/iommu/arm-smmu-v3.c | 35 +- drivers/iommu/intel-iommu.c | 3 - drivers/mailbox/imx-mailbox.c | 37 +- drivers/mailbox/zynqmp-ipi-mailbox.c | 20 +- drivers/md/bcache/btree.c | 8 +- drivers/md/dm-mpath.c | 2 +- drivers/md/dm-zoned-metadata.c | 4 +- drivers/md/dm-zoned-reclaim.c | 4 +- drivers/media/platform/s5p-mfc/s5p_mfc.c | 6 +- drivers/media/v4l2-core/v4l2-ctrls.c | 2 +- drivers/mfd/stmfx.c | 22 +- drivers/mfd/wcd934x.c | 1 - drivers/mfd/wm8994-core.c | 1 + drivers/misc/fastrpc.c | 13 +- drivers/misc/habanalabs/device.c | 17 +- drivers/misc/habanalabs/habanalabs.h | 2 +- drivers/misc/xilinx_sdfec.c | 27 +- drivers/net/bareudp.c | 2 + drivers/net/dsa/lantiq_gswip.c | 3 +- drivers/net/dsa/sja1105/sja1105_ptp.c | 8 +- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 35 +- drivers/net/ethernet/cavium/octeon/octeon_mgmt.c | 5 + drivers/net/ethernet/ibm/ibmvnic.c | 3 + drivers/net/ethernet/intel/e1000e/netdev.c | 14 +- drivers/net/ethernet/intel/iavf/iavf.h | 14 + drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 14 +- drivers/net/ethernet/intel/iavf/iavf_main.c | 25 +- drivers/net/ethernet/intel/iavf/iavf_virtchnl.c | 88 ++++- drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 7 +- .../ethernet/mellanox/mlx5/core/steering/dr_send.c | 2 +- drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 2 + drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 13 + .../net/ethernet/mellanox/mlxsw/spectrum_buffers.c | 1 + .../net/ethernet/mellanox/mlxsw/spectrum_span.c | 1 + drivers/net/geneve.c | 7 +- drivers/net/hamradio/yam.c | 1 + drivers/net/ipa/ipa_endpoint.c | 6 +- drivers/net/ipa/ipa_reg.h | 2 + drivers/net/phy/dp83867.c | 2 +- drivers/net/phy/marvell.c | 2 +- drivers/net/phy/mdio_bus.c | 2 + drivers/net/phy/mscc/mscc.h | 2 +- drivers/net/phy/mscc/mscc_main.c | 4 +- drivers/ntb/core.c | 9 +- drivers/ntb/test/ntb_perf.c | 30 +- drivers/ntb/test/ntb_pingpong.c | 14 +- drivers/ntb/test/ntb_tool.c | 9 +- drivers/nvme/host/fc.c | 5 +- drivers/nvme/host/pci.c | 6 + drivers/nvmem/core.c | 52 +-- drivers/of/kobj.c | 3 +- drivers/of/property.c | 16 +- drivers/pci/controller/dwc/pci-dra7xx.c | 8 +- drivers/pci/controller/dwc/pci-meson.c | 4 +- drivers/pci/controller/dwc/pcie-designware-host.c | 2 + drivers/pci/controller/pci-aardvark.c | 158 ++++++-- drivers/pci/controller/pci-v3-semi.c | 2 +- drivers/pci/controller/pcie-brcmstb.c | 5 +- drivers/pci/controller/pcie-rcar.c | 9 +- drivers/pci/controller/vmd.c | 6 +- drivers/pci/endpoint/functions/pci-epf-test.c | 3 + drivers/pci/pci-bridge-emul.c | 6 +- drivers/pci/pci.c | 30 +- drivers/pci/pcie/aspm.c | 10 - drivers/pci/pcie/ptm.c | 22 +- drivers/pci/probe.c | 5 +- drivers/pci/setup-res.c | 9 +- drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c | 2 +- drivers/phy/broadcom/phy-bcm-sr-usb.c | 55 +-- drivers/phy/cadence/phy-cadence-sierra.c | 27 +- drivers/phy/ti/phy-j721e-wiz.c | 6 +- drivers/pinctrl/bcm/pinctrl-bcm281xx.c | 2 +- drivers/pinctrl/freescale/pinctrl-imx.c | 26 +- drivers/pinctrl/freescale/pinctrl-imx1-core.c | 1 - drivers/pinctrl/pinctrl-at91-pio4.c | 2 +- drivers/pinctrl/pinctrl-ocelot.c | 33 +- drivers/pinctrl/pinctrl-rockchip.c | 7 +- drivers/pinctrl/pinctrl-rza1.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq6018.c | 3 +- drivers/pinctrl/sirf/pinctrl-sirf.c | 20 +- drivers/power/supply/Kconfig | 2 +- drivers/power/supply/lp8788-charger.c | 18 +- drivers/power/supply/smb347-charger.c | 1 + drivers/pwm/core.c | 2 +- drivers/pwm/pwm-img.c | 8 +- drivers/pwm/pwm-imx27.c | 20 +- drivers/remoteproc/mtk_scp.c | 4 +- drivers/remoteproc/qcom_q6v5_mss.c | 133 ++----- drivers/remoteproc/remoteproc_core.c | 3 +- drivers/rtc/rtc-mc13xxx.c | 4 +- drivers/rtc/rtc-rc5t619.c | 4 +- drivers/rtc/rtc-rv3028.c | 2 + drivers/s390/cio/qdio.h | 2 +- drivers/s390/cio/qdio_main.c | 19 +- drivers/s390/cio/qdio_setup.c | 21 +- drivers/s390/cio/qdio_thinint.c | 14 +- drivers/scsi/arm/acornscsi.c | 4 +- drivers/scsi/cxgbi/cxgb3i/cxgb3i.c | 18 +- drivers/scsi/hisi_sas/hisi_sas_main.c | 5 +- drivers/scsi/ibmvscsi/ibmvscsi.c | 2 + drivers/scsi/iscsi_boot_sysfs.c | 2 +- drivers/scsi/lpfc/lpfc_els.c | 2 + drivers/scsi/mpt3sas/mpt3sas_base.c | 2 + drivers/scsi/qedf/qedf.h | 1 + drivers/scsi/qedf/qedf_main.c | 35 +- drivers/scsi/qedi/qedi_iscsi.c | 7 +- drivers/scsi/qla2xxx/qla_os.c | 1 + drivers/scsi/qla2xxx/tcm_qla2xxx.c | 2 + drivers/scsi/scsi_error.c | 2 + drivers/scsi/scsi_lib.c | 20 +- drivers/scsi/scsi_transport_iscsi.c | 64 +++- drivers/scsi/sr.c | 7 +- drivers/scsi/ufs/ti-j721e-ufs.c | 13 +- drivers/scsi/ufs/ufs-qcom.c | 6 +- drivers/scsi/ufs/ufs_bsg.c | 4 +- drivers/scsi/ufs/ufshcd.c | 1 - drivers/slimbus/qcom-ngd-ctrl.c | 4 +- drivers/soundwire/slave.c | 2 + drivers/staging/gasket/gasket_sysfs.c | 2 + drivers/staging/greybus/light.c | 3 +- drivers/staging/mt7621-dts/mt7621.dtsi | 9 +- drivers/staging/mt7621-pci/pci-mt7621.c | 36 +- drivers/staging/rtl8712/rtl871x_xmit.c | 11 +- drivers/staging/sm750fb/sm750.c | 1 + drivers/staging/wfx/bus_sdio.c | 19 +- drivers/staging/wfx/debug.c | 11 +- drivers/staging/wfx/hif_tx.c | 2 +- drivers/staging/wfx/queue.c | 2 + drivers/staging/wfx/sta.c | 5 +- drivers/staging/wfx/sta.h | 2 +- drivers/staging/wilc1000/hif.c | 4 +- drivers/target/loopback/tcm_loop.c | 36 +- drivers/target/target_core_user.c | 154 ++++---- drivers/thermal/ti-soc-thermal/ti-thermal-common.c | 6 +- drivers/tty/hvc/hvc_console.c | 16 +- drivers/tty/n_gsm.c | 26 +- drivers/tty/serial/8250/8250_port.c | 4 +- drivers/usb/cdns3/cdns3-ti.c | 3 +- drivers/usb/class/usblp.c | 5 +- drivers/usb/dwc2/core_intr.c | 7 +- drivers/usb/dwc3/dwc3-meson-g12a.c | 6 +- drivers/usb/dwc3/gadget.c | 60 ++- drivers/usb/gadget/composite.c | 78 +++- drivers/usb/gadget/udc/core.c | 2 + drivers/usb/gadget/udc/lpc32xx_udc.c | 11 +- drivers/usb/gadget/udc/m66592-udc.c | 2 +- drivers/usb/gadget/udc/s3c2410_udc.c | 4 - drivers/usb/host/ehci-mxc.c | 2 + drivers/usb/host/ehci-platform.c | 4 + drivers/usb/host/ohci-platform.c | 5 + drivers/usb/host/ohci-sm501.c | 7 +- drivers/usb/host/xhci-plat.c | 10 +- drivers/usb/roles/class.c | 4 +- drivers/vfio/mdev/mdev_sysfs.c | 2 +- drivers/vfio/pci/vfio_pci_config.c | 14 +- drivers/vhost/scsi.c | 1 + drivers/video/backlight/lp855x_bl.c | 20 +- drivers/watchdog/da9062_wdt.c | 5 - drivers/xen/cpu_hotplug.c | 8 +- fs/afs/cmservice.c | 9 +- fs/afs/dir.c | 9 +- fs/afs/fsclient.c | 103 ++--- fs/afs/inode.c | 16 +- fs/afs/internal.h | 3 +- fs/afs/misc.c | 1 + fs/afs/proc.c | 1 + fs/afs/rxrpc.c | 10 +- fs/afs/vlclient.c | 34 +- fs/afs/write.c | 5 +- fs/afs/yfsclient.c | 100 ++--- fs/block_dev.c | 12 +- fs/ceph/export.c | 9 +- fs/cifs/connect.c | 18 +- fs/dlm/dlm_internal.h | 1 - fs/ext4/acl.c | 2 +- fs/ext4/dir.c | 16 + fs/ext4/ext4.h | 2 +- fs/ext4/ext4_jbd2.h | 5 +- fs/ext4/extents.c | 36 +- fs/ext4/file.c | 17 +- fs/ext4/indirect.c | 4 +- fs/ext4/inline.c | 6 +- fs/ext4/inode.c | 38 +- fs/ext4/migrate.c | 12 +- fs/ext4/namei.c | 76 ++-- fs/ext4/super.c | 55 ++- fs/ext4/xattr.c | 6 +- fs/f2fs/checkpoint.c | 4 +- fs/f2fs/compress.c | 22 +- fs/f2fs/data.c | 8 +- fs/f2fs/dir.c | 80 ++-- fs/f2fs/f2fs.h | 15 +- fs/f2fs/file.c | 9 +- fs/f2fs/node.c | 8 +- fs/f2fs/super.c | 5 +- fs/fuse/dev.c | 5 +- fs/fuse/file.c | 43 ++- fs/fuse/fuse_i.h | 1 + fs/fuse/virtio_fs.c | 106 ++++-- fs/gfs2/log.c | 11 +- fs/gfs2/ops_fstype.c | 2 +- fs/io_uring.c | 131 ++++--- fs/jbd2/journal.c | 17 +- fs/nfs/direct.c | 2 + fs/nfs/inode.c | 14 +- fs/nfs/nfs4proc.c | 2 +- fs/nfsd/cache.h | 2 + fs/nfsd/netns.h | 1 - fs/nfsd/nfs4callback.c | 2 + fs/nfsd/nfscache.c | 32 +- fs/nfsd/nfsctl.c | 6 + fs/proc/bootconfig.c | 15 +- fs/xfs/xfs_inode.c | 4 +- include/linux/bitops.h | 2 +- include/linux/coresight.h | 10 +- include/linux/ioport.h | 6 + include/linux/jbd2.h | 6 +- include/linux/kprobes.h | 4 + include/linux/libata.h | 3 + include/linux/mfd/stmfx.h | 1 + include/linux/nfs_fs.h | 1 + include/linux/usb/composite.h | 3 + include/linux/usb/gadget.h | 2 + include/sound/soc.h | 8 +- include/trace/events/afs.h | 10 +- include/uapi/linux/magic.h | 1 + kernel/bpf/syscall.c | 17 +- kernel/bpf/verifier.c | 2 +- kernel/kprobes.c | 27 +- kernel/resource.c | 5 + kernel/trace/blktrace.c | 30 +- kernel/trace/trace.h | 3 + kernel/trace/trace_entries.h | 14 +- kernel/trace/trace_export.c | 16 + kernel/trace/trace_kprobe.c | 2 +- kernel/trace/trace_probe.c | 4 +- kernel/trace/trace_uprobe.c | 2 +- lib/zlib_inflate/inffast.c | 91 ++--- net/core/dev.c | 40 +- net/core/filter.c | 16 +- net/core/sock_map.c | 38 +- net/ipv4/tcp_bpf.c | 6 + net/netfilter/nft_set_pipapo.c | 6 +- net/netfilter/nft_set_rbtree.c | 21 +- net/rxrpc/proc.c | 6 +- net/sunrpc/addr.c | 4 +- net/xdp/xsk.c | 4 +- samples/ftrace/sample-trace-array.c | 24 +- scripts/Makefile.modpost | 7 +- scripts/headers_install.sh | 11 +- scripts/mksysmap | 2 +- security/apparmor/domain.c | 9 +- security/apparmor/include/label.h | 1 + security/apparmor/label.c | 37 +- security/apparmor/lsm.c | 5 + security/selinux/ss/conditional.c | 21 +- security/selinux/ss/services.c | 4 + sound/firewire/amdtp-am824.c | 3 +- sound/isa/wavefront/wavefront_synth.c | 8 +- sound/pci/hda/patch_realtek.c | 14 +- sound/soc/codecs/Kconfig | 9 +- sound/soc/codecs/max98373.c | 2 +- sound/soc/codecs/rt1308-sdw.c | 3 + sound/soc/codecs/rt5645.c | 14 + sound/soc/codecs/rt5682.c | 3 + sound/soc/codecs/rt700.c | 3 + sound/soc/codecs/rt711.c | 3 + sound/soc/codecs/rt715.c | 3 + sound/soc/fsl/fsl_asrc_dma.c | 1 + sound/soc/fsl/fsl_esai.c | 4 + sound/soc/img/img-i2s-in.c | 1 + sound/soc/intel/boards/bytcr_rt5640.c | 24 ++ sound/soc/meson/axg-fifo.c | 10 +- sound/soc/meson/meson-card-utils.c | 17 +- sound/soc/qcom/qdsp6/q6asm-dai.c | 4 +- sound/soc/sh/rcar/gen.c | 8 + sound/soc/sh/rcar/rsnd.h | 9 + sound/soc/sh/rcar/ssi.c | 145 +++++++ sound/soc/soc-core.c | 22 +- sound/soc/soc-dapm.c | 12 +- sound/soc/soc-pcm.c | 44 ++- sound/soc/sof/control.c | 4 +- sound/soc/sof/core.c | 1 + sound/soc/sof/imx/Kconfig | 2 +- sound/soc/sof/intel/hda-codec.c | 51 ++- sound/soc/sof/nocodec.c | 6 +- sound/soc/sof/pm.c | 10 +- sound/soc/sof/sof-audio.h | 2 +- sound/soc/sof/topology.c | 2 + sound/soc/tegra/tegra_wm8903.c | 6 +- sound/soc/ti/davinci-mcasp.c | 4 +- sound/soc/ti/omap-mcbsp.c | 8 +- sound/soc/ux500/mop500.c | 11 +- sound/usb/card.h | 5 + sound/usb/endpoint.c | 244 +++++++++++- sound/usb/endpoint.h | 1 + sound/usb/mixer_quirks.c | 418 +++++++++++++++++++++ sound/usb/pcm.c | 7 + tools/bootconfig/main.c | 24 +- tools/bpf/bpftool/gen.c | 2 + tools/lib/bpf/btf_dump.c | 33 +- tools/lib/bpf/libbpf.c | 4 - tools/perf/builtin-report.c | 3 +- tools/perf/util/parse-events.y | 2 +- tools/perf/util/probe-event.c | 7 +- tools/perf/util/probe-file.c | 2 +- tools/perf/util/stat-display.c | 4 +- tools/testing/selftests/bpf/prog_tests/skeleton.c | 45 ++- tools/testing/selftests/bpf/progs/test_skeleton.c | 19 +- tools/testing/selftests/kvm/Makefile | 4 + tools/testing/selftests/net/timestamping.c | 10 +- tools/testing/selftests/ntb/ntb_test.sh | 2 +- tools/testing/selftests/timens/clock_nanosleep.c | 2 +- tools/testing/selftests/timens/timens.c | 2 +- tools/testing/selftests/timens/timens.h | 13 +- tools/testing/selftests/timens/timer.c | 5 + tools/testing/selftests/timens/timerfd.c | 5 + tools/testing/selftests/x86/protection_keys.c | 3 +- 537 files changed, 5350 insertions(+), 2800 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/477 staging: wfx: fix potential deadlock in wfx_tx_flush()
From: Jérôme Pouiller <[email protected]>
[ Upstream commit a39e761aa4fefa2a8aaf549217329933b91da7c9 ]
wfx_tx_flush() wait there are no more frame in device buffer. However, this event may never happens since wfx_tx_flush() don't forbid to enqueue new frames.
Note that wfx_tx_flush() should only ensure that all frames currently in hardware queues are sent. So the current code is more restrictive that it should.
Note that wfx_tx_flush() release the lock before to return while wfx_tx_lock_flush() keep the lock.
--- drivers/staging/wfx/queue.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/staging/wfx/queue.c +2 -0
@@ -35,6 +35,7 @@ void wfx_tx_flush(struct wfx_dev *wdev)if (wdev->chip_frozen)return ; +wfx_tx_lock (wdev);mutex_lock (&wdev->hif_cmd.lock); ret = wait_event_timeout(wdev->hif.tx_buffers_empty, !wdev->hif.tx_buffers_used,
@@ -47,6 +48,7 @@ void wfx_tx_flush(struct wfx_dev *wdev) wdev->chip_frozen =1 ; }mutex_unlock (&wdev->hif_cmd.lock); +wfx_tx_unlock (wdev); }void wfx_tx_lock_flush (struct wfx_dev *wdev)
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 2/477 power: supply: bq24257_charger: Replace depends on REGMAP_I2C with select
In reply to Greg Kroah-HartmanFrom: Enric Balletbo i Serra <[email protected]>
[ Upstream commit 87c3d579c8ed0eaea6b1567d529a8daa85a2bc6c ]
regmap is a library function that gets selected by drivers that need it. No driver modules should depend on it. Depending on REGMAP_I2C makes this driver only build if another driver already selected REGMAP_I2C, as the symbol can't be selected through the menu kernel configuration.
--- drivers/power/supply/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/power/supply/Kconfig +1 -1
@@ -577,7 +577,7 @@ config CHARGER_BQ24257 tristate "TI BQ24250/24251/24257 battery charger driver" depends on I2C depends on GPIOLIB || COMPILE_TEST - depends on REGMAP_I2C + select REGMAP_I2C help Say Y to enable support for the TI BQ24250, BQ24251, and BQ24257 battery chargers.
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 3/477 clk: sunxi: Fix incorrect usage of round_down()
In reply to Greg Kroah-HartmanFrom: Rikard Falkeborn <[email protected]>
[ Upstream commit ee25d9742dabed3fd18158b518f846abeb70f319 ]
round_down() can only round to powers of 2. If round_down() is asked to round to something that is not a power of 2, incorrect results are produced. The incorrect results can be both too large and too small.
Instead, use rounddown() which can round to any number.
--- drivers/clk/sunxi/clk-sunxi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/clk/sunxi/clk-sunxi.c +1 -1
@@ -90,7 +90,7 @@ static void sun6i_a31_get_pll1_factors(struct factors_request *req)* Round down the frequency to the closest multiple of either * 6 or 16 */ -u32 round_freq_6 =round_down (freq_mhz,6 ); +u32 round_freq_6 =rounddown (freq_mhz,6 );u32 round_freq_16 =round_down (freq_mhz,16 );if (round_freq_6 > round_freq_16)
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 4/477 ASoC: tegra: tegra_wm8903: Support nvidia, headset property
In reply to Greg Kroah-HartmanFrom: Dmitry Osipenko <[email protected]>
[ Upstream commit 3ef9d5073b552d56bd6daf2af1e89b7e8d4df183 ]
The microphone-jack state needs to be masked in a case of a 4-pin jack when microphone and ground pins are shorted. Presence of nvidia,headset tells that WM8903 CODEC driver should mask microphone's status if short circuit is detected, i.e headphones are inserted.
--- sound/soc/tegra/tegra_wm8903.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
sound/soc/tegra/tegra_wm8903.c +5 -1
@@ -177,6 +177,7 @@ static int tegra_wm8903_init(struct snd_soc_pcm_runtime *rtd)struct snd_soc_component *component = codec_dai->component;struct snd_soc_card *card = rtd->card;struct tegra_wm8903 *machine =snd_soc_card_get_drvdata (card); +int shrt =0 ;if (gpio_is_valid (machine->gpio_hp_det)) { tegra_wm8903_hp_jack_gpio.gpio = machine->gpio_hp_det;
@@ -189,12 +190,15 @@ static int tegra_wm8903_init(struct snd_soc_pcm_runtime *rtd) &tegra_wm8903_hp_jack_gpio); } +if (of_property_read_bool (card->dev->of_node,"nvidia,headset" )) + shrt =SND_JACK_MICROPHONE ; +snd_soc_card_jack_new (rtd->card,"Mic Jack" ,SND_JACK_MICROPHONE , &tegra_wm8903_mic_jack, tegra_wm8903_mic_jack_pins,ARRAY_SIZE (tegra_wm8903_mic_jack_pins));wm8903_mic_detect (component, &tegra_wm8903_mic_jack,SND_JACK_MICROPHONE , -0 ); + shrt);snd_soc_dapm_force_enable_pin (&card->dapm,"MICBIAS" );
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 5/477 rtc: rc5t619: Fix an ERR_PTR vs NULL check
In reply to Greg Kroah-HartmanFrom: Dan Carpenter <[email protected]>
[ Upstream commit 11ddbdfb68e4f9791e4bd4f8d7c87d3f19670967 ]
The devm_kzalloc() function returns NULL on error, it doesn't return error pointers so this check doesn't work.
--- drivers/rtc/rtc-rc5t619.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/rtc/rtc-rc5t619.c +1 -3
@@ -356,10 +356,8 @@ static int rc5t619_rtc_probe(struct platform_device *pdev)int err; rtc =devm_kzalloc (dev,sizeof (*rtc),GFP_KERNEL ); -if (IS_ERR (rtc)) { - err =PTR_ERR (rtc); +if (!rtc)return -ENOMEM ; - } rtc->rn5t618 = rn5t618;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 6/477 i2c: piix4: Detect secondary SMBus controller on AMD AM4 chipsets
In reply to Greg Kroah-HartmanFrom: Adam Honse <[email protected]>
[ Upstream commit f27237c174fd9653033330e4e532cd9d153ce824 ]
The AMD X370 and other AM4 chipsets (A/B/X 3/4/5 parts) and Threadripper equivalents have a secondary SMBus controller at I/O port address 0x0B20. This bus is used by several manufacturers to control motherboard RGB lighting via embedded controllers. I have been using this bus in my OpenRGB project to control the Aura RGB on many motherboards and ASRock also uses this bus for their Polychrome RGB controller.
I am not aware of any CZ-compatible platforms which do not have the second SMBus channel. All of AMD's AM4- and Threadripper- series chipsets that OpenRGB users have tested appear to have this secondary bus. I also noticed this secondary bus is present on older AMD platforms including my FM1 home server.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=202587
--- drivers/i2c/busses/i2c-piix4.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/i2c/busses/i2c-piix4.c +2 -1
@@ -977,7 +977,8 @@ static int piix4_probe(struct pci_dev *dev, const struct pci_device_id *id) }if (dev->vendor ==PCI_VENDOR_ID_AMD && - dev->device ==PCI_DEVICE_ID_AMD_HUDSON2_SMBUS ) { + (dev->device ==PCI_DEVICE_ID_AMD_HUDSON2_SMBUS || + dev->device ==PCI_DEVICE_ID_AMD_KERNCZ_SMBUS )) { retval =piix4_setup_sb800 (dev, id,1 ); }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 7/477 ASoC: SOF: imx8: Fix randbuild error
In reply to Greg Kroah-HartmanFrom: YueHaibing <[email protected]>
[ Upstream commit fe17e6cdc0fefca96ba9659be4b2b07487cbf0c5 ]
when do randconfig like this:CONFIG_SND_SOC_SOF_IMX8_SUPPORT=yCONFIG_SND_SOC_SOF_IMX8=yCONFIG_SND_SOC_SOF_OF=yCONFIG_IMX_DSP=mCONFIG_IMX_SCU=y
there is a link error:
sound/soc/sof/imx/imx8.o: In function 'imx8_send_msg':
imx8.c:(.text+0x380): undefined reference to 'imx_dsp_ring_doorbell'
Select IMX_DSP in SND_SOC_SOF_IMX8_SUPPORT to fix this
--- sound/soc/sof/imx/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
sound/soc/sof/imx/Kconfig +1 -1
@@ -14,7 +14,7 @@ if SND_SOC_SOF_IMX_TOPLEVEL config SND_SOC_SOF_IMX8_SUPPORT bool "SOF support for i.MX8" depends on IMX_SCU - depends on IMX_DSP + select IMX_DSP help This adds support for Sound Open Firmware for NXP i.MX8 platforms Say Y if you have such a device.
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 8/477 iio: pressure: bmp280: Tolerate IRQ before registering
In reply to Greg Kroah-HartmanFrom: Andy Shevchenko <[email protected]>
[ Upstream commit 97b31a6f5fb95b1ec6575b78a7240baddba34384 ]
With DEBUG_SHIRQ enabled we have a kernel crash
[ 116.482696] BUG: kernel NULL pointer dereference, address: 0000000000000000
...
[ 116.606571] Call Trace: [ 116.609023] <IRQ> [ 116.611047] complete+0x34/0x50 [ 116.614206] bmp085_eoc_irq+0x9/0x10 [bmp280]
because DEBUG_SHIRQ mechanism fires an IRQ before registration and drivers ought to be able to handle an interrupt happening before request_irq() returns.
--- drivers/iio/pressure/bmp280-core.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/iio/pressure/bmp280-core.c +4 -1
@@ -713,7 +713,7 @@ static int bmp180_measure(struct bmp280_data *data, u8 ctrl_meas)unsigned int ctrl;if (data->use_eoc) -init_completion (&data->done); +reinit_completion (&data->done); ret =regmap_write (data->regmap,BMP280_REG_CTRL_MEAS , ctrl_meas);if (ret)
@@ -969,6 +969,9 @@ static int bmp085_fetch_eoc_irq(struct device *dev, "trying to enforce it\n"); irq_trig =IRQF_TRIGGER_RISING ; } + +init_completion (&data->done); + ret = devm_request_threaded_irq(dev, irq, bmp085_eoc_irq,
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 9/477 remoteproc: Fix IDR initialisation in rproc_alloc()
In reply to Greg Kroah-HartmanFrom: Alex Elder <[email protected]>
[ Upstream commit 6442df49400b466431979e7634849a464a5f1861 ]
If ida_simple_get() returns an error when called in rproc_alloc(), put_device() is called to clean things up. By this time the rproc device type has been assigned, with rproc_type_release() as the release function.
The first thing rproc_type_release() does is call:
idr_destroy(&rproc->notifyids);
But at the time the ida_simple_get() call is made, the notifyids field in the remoteproc structure has not been initialized.
I'm not actually sure this case causes an observable problem, but it's incorrect. Fix this by initializing the notifyids field before calling ida_simple_get() in rproc_alloc().
--- drivers/remoteproc/remoteproc_core.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/remoteproc/remoteproc_core.c +1 -2
@@ -2053,6 +2053,7 @@ struct rproc *rproc_alloc(struct device *dev, const char *name, rproc->dev.type = &rproc_type; rproc->dev.class = &rproc_class; rproc->dev.driver_data = rproc; +idr_init (&rproc->notifyids);/* Assign a unique device index and name */ rproc->index =ida_simple_get (&rproc_dev_index,0 ,0 ,GFP_KERNEL );
@@ -2078,8 +2079,6 @@ struct rproc *rproc_alloc(struct device *dev, const char *name,mutex_init (&rproc->lock); -idr_init (&rproc->notifyids); -INIT_LIST_HEAD (&rproc->carveouts);INIT_LIST_HEAD (&rproc->mappings);INIT_LIST_HEAD (&rproc->traces);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 10/477 clk: qcom: msm8916: Fix the address location of pll->config_reg
In reply to Greg Kroah-HartmanFrom: Bryan O'Donoghue <[email protected]>
[ Upstream commit f47ab3c2f5338828a67e89d5f688d2cef9605245 ]
During the process of debugging a processor derived from the msm8916 which we found the new processor was not starting one of its PLLs.
After tracing the addresses and writes that downstream was doing and comparing to upstream it became obvious that we were writing to a different register location than downstream when trying to configure the PLL.
This error is also present in upstream msm8916.
As an example clk-pll.c::clk_pll_recalc_rate wants to write to pll->config_reg updating the bit-field POST_DIV_RATIO. That bit-field is defined in PLL_USER_CTL not in PLL_CONFIG_CTL. Taking the BIMC PLL as an example
lm80-p0436-13_c_qc_snapdragon_410_processor_hrd.pdf
0x01823010 GCC_BIMC_PLL_USER_CTL0x01823014 GCC_BIMC_PLL_CONFIG_CTL
This pattern is repeated for gpll0, gpll1, gpll2 and bimc_pll.
This error is likely not apparent since the bootloader will already have initialized these PLLs.
This patch corrects the location of config_reg from PLL_CONFIG_CTL to PLL_USER_CTL for all relevant PLLs on msm8916.
Fixes commit 3966fab8b6ab ("clk: qcom: Add MSM8916 Global Clock Controller support")
--- drivers/clk/qcom/gcc-msm8916.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/clk/qcom/gcc-msm8916.c +4 -4
@@ -260,7 +260,7 @@ static struct clk_pll gpll0 = { .l_reg = 0x21004, .m_reg = 0x21008, .n_reg = 0x2100c, - .config_reg = 0x21014, + .config_reg = 0x21010, .mode_reg = 0x21000, .status_reg = 0x2101c, .status_bit = 17,
@@ -287,7 +287,7 @@ static struct clk_pll gpll1 = { .l_reg = 0x20004, .m_reg = 0x20008, .n_reg = 0x2000c, - .config_reg = 0x20014, + .config_reg = 0x20010, .mode_reg = 0x20000, .status_reg = 0x2001c, .status_bit = 17,
@@ -314,7 +314,7 @@ static struct clk_pll gpll2 = { .l_reg = 0x4a004, .m_reg = 0x4a008, .n_reg = 0x4a00c, - .config_reg = 0x4a014, + .config_reg = 0x4a010, .mode_reg = 0x4a000, .status_reg = 0x4a01c, .status_bit = 17,
@@ -341,7 +341,7 @@ static struct clk_pll bimc_pll = { .l_reg = 0x23004, .m_reg = 0x23008, .n_reg = 0x2300c, - .config_reg = 0x23014, + .config_reg = 0x23010, .mode_reg = 0x23000, .status_reg = 0x2301c, .status_bit = 17,
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 11/477 staging: wfx: check ssidlen and prevent an array overflow
In reply to Greg Kroah-HartmanFrom: Dan Carpenter <[email protected]>
[ Upstream commit 87f86cddda65cab8a7e3df8a00e16abeccaa0730 ]
We need to cap "ssidlen" to prevent a memcpy() overflow.
--- drivers/staging/wfx/sta.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/staging/wfx/sta.c +3 -1
@@ -520,7 +520,9 @@ static void wfx_do_join(struct wfx_vif *wvif) ssidie =ieee80211_bss_get_ie (bss,WLAN_EID_SSID );if (ssidie) { ssidlen = ssidie[1 ]; -memcpy (ssid, &ssidie[2 ], ssidie[1 ]); +if (ssidlen >IEEE80211_MAX_SSID_LEN ) + ssidlen =IEEE80211_MAX_SSID_LEN ; +memcpy (ssid, &ssidie[2 ], ssidlen); }rcu_read_unlock ();
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 12/477 ASoC: fsl_esai: Disable exception interrupt before scheduling tasklet
In reply to Greg Kroah-HartmanFrom: Shengjiu Wang <[email protected]>
[ Upstream commit 1fecbb71fe0e46b886f84e3b6decca6643c3af6d ]
Disable exception interrupt before scheduling tasklet, otherwise if the tasklet isn't handled immediately, there will be endless xrun interrupt.
--- sound/soc/fsl/fsl_esai.c | 4 ++++ 1 file changed, 4 insertions(+)
sound/soc/fsl/fsl_esai.c +4 -0
@@ -87,6 +87,10 @@ static irqreturn_t esai_isr(int irq, void *devid)if ((saisr & (ESAI_SAISR_TUE |ESAI_SAISR_ROE )) && esai_priv->reset_at_xrun) {dev_dbg (&pdev->dev,"reset module for xrun\n" ); +regmap_update_bits (esai_priv->regmap,REG_ESAI_TCR , + ESAI_xCR_xEIE_MASK,0 ); +regmap_update_bits (esai_priv->regmap,REG_ESAI_RCR , + ESAI_xCR_xEIE_MASK,0 );tasklet_schedule (&esai_priv->task); }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 13/477 backlight: lp855x: Ensure regulators are disabled on probe failure
In reply to Greg Kroah-HartmanFrom: Jon Hunter <[email protected]>
[ Upstream commit d8207c155a7c6015eb7f43739baa7dfb1fa638af ]
If probing the LP885x backlight fails after the regulators have been enabled, then the following warning is seen when releasing the regulators ...
WARNING: CPU: 1 PID: 289 at drivers/regulator/core.c:2051 _regulator_put.part.28+0x158/0x160 Modules linked in: tegra_xudc lp855x_bl(+) host1x pwm_tegra ip_tables x_tables ipv6 nf_defrag_ipv6 CPU: 1 PID: 289 Comm: systemd-udevd Not tainted 5.6.0-rc2-next-20200224 #1 Hardware name: NVIDIA Jetson TX1 Developer Kit (DT)
...
Call trace: _regulator_put.part.28+0x158/0x160 regulator_put+0x34/0x50 devm_regulator_release+0x10/0x18 release_nodes+0x12c/0x230 devres_release_all+0x34/0x50 really_probe+0x1c0/0x370 driver_probe_device+0x58/0x100 device_driver_attach+0x6c/0x78 __driver_attach+0xb0/0xf0 bus_for_each_dev+0x68/0xc8 driver_attach+0x20/0x28 bus_add_driver+0x160/0x1f0 driver_register+0x60/0x110 i2c_register_driver+0x40/0x80 lp855x_driver_init+0x20/0x1000 [lp855x_bl] do_one_initcall+0x58/0x1a0 do_init_module+0x54/0x1d0 load_module+0x1d80/0x21c8 __do_sys_finit_module+0xe8/0x100 __arm64_sys_finit_module+0x18/0x20 el0_svc_common.constprop.3+0xb0/0x168 do_el0_svc+0x20/0x98 el0_sync_handler+0xf4/0x1b0 el0_sync+0x140/0x180
Fix this by ensuring that the regulators are disabled, if enabled, on probe failure.
Finally, ensure that the vddio regulator is disabled in the driver remove handler.
--- drivers/video/backlight/lp855x_bl.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)
drivers/video/backlight/lp855x_bl.c +16 -4
@@ -456,7 +456,7 @@ static int lp855x_probe(struct i2c_client *cl, const struct i2c_device_id *id) ret =regulator_enable (lp->enable);if (ret <0 ) {dev_err (lp->dev,"failed to enable vddio: %d\n" , ret); -return ret; + goto disable_supply; }/*
@@ -471,24 +471,34 @@ static int lp855x_probe(struct i2c_client *cl, const struct i2c_device_id *id) ret =lp855x_configure (lp);if (ret) {dev_err (lp->dev,"device config err: %d" , ret); -return ret; + goto disable_vddio; } ret =lp855x_backlight_register (lp);if (ret) {dev_err (lp->dev,"failed to register backlight. err: %d\n" , ret); -return ret; + goto disable_vddio; } ret =sysfs_create_group (&lp->dev->kobj, &lp855x_attr_group);if (ret) {dev_err (lp->dev,"failed to register sysfs. err: %d\n" , ret); -return ret; + goto disable_vddio; }backlight_update_status (lp->bl); +return 0 ; + +disable_vddio: +if (lp->enable) +regulator_disable (lp->enable); +disable_supply: +if (lp->supply) +regulator_disable (lp->supply); + +return ret; }static int lp855x_remove (struct i2c_client *cl)
@@ -497,6 +507,8 @@ static int lp855x_remove(struct i2c_client *cl) lp->bl->props.brightness =0 ;backlight_update_status (lp->bl); +if (lp->enable) +regulator_disable (lp->enable);if (lp->supply)regulator_disable (lp->supply);sysfs_remove_group (&lp->dev->kobj, &lp855x_attr_group);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 14/477 ARM: dts: renesas: Fix IOMMU device node names
In reply to Greg Kroah-HartmanFrom: Yoshihiro Shimoda <[email protected]>
[ Upstream commit ae990a1de014396ffc8d0fcc31b6888c9b0ce59a ]
Fix IOMMU device node names as "iommu@".
--- arch/arm/boot/dts/r8a7743.dtsi | 12 ++++++------ arch/arm/boot/dts/r8a7744.dtsi | 12 ++++++------ arch/arm/boot/dts/r8a7745.dtsi | 12 ++++++------ arch/arm/boot/dts/r8a7790.dtsi | 12 ++++++------ arch/arm/boot/dts/r8a7791.dtsi | 14 +++++++------- arch/arm/boot/dts/r8a7793.dtsi | 14 +++++++------- arch/arm/boot/dts/r8a7794.dtsi | 12 ++++++------ 7 files changed, 44 insertions(+), 44 deletions(-)
arch/arm/boot/dts/r8a7743.dtsi +6 -6
@@ -338,7 +338,7 @@ #thermal-sensor-cells = <0>; }; - ipmmu_sy0: mmu@e6280000 { + ipmmu_sy0: iommu@e6280000 { compatible = "renesas,ipmmu-r8a7743", "renesas,ipmmu-vmsa"; reg = <0 0xe6280000 0 0x1000>;
@@ -348,7 +348,7 @@ status = "disabled"; }; - ipmmu_sy1: mmu@e6290000 { + ipmmu_sy1: iommu@e6290000 { compatible = "renesas,ipmmu-r8a7743", "renesas,ipmmu-vmsa"; reg = <0 0xe6290000 0 0x1000>;
@@ -357,7 +357,7 @@ status = "disabled"; }; - ipmmu_ds: mmu@e6740000 { + ipmmu_ds: iommu@e6740000 { compatible = "renesas,ipmmu-r8a7743", "renesas,ipmmu-vmsa"; reg = <0 0xe6740000 0 0x1000>;
@@ -367,7 +367,7 @@ status = "disabled"; }; - ipmmu_mp: mmu@ec680000 { + ipmmu_mp: iommu@ec680000 { compatible = "renesas,ipmmu-r8a7743", "renesas,ipmmu-vmsa"; reg = <0 0xec680000 0 0x1000>;
@@ -376,7 +376,7 @@ status = "disabled"; }; - ipmmu_mx: mmu@fe951000 { + ipmmu_mx: iommu@fe951000 { compatible = "renesas,ipmmu-r8a7743", "renesas,ipmmu-vmsa"; reg = <0 0xfe951000 0 0x1000>;
@@ -386,7 +386,7 @@ status = "disabled"; }; - ipmmu_gp: mmu@e62a0000 { + ipmmu_gp: iommu@e62a0000 { compatible = "renesas,ipmmu-r8a7743", "renesas,ipmmu-vmsa"; reg = <0 0xe62a0000 0 0x1000>;
arch/arm/boot/dts/r8a7744.dtsi +6 -6
@@ -338,7 +338,7 @@ #thermal-sensor-cells = <0>; }; - ipmmu_sy0: mmu@e6280000 { + ipmmu_sy0: iommu@e6280000 { compatible = "renesas,ipmmu-r8a7744", "renesas,ipmmu-vmsa"; reg = <0 0xe6280000 0 0x1000>;
@@ -348,7 +348,7 @@ status = "disabled"; }; - ipmmu_sy1: mmu@e6290000 { + ipmmu_sy1: iommu@e6290000 { compatible = "renesas,ipmmu-r8a7744", "renesas,ipmmu-vmsa"; reg = <0 0xe6290000 0 0x1000>;
@@ -357,7 +357,7 @@ status = "disabled"; }; - ipmmu_ds: mmu@e6740000 { + ipmmu_ds: iommu@e6740000 { compatible = "renesas,ipmmu-r8a7744", "renesas,ipmmu-vmsa"; reg = <0 0xe6740000 0 0x1000>;
@@ -367,7 +367,7 @@ status = "disabled"; }; - ipmmu_mp: mmu@ec680000 { + ipmmu_mp: iommu@ec680000 { compatible = "renesas,ipmmu-r8a7744", "renesas,ipmmu-vmsa"; reg = <0 0xec680000 0 0x1000>;
@@ -376,7 +376,7 @@ status = "disabled"; }; - ipmmu_mx: mmu@fe951000 { + ipmmu_mx: iommu@fe951000 { compatible = "renesas,ipmmu-r8a7744", "renesas,ipmmu-vmsa"; reg = <0 0xfe951000 0 0x1000>;
@@ -386,7 +386,7 @@ status = "disabled"; }; - ipmmu_gp: mmu@e62a0000 { + ipmmu_gp: iommu@e62a0000 { compatible = "renesas,ipmmu-r8a7744", "renesas,ipmmu-vmsa"; reg = <0 0xe62a0000 0 0x1000>;
arch/arm/boot/dts/r8a7745.dtsi +6 -6
@@ -302,7 +302,7 @@ resets = <&cpg 407>; }; - ipmmu_sy0: mmu@e6280000 { + ipmmu_sy0: iommu@e6280000 { compatible = "renesas,ipmmu-r8a7745", "renesas,ipmmu-vmsa"; reg = <0 0xe6280000 0 0x1000>;
@@ -312,7 +312,7 @@ status = "disabled"; }; - ipmmu_sy1: mmu@e6290000 { + ipmmu_sy1: iommu@e6290000 { compatible = "renesas,ipmmu-r8a7745", "renesas,ipmmu-vmsa"; reg = <0 0xe6290000 0 0x1000>;
@@ -321,7 +321,7 @@ status = "disabled"; }; - ipmmu_ds: mmu@e6740000 { + ipmmu_ds: iommu@e6740000 { compatible = "renesas,ipmmu-r8a7745", "renesas,ipmmu-vmsa"; reg = <0 0xe6740000 0 0x1000>;
@@ -331,7 +331,7 @@ status = "disabled"; }; - ipmmu_mp: mmu@ec680000 { + ipmmu_mp: iommu@ec680000 { compatible = "renesas,ipmmu-r8a7745", "renesas,ipmmu-vmsa"; reg = <0 0xec680000 0 0x1000>;
@@ -340,7 +340,7 @@ status = "disabled"; }; - ipmmu_mx: mmu@fe951000 { + ipmmu_mx: iommu@fe951000 { compatible = "renesas,ipmmu-r8a7745", "renesas,ipmmu-vmsa"; reg = <0 0xfe951000 0 0x1000>;
@@ -350,7 +350,7 @@ status = "disabled"; }; - ipmmu_gp: mmu@e62a0000 { + ipmmu_gp: iommu@e62a0000 { compatible = "renesas,ipmmu-r8a7745", "renesas,ipmmu-vmsa"; reg = <0 0xe62a0000 0 0x1000>;
arch/arm/boot/dts/r8a7790.dtsi +6 -6
@@ -427,7 +427,7 @@ #thermal-sensor-cells = <0>; }; - ipmmu_sy0: mmu@e6280000 { + ipmmu_sy0: iommu@e6280000 { compatible = "renesas,ipmmu-r8a7790", "renesas,ipmmu-vmsa"; reg = <0 0xe6280000 0 0x1000>;
@@ -437,7 +437,7 @@ status = "disabled"; }; - ipmmu_sy1: mmu@e6290000 { + ipmmu_sy1: iommu@e6290000 { compatible = "renesas,ipmmu-r8a7790", "renesas,ipmmu-vmsa"; reg = <0 0xe6290000 0 0x1000>;
@@ -446,7 +446,7 @@ status = "disabled"; }; - ipmmu_ds: mmu@e6740000 { + ipmmu_ds: iommu@e6740000 { compatible = "renesas,ipmmu-r8a7790", "renesas,ipmmu-vmsa"; reg = <0 0xe6740000 0 0x1000>;
@@ -456,7 +456,7 @@ status = "disabled"; }; - ipmmu_mp: mmu@ec680000 { + ipmmu_mp: iommu@ec680000 { compatible = "renesas,ipmmu-r8a7790", "renesas,ipmmu-vmsa"; reg = <0 0xec680000 0 0x1000>;
@@ -465,7 +465,7 @@ status = "disabled"; }; - ipmmu_mx: mmu@fe951000 { + ipmmu_mx: iommu@fe951000 { compatible = "renesas,ipmmu-r8a7790", "renesas,ipmmu-vmsa"; reg = <0 0xfe951000 0 0x1000>;
@@ -475,7 +475,7 @@ status = "disabled"; }; - ipmmu_rt: mmu@ffc80000 { + ipmmu_rt: iommu@ffc80000 { compatible = "renesas,ipmmu-r8a7790", "renesas,ipmmu-vmsa"; reg = <0 0xffc80000 0 0x1000>;
arch/arm/boot/dts/r8a7791.dtsi +7 -7
@@ -350,7 +350,7 @@ #thermal-sensor-cells = <0>; }; - ipmmu_sy0: mmu@e6280000 { + ipmmu_sy0: iommu@e6280000 { compatible = "renesas,ipmmu-r8a7791", "renesas,ipmmu-vmsa"; reg = <0 0xe6280000 0 0x1000>;
@@ -360,7 +360,7 @@ status = "disabled"; }; - ipmmu_sy1: mmu@e6290000 { + ipmmu_sy1: iommu@e6290000 { compatible = "renesas,ipmmu-r8a7791", "renesas,ipmmu-vmsa"; reg = <0 0xe6290000 0 0x1000>;
@@ -369,7 +369,7 @@ status = "disabled"; }; - ipmmu_ds: mmu@e6740000 { + ipmmu_ds: iommu@e6740000 { compatible = "renesas,ipmmu-r8a7791", "renesas,ipmmu-vmsa"; reg = <0 0xe6740000 0 0x1000>;
@@ -379,7 +379,7 @@ status = "disabled"; }; - ipmmu_mp: mmu@ec680000 { + ipmmu_mp: iommu@ec680000 { compatible = "renesas,ipmmu-r8a7791", "renesas,ipmmu-vmsa"; reg = <0 0xec680000 0 0x1000>;
@@ -388,7 +388,7 @@ status = "disabled"; }; - ipmmu_mx: mmu@fe951000 { + ipmmu_mx: iommu@fe951000 { compatible = "renesas,ipmmu-r8a7791", "renesas,ipmmu-vmsa"; reg = <0 0xfe951000 0 0x1000>;
@@ -398,7 +398,7 @@ status = "disabled"; }; - ipmmu_rt: mmu@ffc80000 { + ipmmu_rt: iommu@ffc80000 { compatible = "renesas,ipmmu-r8a7791", "renesas,ipmmu-vmsa"; reg = <0 0xffc80000 0 0x1000>;
@@ -407,7 +407,7 @@ status = "disabled"; }; - ipmmu_gp: mmu@e62a0000 { + ipmmu_gp: iommu@e62a0000 { compatible = "renesas,ipmmu-r8a7791", "renesas,ipmmu-vmsa"; reg = <0 0xe62a0000 0 0x1000>;
arch/arm/boot/dts/r8a7793.dtsi +7 -7
@@ -336,7 +336,7 @@ #thermal-sensor-cells = <0>; }; - ipmmu_sy0: mmu@e6280000 { + ipmmu_sy0: iommu@e6280000 { compatible = "renesas,ipmmu-r8a7793", "renesas,ipmmu-vmsa"; reg = <0 0xe6280000 0 0x1000>;
@@ -346,7 +346,7 @@ status = "disabled"; }; - ipmmu_sy1: mmu@e6290000 { + ipmmu_sy1: iommu@e6290000 { compatible = "renesas,ipmmu-r8a7793", "renesas,ipmmu-vmsa"; reg = <0 0xe6290000 0 0x1000>;
@@ -355,7 +355,7 @@ status = "disabled"; }; - ipmmu_ds: mmu@e6740000 { + ipmmu_ds: iommu@e6740000 { compatible = "renesas,ipmmu-r8a7793", "renesas,ipmmu-vmsa"; reg = <0 0xe6740000 0 0x1000>;
@@ -365,7 +365,7 @@ status = "disabled"; }; - ipmmu_mp: mmu@ec680000 { + ipmmu_mp: iommu@ec680000 { compatible = "renesas,ipmmu-r8a7793", "renesas,ipmmu-vmsa"; reg = <0 0xec680000 0 0x1000>;
@@ -374,7 +374,7 @@ status = "disabled"; }; - ipmmu_mx: mmu@fe951000 { + ipmmu_mx: iommu@fe951000 { compatible = "renesas,ipmmu-r8a7793", "renesas,ipmmu-vmsa"; reg = <0 0xfe951000 0 0x1000>;
@@ -384,7 +384,7 @@ status = "disabled"; }; - ipmmu_rt: mmu@ffc80000 { + ipmmu_rt: iommu@ffc80000 { compatible = "renesas,ipmmu-r8a7793", "renesas,ipmmu-vmsa"; reg = <0 0xffc80000 0 0x1000>;
@@ -393,7 +393,7 @@ status = "disabled"; }; - ipmmu_gp: mmu@e62a0000 { + ipmmu_gp: iommu@e62a0000 { compatible = "renesas,ipmmu-r8a7793", "renesas,ipmmu-vmsa"; reg = <0 0xe62a0000 0 0x1000>;
arch/arm/boot/dts/r8a7794.dtsi +6 -6
@@ -290,7 +290,7 @@ resets = <&cpg 407>; }; - ipmmu_sy0: mmu@e6280000 { + ipmmu_sy0: iommu@e6280000 { compatible = "renesas,ipmmu-r8a7794", "renesas,ipmmu-vmsa"; reg = <0 0xe6280000 0 0x1000>;
@@ -300,7 +300,7 @@ status = "disabled"; }; - ipmmu_sy1: mmu@e6290000 { + ipmmu_sy1: iommu@e6290000 { compatible = "renesas,ipmmu-r8a7794", "renesas,ipmmu-vmsa"; reg = <0 0xe6290000 0 0x1000>;
@@ -309,7 +309,7 @@ status = "disabled"; }; - ipmmu_ds: mmu@e6740000 { + ipmmu_ds: iommu@e6740000 { compatible = "renesas,ipmmu-r8a7794", "renesas,ipmmu-vmsa"; reg = <0 0xe6740000 0 0x1000>;
@@ -319,7 +319,7 @@ status = "disabled"; }; - ipmmu_mp: mmu@ec680000 { + ipmmu_mp: iommu@ec680000 { compatible = "renesas,ipmmu-r8a7794", "renesas,ipmmu-vmsa"; reg = <0 0xec680000 0 0x1000>;
@@ -328,7 +328,7 @@ status = "disabled"; }; - ipmmu_mx: mmu@fe951000 { + ipmmu_mx: iommu@fe951000 { compatible = "renesas,ipmmu-r8a7794", "renesas,ipmmu-vmsa"; reg = <0 0xfe951000 0 0x1000>;
@@ -338,7 +338,7 @@ status = "disabled"; }; - ipmmu_gp: mmu@e62a0000 { + ipmmu_gp: iommu@e62a0000 { compatible = "renesas,ipmmu-r8a7794", "renesas,ipmmu-vmsa"; reg = <0 0xe62a0000 0 0x1000>;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 15/477 ASoC: davinci-mcasp: Fix dma_chan refcnt leak when getting dma type
In reply to Greg Kroah-HartmanFrom: Xiyu Yang <[email protected]>
[ Upstream commit a697ae6ea56e23397341b027098c1b11d9ab13da ]
davinci_mcasp_get_dma_type() invokes dma_request_chan(), which returns a reference of the specified dma_chan object to "chan" with increased refcnt.
When davinci_mcasp_get_dma_type() returns, local variable "chan" becomes invalid, so the refcount should be decreased to keep refcount balanced.
The reference counting issue happens in one exception handling path of davinci_mcasp_get_dma_type(). When chan device is NULL, the function forgets to decrease the refcnt increased by dma_request_chan(), causing a refcnt leak.
Fix this issue by calling dma_release_channel() when chan device is NULL.
--- sound/soc/ti/davinci-mcasp.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
sound/soc/ti/davinci-mcasp.c +3 -1
@@ -1896,8 +1896,10 @@ static int davinci_mcasp_get_dma_type(struct davinci_mcasp *mcasp) PTR_ERR(chan));return PTR_ERR (chan); } -if (WARN_ON (!chan->device || !chan->device->dev)) +if (WARN_ON (!chan->device || !chan->device->dev)) { +dma_release_channel (chan);return -EINVAL ; + }if (chan->device->dev->of_node) ret = of_property_read_string(chan->device->dev->of_node,
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 16/477 ARM: integrator: Add some Kconfig selections
In reply to Greg Kroah-HartmanFrom: Linus Walleij <[email protected]>
[ Upstream commit d2854bbe5f5c4b4bec8061caf4f2e603d8819446 ]
The CMA and DMA_CMA Kconfig options need to be selected by the Integrator in order to produce boot console on some Integrator systems.
The REGULATOR and REGULATOR_FIXED_VOLTAGE need to be selected in order to boot the system from an external MMC card when using MMCI/PL181 from the device tree probe path.
Select these things directly from the Kconfig so we are sure to be able to bring the systems up with console from any device tree.
--- arch/arm/mach-integrator/Kconfig | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
arch/arm/mach-integrator/Kconfig +4 -3
@@ -4,6 +4,8 @@ menuconfig ARCH_INTEGRATOR depends on ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V6 select ARM_AMBA select COMMON_CLK_VERSATILE + select CMA + select DMA_CMA select HAVE_TCM select ICST select MFD_SYSCON
@@ -35,14 +37,13 @@ config INTEGRATOR_IMPD1 select ARM_VIC select GPIO_PL061 select GPIOLIB + select REGULATOR + select REGULATOR_FIXED_VOLTAGE help The IM-PD1 is an add-on logic module for the Integrator which allows ARM(R) Ltd PrimeCells to be developed and evaluated. The IM-PD1 can be found on the Integrator/PP2 platform. - To compile this driver as a module, choose M here: the - module will be called impd1. - config INTEGRATOR_CM7TDMI bool "Integrator/CM7TDMI core module" depends on ARCH_INTEGRATOR_AP
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 17/477 ARM: dts: stm32: Add missing ethernet PHY reset on AV96
In reply to Greg Kroah-HartmanFrom: Marek Vasut <[email protected]>
[ Upstream commit 010ca9fe500bfe365860b50220ff80541c18f0e1 ]
Add PHY reset GPIO on AV96 ethernet PHY.
--- arch/arm/boot/dts/stm32mp157a-avenger96.dts | 3 +++ 1 file changed, 3 insertions(+)
arch/arm/boot/dts/stm32mp157a-avenger96.dts +3 -0
@@ -92,6 +92,9 @@ #address-cells = <1>; #size-cells = <0>; compatible = "snps,dwmac-mdio"; + reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>; + reset-delay-us = <1000>; + phy0: ethernet-phy@7 { reg = <7>; };
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 18/477 arm64: dts: renesas: Fix IOMMU device node names
In reply to Greg Kroah-HartmanFrom: Yoshihiro Shimoda <[email protected]>
[ Upstream commit cf8ae446bbcbf5c48214eb7ddaa6ac6e12f4633d ]
Fix IOMMU device node names as "iommu@".
--- arch/arm64/boot/dts/renesas/r8a774a1.dtsi | 18 ++++++------ arch/arm64/boot/dts/renesas/r8a774b1.dtsi | 18 ++++++------ arch/arm64/boot/dts/renesas/r8a774c0.dtsi | 18 ++++++------ arch/arm64/boot/dts/renesas/r8a77950.dtsi | 14 +++++----- arch/arm64/boot/dts/renesas/r8a77951.dtsi | 34 +++++++++++------------ arch/arm64/boot/dts/renesas/r8a77960.dtsi | 22 +++++++-------- arch/arm64/boot/dts/renesas/r8a77965.dtsi | 20 ++++++------- arch/arm64/boot/dts/renesas/r8a77970.dtsi | 10 +++---- arch/arm64/boot/dts/renesas/r8a77980.dtsi | 16 +++++------ arch/arm64/boot/dts/renesas/r8a77990.dtsi | 20 ++++++------- arch/arm64/boot/dts/renesas/r8a77995.dtsi | 20 ++++++------- 11 files changed, 105 insertions(+), 105 deletions(-)
arch/arm64/boot/dts/renesas/r8a774a1.dtsi +9 -9
@@ -1000,7 +1000,7 @@ <&ipmmu_ds1 30>, <&ipmmu_ds1 31>; }; - ipmmu_ds0: mmu@e6740000 { + ipmmu_ds0: iommu@e6740000 { compatible = "renesas,ipmmu-r8a774a1"; reg = <0 0xe6740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 0>;
@@ -1008,7 +1008,7 @@ #iommu-cells = <1>; }; - ipmmu_ds1: mmu@e7740000 { + ipmmu_ds1: iommu@e7740000 { compatible = "renesas,ipmmu-r8a774a1"; reg = <0 0xe7740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 1>;
@@ -1016,7 +1016,7 @@ #iommu-cells = <1>; }; - ipmmu_hc: mmu@e6570000 { + ipmmu_hc: iommu@e6570000 { compatible = "renesas,ipmmu-r8a774a1"; reg = <0 0xe6570000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 2>;
@@ -1024,7 +1024,7 @@ #iommu-cells = <1>; }; - ipmmu_mm: mmu@e67b0000 { + ipmmu_mm: iommu@e67b0000 { compatible = "renesas,ipmmu-r8a774a1"; reg = <0 0xe67b0000 0 0x1000>; interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
@@ -1033,7 +1033,7 @@ #iommu-cells = <1>; }; - ipmmu_mp: mmu@ec670000 { + ipmmu_mp: iommu@ec670000 { compatible = "renesas,ipmmu-r8a774a1"; reg = <0 0xec670000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 4>;
@@ -1041,7 +1041,7 @@ #iommu-cells = <1>; }; - ipmmu_pv0: mmu@fd800000 { + ipmmu_pv0: iommu@fd800000 { compatible = "renesas,ipmmu-r8a774a1"; reg = <0 0xfd800000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 5>;
@@ -1049,7 +1049,7 @@ #iommu-cells = <1>; }; - ipmmu_pv1: mmu@fd950000 { + ipmmu_pv1: iommu@fd950000 { compatible = "renesas,ipmmu-r8a774a1"; reg = <0 0xfd950000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 6>;
@@ -1057,7 +1057,7 @@ #iommu-cells = <1>; }; - ipmmu_vc0: mmu@fe6b0000 { + ipmmu_vc0: iommu@fe6b0000 { compatible = "renesas,ipmmu-r8a774a1"; reg = <0 0xfe6b0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 8>;
@@ -1065,7 +1065,7 @@ #iommu-cells = <1>; }; - ipmmu_vi0: mmu@febd0000 { + ipmmu_vi0: iommu@febd0000 { compatible = "renesas,ipmmu-r8a774a1"; reg = <0 0xfebd0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 9>;
arch/arm64/boot/dts/renesas/r8a774b1.dtsi +9 -9
@@ -874,7 +874,7 @@ <&ipmmu_ds1 30>, <&ipmmu_ds1 31>; }; - ipmmu_ds0: mmu@e6740000 { + ipmmu_ds0: iommu@e6740000 { compatible = "renesas,ipmmu-r8a774b1"; reg = <0 0xe6740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 0>;
@@ -882,7 +882,7 @@ #iommu-cells = <1>; }; - ipmmu_ds1: mmu@e7740000 { + ipmmu_ds1: iommu@e7740000 { compatible = "renesas,ipmmu-r8a774b1"; reg = <0 0xe7740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 1>;
@@ -890,7 +890,7 @@ #iommu-cells = <1>; }; - ipmmu_hc: mmu@e6570000 { + ipmmu_hc: iommu@e6570000 { compatible = "renesas,ipmmu-r8a774b1"; reg = <0 0xe6570000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 2>;
@@ -898,7 +898,7 @@ #iommu-cells = <1>; }; - ipmmu_mm: mmu@e67b0000 { + ipmmu_mm: iommu@e67b0000 { compatible = "renesas,ipmmu-r8a774b1"; reg = <0 0xe67b0000 0 0x1000>; interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
@@ -907,7 +907,7 @@ #iommu-cells = <1>; }; - ipmmu_mp: mmu@ec670000 { + ipmmu_mp: iommu@ec670000 { compatible = "renesas,ipmmu-r8a774b1"; reg = <0 0xec670000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 4>;
@@ -915,7 +915,7 @@ #iommu-cells = <1>; }; - ipmmu_pv0: mmu@fd800000 { + ipmmu_pv0: iommu@fd800000 { compatible = "renesas,ipmmu-r8a774b1"; reg = <0 0xfd800000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 6>;
@@ -923,7 +923,7 @@ #iommu-cells = <1>; }; - ipmmu_vc0: mmu@fe6b0000 { + ipmmu_vc0: iommu@fe6b0000 { compatible = "renesas,ipmmu-r8a774b1"; reg = <0 0xfe6b0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 12>;
@@ -931,7 +931,7 @@ #iommu-cells = <1>; }; - ipmmu_vi0: mmu@febd0000 { + ipmmu_vi0: iommu@febd0000 { compatible = "renesas,ipmmu-r8a774b1"; reg = <0 0xfebd0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 14>;
@@ -939,7 +939,7 @@ #iommu-cells = <1>; }; - ipmmu_vp0: mmu@fe990000 { + ipmmu_vp0: iommu@fe990000 { compatible = "renesas,ipmmu-r8a774b1"; reg = <0 0xfe990000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 16>;
arch/arm64/boot/dts/renesas/r8a774c0.dtsi +9 -9
@@ -847,7 +847,7 @@ <&ipmmu_ds1 30>, <&ipmmu_ds1 31>; }; - ipmmu_ds0: mmu@e6740000 { + ipmmu_ds0: iommu@e6740000 { compatible = "renesas,ipmmu-r8a774c0"; reg = <0 0xe6740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 0>;
@@ -855,7 +855,7 @@ #iommu-cells = <1>; }; - ipmmu_ds1: mmu@e7740000 { + ipmmu_ds1: iommu@e7740000 { compatible = "renesas,ipmmu-r8a774c0"; reg = <0 0xe7740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 1>;
@@ -863,7 +863,7 @@ #iommu-cells = <1>; }; - ipmmu_hc: mmu@e6570000 { + ipmmu_hc: iommu@e6570000 { compatible = "renesas,ipmmu-r8a774c0"; reg = <0 0xe6570000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 2>;
@@ -871,7 +871,7 @@ #iommu-cells = <1>; }; - ipmmu_mm: mmu@e67b0000 { + ipmmu_mm: iommu@e67b0000 { compatible = "renesas,ipmmu-r8a774c0"; reg = <0 0xe67b0000 0 0x1000>; interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
@@ -880,7 +880,7 @@ #iommu-cells = <1>; }; - ipmmu_mp: mmu@ec670000 { + ipmmu_mp: iommu@ec670000 { compatible = "renesas,ipmmu-r8a774c0"; reg = <0 0xec670000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 4>;
@@ -888,7 +888,7 @@ #iommu-cells = <1>; }; - ipmmu_pv0: mmu@fd800000 { + ipmmu_pv0: iommu@fd800000 { compatible = "renesas,ipmmu-r8a774c0"; reg = <0 0xfd800000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 6>;
@@ -896,7 +896,7 @@ #iommu-cells = <1>; }; - ipmmu_vc0: mmu@fe6b0000 { + ipmmu_vc0: iommu@fe6b0000 { compatible = "renesas,ipmmu-r8a774c0"; reg = <0 0xfe6b0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 12>;
@@ -904,7 +904,7 @@ #iommu-cells = <1>; }; - ipmmu_vi0: mmu@febd0000 { + ipmmu_vi0: iommu@febd0000 { compatible = "renesas,ipmmu-r8a774c0"; reg = <0 0xfebd0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 14>;
@@ -912,7 +912,7 @@ #iommu-cells = <1>; }; - ipmmu_vp0: mmu@fe990000 { + ipmmu_vp0: iommu@fe990000 { compatible = "renesas,ipmmu-r8a774c0"; reg = <0 0xfe990000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 16>;
arch/arm64/boot/dts/renesas/r8a77950.dtsi +7 -7
@@ -77,7 +77,7 @@ /delete-node/ dma-controller@e6460000; /delete-node/ dma-controller@e6470000; - ipmmu_mp1: mmu@ec680000 { + ipmmu_mp1: iommu@ec680000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xec680000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 5>;
@@ -85,7 +85,7 @@ #iommu-cells = <1>; }; - ipmmu_sy: mmu@e7730000 { + ipmmu_sy: iommu@e7730000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xe7730000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 8>;
@@ -93,11 +93,11 @@ #iommu-cells = <1>; }; - /delete-node/ mmu@fd950000; - /delete-node/ mmu@fd960000; - /delete-node/ mmu@fd970000; - /delete-node/ mmu@febe0000; - /delete-node/ mmu@fe980000; + /delete-node/ iommu@fd950000; + /delete-node/ iommu@fd960000; + /delete-node/ iommu@fd970000; + /delete-node/ iommu@febe0000; + /delete-node/ iommu@fe980000; xhci1: usb@ee040000 { compatible = "renesas,xhci-r8a7795", "renesas,rcar-gen3-xhci";
arch/arm64/boot/dts/renesas/r8a77951.dtsi +17 -17
@@ -1073,7 +1073,7 @@ <&ipmmu_ds1 30>, <&ipmmu_ds1 31>; }; - ipmmu_ds0: mmu@e6740000 { + ipmmu_ds0: iommu@e6740000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xe6740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 0>;
@@ -1081,7 +1081,7 @@ #iommu-cells = <1>; }; - ipmmu_ds1: mmu@e7740000 { + ipmmu_ds1: iommu@e7740000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xe7740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 1>;
@@ -1089,7 +1089,7 @@ #iommu-cells = <1>; }; - ipmmu_hc: mmu@e6570000 { + ipmmu_hc: iommu@e6570000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xe6570000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 2>;
@@ -1097,7 +1097,7 @@ #iommu-cells = <1>; }; - ipmmu_ir: mmu@ff8b0000 { + ipmmu_ir: iommu@ff8b0000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xff8b0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 3>;
@@ -1105,7 +1105,7 @@ #iommu-cells = <1>; }; - ipmmu_mm: mmu@e67b0000 { + ipmmu_mm: iommu@e67b0000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xe67b0000 0 0x1000>; interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
@@ -1114,7 +1114,7 @@ #iommu-cells = <1>; }; - ipmmu_mp0: mmu@ec670000 { + ipmmu_mp0: iommu@ec670000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xec670000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 4>;
@@ -1122,7 +1122,7 @@ #iommu-cells = <1>; }; - ipmmu_pv0: mmu@fd800000 { + ipmmu_pv0: iommu@fd800000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xfd800000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 6>;
@@ -1130,7 +1130,7 @@ #iommu-cells = <1>; }; - ipmmu_pv1: mmu@fd950000 { + ipmmu_pv1: iommu@fd950000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xfd950000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 7>;
@@ -1138,7 +1138,7 @@ #iommu-cells = <1>; }; - ipmmu_pv2: mmu@fd960000 { + ipmmu_pv2: iommu@fd960000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xfd960000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 8>;
@@ -1146,7 +1146,7 @@ #iommu-cells = <1>; }; - ipmmu_pv3: mmu@fd970000 { + ipmmu_pv3: iommu@fd970000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xfd970000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 9>;
@@ -1154,7 +1154,7 @@ #iommu-cells = <1>; }; - ipmmu_rt: mmu@ffc80000 { + ipmmu_rt: iommu@ffc80000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xffc80000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 10>;
@@ -1162,7 +1162,7 @@ #iommu-cells = <1>; }; - ipmmu_vc0: mmu@fe6b0000 { + ipmmu_vc0: iommu@fe6b0000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xfe6b0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 12>;
@@ -1170,7 +1170,7 @@ #iommu-cells = <1>; }; - ipmmu_vc1: mmu@fe6f0000 { + ipmmu_vc1: iommu@fe6f0000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xfe6f0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 13>;
@@ -1178,7 +1178,7 @@ #iommu-cells = <1>; }; - ipmmu_vi0: mmu@febd0000 { + ipmmu_vi0: iommu@febd0000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xfebd0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 14>;
@@ -1186,7 +1186,7 @@ #iommu-cells = <1>; }; - ipmmu_vi1: mmu@febe0000 { + ipmmu_vi1: iommu@febe0000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xfebe0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 15>;
@@ -1194,7 +1194,7 @@ #iommu-cells = <1>; }; - ipmmu_vp0: mmu@fe990000 { + ipmmu_vp0: iommu@fe990000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xfe990000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 16>;
@@ -1202,7 +1202,7 @@ #iommu-cells = <1>; }; - ipmmu_vp1: mmu@fe980000 { + ipmmu_vp1: iommu@fe980000 { compatible = "renesas,ipmmu-r8a7795"; reg = <0 0xfe980000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 17>;
arch/arm64/boot/dts/renesas/r8a77960.dtsi +11 -11
@@ -997,7 +997,7 @@ <&ipmmu_ds1 30>, <&ipmmu_ds1 31>; }; - ipmmu_ds0: mmu@e6740000 { + ipmmu_ds0: iommu@e6740000 { compatible = "renesas,ipmmu-r8a7796"; reg = <0 0xe6740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 0>;
@@ -1005,7 +1005,7 @@ #iommu-cells = <1>; }; - ipmmu_ds1: mmu@e7740000 { + ipmmu_ds1: iommu@e7740000 { compatible = "renesas,ipmmu-r8a7796"; reg = <0 0xe7740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 1>;
@@ -1013,7 +1013,7 @@ #iommu-cells = <1>; }; - ipmmu_hc: mmu@e6570000 { + ipmmu_hc: iommu@e6570000 { compatible = "renesas,ipmmu-r8a7796"; reg = <0 0xe6570000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 2>;
@@ -1021,7 +1021,7 @@ #iommu-cells = <1>; }; - ipmmu_ir: mmu@ff8b0000 { + ipmmu_ir: iommu@ff8b0000 { compatible = "renesas,ipmmu-r8a7796"; reg = <0 0xff8b0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 3>;
@@ -1029,7 +1029,7 @@ #iommu-cells = <1>; }; - ipmmu_mm: mmu@e67b0000 { + ipmmu_mm: iommu@e67b0000 { compatible = "renesas,ipmmu-r8a7796"; reg = <0 0xe67b0000 0 0x1000>; interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
@@ -1038,7 +1038,7 @@ #iommu-cells = <1>; }; - ipmmu_mp: mmu@ec670000 { + ipmmu_mp: iommu@ec670000 { compatible = "renesas,ipmmu-r8a7796"; reg = <0 0xec670000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 4>;
@@ -1046,7 +1046,7 @@ #iommu-cells = <1>; }; - ipmmu_pv0: mmu@fd800000 { + ipmmu_pv0: iommu@fd800000 { compatible = "renesas,ipmmu-r8a7796"; reg = <0 0xfd800000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 5>;
@@ -1054,7 +1054,7 @@ #iommu-cells = <1>; }; - ipmmu_pv1: mmu@fd950000 { + ipmmu_pv1: iommu@fd950000 { compatible = "renesas,ipmmu-r8a7796"; reg = <0 0xfd950000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 6>;
@@ -1062,7 +1062,7 @@ #iommu-cells = <1>; }; - ipmmu_rt: mmu@ffc80000 { + ipmmu_rt: iommu@ffc80000 { compatible = "renesas,ipmmu-r8a7796"; reg = <0 0xffc80000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 7>;
@@ -1070,7 +1070,7 @@ #iommu-cells = <1>; }; - ipmmu_vc0: mmu@fe6b0000 { + ipmmu_vc0: iommu@fe6b0000 { compatible = "renesas,ipmmu-r8a7796"; reg = <0 0xfe6b0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 8>;
@@ -1078,7 +1078,7 @@ #iommu-cells = <1>; }; - ipmmu_vi0: mmu@febd0000 { + ipmmu_vi0: iommu@febd0000 { compatible = "renesas,ipmmu-r8a7796"; reg = <0 0xfebd0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 9>;
arch/arm64/boot/dts/renesas/r8a77965.dtsi +10 -10
@@ -867,7 +867,7 @@ <&ipmmu_ds1 30>, <&ipmmu_ds1 31>; }; - ipmmu_ds0: mmu@e6740000 { + ipmmu_ds0: iommu@e6740000 { compatible = "renesas,ipmmu-r8a77965"; reg = <0 0xe6740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 0>;
@@ -875,7 +875,7 @@ #iommu-cells = <1>; }; - ipmmu_ds1: mmu@e7740000 { + ipmmu_ds1: iommu@e7740000 { compatible = "renesas,ipmmu-r8a77965"; reg = <0 0xe7740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 1>;
@@ -883,7 +883,7 @@ #iommu-cells = <1>; }; - ipmmu_hc: mmu@e6570000 { + ipmmu_hc: iommu@e6570000 { compatible = "renesas,ipmmu-r8a77965"; reg = <0 0xe6570000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 2>;
@@ -891,7 +891,7 @@ #iommu-cells = <1>; }; - ipmmu_mm: mmu@e67b0000 { + ipmmu_mm: iommu@e67b0000 { compatible = "renesas,ipmmu-r8a77965"; reg = <0 0xe67b0000 0 0x1000>; interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
@@ -900,7 +900,7 @@ #iommu-cells = <1>; }; - ipmmu_mp: mmu@ec670000 { + ipmmu_mp: iommu@ec670000 { compatible = "renesas,ipmmu-r8a77965"; reg = <0 0xec670000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 4>;
@@ -908,7 +908,7 @@ #iommu-cells = <1>; }; - ipmmu_pv0: mmu@fd800000 { + ipmmu_pv0: iommu@fd800000 { compatible = "renesas,ipmmu-r8a77965"; reg = <0 0xfd800000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 6>;
@@ -916,7 +916,7 @@ #iommu-cells = <1>; }; - ipmmu_rt: mmu@ffc80000 { + ipmmu_rt: iommu@ffc80000 { compatible = "renesas,ipmmu-r8a77965"; reg = <0 0xffc80000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 10>;
@@ -924,7 +924,7 @@ #iommu-cells = <1>; }; - ipmmu_vc0: mmu@fe6b0000 { + ipmmu_vc0: iommu@fe6b0000 { compatible = "renesas,ipmmu-r8a77965"; reg = <0 0xfe6b0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 12>;
@@ -932,7 +932,7 @@ #iommu-cells = <1>; }; - ipmmu_vi0: mmu@febd0000 { + ipmmu_vi0: iommu@febd0000 { compatible = "renesas,ipmmu-r8a77965"; reg = <0 0xfebd0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 14>;
@@ -940,7 +940,7 @@ #iommu-cells = <1>; }; - ipmmu_vp0: mmu@fe990000 { + ipmmu_vp0: iommu@fe990000 { compatible = "renesas,ipmmu-r8a77965"; reg = <0 0xfe990000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 16>;
arch/arm64/boot/dts/renesas/r8a77970.dtsi +5 -5
@@ -985,7 +985,7 @@ <&ipmmu_ds1 22>, <&ipmmu_ds1 23>; }; - ipmmu_ds1: mmu@e7740000 { + ipmmu_ds1: iommu@e7740000 { compatible = "renesas,ipmmu-r8a77970"; reg = <0 0xe7740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 0>;
@@ -993,7 +993,7 @@ #iommu-cells = <1>; }; - ipmmu_ir: mmu@ff8b0000 { + ipmmu_ir: iommu@ff8b0000 { compatible = "renesas,ipmmu-r8a77970"; reg = <0 0xff8b0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 3>;
@@ -1001,7 +1001,7 @@ #iommu-cells = <1>; }; - ipmmu_mm: mmu@e67b0000 { + ipmmu_mm: iommu@e67b0000 { compatible = "renesas,ipmmu-r8a77970"; reg = <0 0xe67b0000 0 0x1000>; interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
@@ -1010,7 +1010,7 @@ #iommu-cells = <1>; }; - ipmmu_rt: mmu@ffc80000 { + ipmmu_rt: iommu@ffc80000 { compatible = "renesas,ipmmu-r8a77970"; reg = <0 0xffc80000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 7>;
@@ -1018,7 +1018,7 @@ #iommu-cells = <1>; }; - ipmmu_vi0: mmu@febd0000 { + ipmmu_vi0: iommu@febd0000 { compatible = "renesas,ipmmu-r8a77970"; reg = <0 0xfebd0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 9>;
arch/arm64/boot/dts/renesas/r8a77980.dtsi +8 -8
@@ -1266,7 +1266,7 @@ status = "disabled"; }; - ipmmu_ds1: mmu@e7740000 { + ipmmu_ds1: iommu@e7740000 { compatible = "renesas,ipmmu-r8a77980"; reg = <0 0xe7740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 0>;
@@ -1274,7 +1274,7 @@ #iommu-cells = <1>; }; - ipmmu_ir: mmu@ff8b0000 { + ipmmu_ir: iommu@ff8b0000 { compatible = "renesas,ipmmu-r8a77980"; reg = <0 0xff8b0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 3>;
@@ -1282,7 +1282,7 @@ #iommu-cells = <1>; }; - ipmmu_mm: mmu@e67b0000 { + ipmmu_mm: iommu@e67b0000 { compatible = "renesas,ipmmu-r8a77980"; reg = <0 0xe67b0000 0 0x1000>; interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
@@ -1291,7 +1291,7 @@ #iommu-cells = <1>; }; - ipmmu_rt: mmu@ffc80000 { + ipmmu_rt: iommu@ffc80000 { compatible = "renesas,ipmmu-r8a77980"; reg = <0 0xffc80000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 10>;
@@ -1299,7 +1299,7 @@ #iommu-cells = <1>; }; - ipmmu_vc0: mmu@fe990000 { + ipmmu_vc0: iommu@fe990000 { compatible = "renesas,ipmmu-r8a77980"; reg = <0 0xfe990000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 12>;
@@ -1307,7 +1307,7 @@ #iommu-cells = <1>; }; - ipmmu_vi0: mmu@febd0000 { + ipmmu_vi0: iommu@febd0000 { compatible = "renesas,ipmmu-r8a77980"; reg = <0 0xfebd0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 14>;
@@ -1315,7 +1315,7 @@ #iommu-cells = <1>; }; - ipmmu_vip0: mmu@e7b00000 { + ipmmu_vip0: iommu@e7b00000 { compatible = "renesas,ipmmu-r8a77980"; reg = <0 0xe7b00000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 4>;
@@ -1323,7 +1323,7 @@ #iommu-cells = <1>; }; - ipmmu_vip1: mmu@e7960000 { + ipmmu_vip1: iommu@e7960000 { compatible = "renesas,ipmmu-r8a77980"; reg = <0 0xe7960000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 11>;
arch/arm64/boot/dts/renesas/r8a77990.dtsi +10 -10
@@ -817,7 +817,7 @@ <&ipmmu_ds1 30>, <&ipmmu_ds1 31>; }; - ipmmu_ds0: mmu@e6740000 { + ipmmu_ds0: iommu@e6740000 { compatible = "renesas,ipmmu-r8a77990"; reg = <0 0xe6740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 0>;
@@ -825,7 +825,7 @@ #iommu-cells = <1>; }; - ipmmu_ds1: mmu@e7740000 { + ipmmu_ds1: iommu@e7740000 { compatible = "renesas,ipmmu-r8a77990"; reg = <0 0xe7740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 1>;
@@ -833,7 +833,7 @@ #iommu-cells = <1>; }; - ipmmu_hc: mmu@e6570000 { + ipmmu_hc: iommu@e6570000 { compatible = "renesas,ipmmu-r8a77990"; reg = <0 0xe6570000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 2>;
@@ -841,7 +841,7 @@ #iommu-cells = <1>; }; - ipmmu_mm: mmu@e67b0000 { + ipmmu_mm: iommu@e67b0000 { compatible = "renesas,ipmmu-r8a77990"; reg = <0 0xe67b0000 0 0x1000>; interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
@@ -850,7 +850,7 @@ #iommu-cells = <1>; }; - ipmmu_mp: mmu@ec670000 { + ipmmu_mp: iommu@ec670000 { compatible = "renesas,ipmmu-r8a77990"; reg = <0 0xec670000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 4>;
@@ -858,7 +858,7 @@ #iommu-cells = <1>; }; - ipmmu_pv0: mmu@fd800000 { + ipmmu_pv0: iommu@fd800000 { compatible = "renesas,ipmmu-r8a77990"; reg = <0 0xfd800000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 6>;
@@ -866,7 +866,7 @@ #iommu-cells = <1>; }; - ipmmu_rt: mmu@ffc80000 { + ipmmu_rt: iommu@ffc80000 { compatible = "renesas,ipmmu-r8a77990"; reg = <0 0xffc80000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 10>;
@@ -874,7 +874,7 @@ #iommu-cells = <1>; }; - ipmmu_vc0: mmu@fe6b0000 { + ipmmu_vc0: iommu@fe6b0000 { compatible = "renesas,ipmmu-r8a77990"; reg = <0 0xfe6b0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 12>;
@@ -882,7 +882,7 @@ #iommu-cells = <1>; }; - ipmmu_vi0: mmu@febd0000 { + ipmmu_vi0: iommu@febd0000 { compatible = "renesas,ipmmu-r8a77990"; reg = <0 0xfebd0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 14>;
@@ -890,7 +890,7 @@ #iommu-cells = <1>; }; - ipmmu_vp0: mmu@fe990000 { + ipmmu_vp0: iommu@fe990000 { compatible = "renesas,ipmmu-r8a77990"; reg = <0 0xfe990000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 16>;
arch/arm64/boot/dts/renesas/r8a77995.dtsi +10 -10
@@ -507,7 +507,7 @@ <&ipmmu_ds1 22>, <&ipmmu_ds1 23>; }; - ipmmu_ds0: mmu@e6740000 { + ipmmu_ds0: iommu@e6740000 { compatible = "renesas,ipmmu-r8a77995"; reg = <0 0xe6740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 0>;
@@ -515,7 +515,7 @@ #iommu-cells = <1>; }; - ipmmu_ds1: mmu@e7740000 { + ipmmu_ds1: iommu@e7740000 { compatible = "renesas,ipmmu-r8a77995"; reg = <0 0xe7740000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 1>;
@@ -523,7 +523,7 @@ #iommu-cells = <1>; }; - ipmmu_hc: mmu@e6570000 { + ipmmu_hc: iommu@e6570000 { compatible = "renesas,ipmmu-r8a77995"; reg = <0 0xe6570000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 2>;
@@ -531,7 +531,7 @@ #iommu-cells = <1>; }; - ipmmu_mm: mmu@e67b0000 { + ipmmu_mm: iommu@e67b0000 { compatible = "renesas,ipmmu-r8a77995"; reg = <0 0xe67b0000 0 0x1000>; interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
@@ -540,7 +540,7 @@ #iommu-cells = <1>; }; - ipmmu_mp: mmu@ec670000 { + ipmmu_mp: iommu@ec670000 { compatible = "renesas,ipmmu-r8a77995"; reg = <0 0xec670000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 4>;
@@ -548,7 +548,7 @@ #iommu-cells = <1>; }; - ipmmu_pv0: mmu@fd800000 { + ipmmu_pv0: iommu@fd800000 { compatible = "renesas,ipmmu-r8a77995"; reg = <0 0xfd800000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 6>;
@@ -556,7 +556,7 @@ #iommu-cells = <1>; }; - ipmmu_rt: mmu@ffc80000 { + ipmmu_rt: iommu@ffc80000 { compatible = "renesas,ipmmu-r8a77995"; reg = <0 0xffc80000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 10>;
@@ -564,7 +564,7 @@ #iommu-cells = <1>; }; - ipmmu_vc0: mmu@fe6b0000 { + ipmmu_vc0: iommu@fe6b0000 { compatible = "renesas,ipmmu-r8a77995"; reg = <0 0xfe6b0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 12>;
@@ -572,7 +572,7 @@ #iommu-cells = <1>; }; - ipmmu_vi0: mmu@febd0000 { + ipmmu_vi0: iommu@febd0000 { compatible = "renesas,ipmmu-r8a77995"; reg = <0 0xfebd0000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 14>;
@@ -580,7 +580,7 @@ #iommu-cells = <1>; }; - ipmmu_vp0: mmu@fe990000 { + ipmmu_vp0: iommu@fe990000 { compatible = "renesas,ipmmu-r8a77995"; reg = <0 0xfe990000 0 0x1000>; renesas,ipmmu-main = <&ipmmu_mm 16>;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 19/477 ASoC: codecs: wm97xx: fix ac97 dependency
In reply to Greg Kroah-HartmanFrom: Arnd Bergmann <[email protected]>
[ Upstream commit ee2cbe06935bfa58f1fe07dc2a2283945f4b97dc ]
A recent build fix got the dependency slightly wrong, breaking builds with CONFIG_AC97_BUS_NEW:
WARNING: unmet direct dependencies detected for SND_SOC_WM9713
Depends on [n]: SOUND [=y] && !UML && SND [=y] && SND_SOC [=y] && SND_SOC_AC97_BUS [=n]
Selected by [m]:
- SND_SOC_ZYLONITE [=m] && SOUND [=y] && !UML && SND [=y] && SND_SOC [=y] && SND_PXA2XX_SOC [=m] && MACH_ZYLONITE [=y] && AC97_BUS [=n]=n
WARNING: unmet direct dependencies detected for SND_SOC_WM9712
Depends on [n]: SOUND [=y] && !UML && SND [=y] && SND_SOC [=y] && SND_SOC_AC97_BUS [=n]
Selected by [m]:
- SND_PXA2XX_SOC_EM_X270 [=m] && SOUND [=y] && !UML && SND [=y] && SND_SOC [=y] && SND_PXA2XX_SOC [=m] && (MACH_EM_X270 [=n] || MACH_EXEDA [=n] || MACH_CM_X300 [=y]) && AC97_BUS [=n]=n
Change the dependency to allow either version of the AC97 library code.
--- sound/soc/codecs/Kconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
sound/soc/codecs/Kconfig +3 -3
@@ -1620,19 +1620,19 @@ config SND_SOC_WM9090 config SND_SOC_WM9705 tristate - depends on SND_SOC_AC97_BUS + depends on SND_SOC_AC97_BUS || AC97_BUS_NEW select REGMAP_AC97 select AC97_BUS_COMPAT if AC97_BUS_NEW config SND_SOC_WM9712 tristate - depends on SND_SOC_AC97_BUS + depends on SND_SOC_AC97_BUS || AC97_BUS_NEW select REGMAP_AC97 select AC97_BUS_COMPAT if AC97_BUS_NEW config SND_SOC_WM9713 tristate - depends on SND_SOC_AC97_BUS + depends on SND_SOC_AC97_BUS || AC97_BUS_NEW select REGMAP_AC97 select AC97_BUS_COMPAT if AC97_BUS_NEW
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 20/477 arm64: dts: meson-gxbb-kii-pro: fix board compatible
In reply to Greg Kroah-HartmanFrom: Neil Armstrong <[email protected]>
[ Upstream commit d120b5f98031eefc22164ae8c6ea3711e7a04c19 ]
Remove the uneeded "amlogic,p201", "amlogic,s905" in the board compatible list.
It fixes:meson-gxbb-kii-pro.dt.yaml: /: compatible: ['videostrong,kii-pro', 'amlogic,p201', 'amlogic,s905', 'amlogic,meson-gxbb'] is not valid under any of the given schemas
--- arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts +1 -1
@@ -11,7 +11,7 @@ #include <dt-bindings/input/input.h> #include <dt-bindings/leds/common.h> / { - compatible = "videostrong,kii-pro", "amlogic,p201", "amlogic,s905", "amlogic,meson-gxbb"; + compatible = "videostrong,kii-pro", "amlogic,meson-gxbb"; model = "Videostrong KII Pro"; leds {
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 21/477 scsi: core: free sgtables in case command setup fails
In reply to Greg Kroah-HartmanFrom: Johannes Thumshirn <[email protected]>
[ Upstream commit 20a66f2bf280277ab5bb22e27445153b4eb0ac88 ]
In case scsi_setup_fs_cmnd() fails we're not freeing the sgtables allocated by scsi_init_io(), thus we leak the allocated memory.
Free the sgtables allocated by scsi_init_io() in case scsi_setup_fs_cmnd() fails.
Technically scsi_setup_scsi_cmnd() does not suffer from this problem as it can only fail if scsi_init_io() fails, so it does not have sgtables allocated. But to maintain symmetry and as a measure of defensive programming, free the sgtables on scsi_setup_scsi_cmnd() failure as well. scsi_mq_free_sgtables() has safeguards against double-freeing of memory so this is safe to do.
While we're at it, rename scsi_mq_free_sgtables() to scsi_free_sgtables().
--- drivers/scsi/scsi_lib.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-)
drivers/scsi/scsi_lib.c +11 -5
@@ -548,7 +548,7 @@ static void scsi_uninit_cmd(struct scsi_cmnd *cmd) } } -static void scsi_mq_free_sgtables (struct scsi_cmnd *cmd) +static void scsi_free_sgtables (struct scsi_cmnd *cmd) {if (cmd->sdb.table.nents) sg_free_table_chained(&cmd->sdb.table,
@@ -560,7 +560,7 @@ static void scsi_mq_free_sgtables(struct scsi_cmnd *cmd)static void scsi_mq_uninit_cmd (struct scsi_cmnd *cmd) { -scsi_mq_free_sgtables (cmd); +scsi_free_sgtables (cmd);scsi_uninit_cmd (cmd); }
@@ -1059,7 +1059,7 @@ blk_status_t scsi_init_io(struct scsi_cmnd *cmd)return BLK_STS_OK ; out_free_sgtables: -scsi_mq_free_sgtables (cmd); +scsi_free_sgtables (cmd);return ret; }EXPORT_SYMBOL (scsi_init_io);
@@ -1190,6 +1190,7 @@ static blk_status_t scsi_setup_cmnd(struct scsi_device *sdev, struct request *req) {struct scsi_cmnd *cmd =blk_mq_rq_to_pdu (req); +blk_status_t ret;if (!blk_rq_bytes (req)) cmd->sc_data_direction =DMA_NONE ;
@@ -1199,9 +1200,14 @@ static blk_status_t scsi_setup_cmnd(struct scsi_device *sdev, cmd->sc_data_direction =DMA_FROM_DEVICE ;if (blk_rq_is_scsi (req)) -return scsi_setup_scsi_cmnd (sdev, req); + ret =scsi_setup_scsi_cmnd (sdev, req);else -return scsi_setup_fs_cmnd (sdev, req); + ret =scsi_setup_fs_cmnd (sdev, req); + +if (ret !=BLK_STS_OK ) +scsi_free_sgtables (cmd); + +return ret; } static blk_status_t
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 22/477 scsi: qedi: Check for buffer overflow in qedi_set_path()
In reply to Greg Kroah-HartmanFrom: Dan Carpenter <[email protected]>
[ Upstream commit 4a4c0cfb4be74e216dd4446b254594707455bfc6 ]
Smatch complains that the "path_data->handle" variable is user controlled. It comes from iscsi_set_path() so that seems possible. It's harmless to add a limit check.
The qedi->ep_tbl[] array has qedi->max_active_conns elements (which is always ISCSI_MAX_SESS_PER_HBA (4096) elements). The array is allocated in the qedi_cm_alloc_mem() function.
--- drivers/scsi/qedi/qedi_iscsi.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/scsi/qedi/qedi_iscsi.c +4 -0
@@ -1218,6 +1218,10 @@ static int qedi_set_path(struct Scsi_Host *shost, struct iscsi_path *path_data) } iscsi_cid = (u32 )path_data->handle; +if (iscsi_cid >= qedi->max_active_conns) { + ret = -EINVAL ; + goto set_path_exit; + } qedi_ep = qedi->ep_tbl[iscsi_cid];QEDI_INFO (&qedi->dbg_ctx,QEDI_LOG_INFO ,"iscsi_cid=0x%x, qedi_ep=%p\n" , iscsi_cid, qedi_ep);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 23/477 arm64: dts: meson: fixup SCP sram nodes
In reply to Greg Kroah-HartmanFrom: Neil Armstrong <[email protected]>
[ Upstream commit 9ecded10b4b6af238da0c86197b0418912e7513e ]
The GX and AXG SCP sram nodes were using invalid compatible and node names for the sram entries.
Fixup the sram entries node names, and use proper compatible for them.
It notably fixes:
sram@c8000000: 'scp-shmem@0', 'scp-shmem@200' do not match any of the regexes: '^([a-z]*-)?sram(-section)?@[a-f0-9]+$', 'pinctrl-[0-9]+'
--- arch/arm64/boot/dts/amlogic/meson-axg.dtsi | 6 +++--- arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-)
arch/arm64/boot/dts/amlogic/meson-axg.dtsi +3 -3
@@ -1735,18 +1735,18 @@ }; sram: sram@fffc0000 { - compatible = "amlogic,meson-axg-sram", "mmio-sram"; + compatible = "mmio-sram"; reg = <0x0 0xfffc0000 0x0 0x20000>; #address-cells = <1>; #size-cells = <1>; ranges = <0 0x0 0xfffc0000 0x20000>; - cpu_scp_lpri: scp-shmem@13000 { + cpu_scp_lpri: scp-sram@13000 { compatible = "amlogic,meson-axg-scp-shmem"; reg = <0x13000 0x400>; }; - cpu_scp_hpri: scp-shmem@13400 { + cpu_scp_hpri: scp-sram@13400 { compatible = "amlogic,meson-axg-scp-shmem"; reg = <0x13400 0x400>; };
arch/arm64/boot/dts/amlogic/meson-gx.dtsi +5 -5
@@ -398,20 +398,20 @@ }; sram: sram@c8000000 { - compatible = "amlogic,meson-gx-sram", "amlogic,meson-gxbb-sram", "mmio-sram"; + compatible = "mmio-sram"; reg = <0x0 0xc8000000 0x0 0x14000>; #address-cells = <1>; #size-cells = <1>; ranges = <0 0x0 0xc8000000 0x14000>; - cpu_scp_lpri: scp-shmem@0 { - compatible = "amlogic,meson-gx-scp-shmem", "amlogic,meson-gxbb-scp-shmem"; + cpu_scp_lpri: scp-sram@0 { + compatible = "amlogic,meson-gxbb-scp-shmem"; reg = <0x13000 0x400>; }; - cpu_scp_hpri: scp-shmem@200 { - compatible = "amlogic,meson-gx-scp-shmem", "amlogic,meson-gxbb-scp-shmem"; + cpu_scp_hpri: scp-sram@200 { + compatible = "amlogic,meson-gxbb-scp-shmem"; reg = <0x13400 0x400>; }; };
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 24/477 ALSA: hda/realtek - Introduce polarity for micmute LED GPIO
In reply to Greg Kroah-HartmanFrom: Kai-Heng Feng <[email protected]>
[ Upstream commit dbd13179780555ecd3c992dea1222ca31920e892 ]
Currently mute LED and micmute LED share the same GPIO polarity.
So split the polarity for mute and micmute, in case they have different polarities.
--- sound/pci/hda/patch_realtek.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)
sound/pci/hda/patch_realtek.c +8 -6
@@ -81,6 +81,7 @@ struct alc_spec {/* mute LED for HP laptops, see alc269_fixup_mic_mute_hook() */ int mute_led_polarity; +int micmute_led_polarity;hda_nid_t mute_led_nid;hda_nid_t cap_mute_led_nid;
@@ -4080,11 +4081,9 @@ static void alc269_fixup_hp_mute_led_mic3(struct hda_codec *codec,/* update LED status via GPIO */ static void alc_update_gpio_led (struct hda_codec *codec,unsigned int mask, -bool enabled) +int polarity,bool enabled) { -struct alc_spec *spec = codec->spec; - -if (spec->mute_led_polarity) +if (polarity) enabled = !enabled;alc_update_gpio_data (codec, mask, !enabled);/* muted -> LED on */ }
@@ -4095,7 +4094,8 @@ static void alc_fixup_gpio_mute_hook(void *private_data, int enabled)struct hda_codec *codec = private_data;struct alc_spec *spec = codec->spec; -alc_update_gpio_led (codec, spec->gpio_mute_led_mask, enabled); +alc_update_gpio_led (codec, spec->gpio_mute_led_mask, + spec->mute_led_polarity, enabled); }/* turn on/off mic-mute LED via GPIO per capture hook */
@@ -4104,6 +4104,7 @@ static void alc_gpio_micmute_update(struct hda_codec *codec)struct alc_spec *spec = codec->spec;alc_update_gpio_led (codec, spec->gpio_mic_led_mask, + spec->micmute_led_polarity, spec->gen.micmute_led.led_value); }
@@ -5808,7 +5809,8 @@ static void alc280_hp_gpio4_automute_hook(struct hda_codec *codec,snd_hda_gen_hp_automute (codec, jack);/* mute_led_polarity is set to 0, so we pass inverted value here */ -alc_update_gpio_led (codec,0x10 , !spec->gen.hp_jack_present); +alc_update_gpio_led (codec,0x10 , spec->mute_led_polarity, + !spec->gen.hp_jack_present); }/* Manage GPIOs for HP EliteBook Folio 9480m.
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 25/477 ALSA: isa/wavefront: prevent out of bounds write in ioctl
In reply to Greg Kroah-HartmanFrom: Dan Carpenter <[email protected]>
[ Upstream commit 7f0d5053c5a9d23fe5c2d337495a9d79038d267b ]
The "header->number" comes from the ioctl and it needs to be clamped to prevent out of bounds writes.
--- sound/isa/wavefront/wavefront_synth.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
sound/isa/wavefront/wavefront_synth.c +7 -1
@@ -1171,7 +1171,10 @@ wavefront_send_alias (snd_wavefront_t *dev, wavefront_patch_info *header)"alias for %d\n" , header->number, header->hdr.a.OriginalSample); - + +if (header->number >=WF_MAX_SAMPLE ) +return -EINVAL ; +munge_int32 (header->number, &alias_hdr[0 ],2 );munge_int32 (header->hdr.a.OriginalSample, &alias_hdr[2 ],2 ); munge_int32 (*((unsigned int *)&header->hdr.a.sampleStartOffset),
@@ -1202,6 +1205,9 @@ wavefront_send_multisample (snd_wavefront_t *dev, wavefront_patch_info *header)int num_samples;unsigned char *msample_hdr; +if (header->number >=WF_MAX_SAMPLE ) +return -EINVAL ; + msample_hdr =kmalloc (WF_MSAMPLE_BYTES ,GFP_KERNEL );if (! msample_hdr)return -ENOMEM ;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 26/477 PCI: Allow pci_resize_resource() for devices on root bus
In reply to Greg Kroah-HartmanFrom: Ard Biesheuvel <[email protected]>
[ Upstream commit d09ddd8190fbdc07696bf34b548ae15aa1816714 ]
When resizing a BAR, pci_reassign_bridge_resources() is invoked to bring the bridge windows of parent bridges in line with the new BAR assignment.
This assumes the device whose BAR is being resized lives on a subordinate bus, but this is not necessarily the case. A device may live on the root bus, in which case dev->bus->self is NULL, and passing a NULL pci_dev pointer to pci_reassign_bridge_resources() will cause it to crash.
So let's make the call to pci_reassign_bridge_resources() conditional on whether dev->bus->self is non-NULL in the first place.
--- drivers/pci/setup-res.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
drivers/pci/setup-res.c +5 -4
@@ -439,10 +439,11 @@ int pci_resize_resource(struct pci_dev *dev, int resno, int size) res->end = res->start +pci_rebar_size_to_bytes (size) -1 ;/* Check if the new config works by trying to assign everything. */ - ret =pci_reassign_bridge_resources (dev->bus->self, res->flags); -if (ret) - goto error_resize; - +if (dev->bus->self) { + ret =pci_reassign_bridge_resources (dev->bus->self, res->flags); +if (ret) + goto error_resize; + }return 0 ; error_resize:
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 27/477 PCI: endpoint: functions/pci-epf-test: Fix DMA channel release
In reply to Greg Kroah-HartmanFrom: Kunihiko Hayashi <[email protected]>
[ Upstream commit 0e86d981f9b7252e9716c5137cd8e4d9ad8ef32f ]
When unbinding pci_epf_test, pci_epf_test_clean_dma_chan() is called in pci_epf_test_unbind() even though epf_test->dma_supported is false.
As a result, dma_release_channel() will trigger a NULL pointer dereference because dma_chan is not set.
Avoid calling dma_release_channel() if epf_test->dma_supported is false.
--- drivers/pci/endpoint/functions/pci-epf-test.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/pci/endpoint/functions/pci-epf-test.c +3 -0
@@ -187,6 +187,9 @@ static int pci_epf_test_init_dma_chan(struct pci_epf_test *epf_test)*/ static void pci_epf_test_clean_dma_chan (struct pci_epf_test *epf_test) { +if (!epf_test->dma_supported) +return ; +dma_release_channel (epf_test->dma_chan); epf_test->dma_chan =NULL ; }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 28/477 scsi: qla2xxx: Fix issue with adapters stopping state
In reply to Greg Kroah-HartmanFrom: Viacheslav Dubeyko <[email protected]>
[ Upstream commit 803e45550b11c8e43d89812356fe6f105adebdf9 ]
The goal of the following command sequence is to restart the adapter. However, the tgt_stop flag remains set, indicating that the adapter is still in stopping state even after re-enabling it.
echo 0x7fffffff > /sys/module/qla2xxx/parameters/logging modprobe target_core_mod
modprobe tcm_qla2xxx
mkdir /sys/kernel/config/target/qla2xxx
mkdir /sys/kernel/config/target/qla2xxx/<port-name>
mkdir /sys/kernel/config/target/qla2xxx/<port-name>/tpgt_1 echo 1 > /sys/kernel/config/target/qla2xxx/<port-name>/tpgt_1/enable echo 0 > /sys/kernel/config/target/qla2xxx/<port-name>/tpgt_1/enable echo 1 > /sys/kernel/config/target/qla2xxx/<port-name>/tpgt_1/enable
kernel: PID 1396:qla_target.c:1555 qlt_stop_phase1(): tgt_stop 0x0, tgt_stopped 0x0
kernel: qla2xxx [0001:00:02.0]-e803:1: PID 1396:qla_target.c:1567: Stopping target for host 1(c0000000033557e8)
kernel: PID 1396:qla_target.c:1579 qlt_stop_phase1(): tgt_stop 0x1, tgt_stopped 0x0
kernel: PID 1396:qla_target.c:1266 qlt_schedule_sess_for_deletion(): tgt_stop 0x1, tgt_stopped 0x0
kernel: qla2xxx [0001:00:02.0]-e801:1: PID 1396:qla_target.c:1316: Scheduling sess c00000002d5cd800 for deletion 21:00:00:24:ff:7f:35:c7 <skipped>
kernel: qla2xxx [0001:00:02.0]-290a:1: PID 340:qla_target.c:1187: qlt_unreg_sess sess c00000002d5cd800 for deletion 21:00:00:24:ff:7f:35:c7 <skipped>
kernel: qla2xxx [0001:00:02.0]-f801:1: PID 340:qla_target.c:1145: Unregistration of sess c00000002d5cd800 21:00:00:24:ff:7f:35:c7 finished fcp_cnt 0
kernel: PID 340:qla_target.c:1155 qlt_free_session_done(): tgt_stop 0x1, tgt_stopped 0x0
kernel: qla2xxx [0001:00:02.0]-4807:1: PID 346:qla_os.c:6329: ISP abort scheduled.
<skipped>
kernel: qla2xxx [0001:00:02.0]-28f1:1: PID 346:qla_os.c:3956: Mark all dev lost
kernel: PID 346:qla_target.c:1266 qlt_schedule_sess_for_deletion(): tgt_stop 0x1, tgt_stopped 0x0
kernel: qla2xxx [0001:00:02.0]-4808:1: PID 346:qla_os.c:6338: ISP abort end.
<skipped>
kernel: PID 1396:qla_target.c:6812 qlt_enable_vha(): tgt_stop 0x1, tgt_stopped 0x0
<skipped>
kernel: qla2xxx [0001:00:02.0]-4807:1: PID 346:qla_os.c:6329: ISP abort scheduled.
<skipped>
kernel: qla2xxx [0001:00:02.0]-4808:1: PID 346:qla_os.c:6338: ISP abort end.
qlt_handle_cmd_for_atio() rejects the request to send commands because the adapter is in the stopping state:
kernel: PID 0:qla_target.c:4442 qlt_handle_cmd_for_atio(): tgt_stop 0x1, tgt_stopped 0x0
kernel: qla2xxx [0001:00:02.0]-3861:1: PID 0:qla_target.c:4447: New command while device c000000005314600 is shutting down
kernel: qla2xxx [0001:00:02.0]-e85f:1: PID 0:qla_target.c:5728: qla_target: Unable to send command to target
This patch calls qla_stop_phase2() in addition to qlt_stop_phase1() in tcm_qla2xxx_tpg_enable_store() and tcm_qla2xxx_npiv_tpg_enable_store(). The qlt_stop_phase1() marks adapter as stopping (tgt_stop == 0x1, tgt_stopped == 0x0) but qlt_stop_phase2() marks adapter as stopped (tgt_stop == 0x0, tgt_stopped == 0x1).
--- drivers/scsi/qla2xxx/tcm_qla2xxx.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/scsi/qla2xxx/tcm_qla2xxx.c +2 -0
@@ -949,6 +949,7 @@ static ssize_t tcm_qla2xxx_tpg_enable_store(struct config_item *item,atomic_set (&tpg->lport_tpg_enabled,0 );qlt_stop_phase1 (vha->vha_tgt.qla_tgt); +qlt_stop_phase2 (vha->vha_tgt.qla_tgt); }return count;
@@ -1111,6 +1112,7 @@ static ssize_t tcm_qla2xxx_npiv_tpg_enable_store(struct config_item *item,atomic_set (&tpg->lport_tpg_enabled,0 );qlt_stop_phase1 (vha->vha_tgt.qla_tgt); +qlt_stop_phase2 (vha->vha_tgt.qla_tgt); }return count;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 29/477 Input: edt-ft5x06 - fix get_default register write access
In reply to Greg Kroah-HartmanFrom: Marco Felsch <[email protected]>
[ Upstream commit 255cdaf73412de13608fb776101402dca68bed2b ]
Since commit b6eba86030bf ("Input: edt-ft5x06 - add offset support for ev-ft5726") offset-x and offset-y is supported. Devices using those offset parameters don't support the offset parameter so we need to add the NO_REGISTER check for edt_ft5x06_ts_get_defaults().
--- drivers/input/touchscreen/edt-ft5x06.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
drivers/input/touchscreen/edt-ft5x06.c +9 -3
@@ -938,19 +938,25 @@ static void edt_ft5x06_ts_get_defaults(struct device *dev, error =device_property_read_u32 (dev,"offset" , &val);if (!error) { -edt_ft5x06_register_write (tsdata, reg_addr->reg_offset, val); +if (reg_addr->reg_offset !=NO_REGISTER ) +edt_ft5x06_register_write (tsdata, + reg_addr->reg_offset, val); tsdata->offset = val; } error =device_property_read_u32 (dev,"offset-x" , &val);if (!error) { -edt_ft5x06_register_write (tsdata, reg_addr->reg_offset_x, val); +if (reg_addr->reg_offset_x !=NO_REGISTER ) +edt_ft5x06_register_write (tsdata, + reg_addr->reg_offset_x, val); tsdata->offset_x = val; } error =device_property_read_u32 (dev,"offset-y" , &val);if (!error) { -edt_ft5x06_register_write (tsdata, reg_addr->reg_offset_y, val); +if (reg_addr->reg_offset_y !=NO_REGISTER ) +edt_ft5x06_register_write (tsdata, + reg_addr->reg_offset_y, val); tsdata->offset_y = val; } }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 30/477 PCI: brcmstb: Fix window register offset from 4 to 8
In reply to Greg Kroah-HartmanFrom: Jim Quinlan <[email protected]>
[ Upstream commit 077a4fa92a615a4d0f86eae68d777b9dd5e5a95b ]
The outbound memory window registers were being referenced with an incorrect stride offset. This probably wasn't noticed previously as there was likely only one such window employed.
--- drivers/pci/controller/pcie-brcmstb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/pci/controller/pcie-brcmstb.c +2 -2
@@ -54,11 +54,11 @@#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LO 0x400c#define PCIE_MEM_WIN0_LO (win) \ - PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LO + ((win) * 4) + PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LO + ((win) * 8)#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_HI 0x4010#define PCIE_MEM_WIN0_HI (win) \ - PCIE_MISC_CPU_2_PCIE_MEM_WIN0_HI + ((win) * 4) + PCIE_MISC_CPU_2_PCIE_MEM_WIN0_HI + ((win) * 8)#define PCIE_MISC_RC_BAR1_CONFIG_LO 0x402c#define PCIE_MISC_RC_BAR1_CONFIG_LO_SIZE_MASK 0x1f
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 31/477 powerpc/kasan: Fix stack overflow by increasing THREAD_SHIFT
In reply to Greg Kroah-HartmanFrom: Christophe Leroy <[email protected]>
[ Upstream commit edbadaf0671072298e506074128b64e003c5812c ]
When CONFIG_KASAN is selected, the stack usage is increased.
In the same way as x86 and arm64 architectures, increase THREAD_SHIFT when CONFIG_KASAN is selected.
--- arch/powerpc/Kconfig | 1 + 1 file changed, 1 insertion(+)
arch/powerpc/Kconfig +1 -0
@@ -773,6 +773,7 @@ config THREAD_SHIFT range 13 15 default "15" if PPC_256K_PAGES default "14" if PPC64 + default "14" if KASAN default "13" help Used to define the stack size. The default is almost always what you
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 32/477 rtc: mc13xxx: fix a double-unlock issue
In reply to Greg Kroah-HartmanFrom: Qiushi Wu <[email protected]>
[ Upstream commit 8816cd726a4fee197af2d851cbe25991ae19ea14 ]
In function mc13xxx_rtc_probe, the mc13xxx_unlock() is called before rtc_register_device(). But in the error path of rtc_register_device(), the mc13xxx_unlock() is called again, which causes a double-unlock problem. Thus add a call of the function “mc13xxx_lock” in an if branch for the completion of the exception handling.
--- drivers/rtc/rtc-mc13xxx.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/rtc/rtc-mc13xxx.c +3 -1
@@ -308,8 +308,10 @@ static int __init mc13xxx_rtc_probe(struct platform_device *pdev)mc13xxx_unlock (mc13xxx); ret =rtc_register_device (priv->rtc); -if (ret) +if (ret) { +mc13xxx_lock (mc13xxx); goto err_irq_request; + }return 0 ;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 33/477 iio: bmp280: fix compensation of humidity
In reply to Greg Kroah-HartmanFrom: Andreas Klinger <[email protected]>
[ Upstream commit dee2dabc0e4115b80945fe2c91603e634f4b4686 ]
Limit the output of humidity compensation to the range between 0 and 100 percent.
Depending on the calibration parameters of the individual sensor it happens, that a humidity above 100 percent or below 0 percent is calculated, which don't make sense in terms of relative humidity.
Add a clamp to the compensation formula as described in the datasheet of the sensor in chapter 4.2.3.
Although this clamp is documented, it was never in the driver of the kernel.
It depends on the circumstances (calibration parameters, temperature, humidity) if one can see a value above 100 percent without the clamp. The writer of this patch was working with this type of sensor without noting this error. So it seems to be a rare event when this bug occures.
--- drivers/iio/pressure/bmp280-core.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/iio/pressure/bmp280-core.c +2 -0
@@ -271,6 +271,8 @@ static u32 bmp280_compensate_humidity(struct bmp280_data *data, + (s32)2097152) * calib->H2 + 8192) >> 14); var -= ((((var >>15 ) * (var >>15 )) >>7 ) * (s32 )calib->H1) >>4 ; + var =clamp_val (var,0 ,419430400 ); +return var >>12 ; };
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 34/477 f2fs: compress: let lz4 compressor handle output buffer budget properly
In reply to Greg Kroah-HartmanFrom: Chao Yu <[email protected]>
[ Upstream commit f6644143c63f2eac88973f7fea087582579b0189 ]
Commonly, in order to handle lz4 worst compress case, caller should allocate buffer with size of LZ4_compressBound(inputsize) for target compressed data storing, however in this case, if caller didn't allocate enough space, lz4 compressor still can handle output buffer budget properly, and end up compressing when left space in output buffer is not enough.
So we don't have to allocate buffer with size for worst case, then we can avoid 2 * 4KB size intermediate buffer allocation when log_cluster_size is 2, and avoid unnecessary compressing work of compressor if we can not save at least 4KB space.
--- fs/f2fs/compress.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-)
fs/f2fs/compress.c +9 -6
@@ -236,7 +236,12 @@ static int lz4_init_compress_ctx(struct compress_ctx *cc)if (!cc->private)return -ENOMEM ; - cc->clen =LZ4_compressBound (PAGE_SIZE << cc->log_cluster_size); +/* +* we do not change cc->clen to LZ4_compressBound(inputsize) to +* adapt worst compress case, because lz4 compressor can handle +* output budget properly. +*/ + cc->clen = cc->rlen -PAGE_SIZE -COMPRESS_HEADER_SIZE ;return 0 ; }
@@ -252,11 +257,9 @@ static int lz4_compress_pages(struct compress_ctx *cc) len =LZ4_compress_default (cc->rbuf, cc->cbuf->cdata, cc->rlen, cc->clen, cc->private); -if (!len) { -printk_ratelimited ("%sF2FS-fs (%s): lz4 compress failed\n" , -KERN_ERR ,F2FS_I_SB (cc->inode)->sb->s_id); -return -EIO ; - } +if (!len) +return -EAGAIN ; + cc->clen = len;return 0 ; }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 35/477 f2fs: report delalloc reserve as non-free in statfs for project quota
In reply to Greg Kroah-HartmanFrom: Konstantin Khlebnikov <[email protected]>
[ Upstream commit baaa7ebf25c78c5cb712fac16b7f549100beddd3 ]
This reserved space isn't committed yet but cannot be used for allocations. For userspace it has no difference from used space.
See the same fix in ext4 commit f06925c73942 ("ext4: report delalloc reserve as non-free in statfs for project quota").
--- fs/f2fs/super.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
fs/f2fs/super.c +2 -1
@@ -1303,7 +1303,8 @@ static int f2fs_statfs_project(struct super_block *sb, limit >>= sb->s_blocksize_bits;if (limit && buf->f_blocks > limit) { - curblock = dquot->dq_dqb.dqb_curspace >> sb->s_blocksize_bits; + curblock = (dquot->dq_dqb.dqb_curspace + + dquot->dq_dqb.dqb_rsvspace) >> sb->s_blocksize_bits; buf->f_blocks = limit; buf->f_bfree = buf->f_bavail = (buf->f_blocks > curblock) ?
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 36/477 i2c: pxa: clear all master action bits in i2c_pxa_stop_message()
In reply to Greg Kroah-HartmanFrom: Russell King <[email protected]>
[ Upstream commit e81c979f4e071d516aa27cf5a0c3939da00dc1ca ]
If we timeout during a message transfer, the control register may contain bits that cause an action to be set. Read-modify-writing the register leaving these bits set may trigger the hardware to attempt one of these actions unintentionally.
Always clear these bits when cleaning up after a message or after a timeout.
--- drivers/i2c/busses/i2c-pxa.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
drivers/i2c/busses/i2c-pxa.c +2 -4
@@ -747,11 +747,9 @@ static inline void i2c_pxa_stop_message(struct pxa_i2c *i2c) {u32 icr; -/* -* Clear the STOP and ACK flags -*/ +/* Clear the START, STOP, ACK, TB and MA flags */ icr =readl (_ICR (i2c)); - icr &= ~(ICR_STOP |ICR_ACKNAK ); + icr &= ~(ICR_START |ICR_STOP |ICR_ACKNAK |ICR_TB |ICR_MA );writel (icr,_ICR (i2c)); }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 37/477 remoteproc: qcom_q6v5_mss: map/unmap mpss segments before/after use
In reply to Greg Kroah-HartmanFrom: Sibi Sankar <[email protected]>
[ Upstream commit be050a3429f46ecf13eb2b80f299479f8bb823fb ]
The application processor accessing the mpss region when the Q6 modem is running will lead to an XPU violation. Fix this by un-mapping the mpss segments post copy during mpss authentication and coredumps.
--- drivers/remoteproc/qcom_q6v5_mss.c | 31 +++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-)
drivers/remoteproc/qcom_q6v5_mss.c +20 -11
@@ -1156,7 +1156,13 @@ static int q6v5_mpss_load(struct q6v5 *qproc) goto release_firmware; } - ptr = qproc->mpss_region + offset; + ptr =ioremap_wc (qproc->mpss_phys + offset, phdr->p_memsz); +if (!ptr) { +dev_err (qproc->dev, +"unable to map memory region: %pa+%zx-%x\n" , + &qproc->mpss_phys, offset, phdr->p_memsz); + goto release_firmware; + }if (phdr->p_filesz && phdr->p_offset < fw->size) {/* Firmware is large enough to be non-split */
@@ -1165,6 +1171,7 @@ static int q6v5_mpss_load(struct q6v5 *qproc)"failed to load segment %d from truncated file %s\n" , i, fw_name); ret = -EINVAL ; +iounmap (ptr); goto release_firmware; }
@@ -1175,6 +1182,7 @@ static int q6v5_mpss_load(struct q6v5 *qproc) ret =request_firmware (&seg_fw, fw_name, qproc->dev);if (ret) {dev_err (qproc->dev,"failed to load %s\n" , fw_name); +iounmap (ptr); goto release_firmware; }
@@ -1187,6 +1195,7 @@ static int q6v5_mpss_load(struct q6v5 *qproc)memset (ptr + phdr->p_filesz,0 , phdr->p_memsz - phdr->p_filesz); } +iounmap (ptr); size += phdr->p_memsz; code_length =readl (qproc->rmb_base +RMB_PMI_CODE_LENGTH_REG );
@@ -1236,7 +1245,8 @@ static void qcom_q6v5_dump_segment(struct rproc *rproc,int ret =0 ;struct q6v5 *qproc = rproc->priv;unsigned long mask =BIT ((unsigned long )segment->priv); -void *ptr =rproc_da_to_va (rproc, segment->da, segment->size); +int offset = segment->da - qproc->mpss_reloc; +void *ptr =NULL ;/* Unlock mba before copying segments */ if (!qproc->dump_mba_loaded) {
@@ -1250,10 +1260,15 @@ static void qcom_q6v5_dump_segment(struct rproc *rproc, } } -if (!ptr || ret) -memset (dest,0xff , segment->size); -else +if (!ret) + ptr =ioremap_wc (qproc->mpss_phys + offset, segment->size); + +if (ptr) {memcpy (dest, ptr, segment->size); +iounmap (ptr); + }else { +memset (dest,0xff , segment->size); + } qproc->dump_segment_mask |= mask;
@@ -1595,12 +1610,6 @@ static int q6v5_alloc_memory_region(struct q6v5 *qproc) qproc->mpss_phys = qproc->mpss_reloc = r.start; qproc->mpss_size =resource_size (&r); - qproc->mpss_region =devm_ioremap_wc (qproc->dev, qproc->mpss_phys, qproc->mpss_size); -if (!qproc->mpss_region) { -dev_err (qproc->dev,"unable to map memory region: %pa+%zx\n" , - &r.start, qproc->mpss_size); -return -EBUSY ; - }return 0 ; }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 38/477 clk: samsung: Mark top ISP and CAM clocks on Exynos542x as critical
In reply to Greg Kroah-HartmanFrom: Marek Szyprowski <[email protected]>
[ Upstream commit e47bd937e602bb4379546095d1bd0b9871fa60c2 ]
The TOP 'aclk*_isp', 'aclk550_cam', 'gscl_wa' and 'gscl_wb' clocks must be kept enabled all the time to allow proper access to power management control for the ISP and CAM power domains. The last two clocks, although related to GScaler device and GSCL power domain, provides also the I_WRAP_CLK signal to MIPI CSIS0/1 devices, which are a part of CAM power domain and are needed for proper power on/off sequence.
Currently there are no drivers for the devices, which are part of CAM and ISP power domains yet. This patch only fixes the race between disabling the unused power domains and disabling unused clocks, which randomly resulted in the following error during boot:
Power domain CAM disable failed
Power domain ISP disable failed
--- drivers/clk/samsung/clk-exynos5420.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-)
drivers/clk/samsung/clk-exynos5420.c +9 -7
@@ -540,7 +540,7 @@ static const struct samsung_div_clock exynos5800_div_clks[] __initconst = {static const struct samsung_gate_clock exynos5800_gate_clks[]__initconst = {GATE (CLK_ACLK550_CAM ,"aclk550_cam" ,"mout_user_aclk550_cam" , -GATE_BUS_TOP ,24 ,0 ,0 ), +GATE_BUS_TOP ,24 ,CLK_IS_CRITICAL ,0 ),GATE (CLK_ACLK432_SCALER ,"aclk432_scaler" ,"mout_user_aclk432_scaler" ,GATE_BUS_TOP ,27 ,CLK_IS_CRITICAL ,0 ), };
@@ -943,25 +943,25 @@ static const struct samsung_gate_clock exynos5x_gate_clks[] __initconst = {GATE (0 ,"aclk300_jpeg" ,"mout_user_aclk300_jpeg" ,GATE_BUS_TOP ,4 ,CLK_IGNORE_UNUSED ,0 ),GATE (0 ,"aclk333_432_isp0" ,"mout_user_aclk333_432_isp0" , -GATE_BUS_TOP ,5 ,0 ,0 ), +GATE_BUS_TOP ,5 ,CLK_IS_CRITICAL ,0 ),GATE (0 ,"aclk300_gscl" ,"mout_user_aclk300_gscl" ,GATE_BUS_TOP ,6 ,CLK_IS_CRITICAL ,0 ),GATE (0 ,"aclk333_432_gscl" ,"mout_user_aclk333_432_gscl" ,GATE_BUS_TOP ,7 ,CLK_IGNORE_UNUSED ,0 ),GATE (0 ,"aclk333_432_isp" ,"mout_user_aclk333_432_isp" , -GATE_BUS_TOP ,8 ,0 ,0 ), +GATE_BUS_TOP ,8 ,CLK_IS_CRITICAL ,0 ),GATE (CLK_PCLK66_GPIO ,"pclk66_gpio" ,"mout_user_pclk66_gpio" ,GATE_BUS_TOP ,9 ,CLK_IGNORE_UNUSED ,0 ),GATE (0 ,"aclk66_psgen" ,"mout_user_aclk66_psgen" ,GATE_BUS_TOP ,10 ,CLK_IGNORE_UNUSED ,0 ),GATE (0 ,"aclk266_isp" ,"mout_user_aclk266_isp" , -GATE_BUS_TOP ,13 ,0 ,0 ), +GATE_BUS_TOP ,13 ,CLK_IS_CRITICAL ,0 ),GATE (0 ,"aclk166" ,"mout_user_aclk166" ,GATE_BUS_TOP ,14 ,CLK_IGNORE_UNUSED ,0 ),GATE (CLK_ACLK333 ,"aclk333" ,"mout_user_aclk333" ,GATE_BUS_TOP ,15 ,CLK_IS_CRITICAL ,0 ),GATE (0 ,"aclk400_isp" ,"mout_user_aclk400_isp" , -GATE_BUS_TOP ,16 ,0 ,0 ), +GATE_BUS_TOP ,16 ,CLK_IS_CRITICAL ,0 ),GATE (0 ,"aclk400_mscl" ,"mout_user_aclk400_mscl" ,GATE_BUS_TOP ,17 ,CLK_IS_CRITICAL ,0 ), GATE(0, "aclk200_disp1", "mout_user_aclk200_disp1",
@@ -1161,8 +1161,10 @@ static const struct samsung_gate_clock exynos5x_gate_clks[] __initconst = { GATE_IP_GSCL1, 3, 0, 0),GATE (CLK_SMMU_FIMCL1 ,"smmu_fimcl1" ,"dout_gscl_blk_333" ,GATE_IP_GSCL1 ,4 ,0 ,0 ), -GATE (CLK_GSCL_WA ,"gscl_wa" ,"sclk_gscl_wa" ,GATE_IP_GSCL1 ,12 ,0 ,0 ), -GATE (CLK_GSCL_WB ,"gscl_wb" ,"sclk_gscl_wb" ,GATE_IP_GSCL1 ,13 ,0 ,0 ), +GATE (CLK_GSCL_WA ,"gscl_wa" ,"sclk_gscl_wa" ,GATE_IP_GSCL1 ,12 , +CLK_IS_CRITICAL ,0 ), +GATE (CLK_GSCL_WB ,"gscl_wb" ,"sclk_gscl_wb" ,GATE_IP_GSCL1 ,13 , +CLK_IS_CRITICAL ,0 ),GATE (CLK_SMMU_FIMCL3 ,"smmu_fimcl3," ,"dout_gscl_blk_333" ,GATE_IP_GSCL1 ,16 ,0 ,0 ), GATE(CLK_FIMC_LITE3, "fimc_lite3", "aclk333_432_gscl",
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 39/477 staging: wfx: fix output of rx_stats on big endian hosts
In reply to Greg Kroah-HartmanFrom: Jérôme Pouiller <[email protected]>
[ Upstream commit a823d6ecd4904e1a6ffb12964de88fb0bb4802f6 ]
The struct hif_rx_stats contains only little endian values. Thus, it is necessary to fix byte ordering before to use them.
--- drivers/staging/wfx/debug.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
drivers/staging/wfx/debug.c +7 -4
@@ -142,7 +142,7 @@ static int wfx_rx_stats_show(struct seq_file *seq, void *v)mutex_lock (&wdev->rx_stats_lock);seq_printf (seq,"Timestamp: %dus\n" , st->date);seq_printf (seq,"Low power clock: frequency %uHz, external %s\n" , - st->pwr_clk_freq, +le32_to_cpu (st->pwr_clk_freq), st->is_ext_pwr_clk ?"yes" :"no" ); seq_printf(seq, "Num. of frames: %d, PER (x10e4): %d, Throughput: %dKbps/s\n",
@@ -152,9 +152,12 @@ static int wfx_rx_stats_show(struct seq_file *seq, void *v)for (i =0 ; i <ARRAY_SIZE (channel_names); i++) {if (channel_names[i])seq_printf (seq,"%5s %8d %8d %8d %8d %8d\n" , - channel_names[i], st->nb_rx_by_rate[i], - st->per[i], st->rssi[i] /100 , - st->snr[i] /100 , st->cfo[i]); + channel_names[i], +le32_to_cpu (st->nb_rx_by_rate[i]), +le16_to_cpu (st->per[i]), + (s16 )le16_to_cpu (st->rssi[i]) /100 , + (s16 )le16_to_cpu (st->snr[i]) /100 , + (s16 )le16_to_cpu (st->cfo[i])); }mutex_unlock (&wdev->rx_stats_lock);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 40/477 usblp: poison URBs upon disconnect
In reply to Greg Kroah-HartmanFrom: Oliver Neukum <[email protected]>
[ Upstream commit 296a193b06120aa6ae7cf5c0d7b5e5b55968026e ]
syzkaller reported an URB that should have been killed to be active. We do not understand it, but this should fix the issue if it is real.
--- drivers/usb/class/usblp.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/usb/class/usblp.c +4 -1
@@ -468,7 +468,8 @@ static int usblp_release(struct inode *inode, struct file *file)usb_autopm_put_interface (usblp->intf);if (!usblp->present)/* finish cleanup from disconnect */ -usblp_cleanup (usblp); +usblp_cleanup (usblp);/* any URBs must be dead */ +mutex_unlock (&usblp_mutex);return 0 ; }
@@ -1375,9 +1376,11 @@ static void usblp_disconnect(struct usb_interface *intf)usblp_unlink_urbs (usblp);mutex_unlock (&usblp->mut); +usb_poison_anchored_urbs (&usblp->urbs);if (!usblp->used)usblp_cleanup (usblp); +mutex_unlock (&usblp_mutex); }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 41/477 usb: roles: Switch on role-switch uevent reporting
In reply to Greg Kroah-HartmanFrom: Bryan O'Donoghue <[email protected]>
[ Upstream commit 3e63cff384e625f09758ce8f4d01ae3033402b63 ]
Right now we don't report to user-space a role switch when doing a usb_role_switch_set_role() despite having registered the uevent callbacks.
This patch switches on the notifications allowing user-space to see role-switch change notifications and subsequently determine the current controller data-role.
example:
PFX=/devices/platform/soc/78d9000.usb/ci_hdrc.0
root@somebox# udevadm monitor -p
KERNEL[49.894994] change $PFX/usb_role/ci_hdrc.0-role-switch (usb_role) ACTION=change
DEVPATH=$PFX/usb_role/ci_hdrc.0-role-switch SUBSYSTEM=usb_role
DEVTYPE=usb_role_switch USB_ROLE_SWITCH=ci_hdrc.0-role-switch
SEQNUM=2432
--- drivers/usb/roles/class.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/usb/roles/class.c +3 -1
@@ -49,8 +49,10 @@ int usb_role_switch_set_role(struct usb_role_switch *sw, enum usb_role role)mutex_lock (&sw->lock); ret = sw->set (sw, role); -if (!ret) +if (!ret) { sw->role = role; +kobject_uevent (&sw->dev.kobj,KOBJ_CHANGE ); + }mutex_unlock (&sw->lock);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 42/477 serial: 8250: Fix max baud limit in generic 8250 port
In reply to Greg Kroah-HartmanFrom: Serge Semin <[email protected]>
[ Upstream commit 7b668c064ec33f3d687c3a413d05e355172e6c92 ]
Standard 8250 UART ports are designed in a way so they can communicate with baud rates up to 1/16 of a reference frequency. It's expected from most of the currently supported UART controllers. That's why the former version of serial8250_get_baud_rate() method called uart_get_baud_rate() with min and max baud rates passed as (port->uartclk / 16 / UART_DIV_MAX) and ((port->uartclk + tolerance) / 16) respectively. Doing otherwise, like it was suggested in commit ("serial: 8250_mtk: support big baud rate."), caused acceptance of bauds, which was higher than the normal UART controllers actually supported. As a result if some user-space program requested to set a baud greater than (uartclk / 16) it would have been permitted without truncation, but then serial8250_get_divisor(baud) (which calls uart_get_divisor() to get the reference clock divisor) would have returned a zero divisor. Setting zero divisor will cause an unpredictable effect varying from chip to chip. In case of DW APB UART the communications just stop.
Lets fix this problem by getting back the limitation of (uartclk + tolerance) / 16 maximum baud supported by the generic 8250 port. Mediatek 8250 UART ports driver developer shouldn't have touched it in the first place notably seeing he already provided a custom version of set_termios() callback in that glue-driver which took into account the extended baud rate values and accordingly updated the standard and vendor-specific divisor latch registers anyway.
--- drivers/tty/serial/8250/8250_port.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/tty/serial/8250/8250_port.c +3 -1
@@ -2615,6 +2615,8 @@ static unsigned int serial8250_get_baud_rate(struct uart_port *port,struct ktermios *termios, struct ktermios *old) { + unsigned int tolerance = port->uartclk / 100; +/* * Ask the core to calculate the divisor for us. * Allow 1% tolerance at the upper limit so uart clks marginally
@@ -2623,7 +2625,7 @@ static unsigned int serial8250_get_baud_rate(struct uart_port *port,*/ return uart_get_baud_rate (port, termios, old, port->uartclk /16 /UART_DIV_MAX , - port->uartclk); + (port->uartclk + tolerance) /16 ); }void
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 43/477 nvmem: ensure sysfs writes handle write-protect pin
In reply to Greg Kroah-HartmanFrom: Michael Auchter <[email protected]>
[ Upstream commit b96fc5416b099a0c2509ca07a80b140d34db2b9b ]
Commit 2a127da461a9 ("nvmem: add support for the write-protect pin") added support for handling write-protect pins to the nvmem core, and Commit 1c89074bf850 ("eeprom: at24: remove the write-protect pin support") retrofitted the at24 driver to use this support.
These changes broke write() on the nvmem sysfs attribute for eeproms which utilize a write-protect pin, as the write callback invokes the nvmem device's reg_write callback directly which no longer handles changing the state of the write-protect pin.
Change the read and write callbacks for the sysfs attribute to invoke nvmme_reg_read/nvmem_reg_write helpers which handle this, rather than calling reg_read/reg_write directly.
--- drivers/nvmem/core.c | 52 ++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 26 deletions(-)
drivers/nvmem/core.c +26 -26
@@ -66,6 +66,30 @@ static LIST_HEAD(nvmem_lookup_list);static BLOCKING_NOTIFIER_HEAD (nvmem_notifier); +static int nvmem_reg_read (struct nvmem_device *nvmem,unsigned int offset, +void *val,size_t bytes) +{ +if (nvmem->reg_read) +return nvmem->reg_read (nvmem->priv, offset, val, bytes); + +return -EINVAL ; +} + +static int nvmem_reg_write (struct nvmem_device *nvmem,unsigned int offset, +void *val,size_t bytes) +{ +int ret; + +if (nvmem->reg_write) { +gpiod_set_value_cansleep (nvmem->wp_gpio,0 ); + ret = nvmem->reg_write (nvmem->priv, offset, val, bytes); +gpiod_set_value_cansleep (nvmem->wp_gpio,1 ); +return ret; + } + +return -EINVAL ; +} +#ifdef CONFIG_NVMEM_SYSFS static const char *const nvmem_type_str[] = { [NVMEM_TYPE_UNKNOWN] = "Unknown",
@@ -122,7 +146,7 @@ static ssize_t bin_attr_nvmem_read(struct file *filp, struct kobject *kobj,if (!nvmem->reg_read)return -EPERM ; - rc = nvmem->reg_read (nvmem->priv, pos, buf, count); + rc =nvmem_reg_read (nvmem, pos, buf, count);if (rc)return rc;
@@ -159,7 +183,7 @@ static ssize_t bin_attr_nvmem_write(struct file *filp, struct kobject *kobj,if (!nvmem->reg_write)return -EPERM ; - rc = nvmem->reg_write (nvmem->priv, pos, buf, count); + rc =nvmem_reg_write (nvmem, pos, buf, count);if (rc)return rc;
@@ -311,30 +335,6 @@ static void nvmem_sysfs_remove_compat(struct nvmem_device *nvmem,#endif /* CONFIG_NVMEM_SYSFS */ -static int nvmem_reg_read (struct nvmem_device *nvmem,unsigned int offset, -void *val,size_t bytes) -{ -if (nvmem->reg_read) -return nvmem->reg_read (nvmem->priv, offset, val, bytes); - -return -EINVAL ; -} - -static int nvmem_reg_write (struct nvmem_device *nvmem,unsigned int offset, -void *val,size_t bytes) -{ -int ret; - -if (nvmem->reg_write) { -gpiod_set_value_cansleep (nvmem->wp_gpio,0 ); - ret = nvmem->reg_write (nvmem->priv, offset, val, bytes); -gpiod_set_value_cansleep (nvmem->wp_gpio,1 ); -return ret; - } - -return -EINVAL ; -} -static void nvmem_release (struct device *dev) {struct nvmem_device *nvmem =to_nvmem_device (dev);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 44/477 misc: fastrpc: Fix an incomplete memory release in fastrpc_rpmsg_probe()
In reply to Greg Kroah-HartmanFrom: Srinivas Kandagatla <[email protected]>
[ Upstream commit 0978de9fc7335c73934ab8fac189fb4cb3f23191 ]
fastrpc_channel_ctx is not freed if misc_register() fails, this would lead to a memory leak. Fix this leak by adding kfree in misc_register() error path.
--- drivers/misc/fastrpc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/misc/fastrpc.c +3 -1
@@ -1613,8 +1613,10 @@ static int fastrpc_rpmsg_probe(struct rpmsg_device *rpdev) domains[domain_id]); data->miscdev.fops = &fastrpc_fops; err =misc_register (&data->miscdev); -if (err) +if (err) { +kfree (data);return err; + }kref_init (&data->refcount);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 45/477 misc: fastrpc: fix potential fastrpc_invoke_ctx leak
In reply to Greg Kroah-HartmanFrom: Srinivas Kandagatla <[email protected]>
[ Upstream commit 74003385cf716f1b88cc7753ca282f5493f204a2 ]
fastrpc_invoke_ctx can have refcount of 2 in error path where rpmsg_send() fails to send invoke message. decrement the refcount properly in the error path to fix this leak.
This also fixes below static checker warning:
drivers/misc/fastrpc.c:990 fastrpc_internal_invoke()
warn: 'ctx->refcount.refcount.ref.counter' not decremented on lines: 990.
--- drivers/misc/fastrpc.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
drivers/misc/fastrpc.c +8 -1
@@ -904,6 +904,7 @@ static int fastrpc_invoke_send(struct fastrpc_session_ctx *sctx,struct fastrpc_channel_ctx *cctx;struct fastrpc_user *fl = ctx->fl;struct fastrpc_msg *msg = &ctx->msg; +int ret; cctx = fl->cctx; msg->pid = fl->tgid;
@@ -919,7 +920,13 @@ static int fastrpc_invoke_send(struct fastrpc_session_ctx *sctx, msg->size =roundup (ctx->msg_sz,PAGE_SIZE );fastrpc_context_get (ctx); -return rpmsg_send (cctx->rpdev->ept, (void *)msg,sizeof (*msg)); + ret =rpmsg_send (cctx->rpdev->ept, (void *)msg,sizeof (*msg)); + +if (ret) +fastrpc_context_put (ctx); + +return ret; + } static int fastrpc_internal_invoke(struct fastrpc_user *fl, u32 kernel,
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 46/477 dm mpath: switch paths in dm_blk_ioctl() code path
In reply to Greg Kroah-HartmanFrom: Martin Wilck <[email protected]>
[ Upstream commit 2361ae595352dec015d14292f1b539242d8446d6 ]
SCSI LUN passthrough code such as qemu's "scsi-block" device model pass every IO to the host via SG_IO ioctls. Currently, dm-multipath calls choose_pgpath() only in the block IO code path, not in the ioctl code path (unless current_pgpath is NULL). This has the effect that no path switching and thus no load balancing is done for SCSI-passthrough IO, unless the active path fails.
Fix this by using the same logic in multipath_prepare_ioctl() as in multipath_clone_and_map().
Note: The allegedly best path selection algorithm, service-time, still wouldn't work perfectly, because the io size of the current request is always set to 0. Changing that for the IO passthrough case would require the ioctl cmd and arg to be passed to dm's prepare_ioctl() method.
--- drivers/md/dm-mpath.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/md/dm-mpath.c +1 -1
@@ -1918,7 +1918,7 @@ static int multipath_prepare_ioctl(struct dm_target *ti,int r; current_pgpath =READ_ONCE (m->current_pgpath); -if (!current_pgpath) +if (!current_pgpath || !test_bit (MPATHF_QUEUE_IO , &m->flags)) current_pgpath =choose_pgpath (m,0 );if (current_pgpath) {
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 47/477 arm64: dts: armada-3720-turris-mox: forbid SDR104 on SDIO for FCC purposes
In reply to Greg Kroah-HartmanFrom: Marek Behún <[email protected]>
[ Upstream commit 7a2c36b039d2343cc29fec6102da839477b8dc60 ]
Use sdhci-caps-mask to forbid SDR104 mode on the SDIO capable SDHCI controller. Without this the device cannot pass electromagnetic interference certifications.
--- arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | 2 ++ 1 file changed, 2 insertions(+)
arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts +2 -0
@@ -179,6 +179,8 @@ marvell,pad-type = "sd"; vqmmc-supply = <&vsdio_reg>; mmc-pwrseq = <&sdhci1_pwrseq>; + /* forbid SDR104 for FCC purposes */ + sdhci-caps-mask = <0x2 0x0>; status = "okay"; };
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 48/477 arm64: dts: armada-3720-turris-mox: fix SFP binding
In reply to Greg Kroah-HartmanFrom: Marek Behún <[email protected]>
[ Upstream commit c2671acbbbd822ef077cc168991e0a7dbe2172c9 ]
The sfp compatible should be 'sff,sfp', not 'sff,sfp+'. We used patched kernel where the latter was working.
--- arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts +1 -1
@@ -95,7 +95,7 @@ }; sfp: sfp { - compatible = "sff,sfp+"; + compatible = "sff,sfp"; i2c-bus = <&i2c0>; los-gpio = <&moxtet_sfp 0 GPIO_ACTIVE_HIGH>; tx-fault-gpio = <&moxtet_sfp 1 GPIO_ACTIVE_HIGH>;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 49/477 arm64: dts: juno: Fix GIC child nodes
In reply to Greg Kroah-HartmanFrom: Andre Przywara <[email protected]>
[ Upstream commit a78aee9e434932a500db36cc6d88daeff3745e9f ]
The GIC DT nodes for the Juno boards were not fully compliant with the DT binding, which has certain expectations about child nodes and their size and address cells values.
Use smaller #address-cells and #size-cells values, as the binding requests, and adjust the reg properties accordingly.
This requires adjusting the interrupt nexus nodes as well, as one field of the interrupt-map property depends on the GIC's address-size.
--- arch/arm64/boot/dts/arm/juno-base.dtsi | 50 +++++++++++++------------- 1 file changed, 25 insertions(+), 25 deletions(-)
arch/arm64/boot/dts/arm/juno-base.dtsi +25 -25
@@ -74,35 +74,35 @@ <0x0 0x2c02f000 0 0x2000>, <0x0 0x2c04f000 0 0x2000>, <0x0 0x2c06f000 0 0x2000>; - #address-cells = <2>; + #address-cells = <1>; #interrupt-cells = <3>; - #size-cells = <2>; + #size-cells = <1>; interrupt-controller; interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_HIGH)>; - ranges = <0 0 0 0x2c1c0000 0 0x40000>; + ranges = <0 0 0x2c1c0000 0x40000>; v2m_0: v2m@0 { compatible = "arm,gic-v2m-frame"; msi-controller; - reg = <0 0 0 0x10000>; + reg = <0 0x10000>; }; v2m@10000 { compatible = "arm,gic-v2m-frame"; msi-controller; - reg = <0 0x10000 0 0x10000>; + reg = <0x10000 0x10000>; }; v2m@20000 { compatible = "arm,gic-v2m-frame"; msi-controller; - reg = <0 0x20000 0 0x10000>; + reg = <0x20000 0x10000>; }; v2m@30000 { compatible = "arm,gic-v2m-frame"; msi-controller; - reg = <0 0x30000 0 0x10000>; + reg = <0x30000 0x10000>; }; };
@@ -546,10 +546,10 @@ <0x42000000 0x40 0x00000000 0x40 0x00000000 0x1 0x00000000>; #interrupt-cells = <1>; interrupt-map-mask = <0 0 0 7>; - interrupt-map = <0 0 0 1 &gic 0 0 GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>, - <0 0 0 2 &gic 0 0 GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>, - <0 0 0 3 &gic 0 0 GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>, - <0 0 0 4 &gic 0 0 GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>; + interrupt-map = <0 0 0 1 &gic 0 GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 2 &gic 0 GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 3 &gic 0 GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 4 &gic 0 GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>; msi-parent = <&v2m_0>; status = "disabled"; iommu-map-mask = <0x0>; /* RC has no means to output PCI RID */
@@ -813,19 +813,19 @@ #interrupt-cells = <1>; interrupt-map-mask = <0 0 15>; - interrupt-map = <0 0 0 &gic 0 0 GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>, - <0 0 1 &gic 0 0 GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>, - <0 0 2 &gic 0 0 GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>, - <0 0 3 &gic 0 0 GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>, - <0 0 4 &gic 0 0 GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>, - <0 0 5 &gic 0 0 GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>, - <0 0 6 &gic 0 0 GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>, - <0 0 7 &gic 0 0 GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>, - <0 0 8 &gic 0 0 GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>, - <0 0 9 &gic 0 0 GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>, - <0 0 10 &gic 0 0 GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>, - <0 0 11 &gic 0 0 GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>, - <0 0 12 &gic 0 0 GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>; + interrupt-map = <0 0 0 &gic 0 GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>, + <0 0 1 &gic 0 GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>, + <0 0 2 &gic 0 GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>, + <0 0 3 &gic 0 GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>, + <0 0 4 &gic 0 GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>, + <0 0 5 &gic 0 GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>, + <0 0 6 &gic 0 GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>, + <0 0 7 &gic 0 GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>, + <0 0 8 &gic 0 GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>, + <0 0 9 &gic 0 GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>, + <0 0 10 &gic 0 GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>, + <0 0 11 &gic 0 GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>, + <0 0 12 &gic 0 GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>; }; site2: tlx@60000000 {
@@ -835,6 +835,6 @@ ranges = <0 0 0x60000000 0x10000000>; #interrupt-cells = <1>; interrupt-map-mask = <0 0>; - interrupt-map = <0 0 &gic 0 0 GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>; + interrupt-map = <0 0 &gic 0 GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>; }; };
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 50/477 RDMA/uverbs: Fix create WQ to use the given user handle
In reply to Greg Kroah-HartmanFrom: Yishai Hadas <[email protected]>
[ Upstream commit dbd67252869ba58d086edfa14113e10f8059b97e ]
Fix create WQ to use the given user handle, in addition dropped some duplicated code from this flow.
--- drivers/infiniband/core/uverbs_cmd.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/infiniband/core/uverbs_cmd.c +1 -2
@@ -2959,6 +2959,7 @@ static int ib_uverbs_ex_create_wq(struct uverbs_attr_bundle *attrs) wq_init_attr.event_handler = ib_uverbs_wq_event_handler; wq_init_attr.create_flags = cmd.create_flags;INIT_LIST_HEAD (&obj->uevent.event_list); + obj->uevent.uobject.user_handle = cmd.user_handle; wq = pd->device->ops.create_wq (pd, &wq_init_attr, &attrs->driver_udata);if (IS_ERR (wq)) {
@@ -2976,8 +2977,6 @@ static int ib_uverbs_ex_create_wq(struct uverbs_attr_bundle *attrs)atomic_set (&wq->usecnt,0 );atomic_inc (&pd->usecnt);atomic_inc (&cq->usecnt); - wq->uobject = obj; - obj->uevent.uobject.object = wq;memset (&resp,0 ,sizeof (resp)); resp.wq_handle = obj->uevent.uobject.id;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 51/477 RDMA/srpt: Fix disabling device management
In reply to Greg Kroah-HartmanFrom: Kamal Heib <[email protected]>
[ Upstream commit 23bbd5818e2b0d265aa1835e66f5055f63a8fa4c ]
Avoid disabling device management for devices that don't support Management datagrams (MADs) by checking if the "mad_agent" pointer is initialized before calling ib_modify_port, also fix the error flow in srpt_refresh_port() to disable device management if ib_register_mad_agent() fail.
--- drivers/infiniband/ulp/srpt/ib_srpt.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
drivers/infiniband/ulp/srpt/ib_srpt.c +6 -2
@@ -610,6 +610,11 @@ static int srpt_refresh_port(struct srpt_port *sport)dev_name (&sport->sdev->device->dev), sport->port, PTR_ERR(sport->mad_agent)); sport->mad_agent =NULL ; +memset (&port_modify,0 ,sizeof (port_modify)); + port_modify.clr_port_cap_mask =IB_PORT_DEVICE_MGMT_SUP ; +ib_modify_port (sport->sdev->device, sport->port,0 , + &port_modify); + } }
@@ -633,9 +638,8 @@ static void srpt_unregister_mad_agent(struct srpt_device *sdev)for (i =1 ; i <= sdev->device->phys_port_cnt; i++) { sport = &sdev->port[i -1 ];WARN_ON (sport->port != i); -if (ib_modify_port (sdev->device, i,0 , &port_modify) <0 ) -pr_err ("disabling MAD processing failed.\n" );if (sport->mad_agent) { +ib_modify_port (sdev->device, i,0 , &port_modify);ib_unregister_mad_agent (sport->mad_agent); sport->mad_agent =NULL ; }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 52/477 pinctrl: ocelot: Fix GPIO interrupt decoding on Jaguar2
In reply to Greg Kroah-HartmanFrom: Lars Povlsen <[email protected]>
[ Upstream commit 0b47afc65453a70bc521e251138418056f65793f ]
This fixes a problem with using the GPIO as an interrupt on Jaguar2 (and similar), as the register layout of the platforms with 64 GPIO's are pairwise, such that the original offset must be multiplied with the platform stride.
--- drivers/pinctrl/pinctrl-ocelot.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/pinctrl/pinctrl-ocelot.c +2 -1
@@ -714,11 +714,12 @@ static void ocelot_irq_handler(struct irq_desc *desc)struct irq_chip *parent_chip =irq_desc_get_chip (desc);struct gpio_chip *chip =irq_desc_get_handler_data (desc);struct ocelot_pinctrl *info =gpiochip_get_data (chip); +unsigned int id_reg =OCELOT_GPIO_INTR_IDENT * info->stride;unsigned int reg =0 , irq, i;unsigned long irqs;for (i =0 ; i < info->stride; i++) { -regmap_read (info->map,OCELOT_GPIO_INTR_IDENT +4 * i, ®); +regmap_read (info->map, id_reg +4 * i, ®);if (!reg)continue ;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 53/477 clk: renesas: cpg-mssr: Fix STBCR suspend/resume handling
In reply to Greg Kroah-HartmanFrom: Geert Uytterhoeven <[email protected]>
[ Upstream commit ace342097768e35fd41934285604fa97da1e235a ]
On SoCs with Standby Control Registers (STBCRs) instead of Module Stop Control Registers (MSTPCRs), the suspend handler saves the wrong registers, and the resume handler prints the wrong register in an error message.
Fortunately this cannot happen yet, as the suspend/resume code is used on PSCI systems only, and systems with STBCRs (RZ/A1 and RZ/A2) do not use PSCI. Still, it is better to fix this, to avoid this becoming a problem in the future.
Distinguish between STBCRs and MSTPCRs where needed. Replace the useless printing of the virtual register address in the resume error message by printing the register index.
--- drivers/clk/renesas/renesas-cpg-mssr.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
drivers/clk/renesas/renesas-cpg-mssr.c +5 -3
@@ -812,7 +812,8 @@ static int cpg_mssr_suspend_noirq(struct device *dev)/* Save module registers with bits under our control */ for (reg =0 ; reg <ARRAY_SIZE (priv->smstpcr_saved); reg++) {if (priv->smstpcr_saved[reg].mask) - priv->smstpcr_saved[reg].val = + priv->smstpcr_saved[reg].val = priv->stbyctrl ? +readb (priv->base +STBCR (reg)) :readl (priv->base +SMSTPCR (reg)); }
@@ -872,8 +873,9 @@ static int cpg_mssr_resume_noirq(struct device *dev) }if (!i) -dev_warn (dev,"Failed to enable SMSTP %p[0x%x]\n" , - priv->base +SMSTPCR (reg), oldval & mask); +dev_warn (dev,"Failed to enable %s%u[0x%x]\n" , + priv->stbyctrl ?"STB" :"SMSTP" , reg, + oldval & mask); }return 0 ;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 54/477 ASoC: SOF: Do nothing when DSP PM callbacks are not set
In reply to Greg Kroah-HartmanFrom: Daniel Baluta <[email protected]>
[ Upstream commit c26fde3b15ed41f5f452f1da727795f787833287 ]
This provides a better separation between runtime and PM sleep callbacks.
Only do nothing if given runtime flag is set and calback is not set.
With the current implementation, if PM sleep callback is set but runtime callback is not set then at runtime resume we reload the firmware even if we do not support runtime resume callback.
--- sound/soc/sof/pm.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
sound/soc/sof/pm.c +8 -2
@@ -90,7 +90,10 @@ static int sof_resume(struct device *dev, bool runtime_resume)int ret;/* do nothing if dsp resume callbacks are not set */ -if (!sof_ops (sdev)->resume || !sof_ops (sdev)->runtime_resume) +if (!runtime_resume && !sof_ops (sdev)->resume) +return 0 ; + +if (runtime_resume && !sof_ops (sdev)->runtime_resume)return 0 ;/* DSP was never successfully started, nothing to resume */
@@ -175,7 +178,10 @@ static int sof_suspend(struct device *dev, bool runtime_suspend)int ret;/* do nothing if dsp suspend callback is not set */ -if (!sof_ops (sdev)->suspend) +if (!runtime_suspend && !sof_ops (sdev)->suspend) +return 0 ; + +if (runtime_suspend && !sof_ops (sdev)->runtime_suspend)return 0 ;if (sdev->fw_state !=SOF_FW_BOOT_COMPLETE )
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 55/477 arm64: dts: fvp: Fix GIC child nodes
In reply to Greg Kroah-HartmanFrom: Andre Przywara <[email protected]>
[ Upstream commit 78631aecc52c4b2adcf611769df2ff9c67ac16d0 ]
The GIC DT nodes for the fastmodels were not fully compliant with the DT binding, which has certain expectations about child nodes and their size and address cells values.
Use smaller #address-cells and #size-cells values, as the binding requests, and adjust the reg properties accordingly.
This requires adjusting the interrupt nexus nodes as well, as one field of the interrupt-map property depends on the GIC's address-size.
Since the .dts files share interrupt nexus nodes across different interrupt controllers (GICv2 vs. GICv3), we need to use the only commonly allowed #address-size value of <1> for both.
--- .../boot/dts/arm/foundation-v8-gicv2.dtsi | 2 +- .../boot/dts/arm/foundation-v8-gicv3.dtsi | 8 +- arch/arm64/boot/dts/arm/foundation-v8.dtsi | 86 +++++++++---------- 3 files changed, 48 insertions(+), 48 deletions(-)
arch/arm64/boot/dts/arm/foundation-v8-gicv2.dtsi +1 -1
@@ -8,7 +8,7 @@ gic: interrupt-controller@2c001000 { compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic"; #interrupt-cells = <3>; - #address-cells = <2>; + #address-cells = <1>; interrupt-controller; reg = <0x0 0x2c001000 0 0x1000>, <0x0 0x2c002000 0 0x2000>,
arch/arm64/boot/dts/arm/foundation-v8-gicv3.dtsi +4 -4
@@ -8,9 +8,9 @@ gic: interrupt-controller@2f000000 { compatible = "arm,gic-v3"; #interrupt-cells = <3>; - #address-cells = <2>; - #size-cells = <2>; - ranges; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x0 0x2f000000 0x100000>; interrupt-controller; reg = <0x0 0x2f000000 0x0 0x10000>, <0x0 0x2f100000 0x0 0x200000>,
@@ -22,7 +22,7 @@ its: its@2f020000 { compatible = "arm,gic-v3-its"; msi-controller; - reg = <0x0 0x2f020000 0x0 0x20000>; + reg = <0x20000 0x20000>; }; }; };
arch/arm64/boot/dts/arm/foundation-v8.dtsi +43 -43
92 lines not on this page · raw message
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 56/477 PCI: aardvark: Dont blindly enable ASPM L0s and dont write to read-only register
In reply to Greg Kroah-HartmanFrom: Pali Rohár <[email protected]>
[ Upstream commit 90c6cb4a355e7befcb557d217d1d8b8bd5875a05 ]
Trying to change Link Status register does not have any effect as this is a read-only register. Trying to overwrite bits for Negotiated Link Width does not make sense.
In future proper change of link width can be done via Lane Count Select bits in PCIe Control 0 register.
Trying to unconditionally enable ASPM L0s via ASPM Control bits in Link Control register is wrong. There should be at least some detection if endpoint supports L0s as isn't mandatory.
Moreover ASPM Control bits in Link Control register are controlled by pcie/aspm.c code which sets it according to system ASPM settings, immediately after aardvark driver probes. So setting these bits by aardvark driver has no long running effect.
Remove code which touches ASPM L0s bits from this driver and let kernel's ASPM implementation to set ASPM state properly.
Some users are reporting issues that this code is problematic for some Intel wifi cards and removing it fixes them, see e.g.:
https://bugzilla.kernel.org/show_bug.cgi?id=196339
If problems with Intel wifi cards occur even after this commit, then pcie/aspm.c code could be modified / hooked to not enable ASPM L0s state for affected problematic cards.
--- drivers/pci/controller/pci-aardvark.c | 4 ---- 1 file changed, 4 deletions(-)
drivers/pci/controller/pci-aardvark.c +0 -4
@@ -353,10 +353,6 @@ static void advk_pcie_setup_hw(struct advk_pcie *pcie)advk_pcie_wait_for_link (pcie); - reg =PCIE_CORE_LINK_L0S_ENTRY | - (1 <<PCIE_CORE_LINK_WIDTH_SHIFT ); -advk_writel (pcie, reg,PCIE_CORE_LINK_CTRL_STAT_REG ); - reg =advk_readl (pcie,PCIE_CORE_CMD_STATUS_REG ); reg |=PCIE_CORE_CMD_MEM_ACCESS_EN | PCIE_CORE_CMD_IO_ACCESS_EN |
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 57/477 ps3disk: use the default segment boundary
In reply to Greg Kroah-HartmanFrom: Emmanuel Nicolet <[email protected]>
[ Upstream commit 720bc316690bd27dea9d71510b50f0cd698ffc32 ]
Since commit dcebd755926b ("block: use bio_for_each_bvec() to compute multi-page bvec count"), the kernel will bug_on on the PS3 because bio_split() is called with sectors == 0:
kernel BUG at block/bio.c:1853!
Oops: Exception in kernel mode, sig: 5 [#1] BE PAGE_SIZE=4K MMU=Hash PREEMPT SMP NR_CPUS=8 NUMA PS3 Modules linked in: firewire_sbp2 rtc_ps3(+) soundcore ps3_gelic(+) \ ps3rom(+) firewire_core ps3vram(+) usb_common crc_itu_t CPU: 0 PID: 97 Comm: blkid Not tainted 5.3.0-rc4 #1 NIP: c00000000027d0d0 LR: c00000000027d0b0 CTR: 0000000000000000 REGS: c00000000135ae90 TRAP: 0700 Not tainted (5.3.0-rc4) MSR: 8000000000028032 <SF,EE,IR,DR,RI> CR: 44008240 XER: 20000000 IRQMASK: 0 GPR00: c000000000289368 c00000000135b120 c00000000084a500 c000000004ff8300 GPR04: 0000000000000c00 c000000004c905e0 c000000004c905e0 000000000000ffff GPR08: 0000000000000000 0000000000000001 0000000000000000 000000000000ffff GPR12: 0000000000000000 c0000000008ef000 000000000000003e 0000000000080001 GPR16: 0000000000000100 000000000000ffff 0000000000000000 0000000000000004 GPR20: c00000000062fd7e 0000000000000001 000000000000ffff 0000000000000080 GPR24: c000000000781788 c00000000135b350 0000000000000080 c000000004c905e0 GPR28: c00000000135b348 c000000004ff8300 0000000000000000 c000000004c90000 NIP [c00000000027d0d0] .bio_split+0x28/0xac LR [c00000000027d0b0] .bio_split+0x8/0xac Call Trace: [c00000000135b120] [c00000000027d130] .bio_split+0x88/0xac (unreliable) [c00000000135b1b0] [c000000000289368] .__blk_queue_split+0x11c/0x53c [c00000000135b2d0] [c00000000028f614] .blk_mq_make_request+0x80/0x7d4 [c00000000135b3d0] [c000000000283a8c] .generic_make_request+0x118/0x294 [c00000000135b4b0] [c000000000283d34] .submit_bio+0x12c/0x174 [c00000000135b580] [c000000000205a44] .mpage_bio_submit+0x3c/0x4c [c00000000135b600] [c000000000206184] .mpage_readpages+0xa4/0x184 [c00000000135b750] [c0000000001ff8fc] .blkdev_readpages+0x24/0x38 [c00000000135b7c0] [c0000000001589f0] .read_pages+0x6c/0x1a8 [c00000000135b8b0] [c000000000158c74] .__do_page_cache_readahead+0x118/0x184 [c00000000135b9b0] [c0000000001591a8] .force_page_cache_readahead+0xe4/0xe8 [c00000000135ba50] [c00000000014fc24] .generic_file_read_iter+0x1d8/0x830 [c00000000135bb50] [c0000000001ffadc] .blkdev_read_iter+0x40/0x5c [c00000000135bbc0] [c0000000001b9e00] .new_sync_read+0x144/0x1a0 [c00000000135bcd0] [c0000000001bc454] .vfs_read+0xa0/0x124 [c00000000135bd70] [c0000000001bc7a4] .ksys_read+0x70/0xd8 [c00000000135be20] [c00000000000a524] system_call+0x5c/0x70 Instruction dump: 7fe3fb78 482e30dc 7c0802a6 482e3085 7c9e2378 f821ff71 7ca42b78 7d3e00d0 7c7d1b78 79290fe0 7cc53378 69290001 <0b090000> 81230028 7bca0020 7929ba62 [ end trace 313fec760f30aa1f ]---
The problem originates from setting the segment boundary of the request queue to -1UL. This makes get_max_segment_size() return zero when offset is zero, whatever the max segment size. The test with BLK_SEG_BOUNDARY_MASK fails and 'mask - (mask & offset) + 1' overflows to zero in the return statement.
Not setting the segment boundary and using the default value (BLK_SEG_BOUNDARY_MASK) fixes the problem.
--- drivers/block/ps3disk.c | 1 - 1 file changed, 1 deletion(-)
drivers/block/ps3disk.c +0 -1
@@ -454,7 +454,6 @@ static int ps3disk_probe(struct ps3_system_bus_device *_dev) queue->queuedata = dev;blk_queue_max_hw_sectors (queue, dev->bounce_size >>9 ); -blk_queue_segment_boundary (queue,-1UL );blk_queue_dma_alignment (queue, dev->blk_size-1 );blk_queue_logical_block_size (queue, dev->blk_size);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 58/477 arm64: dts: fvp/juno: Fix node address fields
In reply to Greg Kroah-HartmanFrom: Andre Przywara <[email protected]>
[ Upstream commit bb5cce12ac717c7462217cd493ed701d12d6dbce ]
The Arm Ltd. boards were using an outdated address convention in the DT node names, by separating the high from the low 32-bits of an address by a comma.
Remove the comma from the node name suffix to be DT spec compliant.
--- arch/arm/boot/dts/vexpress-v2m-rs1.dtsi | 10 +++++----- arch/arm64/boot/dts/arm/foundation-v8.dtsi | 4 ++-- arch/arm64/boot/dts/arm/juno-motherboard.dtsi | 6 +++--- arch/arm64/boot/dts/arm/rtsm_ve-motherboard-rs2.dtsi | 2 +- arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi | 6 +++--- 5 files changed, 14 insertions(+), 14 deletions(-)
arch/arm/boot/dts/vexpress-v2m-rs1.dtsi +5 -5
@@ -31,7 +31,7 @@ #interrupt-cells = <1>; ranges; - nor_flash: flash@0,00000000 { + nor_flash: flash@0 { compatible = "arm,vexpress-flash", "cfi-flash"; reg = <0 0x00000000 0x04000000>, <4 0x00000000 0x04000000>;
@@ -41,13 +41,13 @@ }; }; - psram@1,00000000 { + psram@100000000 { compatible = "arm,vexpress-psram", "mtd-ram"; reg = <1 0x00000000 0x02000000>; bank-width = <4>; }; - ethernet@2,02000000 { + ethernet@202000000 { compatible = "smsc,lan9118", "smsc,lan9115"; reg = <2 0x02000000 0x10000>; interrupts = <15>;
@@ -59,14 +59,14 @@ vddvario-supply = <&v2m_fixed_3v3>; }; - usb@2,03000000 { + usb@203000000 { compatible = "nxp,usb-isp1761"; reg = <2 0x03000000 0x20000>; interrupts = <16>; port1-otg; }; - iofpga@3,00000000 { + iofpga@300000000 { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>;
arch/arm64/boot/dts/arm/foundation-v8.dtsi +2 -2
@@ -151,7 +151,7 @@ <0 0 41 &gic 0 GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>, <0 0 42 &gic 0 GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>; - ethernet@2,02000000 { + ethernet@202000000 { compatible = "smsc,lan91c111"; reg = <2 0x02000000 0x10000>; interrupts = <15>;
@@ -178,7 +178,7 @@ clock-output-names = "v2m:refclk32khz"; }; - iofpga@3,00000000 { + iofpga@300000000 { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>;
arch/arm64/boot/dts/arm/juno-motherboard.dtsi +3 -3
@@ -103,7 +103,7 @@ }; }; - flash@0,00000000 { + flash@0 { /* 2 * 32MiB NOR Flash memory mounted on CS0 */ compatible = "arm,vexpress-flash", "cfi-flash"; reg = <0 0x00000000 0x04000000>;
@@ -120,7 +120,7 @@ }; }; - ethernet@2,00000000 { + ethernet@200000000 { compatible = "smsc,lan9118", "smsc,lan9115"; reg = <2 0x00000000 0x10000>; interrupts = <3>;
@@ -133,7 +133,7 @@ vddvario-supply = <&mb_fixed_3v3>; }; - iofpga@3,00000000 { + iofpga@300000000 { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>;
arch/arm64/boot/dts/arm/rtsm_ve-motherboard-rs2.dtsi +1 -1
@@ -9,7 +9,7 @@ motherboard { arm,v2m-memory-map = "rs2"; - iofpga@3,00000000 { + iofpga@300000000 { virtio-p9@140000 { compatible = "virtio,mmio"; reg = <0x140000 0x200>;
arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi +3 -3
@@ -17,14 +17,14 @@ #interrupt-cells = <1>; ranges; - flash@0,00000000 { + flash@0 { compatible = "arm,vexpress-flash", "cfi-flash"; reg = <0 0x00000000 0x04000000>, <4 0x00000000 0x04000000>; bank-width = <4>; }; - ethernet@2,02000000 { + ethernet@202000000 { compatible = "smsc,lan91c111"; reg = <2 0x02000000 0x10000>; interrupts = <15>;
@@ -51,7 +51,7 @@ clock-output-names = "v2m:refclk32khz"; }; - iofpga@3,00000000 { + iofpga@300000000 { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 59/477 vfio/pci: fix memory leaks in alloc_perm_bits()
In reply to Greg Kroah-HartmanFrom: Qian Cai <[email protected]>
[ Upstream commit 3e63b94b6274324ff2e7d8615df31586de827c4e ]
vfio_pci_disable() calls vfio_config_free() but forgets to call free_perm_bits() resulting in memory leaks,
unreferenced object 0xc000000c4db2dee0 (size 16):
comm "qemu-kvm", pid 4305, jiffies 4295020272 (age 3463.780s) hex dump (first 16 bytes):
00 00 ff 00 ff ff ff ff ff ff ff ff ff ff 00 00 ................
backtrace:
[<00000000a6a4552d>] alloc_perm_bits+0x58/0xe0 [vfio_pci]
[<00000000ac990549>] vfio_config_init+0xdf0/0x11b0 [vfio_pci]
init_pci_cap_msi_perm at drivers/vfio/pci/vfio_pci_config.c:1125
(inlined by) vfio_msi_cap_len at drivers/vfio/pci/vfio_pci_config.c:1180
(inlined by) vfio_cap_len at drivers/vfio/pci/vfio_pci_config.c:1241
(inlined by) vfio_cap_init at drivers/vfio/pci/vfio_pci_config.c:1468
(inlined by) vfio_config_init at drivers/vfio/pci/vfio_pci_config.c:1707
[<000000006db873a1>] vfio_pci_open+0x234/0x700 [vfio_pci]
[<00000000630e1906>] vfio_group_fops_unl_ioctl+0x8e0/0xb84 [vfio]
[<000000009e34c54f>] ksys_ioctl+0xd8/0x130
[<000000006577923d>] sys_ioctl+0x28/0x40
[<000000006d7b1cf2>] system_call_exception+0x114/0x1e0
[<0000000008ea7dd5>] system_call_common+0xf0/0x278
unreferenced object 0xc000000c4db2e330 (size 16):
comm "qemu-kvm", pid 4305, jiffies 4295020272 (age 3463.780s)
hex dump (first 16 bytes):
00 ff ff 00 ff ff ff ff ff ff ff ff ff ff 00 00 ................
backtrace:
[<000000004c71914f>] alloc_perm_bits+0x44/0xe0 [vfio_pci]
[<00000000ac990549>] vfio_config_init+0xdf0/0x11b0 [vfio_pci]
[<000000006db873a1>] vfio_pci_open+0x234/0x700 [vfio_pci]
[<00000000630e1906>] vfio_group_fops_unl_ioctl+0x8e0/0xb84 [vfio]
[<000000009e34c54f>] ksys_ioctl+0xd8/0x130
[<000000006577923d>] sys_ioctl+0x28/0x40
[<000000006d7b1cf2>] system_call_exception+0x114/0x1e0
[<0000000008ea7dd5>] system_call_common+0xf0/0x278--- drivers/vfio/pci/vfio_pci_config.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
drivers/vfio/pci/vfio_pci_config.c +5 -2
@@ -1728,8 +1728,11 @@ void vfio_config_free(struct vfio_pci_device *vdev) vdev->vconfig =NULL ;kfree (vdev->pci_config_map); vdev->pci_config_map =NULL ; -kfree (vdev->msi_perm); - vdev->msi_perm =NULL ; +if (vdev->msi_perm) { +free_perm_bits (vdev->msi_perm); +kfree (vdev->msi_perm); + vdev->msi_perm =NULL ; + } }/*
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 60/477 arm64: dts: qcom: sc7180: Correct the pdc interrupt ranges
In reply to Greg Kroah-HartmanFrom: Maulik Shah <[email protected]>
[ Upstream commit 7d2f29e49477aa51339e719cf73f0945c39c8a9e ]
Few PDC interrupts do not map to respective parent GIC interrupt. Fix this by correcting the pdc interrupt map.
--- arch/arm64/boot/dts/qcom/sc7180.dtsi | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
arch/arm64/boot/dts/qcom/sc7180.dtsi +1 -2
@@ -1657,8 +1657,7 @@ pdc: interrupt-controller@b220000 { compatible = "qcom,sc7180-pdc", "qcom,pdc"; reg = <0 0x0b220000 0 0x30000>; - qcom,pdc-ranges = <0 480 15>, <17 497 98>, - <119 634 4>, <124 639 1>; + qcom,pdc-ranges = <0 480 94>, <94 609 31>, <125 63 1>; #interrupt-cells = <2>; interrupt-parent = <&intc>; interrupt-controller;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 61/477 coresight: tmc: Fix TMC mode read in tmc_read_prepare_etb()
In reply to Greg Kroah-HartmanFrom: Sai Prakash Ranjan <[email protected]>
[ Upstream commit 347adb0d6385c3220dc01ab61807a5b1892901cc ]
On some QCOM platforms like SC7180, SDM845 and SM8150, reading TMC mode register without proper coresight power management can lead to async exceptions like the one in the call trace below in tmc_read_prepare_etb(). This can happen if the user tries to read the TMC etf data via device node without setting up source and the sink first. Fix this by having a check for coresight sysfs mode before reading TMC mode management register.
Kernel panic - not syncing: Asynchronous SError Interrupt CPU: 7 PID: 2605 Comm: hexdump Tainted: G S 5.4.30 #122 Call trace: dump_backtrace+0x0/0x188 show_stack+0x20/0x2c dump_stack+0xdc/0x144 panic+0x168/0x36c panic+0x0/0x36c arm64_serror_panic+0x78/0x84 do_serror+0x130/0x138 el1_error+0x84/0xf8 tmc_read_prepare_etb+0x88/0xb8 tmc_open+0x40/0xd8 misc_open+0x120/0x158 chrdev_open+0xb8/0x1a4 do_dentry_open+0x268/0x3a0 vfs_open+0x34/0x40 path_openat+0x39c/0xdf4 do_filp_open+0x90/0x10c do_sys_open+0x150/0x3e8 __arm64_compat_sys_openat+0x28/0x34 el0_svc_common+0xa8/0x160 el0_svc_compat_handler+0x2c/0x38 el0_svc_compat+0x8/0x10
--- drivers/hwtracing/coresight/coresight-tmc-etf.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
drivers/hwtracing/coresight/coresight-tmc-etf.c +8 -8
@@ -596,13 +596,6 @@ int tmc_read_prepare_etb(struct tmc_drvdata *drvdata) goto out; } -/* There is no point in reading a TMC in HW FIFO mode */ - mode =readl_relaxed (drvdata->base +TMC_MODE ); -if (mode !=TMC_MODE_CIRCULAR_BUFFER ) { - ret = -EINVAL ; - goto out; - } -/* Don't interfere if operated from Perf */ if (drvdata->mode ==CS_MODE_PERF ) { ret = -EINVAL ;
@@ -616,8 +609,15 @@ int tmc_read_prepare_etb(struct tmc_drvdata *drvdata) }/* Disable the TMC if need be */ -if (drvdata->mode ==CS_MODE_SYSFS ) +if (drvdata->mode ==CS_MODE_SYSFS ) { +/* There is no point in reading a TMC in HW FIFO mode */ + mode =readl_relaxed (drvdata->base +TMC_MODE ); +if (mode !=TMC_MODE_CIRCULAR_BUFFER ) { + ret = -EINVAL ; + goto out; + }__tmc_etb_disable_hw (drvdata); + } drvdata->reading = true; out:
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 62/477 RDMA/mlx5: Add init2init as a modify command
In reply to Greg Kroah-HartmanFrom: Aharon Landau <[email protected]>
[ Upstream commit 819f7427bafd494ef7ca4942ec6322db20722d7b ]
Missing INIT2INIT entry in the list of modify commands caused DEVX applications to be unable to modify_qp for this transition state. Add the MLX5_CMD_OP_INIT2INIT_QP opcode to the list of allowed DEVX opcodes.
--- drivers/infiniband/hw/mlx5/devx.c | 1 + 1 file changed, 1 insertion(+)
drivers/infiniband/hw/mlx5/devx.c +1 -0
@@ -819,6 +819,7 @@ static bool devx_is_obj_modify_cmd(const void *in)case MLX5_CMD_OP_SET_L2_TABLE_ENTRY :case MLX5_CMD_OP_RST2INIT_QP :case MLX5_CMD_OP_INIT2RTR_QP : +case MLX5_CMD_OP_INIT2INIT_QP :case MLX5_CMD_OP_RTR2RTS_QP :case MLX5_CMD_OP_RTS2RTS_QP :case MLX5_CMD_OP_SQERR2RTS_QP :
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 63/477 scsi: hisi_sas: Do not reset phy timer to wait for stray phy up
In reply to Greg Kroah-HartmanFrom: Luo Jiaxing <[email protected]>
[ Upstream commit e16b9ed61e078d836a0f24a82080cf29d7539c7e ]
We found out that after phy up, the hardware reports another oob interrupt but did not follow a phy up interrupt:
oob ready -> phy up -> DEV found -> oob read -> wait phy up -> timeout
We run link reset when wait phy up timeout, and it send a normal disk into reset processing. So we made some circumvention action in the code, so that this abnormal oob interrupt will not start the timer to wait for phy up.
--- drivers/scsi/hisi_sas/hisi_sas_main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/scsi/hisi_sas/hisi_sas_main.c +4 -1
@@ -898,8 +898,11 @@ void hisi_sas_phy_oob_ready(struct hisi_hba *hisi_hba, int phy_no)struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];struct device *dev = hisi_hba->dev; +dev_dbg (dev,"phy%d OOB ready\n" , phy_no); +if (phy->phy_attached) +return ; +if (!timer_pending (&phy->timer)) { -dev_dbg (dev,"phy%d OOB ready\n" , phy_no); phy->timer.expires = jiffies +HISI_SAS_WAIT_PHYUP_TIMEOUT *HZ ;add_timer (&phy->timer); }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 64/477 powerpc/book3s64/radix/tlb: Determine hugepage flush correctly
In reply to Greg Kroah-HartmanFrom: Aneesh Kumar K.V <[email protected]>
[ Upstream commit 8f53f9c0f68ab2168f637494b9e24034899c1310 ]
With a 64K page size flush with start and end:
(start, end) = (721f680d0000, 721f680e0000)
results in:
(hstart, hend) = (721f68200000, 721f68000000)
ie. hstart is above hend, which indicates no huge page flush is needed.
However the current logic incorrectly sets hflush = true in this case, because hstart != hend.
That causes us to call __tlbie_va_range() passing hstart/hend, to do a huge page flush even though we don't need to. __tlbie_va_range() will skip the actual tlbie operation for start > end. But it will still end up calling fixup_tlbie_va_range() and doing the TLB fixups in there, which is harmless but unnecessary work.
--- arch/powerpc/mm/book3s64/radix_tlb.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
arch/powerpc/mm/book3s64/radix_tlb.c +1 -3
@@ -884,9 +884,7 @@ is_local:if (IS_ENABLED (CONFIG_TRANSPARENT_HUGEPAGE )) { hstart = (start +PMD_SIZE -1 ) &PMD_MASK ; hend = end &PMD_MASK ; -if (hstart == hend) - hflush = false; -else +if (hstart < hend) hflush = true; }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 65/477 PCI: pci-bridge-emul: Fix PCIe bit conflicts
In reply to Greg Kroah-HartmanFrom: Jon Derrick <[email protected]>
[ Upstream commit c88d19181771bd189147681ef38fc1533ebeff4c ]
This patch fixes two bit conflicts in the pci-bridge-emul driver:
1. Bit 3 of Device Status (19 of Device Control) is marked as both Write-1-to-Clear and Read-Only. It should be Write-1-to-Clear. The Read-Only and Reserved bitmasks are shifted by 1 bit due to this error.
2. Bit 12 of Slot Control is marked as both Read-Write and Reserved. It should be Read-Write.
--- drivers/pci/pci-bridge-emul.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/pci/pci-bridge-emul.c +3 -3
@@ -185,8 +185,8 @@ static const struct pci_bridge_reg_behavior pcie_cap_regs_behavior[] = {* RO, the rest is reserved */ .w1c = GENMASK(19, 16), - .ro = GENMASK(20, 19), - .rsvd = GENMASK(31, 21), + .ro = GENMASK(21, 20), + .rsvd = GENMASK(31, 22), }, [PCI_EXP_LNKCAP / 4] = {
@@ -226,7 +226,7 @@ static const struct pci_bridge_reg_behavior pcie_cap_regs_behavior[] = { PCI_EXP_SLTSTA_CC | PCI_EXP_SLTSTA_DLLSC) << 16, .ro = (PCI_EXP_SLTSTA_MRLSS |PCI_EXP_SLTSTA_PDS | PCI_EXP_SLTSTA_EIS) << 16, - .rsvd = GENMASK(15, 12) | (GENMASK(15, 9) << 16), + .rsvd = GENMASK(15, 13) | (GENMASK(15, 9) << 16), }, [PCI_EXP_RTCTL / 4] = {
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 66/477 m68k/PCI: Fix a memory leak in an error handling path
In reply to Greg Kroah-HartmanFrom: Christophe JAILLET <[email protected]>
[ Upstream commit c3f4ec050f56eeab7c1f290321f9b762c95bd332 ]
If 'ioremap' fails, we must free 'bridge', as done in other error handling path bellow.
--- arch/m68k/coldfire/pci.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
arch/m68k/coldfire/pci.c +3 -1
@@ -216,8 +216,10 @@ static int __init mcf_pci_init(void)/* Keep a virtual mapping to IO/config space active */ iospace = (unsigned long )ioremap (PCI_IO_PA ,PCI_IO_SIZE ); -if (iospace ==0 ) +if (iospace ==0 ) { +pci_free_host_bridge (bridge);return -ENODEV ; + }pr_info ("Coldfire: PCI IO/config window mapped to 0x%x\n" , (u32 ) iospace);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 67/477 habanalabs: dont allow hard reset with open processes
In reply to Greg Kroah-HartmanFrom: Omer Shpigelman <[email protected]>
[ Upstream commit 36fafe87edd636292a4ed6a3af9608f2c7d0d0fb ]
When the MMU is heavily used by the engines, unmapping might take a lot of time due to a full MMU cache invalidation done as part of the unmap flow. Hence we might not be able to kill all open processes before going to hard reset the device, as it involves unmapping of all user memory. In case of a failure in killing all open processes, we should stop the hard reset flow as it might lead to a kernel crash - one thread (killing of a process) is updating MMU structures that other thread (hard reset) is freeing.
Stopping a hard reset flow leaves the device as nonoperational and the user can then initiate a hard reset via sysfs to reinitialize the device.
--- drivers/misc/habanalabs/device.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-)
drivers/misc/habanalabs/device.c +11 -6
@@ -718,7 +718,7 @@ disable_device:return rc; } -static void device_kill_open_processes (struct hl_device *hdev) +static int device_kill_open_processes (struct hl_device *hdev) {u16 pending_total, pending_cnt;struct hl_fpriv *hpriv;
@@ -771,9 +771,7 @@ static void device_kill_open_processes(struct hl_device *hdev)ssleep (1 ); } -if (!list_empty (&hdev->fpriv_list)) -dev_crit (hdev->dev, -"Going to hard reset with open user contexts\n" ); +return list_empty (&hdev->fpriv_list) ?0 : -EBUSY ; }static void device_hard_reset_pending (struct work_struct *work)
@@ -894,7 +892,12 @@ again:* process can't really exit until all its CSs are done, which * is what we do in cs rollback */ -device_kill_open_processes (hdev); + rc =device_kill_open_processes (hdev); +if (rc) { +dev_crit (hdev->dev, +"Failed to kill all open processes, stopping hard reset\n" ); + goto out_err; + }/* Flush the Event queue workers to make sure no other thread is * reading or writing to registers during the reset
@@ -1375,7 +1378,9 @@ void hl_device_fini(struct hl_device *hdev)* can't really exit until all its CSs are done, which is what we * do in cs rollback */ -device_kill_open_processes (hdev); + rc =device_kill_open_processes (hdev); +if (rc) +dev_crit (hdev->dev,"Failed to kill all open processes\n" );hl_cb_pool_fini (hdev);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 68/477 usb: cdns3: Fix runtime PM imbalance on error
In reply to Greg Kroah-HartmanFrom: Dinghao Liu <[email protected]>
[ Upstream commit e5b913496099527abe46e175e5e2c844367bded0 ]
pm_runtime_get_sync() increments the runtime PM usage counter even when it returns an error code. Thus a pairing decrement is needed on the error handling path to keep the counter balanced.
--- drivers/usb/cdns3/cdns3-ti.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/usb/cdns3/cdns3-ti.c +1 -2
@@ -138,7 +138,7 @@ static int cdns_ti_probe(struct platform_device *pdev) error =pm_runtime_get_sync (dev);if (error <0 ) {dev_err (dev,"pm_runtime_get_sync failed: %d\n" , error); - goto err_get; + goto err; }/* assert RESET */
@@ -185,7 +185,6 @@ static int cdns_ti_probe(struct platform_device *pdev) err:pm_runtime_put_sync (data->dev); -err_get:pm_runtime_disable (data->dev);return error;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 69/477 gpio: dwapb: Call acpi_gpiochip_free_interrupts() on GPIO chip de-registration
In reply to Greg Kroah-HartmanFrom: Andy Shevchenko <[email protected]>
[ Upstream commit 494a94e38dcf62543a32a4424d646ff80b4b28bd ]
Add missed acpi_gpiochip_free_interrupts() call when unregistering ports.
While at it, drop extra check to call acpi_gpiochip_request_interrupts(). There is no need to have an additional check to call acpi_gpiochip_request_interrupts(). Even without any interrupts available the registered ACPI Event handlers can be useful for debugging purposes.
--- drivers/gpio/gpio-dwapb.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-)
drivers/gpio/gpio-dwapb.c +16 -9
@@ -533,26 +533,33 @@ static int dwapb_gpio_add_port(struct dwapb_gpio *gpio,dwapb_configure_irqs (gpio, port, pp); err =gpiochip_add_data (&port->gc, port); -if (err) +if (err) {dev_err (gpio->dev,"failed to register gpiochip for port%d\n" , port->idx); -else - port->is_registered = true; +return err; + }/* Add GPIO-signaled ACPI event support */ -if (pp->has_irq) -acpi_gpiochip_request_interrupts (&port->gc); +acpi_gpiochip_request_interrupts (&port->gc); -return err; + port->is_registered = true; + +return 0 ; }static void dwapb_gpio_unregister (struct dwapb_gpio *gpio) {unsigned int m; -for (m =0 ; m < gpio->nr_ports; ++m) -if (gpio->ports[m].is_registered) -gpiochip_remove (&gpio->ports[m].gc); +for (m =0 ; m < gpio->nr_ports; ++m) { +struct dwapb_gpio_port *port = &gpio->ports[m]; + +if (!port->is_registered) +continue ; + +acpi_gpiochip_free_interrupts (&port->gc); +gpiochip_remove (&port->gc); + } } static struct dwapb_platform_data *
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 70/477 usb: gadget: core: sync interrupt before unbind the udc
In reply to Greg Kroah-HartmanFrom: Peter Chen <[email protected]>
[ Upstream commit 3c73bc52195def14165c3a7d91bdbb33b51725f5 ]
The threaded interrupt handler may still be called after the usb_gadget_disconnect is called, it causes the structures used at interrupt handler was freed before it uses, eg the usb_request. This issue usually occurs we remove the udc function during the transfer. Below is the example when doing stress test for android switch function, the EP0's request is freed by .unbind (configfs_composite_unbind -> composite_dev_cleanup), but the threaded handler accesses this request during handling setup packet request.
In fact, there is no protection between unbind the udc and udc interrupt handling, so we have to avoid the interrupt handler is occurred or scheduled during the .unbind flow.
init: Sending signal 9 to service 'adbd' (pid 18077) process group...android_work: did not send uevent (0 0 000000007bec2039)
libprocessgroup: Successfully killed process cgroup uid 0 pid 18077 in 6ms
init: Service 'adbd' (pid 18077) received signal 9
init: Sending signal 9 to service 'adbd' (pid 18077) process group...
libprocessgroup: Successfully killed process cgroup uid 0 pid 18077 in 0ms
init: processing action (init.svc.adbd=stopped) from (/init.usb.configfs.rc:14)
init: Received control message 'start' for 'adbd' from pid: 399 (/vendor/bin/hw/android.hardware.usb@1.
init: starting service 'adbd'...
read descriptors
read strings
Unable to handle kernel read from unreadable memory at virtual address 000000000000002a
android_work: sent uevent USB_STATE=CONNECTED Mem abort info:
ESR = 0x96000004
EC = 0x25: DABT (current EL), IL = 32 bits
SET = 0, FnV = 0
EA = 0, S1PTW = 0
Data abort info:
ISV = 0, ISS = 0x00000004
CM = 0, WnR = 0
user pgtable: 4k pages, 48-bit VAs, pgdp=00000000e97f1000 using random self ethernet address [000000000000002a] pgd=0000000000000000
Internal error: Oops: 96000004 [#1] PREEMPT SMP Modules linked in: CPU: 0 PID: 232 Comm: irq/68-5b110000 Not tainted 5.4.24-06075-g94a6b52b5815 #92 Hardware name: Freescale i.MX8QXP MEK (DT) pstate: 00400085 (nzcv daIf +PAN -UAO) using random host ethernet address pc : composite_setup+0x5c/0x1730 lr : android_setup+0xc0/0x148
sp : ffff80001349bba0
x29: ffff80001349bba0 x28: ffff00083a50da00
x27: ffff8000124e6000 x26: ffff800010177950
x25: 0000000000000040 x24: ffff000834e18010
x23: 0000000000000000 x22: 0000000000000000
x21: ffff00083a50da00 x20: ffff00082e75ec40
x19: 0000000000000000 x18: 0000000000000000
x17: 0000000000000000 x16: 0000000000000000
x15: 0000000000000000 x14: 0000000000000000
x13: 0000000000000000 x12: 0000000000000001
x11: ffff80001180fb58 x10: 0000000000000040
x9 : ffff8000120fc980 x8 : 0000000000000000
x7 : ffff00083f98df50 x6 : 0000000000000100
x5 : 00000307e8978431 x4 : ffff800011386788
x3 : 0000000000000000 x2 : ffff800012342000
x1 : 0000000000000000 x0 : ffff800010c6d3a0
Call trace: composite_setup+0x5c/0x1730 android_setup+0xc0/0x148 cdns3_ep0_delegate_req+0x64/0x90 cdns3_check_ep0_interrupt_proceed+0x384/0x738 cdns3_device_thread_irq_handler+0x124/0x6e0 cdns3_thread_irq+0x94/0xa0 irq_thread_fn+0x30/0xa0 irq_thread+0x150/0x248 kthread+0xfc/0x128 ret_from_fork+0x10/0x18 Code: 910e8000 f9400693 12001ed7 79400f79 (3940aa61) ---[ end trace c685db37f8773fba ]--- Kernel panic - not syncing: Fatal exception
SMP: stopping secondary CPUs
Kernel Offset: disabled
CPU features: 0x0002,20002008
Memory Limit: none
Rebooting in 5 seconds..
--- drivers/usb/gadget/udc/core.c | 2 ++ include/linux/usb/gadget.h | 2 ++ 2 files changed, 4 insertions(+)
drivers/usb/gadget/udc/core.c +2 -0
@@ -1297,6 +1297,8 @@ static void usb_gadget_remove_driver(struct usb_udc *udc)kobject_uevent (&udc->dev.kobj,KOBJ_CHANGE );usb_gadget_disconnect (udc->gadget); +if (udc->gadget->irq) +synchronize_irq (udc->gadget->irq); udc->driver->unbind (udc->gadget);usb_gadget_udc_stop (udc);
include/linux/usb/gadget.h +2 -0
@@ -373,6 +373,7 @@ struct usb_gadget_ops {* @connected: True if gadget is connected. * @lpm_capable: If the gadget max_speed is FULL or HIGH, this flag * indicates that it supports LPM as per the LPM ECN & errata. +* @irq: the interrupt number for device controller. * * Gadgets have a mostly-portable "gadget driver" implementing device * functions, handling all usb configurations and interfaces. Gadget
@@ -427,6 +428,7 @@ struct usb_gadget { unsigned deactivated:1; unsigned connected:1; unsigned lpm_capable:1; +int irq; };#define work_to_gadget (w) (container_of((w), struct usb_gadget, work))
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 71/477 powerpc/ptdump: Add _PAGE_COHERENT flag
In reply to Greg Kroah-HartmanFrom: Christophe Leroy <[email protected]>
[ Upstream commit 3af4786eb429b2df76cbd7ce3bae21467ac3e4fb ]
For platforms using shared.c (4xx, Book3e, Book3s/32), also handle the _PAGE_COHERENT flag which corresponds to the M bit of the WIMG flags.
--- arch/powerpc/mm/ptdump/shared.c | 5 +++++ 1 file changed, 5 insertions(+)
arch/powerpc/mm/ptdump/shared.c +5 -0
@@ -30,6 +30,11 @@ static const struct flag_info flag_array[] = { .val = _PAGE_PRESENT, .set = "present", .clear = " ", + }, { + .mask = _PAGE_COHERENT, + .val = _PAGE_COHERENT, + .set = "coherent", + .clear = " ", }, { .mask = _PAGE_GUARDED, .val = _PAGE_GUARDED,
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 72/477 mfd: wm8994: Fix driver operation if loaded as modules
In reply to Greg Kroah-HartmanFrom: Marek Szyprowski <[email protected]>
[ Upstream commit d4f9b5428b53dd67f49ee8deed8d4366ed6b1933 ]
WM8994 chip has built-in regulators, which might be used for chip operation. They are controlled by a separate wm8994-regulator driver, which should be loaded before this driver calls regulator_get(), because that driver also provides consumer-supply mapping for the them. If that driver is not yet loaded, regulator core substitute them with dummy regulator, what breaks chip operation, because the built-in regulators are never enabled. Fix this by annotating this driver with MODULE_SOFTDEP() "pre" dependency to "wm8994_regulator" module.
--- drivers/mfd/wm8994-core.c | 1 + 1 file changed, 1 insertion(+)
drivers/mfd/wm8994-core.c +1 -0
@@ -690,3 +690,4 @@ module_i2c_driver(wm8994_i2c_driver);MODULE_DESCRIPTION ("Core support for the WM8994 audio CODEC" );MODULE_LICENSE ("GPL" );MODULE_AUTHOR ("Mark Brown <[email protected]>" ); +MODULE_SOFTDEP ("pre: wm8994_regulator" );
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 73/477 scsi: cxgb3i: Fix some leaks in init_act_open()
In reply to Greg Kroah-HartmanFrom: Dan Carpenter <[email protected]>
[ Upstream commit b6170a49c59c27a10efed26c5a2969403e69aaba ]
There wasn't any clean up done if cxgb3_alloc_atid() failed and also the original code didn't release "csk->l2t".
--- drivers/scsi/cxgbi/cxgb3i/cxgb3i.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-)
drivers/scsi/cxgbi/cxgb3i/cxgb3i.c +14 -4
@@ -959,6 +959,7 @@ static int init_act_open(struct cxgbi_sock *csk)struct net_device *ndev = cdev->ports[csk->port_id];struct cxgbi_hba *chba = cdev->hbas[csk->port_id];struct sk_buff *skb =NULL ; +int ret;log_debug (1 <<CXGBI_DBG_TOE |1 <<CXGBI_DBG_SOCK ,"csk 0x%p,%u,0x%lx.\n" , csk, csk->state, csk->flags);
@@ -979,16 +980,16 @@ static int init_act_open(struct cxgbi_sock *csk) csk->atid =cxgb3_alloc_atid (t3dev, &t3_client, csk);if (csk->atid <0 ) {pr_err ("NO atid available.\n" ); -return -EINVAL ; + ret = -EINVAL ; + goto put_sock; }cxgbi_sock_set_flag (csk,CTPF_HAS_ATID );cxgbi_sock_get (csk); skb =alloc_wr (sizeof (struct cpl_act_open_req ),0 ,GFP_KERNEL );if (!skb) { -cxgb3_free_atid (t3dev, csk->atid); -cxgbi_sock_put (csk); -return -ENOMEM ; + ret = -ENOMEM ; + goto free_atid; } skb->sk = (struct sock *)csk;set_arp_failure_handler (skb, act_open_arp_failure);
@@ -1010,6 +1011,15 @@ static int init_act_open(struct cxgbi_sock *csk)cxgbi_sock_set_state (csk,CTP_ACTIVE_OPEN );send_act_open_req (csk, skb, csk->l2t);return 0 ; + +free_atid: +cxgb3_free_atid (t3dev, csk->atid); +put_sock: +cxgbi_sock_put (csk); +l2t_release (t3dev, csk->l2t); + csk->l2t =NULL ; + +return ret; }cxgb3_cpl_handler_func cxgb3i_cpl_handlers[NUM_CPL_CMDS ] = {
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 74/477 clk: zynqmp: fix memory leak in zynqmp_register_clocks
In reply to Greg Kroah-HartmanFrom: Quanyang Wang <[email protected]>
[ Upstream commit 58b0fb86260063f86afecaebf4056c876fff2a19 ]
This is detected by kmemleak running on zcu102 board:
unreferenced object 0xffffffc877e48180 (size 128):
comm "swapper/0", pid 1, jiffies 4294892909 (age 315.436s) hex dump (first 32 bytes):
64 70 5f 76 69 64 65 6f 5f 72 65 66 5f 64 69 76 dp_video_ref_div 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1............... backtrace:
[<00000000c9be883b>] __kmalloc_track_caller+0x200/0x380 [<00000000f02c3809>] kvasprintf+0x7c/0x100 [<00000000e51dde4d>] kasprintf+0x60/0x80 [<0000000092298b05>] zynqmp_register_clocks+0x29c/0x398 [<00000000faaff182>] zynqmp_clock_probe+0x3cc/0x4c0 [<000000005f5986f0>] platform_drv_probe+0x58/0xa8 [<00000000d5810136>] really_probe+0xd8/0x2a8 [<00000000f5b671be>] driver_probe_device+0x5c/0x100 [<0000000038f91fcf>] __device_attach_driver+0x98/0xb8 [<000000008a3f2ac2>] bus_for_each_drv+0x74/0xd8 [<000000001cb2783d>] __device_attach+0xe0/0x140 [<00000000c268031b>] device_initial_probe+0x24/0x30 [<000000006998de4b>] bus_probe_device+0x9c/0xa8 [<00000000647ae6ff>] device_add+0x3c0/0x610 [<0000000071c14bb8>] of_device_add+0x40/0x50 [<000000004bb5d132>] of_platform_device_create_pdata+0xbc/0x138
This is because that when num_nodes is larger than 1, clk_out is allocated using kasprintf for these nodes but only the last node's clk_out is freed.
--- drivers/clk/zynqmp/clkc.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-)
drivers/clk/zynqmp/clkc.c +9 -6
@@ -558,7 +558,7 @@ static struct clk_hw *zynqmp_register_clk_topology(int clk_id, char *clk_name, {int j;u32 num_nodes, clk_dev_id; -char *clk_out =NULL ; +char *clk_out[MAX_NODES ];struct clock_topology *nodes;struct clk_hw *hw =NULL ;
@@ -572,16 +572,16 @@ static struct clk_hw *zynqmp_register_clk_topology(int clk_id, char *clk_name,* Intermediate clock names are postfixed with type of clock. */ if (j != (num_nodes -1 )) { - clk_out =kasprintf (GFP_KERNEL ,"%s%s" , clk_name, + clk_out[j] =kasprintf (GFP_KERNEL ,"%s%s" , clk_name, clk_type_postfix[nodes[j].type]); }else { - clk_out =kasprintf (GFP_KERNEL ,"%s" , clk_name); + clk_out[j] =kasprintf (GFP_KERNEL ,"%s" , clk_name); }if (!clk_topology[nodes[j].type])continue ; - hw = (*clk_topology[nodes[j].type])(clk_out, clk_dev_id, + hw = (*clk_topology[nodes[j].type])(clk_out[j], clk_dev_id, parent_names, num_parents, &nodes[j]);
@@ -590,9 +590,12 @@ static struct clk_hw *zynqmp_register_clk_topology(int clk_id, char *clk_name, __func__, clk_dev_id, clk_name, PTR_ERR(hw)); - parent_names[0 ] = clk_out; + parent_names[0 ] = clk_out[j]; } -kfree (clk_out); + +for (j =0 ; j < num_nodes; j++) +kfree (clk_out[j]); +return hw; }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 75/477 scsi: lpfc: Fix lpfc_nodelist leak when processing unsolicited event
In reply to Greg Kroah-HartmanFrom: Xiyu Yang <[email protected]>
[ Upstream commit 7217e6e694da3aae6d17db8a7f7460c8d4817ebf ]
In order to create or activate a new node, lpfc_els_unsol_buffer() invokes lpfc_nlp_init() or lpfc_enable_node() or lpfc_nlp_get(), all of them will return a reference of the specified lpfc_nodelist object to "ndlp" with increased refcnt.
When lpfc_els_unsol_buffer() returns, local variable "ndlp" becomes invalid, so the refcount should be decreased to keep refcount balanced.
The reference counting issue happens in one exception handling path of lpfc_els_unsol_buffer(). When "ndlp" in DEV_LOSS, the function forgets to decrease the refcnt increased by lpfc_nlp_init() or lpfc_enable_node() or lpfc_nlp_get(), causing a refcnt leak.
Fix this issue by calling lpfc_nlp_put() when "ndlp" in DEV_LOSS.
--- drivers/scsi/lpfc/lpfc_els.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/scsi/lpfc/lpfc_els.c +2 -0
@@ -8514,6 +8514,8 @@ lpfc_els_unsol_buffer(struct lpfc_hba *phba, struct lpfc_sli_ring *pring,spin_lock_irq (shost->host_lock);if (ndlp->nlp_flag &NLP_IN_DEV_LOSS ) {spin_unlock_irq (shost->host_lock); +if (newnode) +lpfc_nlp_put (ndlp); goto dropit; }spin_unlock_irq (shost->host_lock);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 76/477 scsi: vhost: Notify TCM about the maximum sg entries supported per command
In reply to Greg Kroah-HartmanFrom: Sudhakar Panneerselvam <[email protected]>
[ Upstream commit 5ae6a6a915033bfee79e76e0c374d4f927909edc ]
vhost-scsi pre-allocates the maximum sg entries per command and if a command requires more than VHOST_SCSI_PREALLOC_SGLS entries, then that command is failed by it. This patch lets vhost communicate the max sg limit when it registers vhost_scsi_ops with TCM. With this change, TCM would report the max sg entries through "Block Limits" VPD page which will be typically queried by the SCSI initiator during device discovery. By knowing this limit, the initiator could ensure the maximum transfer length is less than or equal to what is reported by vhost-scsi.
--- drivers/vhost/scsi.c | 1 + 1 file changed, 1 insertion(+)
drivers/vhost/scsi.c +1 -0
@@ -2280,6 +2280,7 @@ static struct configfs_attribute *vhost_scsi_wwn_attrs[] = {static const struct target_core_fabric_ops vhost_scsi_ops = { .module =THIS_MODULE , .fabric_name ="vhost" , + .max_data_sg_nents =VHOST_SCSI_PREALLOC_SGLS , .tpg_get_wwn = vhost_scsi_get_fabric_wwn, .tpg_get_tag = vhost_scsi_get_tpgt, .tpg_check_demo_mode = vhost_scsi_check_true,
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 77/477 clk: clk-flexgen: fix clock-critical handling
In reply to Greg Kroah-HartmanFrom: Alain Volmat <[email protected]>
[ Upstream commit a403bbab1a73d798728d76931cab3ff0399b9560 ]
Fixes an issue leading to having all clocks following a critical clocks marked as well as criticals.
--- drivers/clk/st/clk-flexgen.c | 1 + 1 file changed, 1 insertion(+)
drivers/clk/st/clk-flexgen.c +1 -0
@@ -375,6 +375,7 @@ static void __init st_of_flexgen_setup(struct device_node *np)break ; } + flex_flags &= ~CLK_IS_CRITICAL ;of_clk_detect_critical (np, i, &flex_flags);/*
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 78/477 IB/mlx5: Fix DEVX support for MLX5_CMD_OP_INIT2INIT_QP command
In reply to Greg Kroah-HartmanFrom: Mark Zhang <[email protected]>
[ Upstream commit d246a3061528be6d852156d25c02ea69d6db7e65 ]
The commit citied in the Fixes line wasn't complete and solved only part of the problems. Update the mlx5_ib to properly support MLX5_CMD_OP_INIT2INIT_QP command in the DEVX, that is required when modify the QP tx_port_affinity.
--- drivers/infiniband/hw/mlx5/devx.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/infiniband/hw/mlx5/devx.c +4 -0
@@ -494,6 +494,10 @@ static u64 devx_get_obj_id(const void *in) obj_id =get_enc_obj_id (MLX5_CMD_OP_CREATE_QP ,MLX5_GET (rst2init_qp_in, in, qpn));break ; +case MLX5_CMD_OP_INIT2INIT_QP : + obj_id =get_enc_obj_id (MLX5_CMD_OP_CREATE_QP , +MLX5_GET (init2init_qp_in, in, qpn)); +break ;case MLX5_CMD_OP_INIT2RTR_QP : obj_id =get_enc_obj_id (MLX5_CMD_OP_CREATE_QP ,MLX5_GET (init2rtr_qp_in, in, qpn));
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 79/477 powerpc/perf/hv-24x7: Fix inconsistent output values incase multiple hv-24x7 events run
In reply to Greg Kroah-HartmanFrom: Kajol Jain <[email protected]>
[ Upstream commit b4ac18eead28611ff470d0f47a35c4e0ac080d9c ]
Commit 2b206ee6b0df ("powerpc/perf/hv-24x7: Display change in counter values")' added to print _change_ in the counter value rather then raw value for 24x7 counters. Incase of transactions, the event count is set to 0 at the beginning of the transaction. It also sets the event's prev_count to the raw value at the time of initialization. Because of setting event count to 0, we are seeing some weird behaviour, whenever we run multiple 24x7 events at a time.
For example:
command#: ./perf stat -e "{hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=0/,
hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=1/}"
-C 0 -I 1000 sleep 100
1.000121704 120 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=0/
1.000121704 5 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=1/
2.000357733 8 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=0/
2.000357733 10 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=1/
3.000495215 18,446,744,073,709,551,616 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=0/
3.000495215 18,446,744,073,709,551,616 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=1/
4.000641884 56 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=0/
4.000641884 18,446,744,073,709,551,616 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=1/
5.000791887 18,446,744,073,709,551,616 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=0/Getting these large values in case we do -I.
As we are setting event_count to 0, for interval case, overall event_count is not coming in incremental order. As we may can get new delta lesser then previous count. Because of which when we print intervals, we are getting negative value which create these large values.
This patch removes part where we set event_count to 0 in function 'h_24x7_event_read'. There won't be much impact as we do set event->hw.prev_count to the raw value at the time of initialization to print change value.
With this patch
In power9 platform
command#: ./perf stat -e "{hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=0/,
hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=1/}"
-C 0 -I 1000 sleep 100
1.000117685 93 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=0/
1.000117685 1 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=1/
2.000349331 98 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=0/
2.000349331 2 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=1/
3.000495900 131 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=0/
3.000495900 4 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=1/
4.000645920 204 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=0/
4.000645920 61 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=1/
4.284169997 22 hv_24x7/PM_MCS01_128B_RD_DISP_PORT01,chip=0/--- arch/powerpc/perf/hv-24x7.c | 10 ---------- 1 file changed, 10 deletions(-)
arch/powerpc/perf/hv-24x7.c +0 -10
@@ -1400,16 +1400,6 @@ static void h_24x7_event_read(struct perf_event *event) h24x7hw = &get_cpu_var (hv_24x7_hw); h24x7hw->events[i] = event;put_cpu_var (h24x7hw); -/* -* Clear the event count so we can compute the _change_ -* in the 24x7 raw counter value at the end of the txn. -* -* Note that we could alternatively read the 24x7 value -* now and save its value in event->hw.prev_count. But -* that would require issuing a hcall, which would then -* defeat the purpose of using the txn interface. -*/ -local64_set (&event->count,0 ); }put_cpu_var (hv_24x7_reqb);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 80/477 nfsd: Fix svc_xprt refcnt leak when setup callback client failed
In reply to Greg Kroah-HartmanFrom: Xiyu Yang <[email protected]>
[ Upstream commit a4abc6b12eb1f7a533c2e7484cfa555454ff0977 ]
nfsd4_process_cb_update() invokes svc_xprt_get(), which increases the refcount of the "c->cn_xprt".
The reference counting issue happens in one exception handling path of nfsd4_process_cb_update(). When setup callback client failed, the function forgets to decrease the refcnt increased by svc_xprt_get(), causing a refcnt leak.
Fix this issue by calling svc_xprt_put() when setup callback client failed.
--- fs/nfsd/nfs4callback.c | 2 ++ 1 file changed, 2 insertions(+)
fs/nfsd/nfs4callback.c +2 -0
@@ -1301,6 +1301,8 @@ static void nfsd4_process_cb_update(struct nfsd4_callback *cb) err =setup_callback_client (clp, &conn, ses);if (err) {nfsd4_mark_cb_down (clp, err); +if (c) +svc_xprt_put (c->cn_xprt);return ; } }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 81/477 PCI: vmd: Filter resource type bits from shadow register
In reply to Greg Kroah-HartmanFrom: Jon Derrick <[email protected]>
[ Upstream commit 3e5095eebe015d5a4d566aa5e03c8621add5f0a7 ]
Versions of VMD with the Host Physical Address shadow register use this register to calculate the bus address offset needed to do guest passthrough of the domain. This register shadows the Host Physical Address registers including the resource type bits. After calculating the offset, the extra resource type bits lead to the VMD resources being over-provisioned at the front and under-provisioned at the back.
Example:
pci 10000:80:02.0: reg 0x10: [mem 0xf801fffc-0xf803fffb 64bit]
Expected:
pci 10000:80:02.0: reg 0x10: [mem 0xf8020000-0xf803ffff 64bit]
If other devices are mapped in the over-provisioned front, it could lead to resource conflict issues with VMD or those devices.
--- drivers/pci/controller/vmd.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
drivers/pci/controller/vmd.c +4 -2
@@ -445,9 +445,11 @@ static int vmd_enable_domain(struct vmd_dev *vmd, unsigned long features)if (!membar2)return -ENOMEM ; offset[0 ] = vmd->dev->resource[VMD_MEMBAR1 ].start - -readq (membar2 +MB2_SHADOW_OFFSET ); + (readq (membar2 +MB2_SHADOW_OFFSET ) & +PCI_BASE_ADDRESS_MEM_MASK ); offset[1 ] = vmd->dev->resource[VMD_MEMBAR2 ].start - -readq (membar2 +MB2_SHADOW_OFFSET +8 ); + (readq (membar2 +MB2_SHADOW_OFFSET +8 ) & +PCI_BASE_ADDRESS_MEM_MASK );pci_iounmap (vmd->dev, membar2); } }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 82/477 RDMA/core: Fix several reference count leaks.
In reply to Greg Kroah-HartmanFrom: Qiushi Wu <[email protected]>
[ Upstream commit 0b8e125e213204508e1b3c4bdfe69713280b7abd ]
kobject_init_and_add() takes reference even when it fails. If this function returns an error, kobject_put() must be called to properly clean up the memory associated with the object. Previous
commit b8eb718348b8 ("net-sysfs: Fix reference count leak in rx|netdev_queue_add_kobject") fixed a similar problem.
--- drivers/infiniband/core/sysfs.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
drivers/infiniband/core/sysfs.c +5 -5
@@ -1058,8 +1058,7 @@ static int add_port(struct ib_core_device *coredev, int port_num) coredev->ports_kobj, "%d", port_num);if (ret) { -kfree (p); -return ret; + goto err_put; } p->gid_attr_group =kzalloc (sizeof (*p->gid_attr_group),GFP_KERNEL );
@@ -1072,8 +1071,7 @@ static int add_port(struct ib_core_device *coredev, int port_num) ret =kobject_init_and_add (&p->gid_attr_group->kobj, &gid_attr_type, &p->kobj,"gid_attrs" );if (ret) { -kfree (p->gid_attr_group); - goto err_put; + goto err_put_gid_attrs; }if (device->ops.process_mad && is_full_dev) {
@@ -1404,8 +1402,10 @@ int ib_port_register_module_stat(struct ib_device *device, u8 port_num, ret =kobject_init_and_add (kobj, ktype, &port->kobj,"%s" , name); -if (ret) +if (ret) { +kobject_put (kobj);return ret; + } }return 0 ;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 83/477 cifs: set up next DFS target before generic_ip_connect()
In reply to Greg Kroah-HartmanFrom: Paulo Alcantara <[email protected]>
[ Upstream commit aaa3aef34d3ab9499a5c7633823429f7a24e6dff ]
If we mount a very specific DFS link
\\FS0.FOO.COM\dfs\link -> \FS0\share1, \FS1\share2
where its target list contains NB names ("FS0" & "FS1") rather than FQDN ones ("FS0.FOO.COM" & "FS1.FOO.COM"), we end up connecting to \FOO\share1 but server->hostname will have "FOO.COM". The reason is because both "FS0" and "FS0.FOO.COM" resolve to same IP address and they share same TCP server connection, but "FS0.FOO.COM" was the first hostname set -- which is OK.
However, if the echo thread timeouts and we still have a good connection to "FS0", in cifs_reconnect()
rc = generic_ip_connect(server) -> success
if (rc) {
...
reconn_inval_dfs_target(server, cifs_sb, &tgt_list,
&tgt_it);
...
}
...it successfully reconnects to "FS0" server but does not set up next DFS target - which should be the same target server "\FS0\share1" - and server->hostname remains set to "FS0.FOO.COM" rather than "FS0", as reconn_inval_dfs_target() would have it set to "FS0" if called earlier.
Finally, in __smb2_reconnect(), the reconnect of tcons would fail because tcon->ses->server->hostname (FS0.FOO.COM) does not match DFS target's hostname (FS0).
Fix that by calling reconn_inval_dfs_target() before generic_ip_connect() so server->hostname will get updated correctly prior to reconnecting its tcons in __smb2_reconnect().
With "cifs: handle hostnames that resolve to same ip in failover" patch
- The above problem would not occur.
- We could save an DNS query to find out that they both resolve to the same ip address.
--- fs/cifs/connect.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
fs/cifs/connect.c +9 -9
@@ -572,26 +572,26 @@ cifs_reconnect(struct TCP_Server_Info *server)try_to_freeze ();mutex_lock (&server->srv_mutex); +#ifdef CONFIG_CIFS_DFS_UPCALL /* * Set up next DFS target server (if any) for reconnect. If DFS * feature is disabled, then we will retry last server we * connected to before. */ +reconn_inval_dfs_target (server, cifs_sb, &tgt_list, &tgt_it); +#endif + rc =reconn_set_ipaddr (server); +if (rc) { +cifs_dbg (FYI ,"%s: failed to resolve hostname: %d\n" , + __func__, rc); + } +if (cifs_rdma_enabled (server)) rc =smbd_reconnect (server);else rc =generic_ip_connect (server);if (rc) {cifs_dbg (FYI ,"reconnect error %d\n" , rc); -#ifdef CONFIG_CIFS_DFS_UPCALL -reconn_inval_dfs_target (server, cifs_sb, &tgt_list, - &tgt_it); -#endif - rc =reconn_set_ipaddr (server); -if (rc) { -cifs_dbg (FYI ,"%s: failed to resolve hostname: %d\n" , - __func__, rc); - }mutex_unlock (&server->srv_mutex);msleep (3000 ); }else {
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 84/477 ASoC: qcom: q6asm-dai: kCFI fix
In reply to Greg Kroah-HartmanFrom: John Stultz <[email protected]>
[ Upstream commit a6b675a89e51a1cdad0481b809b7840d3f86e4b5 ]
Fixes the following kCFI crash seen on db845c, caused by the function prototypes not matching the callback function prototype.
[ 82.585661] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000001 [ 82.595387] Mem abort info: [ 82.599463] ESR = 0x96000005 [ 82.602658] EC = 0x25: DABT (current EL), IL = 32 bits [ 82.608177] SET = 0, FnV = 0 [ 82.611829] EA = 0, S1PTW = 0 [ 82.615369] Data abort info: [ 82.618751] ISV = 0, ISS = 0x00000005 [ 82.622641] CM = 0, WnR = 0 [ 82.625774] user pgtable: 4k pages, 39-bit VAs, pgdp=0000000174259000 [ 82.632292] [0000000000000001] pgd=0000000000000000, pud=0000000000000000 [ 82.639167] Internal error: Oops: 96000005 [#1] PREEMPT SMP [ 82.644795] Modules linked in: hci_uart btqca xhci_plat_hcd xhci_pci_renesas xhci_pci xhci_hcd wcn36xx wcnss_ctrl wcd934x vctrl_regulator ufs_qcom syscon_reboot_e [ 82.644927] qcom_apcs_ipc_mailbox q6asm_dai q6routing q6asm q6afe_dai q6adm q6afe q6core q6dsp_common pm8941_pwrkey pm8916_wdt platform_mhu pinctrl_spmi_mpp pine [ 82.812982] CPU: 3 PID: 240 Comm: kworker/u16:4 Tainted: G W 5.6.0-rc7-mainline-00960-g0c34353d11b9-dirty #1 [ 82.824201] Hardware name: Thundercomm Dragonboard 845c (DT) [ 82.829937] Workqueue: qcom_apr_rx apr_rxwq [apr] [ 82.834698] pstate: 80c00005 (Nzcv daif +PAN +UAO) [ 82.839553] pc : __cfi_check_fail+0x4/0x1c [q6asm_dai] [ 82.844754] lr : __cfi_check+0x3a8/0x3b0 [q6asm_dai] [ 82.849767] sp : ffffffc0105f3c20 [ 82.853123] x29: ffffffc0105f3c30 x28: 0000000000000020 [ 82.858489] x27: ffffff80f4588400 x26: ffffff80f458ec94 [ 82.863854] x25: ffffff80f458ece8 x24: ffffffe3670c7000 [ 82.869220] x23: ffffff8094bb7b34 x22: ffffffe367137000 [ 82.874585] x21: bd07909b332eada6 x20: 0000000000000001 [ 82.879950] x19: ffffffe36713863c x18: ffffff80f8df4430 [ 82.885316] x17: 0000000000000001 x16: ffffffe39d15e660 [ 82.890681] x15: 0000000000000001 x14: 0000000000000027 [ 82.896047] x13: 0000000000000000 x12: ffffffe39e6465a0 [ 82.901413] x11: 0000000000000051 x10: 000000000000ffff [ 82.906779] x9 : 000ffffffe366c19 x8 : c3c5f18762d1ceef [ 82.912145] x7 : 0000000000000000 x6 : ffffffc010877698 [ 82.917511] x5 : ffffffc0105f3c00 x4 : 0000000000000000 [ 82.922877] x3 : 0000000000000000 x2 : 0000000000000001 [ 82.928243] x1 : ffffffe36713863c x0 : 0000000000000001 [ 82.933610] Call trace: [ 82.936099] __cfi_check_fail+0x4/0x1c [q6asm_dai] [ 82.940955] q6asm_srvc_callback+0x22c/0x618 [q6asm] [ 82.945973] apr_rxwq+0x1a8/0x27c [apr] [ 82.949861] process_one_work+0x2e8/0x54c [ 82.953919] worker_thread+0x27c/0x4d4 [ 82.957715] kthread+0x144/0x154 [ 82.960985] ret_from_fork+0x10/0x18 [ 82.964603] Code: a8c37bfd f85f8e5e d65f03c0 b40000a0 (39400008) [ 82.970762] ---[ end trace 410accb839617143 ]--- [ 82.975429] Kernel panic - not syncing: Fatal exception
--- sound/soc/qcom/qdsp6/q6asm-dai.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sound/soc/qcom/qdsp6/q6asm-dai.c +2 -2
@@ -176,7 +176,7 @@ static const struct snd_compr_codec_caps q6asm_compr_caps = { };static void event_handler (uint32_t opcode,uint32_t token, -uint32_t *payload,void *priv) +void *payload,void *priv) {struct q6asm_dai_rtd *prtd = priv;struct snd_pcm_substream *substream = prtd->substream;
@@ -490,7 +490,7 @@ static int q6asm_dai_hw_params(struct snd_soc_component *component, }static void compress_event_handler (uint32_t opcode,uint32_t token, -uint32_t *payload,void *priv) +void *payload,void *priv) {struct q6asm_dai_rtd *prtd = priv;struct snd_compr_stream *substream = prtd->cstream;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 85/477 powerpc/crashkernel: Take "mem=" option into account
In reply to Greg Kroah-HartmanFrom: Pingfan Liu <[email protected]>
[ Upstream commit be5470e0c285a68dc3afdea965032f5ddc8269d7 ]
'mem=" option is an easy way to put high pressure on memory during some test. Hence after applying the memory limit, instead of total mem, the actual usable memory should be considered when reserving mem for crashkernel. Otherwise the boot up may experience OOM issue.
E.g. it would reserve 4G prior to the change and 512M afterward, if passing crashkernel="2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G", and mem=5G on a 256G machine.
This issue is powerpc specific because it puts higher priority on fadump and kdump reservation than on "mem=". Referring the following code:
if (fadump_reserve_mem() == 0)
reserve_crashkernel();
...
/* Ensure that total memory size is page-aligned. */
limit = ALIGN(memory_limit ?: memblock_phys_mem_size(), PAGE_SIZE);
memblock_enforce_memory_limit(limit);While on other arches, the effect of "mem=" takes a higher priority and pass through memblock_phys_mem_size() before calling reserve_crashkernel().
--- arch/powerpc/kexec/core.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
arch/powerpc/kexec/core.c +5 -3
@@ -115,11 +115,12 @@ void machine_kexec(struct kimage *image)void __init reserve_crashkernel (void ) { -unsigned long long crash_size, crash_base; +unsigned long long crash_size, crash_base, total_mem_sz;int ret; + total_mem_sz = memory_limit ? memory_limit :memblock_phys_mem_size ();/* use common parsing */ - ret =parse_crashkernel (boot_command_line,memblock_phys_mem_size (), + ret =parse_crashkernel (boot_command_line, total_mem_sz, &crash_size, &crash_base);if (ret ==0 && crash_size >0 ) { crashk_res.start = crash_base;
@@ -178,6 +179,7 @@ void __init reserve_crashkernel(void)/* Crash kernel trumps memory limit */ if (memory_limit && memory_limit <= crashk_res.end) { memory_limit = crashk_res.end +1 ; + total_mem_sz = memory_limit;printk ("Adjusted memory limit for crashkernel, now 0x%llx\n" , memory_limit); }
@@ -186,7 +188,7 @@ void __init reserve_crashkernel(void)"for crashkernel (System RAM: %ldMB)\n" , (unsigned long )(crash_size >>20 ), (unsigned long )(crashk_res.start >>20 ), - (unsigned long)(memblock_phys_mem_size() >> 20)); + (unsigned long)(total_mem_sz >> 20));if (!memblock_is_region_memory (crashk_res.start, crash_size) ||memblock_reserve (crashk_res.start, crash_size)) {
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 86/477 pwm: img: Call pm_runtime_put() in pm_runtime_get_sync() failed case
In reply to Greg Kroah-HartmanFrom: Navid Emamdoost <[email protected]>
[ Upstream commit ca162ce98110b98e7d97b7157328d34dcfdd40a9 ]
Even in failed case of pm_runtime_get_sync(), the usage_count is incremented. In order to keep the usage_count with correct value call appropriate pm_runtime_put().
--- drivers/pwm/pwm-img.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
drivers/pwm/pwm-img.c +6 -2
@@ -129,8 +129,10 @@ static int img_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, duty =DIV_ROUND_UP (timebase * duty_ns, period_ns); ret =pm_runtime_get_sync (chip->dev); -if (ret <0 ) +if (ret <0 ) { +pm_runtime_put_autosuspend (chip->dev);return ret; + } val =img_pwm_readl (pwm_chip,PWM_CTRL_CFG ); val &= ~(PWM_CTRL_CFG_DIV_MASK <<PWM_CTRL_CFG_DIV_SHIFT (pwm->hwpwm));
@@ -331,8 +333,10 @@ static int img_pwm_remove(struct platform_device *pdev)int ret; ret =pm_runtime_get_sync (&pdev->dev); -if (ret <0 ) +if (ret <0 ) { +pm_runtime_put (&pdev->dev);return ret; + }for (i =0 ; i < pwm_chip->chip.npwm; i++) { val =img_pwm_readl (pwm_chip,PWM_CTRL_CFG );
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 87/477 sparc32: mm: Dont try to free page-table pages if ctor() fails
In reply to Greg Kroah-HartmanFrom: Will Deacon <[email protected]>
[ Upstream commit 454b0289c6b5f2c66164654b80212d15fbef7a03 ]
The pages backing page-table allocations for SRMMU are allocated via memblock as part of the "nocache" region initialisation during srmmu_paging_init() and should not be freed even if a later call to pgtable_pte_page_ctor() fails.
Remove the broken call to __free_page().
--- arch/sparc/mm/srmmu.c | 1 - 1 file changed, 1 deletion(-)
arch/sparc/mm/srmmu.c +0 -1
@@ -383,7 +383,6 @@ pgtable_t pte_alloc_one(struct mm_struct *mm)return NULL ; page =pfn_to_page (__nocache_pa (pte) >>PAGE_SHIFT );if (!pgtable_pte_page_ctor (page)) { -__free_page (page);return NULL ; }return page;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 88/477 clk: sprd: fix compile-testing
In reply to Greg Kroah-HartmanFrom: Arnd Bergmann <[email protected]>
[ Upstream commit b5f73d47f34b238221ac771b5fe4907df621d7cb ]
I got a build failure with CONFIG_ARCH_SPRD=m when the main portion of the clock driver failed to get linked into the kernel:
ERROR: modpost: "sprd_pll_sc_gate_ops" [drivers/clk/sprd/sc9863a-clk.ko] undefined!
ERROR: modpost: "sprd_pll_ops" [drivers/clk/sprd/sc9863a-clk.ko] undefined!
ERROR: modpost: "sprd_div_ops" [drivers/clk/sprd/sc9863a-clk.ko] undefined!
ERROR: modpost: "sprd_comp_ops" [drivers/clk/sprd/sc9863a-clk.ko] undefined!
ERROR: modpost: "sprd_mux_ops" [drivers/clk/sprd/sc9863a-clk.ko] undefined!
ERROR: modpost: "sprd_gate_ops" [drivers/clk/sprd/sc9863a-clk.ko] undefined!
ERROR: modpost: "sprd_sc_gate_ops" [drivers/clk/sprd/sc9863a-clk.ko] undefined!
ERROR: modpost: "sprd_clk_probe" [drivers/clk/sprd/sc9863a-clk.ko] undefined!
ERROR: modpost: "sprd_clk_regmap_init" [drivers/clk/sprd/sc9863a-clk.ko] undefined!
ERROR: modpost: "sprd_pll_ops" [drivers/clk/sprd/sc9860-clk.ko] undefined!
ERROR: modpost: "sprd_div_ops" [drivers/clk/sprd/sc9860-clk.ko] undefined!
ERROR: modpost: "sprd_mux_ops" [drivers/clk/sprd/sc9860-clk.ko] undefined!
This is a combination of two trivial bugs:
- A platform should not be 'tristate', it should be a 'bool' symbol like the other platforms, if only for consistency, and to avoid surprises like this one.
- The clk Makefile does not traverse into the sprd subdirectory if the platform is disabled but the drivers are enabled for compile-testing.
Fixing either of the two would be sufficient to address the link failure, but for correctness, both need to be changed.
--- arch/arm64/Kconfig.platforms | 2 +- drivers/clk/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
arch/arm64/Kconfig.platforms +1 -1
@@ -248,7 +248,7 @@ config ARCH_TEGRA This enables support for the NVIDIA Tegra SoC family. config ARCH_SPRD - tristate "Spreadtrum SoC platform" + bool "Spreadtrum SoC platform" help Support for Spreadtrum ARM based SoCs
drivers/clk/Makefile +1 -1
@@ -105,7 +105,7 @@ obj-$(CONFIG_CLK_SIFIVE) += sifive/ obj-$(CONFIG_ARCH_SIRF) += sirf/ obj-$(CONFIG_ARCH_SOCFPGA) += socfpga/ obj-$(CONFIG_PLAT_SPEAR) += spear/ -obj-$(CONFIG_ARCH_SPRD) += sprd/ +obj-y += sprd/ obj-$(CONFIG_ARCH_STI) += st/ obj-$(CONFIG_ARCH_STRATIX10) += socfpga/ obj-$(CONFIG_ARCH_SUNXI) += sunxi/
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 89/477 drm/nouveau: gr/gk20a: Use firmware version 0
In reply to Greg Kroah-HartmanFrom: Thierry Reding <[email protected]>
[ Upstream commit 21454fe697fde188ad6fb541f94b9838fa73ab38 ]
Tegra firmware doesn't actually use any version numbers and passing -1 causes the existing firmware binaries not to be found. Use version 0 to find the correct files.
--- drivers/gpu/drm/nouveau/nvkm/engine/gr/gk20a.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/nouveau/nvkm/engine/gr/gk20a.c +1 -1
@@ -341,7 +341,7 @@ gk20a_gr_load(struct gf100_gr *gr, int ver, const struct gf100_gr_fwif *fwif)static const struct gf100_gr_fwif gk20a_gr_fwif[] = { - {-1 , gk20a_gr_load, &gk20a_gr }, + {0 , gk20a_gr_load, &gk20a_gr }, {} };
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 90/477 crypto: omap-sham - huge buffer access fixes
In reply to Greg Kroah-HartmanFrom: Tero Kristo <[email protected]>
[ Upstream commit 6395166d7a19019d5e9574eb9ecdaf0028abb887 ]
The ctx internal buffer can only hold buflen amount of data, don't try to copy over more than that. Also, initialize the context sg pointer if we only have data in the context internal buffer, this can happen when closing a hash with certain data amounts.
--- drivers/crypto/omap-sham.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
drivers/crypto/omap-sham.c +9 -2
@@ -751,8 +751,15 @@ static int omap_sham_align_sgs(struct scatterlist *sg,int offset = rctx->offset;int bufcnt = rctx->bufcnt; -if (!sg || !sg->length || !nbytes) +if (!sg || !sg->length || !nbytes) { +if (bufcnt) { +sg_init_table (rctx->sgl,1 ); +sg_set_buf (rctx->sgl, rctx->dd->xmit_buf, bufcnt); + rctx->sg = rctx->sgl; + } +return 0 ; + } new_len = nbytes;
@@ -896,7 +903,7 @@ static int omap_sham_prepare_request(struct ahash_request *req, bool update)if (hash_later <0 ) hash_later =0 ; -if (hash_later) { +if (hash_later && hash_later <= rctx->buflen) { scatterwalk_map_and_copy(rctx->buffer, req->src, req->nbytes - hash_later,
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 91/477 yam: fix possible memory leak in yam_init_driver
In reply to Greg Kroah-HartmanFrom: Wang Hai <[email protected]>
[ Upstream commit 98749b7188affbf2900c2aab704a8853901d1139 ]
If register_netdev(dev) fails, free_netdev(dev) needs to be called, otherwise a memory leak will occur.
--- drivers/net/hamradio/yam.c | 1 + 1 file changed, 1 insertion(+)
drivers/net/hamradio/yam.c +1 -0
@@ -1133,6 +1133,7 @@ static int __init yam_init_driver(void) err =register_netdev (dev);if (err) {printk (KERN_WARNING "yam: cannot register net device %s\n" , dev->name); +free_netdev (dev); goto error; } yam_devs[i] = dev;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 92/477 net: mdiobus: Disable preemption upon u64_stats update
In reply to Greg Kroah-HartmanFrom: Ahmed S. Darwish <[email protected]>
[ Upstream commit c7e261d81783387a0502878cd229327e7c54322e ]
The u64_stats mechanism uses sequence counters to protect against 64-bit values tearing on 32-bit architectures. Updating u64_stats is thus a sequence counter write side critical section where preemption must be disabled.
For mdiobus_stats_acct(), disable preemption upon the u64_stats update. It is called from process context through mdiobus_read() and mdiobus_write().
--- drivers/net/phy/mdio_bus.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/net/phy/mdio_bus.c +2 -0
@@ -757,6 +757,7 @@ EXPORT_SYMBOL(mdiobus_scan);static void mdiobus_stats_acct (struct mdio_bus_stats *stats,bool op,int ret) { +preempt_disable ();u64_stats_update_begin (&stats->syncp);u64_stats_inc (&stats->transfers);
@@ -771,6 +772,7 @@ static void mdiobus_stats_acct(struct mdio_bus_stats *stats, bool op, int ret)u64_stats_inc (&stats->writes); out:u64_stats_update_end (&stats->syncp); +preempt_enable (); }/**
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 93/477 ASoC: meson: fix memory leak of links if allocation of ldata fails
In reply to Greg Kroah-HartmanFrom: Colin Ian King <[email protected]>
[ Upstream commit 6e801dc411329aff592fbd48fb116183d0acdb00 ]
Currently if the allocation of ldata fails the error return path does not kfree the allocated links object. Fix this by adding an error exit return path that performs the necessary kfree'ing.
Addresses-Coverity: ("Resource leak")
--- sound/soc/meson/meson-card-utils.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-)
sound/soc/meson/meson-card-utils.c +12 -5
@@ -49,19 +49,26 @@ int meson_card_reallocate_links(struct snd_soc_card *card, links =krealloc (priv->card.dai_link, num_links *sizeof (*priv->card.dai_link),GFP_KERNEL | __GFP_ZERO); +if (!links) + goto err_links; + ldata =krealloc (priv->link_data, num_links *sizeof (*priv->link_data),GFP_KERNEL | __GFP_ZERO); - -if (!links || !ldata) { -dev_err (priv->card.dev,"failed to allocate links\n" ); -return -ENOMEM ; - } +if (!ldata) + goto err_ldata; priv->card.dai_link = links; priv->link_data = ldata; priv->card.num_links = num_links;return 0 ; + +err_ldata: +kfree (links); +err_links: +dev_err (priv->card.dev,"failed to allocate links\n" ); +return -ENOMEM ; + }EXPORT_SYMBOL_GPL (meson_card_reallocate_links);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 94/477 NTB: ntb_pingpong: Choose doorbells based on port number
In reply to Greg Kroah-HartmanFrom: Logan Gunthorpe <[email protected]>
[ Upstream commit ca93c45755da98302c93abdd788fc09113baf9e0 ]
This commit fixes pingpong support for existing drivers that do not implement ntb_default_port_number() and ntb_default_peer_port_number(). This is required for hardware (like the crosslink topology of switchtec) which cannot assign reasonable port numbers to each port due to its perfect symmetry.
Instead of picking the doorbell to use based on the the index of the peer, we use the peer's port number. This is a bit clearer and easier to understand.
--- drivers/ntb/test/ntb_pingpong.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-)
drivers/ntb/test/ntb_pingpong.c +6 -8
@@ -121,15 +121,14 @@ static int pp_find_next_peer(struct pp_ctx *pp) link =ntb_link_is_up (pp->ntb,NULL ,NULL );/* Find next available peer */ -if (link & pp->nmask) { +if (link & pp->nmask) pidx =__ffs64 (link & pp->nmask); - out_db =BIT_ULL (pidx +1 ); - }else if (link & pp->pmask) { +else if (link & pp->pmask) pidx =__ffs64 (link & pp->pmask); - out_db =BIT_ULL (pidx); - }else { +else return -ENODEV ; - } + + out_db =BIT_ULL (ntb_peer_port_number (pp->ntb, pidx));spin_lock (&pp->lock); pp->out_pidx = pidx;
@@ -303,7 +302,7 @@ static void pp_init_flds(struct pp_ctx *pp)break ; } - pp->in_db =BIT_ULL (pidx); + pp->in_db =BIT_ULL (lport); pp->pmask =GENMASK_ULL (pidx,0 ) >>1 ; pp->nmask =GENMASK_ULL (pcnt -1 , pidx);
@@ -432,4 +431,3 @@ static void __exit pp_exit(void)debugfs_remove_recursive (pp_dbgfs_topdir); }module_exit (pp_exit); -
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 95/477 NTB: Fix the default port and peer numbers for legacy drivers
In reply to Greg Kroah-HartmanFrom: Logan Gunthorpe <[email protected]>
[ Upstream commit fc8b086d9dbd57458d136c4fa70ee26f832c3a2e ]
When the commit adding ntb_default_port_number() and ntb_default_peer_port_number() entered the kernel there was no users of it so it was impossible to tell what the API needed.
When a user finally landed a year later (ntb_pingpong) there were more NTB topologies were created and no consideration was considered to how other drivers had changed.
Now that there is a user it can be fixed to provide a sensible default for the legacy drivers that do not implement ntb_{peer_}port_number(). Seeing ntb_pingpong doesn't check error codes returning EINVAL was also not sensible.
Patches for ntb_pingpong and ntb_perf follow (which are broken otherwise) to support hardware that doesn't have port numbers. This is important not only to not break support with existing drivers but for the cross link topology which, due to its perfect symmetry, cannot assign unique port numbers to each side.
--- drivers/ntb/core.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-)
drivers/ntb/core.c +2 -6
@@ -214,10 +214,8 @@ int ntb_default_port_number(struct ntb_dev *ntb)case NTB_TOPO_B2B_DSD :return NTB_PORT_SEC_DSD ;default : -break ; +return 0 ; } - -return -EINVAL ; }EXPORT_SYMBOL (ntb_default_port_number);
@@ -240,10 +238,8 @@ int ntb_default_peer_port_number(struct ntb_dev *ntb, int pidx)case NTB_TOPO_B2B_DSD :return NTB_PORT_PRI_USD ;default : -break ; +return 0 ; } - -return -EINVAL ; }EXPORT_SYMBOL (ntb_default_peer_port_number);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 96/477 mksysmap: Fix the mismatch of .L symbols in System.map
In reply to Greg Kroah-HartmanFrom: ashimida <[email protected]>
[ Upstream commit 72d24accf02add25e08733f0ecc93cf10fcbd88c ]
When System.map was generated, the kernel used mksysmap to filter the kernel symbols, but all the symbols with the second letter 'L' in the kernel were filtered out, not just the symbols starting with 'dot + L'.
For example:
ashimida@ubuntu:~/linux$ cat System.map |grep ' .L' ashimida@ubuntu:~/linux$ nm -n vmlinux |grep ' .L' ffff0000088028e0 t bLength_show ...... ffff0000092e0408 b PLLP_OUTC_lock ffff0000092e0410 b PLLP_OUTA_lock
The original intent should be to filter out all local symbols starting with '.L', so the dot should be escaped.
--- scripts/mksysmap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
scripts/mksysmap +1 -1
@@ -41,4 +41,4 @@ # so we just ignore them to let readprofile continue to work. # (At least sparc64 has __crc_ in the middle). -$NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)\|\( .L\)' > $2 +$NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)\|\( \.L\)' > $2
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 97/477 apparmor: fix introspection of of task mode for unconfined tasks
In reply to Greg Kroah-HartmanFrom: John Johansen <[email protected]>
[ Upstream commit dd2569fbb053719f7df7ef8fdbb45cf47156a701 ]
Fix two issues with introspecting the task mode.
1. If a task is attached to a unconfined profile that is not the ns->unconfined profile then. Mode the mode is always reported as -
$ ps -Z
LABEL PID TTY TIME CMD
unconfined 1287 pts/0 00:00:01 bash
test (-) 1892 pts/0 00:00:00 psinstead of the correct value of (unconfined) as shown below
$ ps -Z
LABEL PID TTY TIME CMD
unconfined 2483 pts/0 00:00:01 bash
test (unconfined) 3591 pts/0 00:00:00 ps2. if a task is confined by a stack of profiles that are unconfined the output of label mode is again the incorrect value of (-) like above, instead of (unconfined). This is because the visibile profile count increment is skipped by the special casing of unconfined.
--- security/apparmor/label.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
security/apparmor/label.c +2 -2
@@ -1531,13 +1531,13 @@ static const char *label_modename(struct aa_ns *ns, struct aa_label *label,label_for_each (i, label, profile) {if (aa_ns_visible (ns, profile->ns, flags &FLAG_VIEW_SUBNS )) { -if (profile->mode ==APPARMOR_UNCONFINED ) + count++; +if (profile == profile->ns->unconfined)/* special case unconfined so stacks with * unconfined don't report as mixed. ie. * profile_foo//&:ns1:unconfined (mixed) */ continue ; - count++;if (mode ==-1 ) mode = profile->mode;else if (mode != profile->mode)
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 98/477 net: dsa: lantiq_gswip: fix and improve the unsupported interface error
In reply to Greg Kroah-HartmanFrom: Martin Blumenstingl <[email protected]>
[ Upstream commit 4d3da2d8d91f66988a829a18a0ce59945e8ae4fb ]
While trying to use the lantiq_gswip driver on one of my boards I made a mistake when specifying the phy-mode (because the out-of-tree driver wants phy-mode "gmii" or "mii" for the internal PHYs). In this case the following error is printed multiple times:
Unsupported interface: 3
While it gives at least a hint at what may be wrong it is not very user friendly. Print the human readable phy-mode and also which port is configured incorrectly (this hardware supports ports 0..6) to improve the cases where someone made a mistake.
--- drivers/net/dsa/lantiq_gswip.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/net/dsa/lantiq_gswip.c +2 -1
@@ -1452,7 +1452,8 @@ static void gswip_phylink_validate(struct dsa_switch *ds, int port, unsupported:bitmap_zero (supported, __ETHTOOL_LINK_MODE_MASK_NBITS); -dev_err (ds->dev,"Unsupported interface: %d\n" , state->interface); +dev_err (ds->dev,"Unsupported interface '%s' for port %d\n" , +phy_modes (state->interface), port);return ; }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 99/477 apparmor: check/put label on apparmor_sk_clone_security()
In reply to Greg Kroah-HartmanFrom: Mauricio Faria de Oliveira <[email protected]>
[ Upstream commit 3b646abc5bc6c0df649daea4c2c976bd4d47e4c8 ]
Currently apparmor_sk_clone_security() does not check for existing label/peer in the 'new' struct sock; it just overwrites it, if any (with another reference to the label of the source sock.)
static void apparmor_sk_clone_security(const struct sock *sk,
struct sock *newsk)
{
struct aa_sk_ctx *ctx = SK_CTX(sk);
struct aa_sk_ctx *new = SK_CTX(newsk);
new->label = aa_get_label(ctx->label);
new->peer = aa_get_label(ctx->peer);
}This might leak label references, which might overflow under load. Thus, check for and put labels, to prevent such errors.
Note this is similarly done on:
static int apparmor_socket_post_create(struct socket *sock, ...)
...
if (sock->sk) {
struct aa_sk_ctx *ctx = SK_CTX(sock->sk);
aa_put_label(ctx->label);
ctx->label = aa_get_label(label);
}
...Context:
-------
The label reference count leak is observed if apparmor_sock_graft() is called previously: this sets the 'ctx->label' field by getting a reference to the current label (later overwritten, without put.)
static void apparmor_sock_graft(struct sock *sk, ...)
{
struct aa_sk_ctx *ctx = SK_CTX(sk);
if (!ctx->label)
ctx->label = aa_get_current_label();
}And that is the case on crypto/af_alg.c:af_alg_accept():
int af_alg_accept(struct sock *sk, struct socket *newsock, ...)
...
struct sock *sk2;
...
sk2 = sk_alloc(...);
...
security_sock_graft(sk2, newsock);
security_sk_clone(sk, sk2);
...Apparently both calls are done on their own right, especially for other LSMs, being introduced in 2010/2014, before apparmor socket mediation in 2017 (see commits [1,2,3,4]).
So, it looks OK there! Let's fix the reference leak in apparmor.
Test-case:
---------
Exercise that code path enough to overflow label reference count.
$ cat aa-refcnt-af_alg.c
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <linux/if_alg.h> int main() {
int sockfd;
struct sockaddr_alg sa;
/* Setup the crypto API socket */
sockfd = socket(AF_ALG, SOCK_SEQPACKET, 0);
if (sockfd < 0) {
perror("socket");
return 1;
}
memset(&sa, 0, sizeof(sa));
sa.salg_family = AF_ALG;
strcpy((char *) sa.salg_type, "rng");
strcpy((char *) sa.salg_name, "stdrng");
if (bind(sockfd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
perror("bind");
return 1;
}
/* Accept a "connection" and close it; repeat. */
while (!close(accept(sockfd, NULL, 0)));
return 0;
}
$ gcc -o aa-refcnt-af_alg aa-refcnt-af_alg.c
$ ./aa-refcnt-af_alg
<a few hours later>
[ 9928.475953] refcount_t overflow at apparmor_sk_clone_security+0x37/0x70 in aa-refcnt-af_alg[1322], uid/euid: 1000/1000
...
[ 9928.507443] RIP: 0010:apparmor_sk_clone_security+0x37/0x70
...
[ 9928.514286] security_sk_clone+0x33/0x50
[ 9928.514807] af_alg_accept+0x81/0x1c0 [af_alg]
[ 9928.516091] alg_accept+0x15/0x20 [af_alg]
[ 9928.516682] SYSC_accept4+0xff/0x210
[ 9928.519609] SyS_accept+0x10/0x20
[ 9928.520190] do_syscall_64+0x73/0x130
[ 9928.520808] entry_SYSCALL_64_after_hwframe+0x3d/0xa2Note that other messages may be seen, not just overflow, depending on the value being incremented by kref_get(); on another run:
[ 7273.182666] refcount_t: saturated; leaking memory.
...
[ 7273.185789] refcount_t: underflow; use-after-free.Kprobes:
-------
Using kprobe events to monitor sk -> sk_security -> label -> count (kref):
Original v5.7 (one reference leak every iteration)
... (af_alg_accept+0x0/0x1c0) label=0xffff8a0f36c25eb0 label_refcnt=0x11fd2 ... (af_alg_release_parent+0x0/0xd0) label=0xffff8a0f36c25eb0 label_refcnt=0x11fd4 ... (af_alg_accept+0x0/0x1c0) label=0xffff8a0f36c25eb0 label_refcnt=0x11fd3 ... (af_alg_release_parent+0x0/0xd0) label=0xffff8a0f36c25eb0 label_refcnt=0x11fd5 ... (af_alg_accept+0x0/0x1c0) label=0xffff8a0f36c25eb0 label_refcnt=0x11fd4 ... (af_alg_release_parent+0x0/0xd0) label=0xffff8a0f36c25eb0 label_refcnt=0x11fd6
Patched v5.7 (zero reference leak per iteration)
... (af_alg_accept+0x0/0x1c0) label=0xffff9ff376c25eb0 label_refcnt=0x593 ... (af_alg_release_parent+0x0/0xd0) label=0xffff9ff376c25eb0 label_refcnt=0x594 ... (af_alg_accept+0x0/0x1c0) label=0xffff9ff376c25eb0 label_refcnt=0x593 ... (af_alg_release_parent+0x0/0xd0) label=0xffff9ff376c25eb0 label_refcnt=0x594 ... (af_alg_accept+0x0/0x1c0) label=0xffff9ff376c25eb0 label_refcnt=0x593 ... (af_alg_release_parent+0x0/0xd0) label=0xffff9ff376c25eb0 label_refcnt=0x594
Commits:
-------
[1] commit 507cad355fc9 ("crypto: af_alg - Make sure sk_security is initialized on accept()ed sockets")
[2] commit 4c63f83c2c2e ("crypto: af_alg - properly label AF_ALG socket")
[3] commit 2acce6aa9f65 ("Networking") a.k.a ("crypto: af_alg - Avoid sock_graft call warning)
[4] commit 56974a6fcfef ("apparmor: add base infastructure for socket mediation")
--- security/apparmor/lsm.c | 5 +++++ 1 file changed, 5 insertions(+)
security/apparmor/lsm.c +5 -0
@@ -804,7 +804,12 @@ static void apparmor_sk_clone_security(const struct sock *sk,struct aa_sk_ctx *ctx =SK_CTX (sk);struct aa_sk_ctx *new =SK_CTX (newsk); +if (new->label) +aa_put_label (new->label); new->label =aa_get_label (ctx->label); + +if (new->peer) +aa_put_label (new->peer); new->peer =aa_get_label (ctx->peer); }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 100/477 f2fs: handle readonly filesystem in f2fs_ioc_shutdown()
In reply to Greg Kroah-HartmanFrom: Chao Yu <[email protected]>
[ Upstream commit 8626441f05dc45a2f4693ee6863d02456ce39e60 ]
If mountpoint is readonly, we should allow shutdowning filesystem successfully, this fixes issue found by generic/599 testcase of xfstest.
--- fs/f2fs/file.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
fs/f2fs/file.c +8 -1
@@ -2219,8 +2219,15 @@ static int f2fs_ioc_shutdown(struct file *filp, unsigned long arg)if (in !=F2FS_GOING_DOWN_FULLSYNC ) { ret =mnt_want_write_file (filp); -if (ret) +if (ret) { +if (ret == -EROFS ) { + ret =0 ; +f2fs_stop_checkpoint (sbi, false); +set_sbi_flag (sbi,SBI_IS_SHUTDOWN ); +trace_f2fs_shutdown (sbi, in, ret); + }return ret; + } }switch (in) {
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 101/477 xfs: Add the missed xfs_perag_put() for xfs_ifree_cluster()
In reply to Greg Kroah-HartmanFrom: Chuhong Yuan <[email protected]>
[ Upstream commit 8cc0072469723459dc6bd7beff81b2b3149f4cf4 ]
xfs_ifree_cluster() calls xfs_perag_get() at the beginning, but forgets to call xfs_perag_put() in one failed path.
Add the missed function call to fix it.
--- fs/xfs/xfs_inode.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
fs/xfs/xfs_inode.c +3 -1
@@ -2639,8 +2639,10 @@ xfs_ifree_cluster( error =xfs_trans_get_buf (tp, mp->m_ddev_targp, blkno, mp->m_bsize * igeo->blocks_per_cluster,XBF_UNMAPPED , &bp); -if (error) +if (error) { +xfs_perag_put (pag);return error; + }/* * This buffer may not have been correctly initialised as we
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 102/477 ASoC: meson: add missing free_irq() in error path
In reply to Greg Kroah-HartmanFrom: Pavel Machek (CIP) <[email protected]>
[ Upstream commit 3b8a299a58b2afce464ae11324b59dcf0f1d10a7 ]
free_irq() is missing in case of error, fix that.
--- sound/soc/meson/axg-fifo.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
sound/soc/meson/axg-fifo.c +8 -2
@@ -249,7 +249,7 @@ int axg_fifo_pcm_open(struct snd_soc_component *component,/* Enable pclk to access registers and clock the fifo ip */ ret =clk_prepare_enable (fifo->pclk);if (ret) -return ret; + goto free_irq;/* Setup status2 so it reports the memory pointer */ regmap_update_bits(fifo->map, FIFO_CTRL1,
@@ -269,8 +269,14 @@ int axg_fifo_pcm_open(struct snd_soc_component *component,/* Take memory arbitror out of reset */ ret =reset_control_deassert (fifo->arb);if (ret) -clk_disable_unprepare (fifo->pclk); + goto free_clk; + +return 0 ; +free_clk: +clk_disable_unprepare (fifo->pclk); +free_irq: +free_irq (fifo->irq, ss);return ret; }EXPORT_SYMBOL_GPL (axg_fifo_pcm_open);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 103/477 bpf, sockhash: Fix memory leak when unlinking sockets in sock_hash_free
In reply to Greg Kroah-HartmanFrom: Jakub Sitnicki <[email protected]>
[ Upstream commit 33a7c831565c43a7ee2f38c7df4c4a40e1dfdfed ]
When sockhash gets destroyed while sockets are still linked to it, we will walk the bucket lists and delete the links. However, we are not freeing the list elements after processing them, leaking the memory.
The leak can be triggered by close()'ing a sockhash map when it still contains sockets, and observed with kmemleak:
unreferenced object 0xffff888116e86f00 (size 64):
comm "race_sock_unlin", pid 223, jiffies 4294731063 (age 217.404s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
81 de e8 41 00 00 00 00 c0 69 2f 15 81 88 ff ff ...A.....i/.....
backtrace:
[<00000000dd089ebb>] sock_hash_update_common+0x4ca/0x760
[<00000000b8219bd5>] sock_hash_update_elem+0x1d2/0x200
[<000000005e2c23de>] __do_sys_bpf+0x2046/0x2990
[<00000000d0084618>] do_syscall_64+0xad/0x9a0
[<000000000d96f263>] entry_SYSCALL_64_after_hwframe+0x49/0xb3Fix it by freeing the list element when we're done with it.
--- net/core/sock_map.c | 1 + 1 file changed, 1 insertion(+)
net/core/sock_map.c +1 -0
@@ -1024,6 +1024,7 @@ static void sock_hash_free(struct bpf_map *map)sock_map_unref (elem->sk, elem);rcu_read_unlock ();release_sock (elem->sk); +sock_hash_free_elem (htab, elem); } }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 104/477 scsi: sr: Fix sr_probe() missing mutex_destroy
In reply to Greg Kroah-HartmanFrom: Simon Arlott <[email protected]>
[ Upstream commit a247e07f8dadba5da9f188aaf4f96db0302146d9 ]
If the device minor cannot be allocated or the cdrom fails to be registered then the mutex should be destroyed.
--- drivers/scsi/sr.c | 1 + 1 file changed, 1 insertion(+)
drivers/scsi/sr.c +1 -0
@@ -817,6 +817,7 @@ static int sr_probe(struct device *dev) fail_put:put_disk (disk); +mutex_destroy (&cd->lock); fail_free:kfree (cd); fail:
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 105/477 scsi: sr: Fix sr_probe() missing deallocate of device minor
In reply to Greg Kroah-HartmanFrom: Simon Arlott <[email protected]>
[ Upstream commit 6555781b3fdec5e94e6914511496144241df7dee ]
If the cdrom fails to be registered then the device minor should be deallocated.
--- drivers/scsi/sr.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
drivers/scsi/sr.c +5 -1
@@ -797,7 +797,7 @@ static int sr_probe(struct device *dev) cd->cdi.disk = disk;if (register_cdrom (&cd->cdi)) - goto fail_put; + goto fail_minor;/* * Initialize block layer runtime PM stuffs before the
@@ -815,6 +815,10 @@ static int sr_probe(struct device *dev)return 0 ; +fail_minor: +spin_lock (&sr_index_lock); +clear_bit (minor, sr_index_bits); +spin_unlock (&sr_index_lock); fail_put:put_disk (disk);mutex_destroy (&cd->lock);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 106/477 scsi: ibmvscsi: Dont send host info in adapter info MAD after LPM
In reply to Greg Kroah-HartmanFrom: Tyrel Datwyler <[email protected]>
[ Upstream commit 4919b33b63c8b69d8dcf2b867431d0e3b6dc6d28 ]
The adapter info MAD is used to send the client info and receive the host info as a response. A persistent buffer is used and as such the client info is overwritten after the response. During the course of a normal adapter reset the client info is refreshed in the buffer in preparation for sending the adapter info MAD.
However, in the special case of LPM where we reenable the CRQ instead of a full CRQ teardown and reset we fail to refresh the client info in the adapter info buffer. As a result, after Live Partition Migration (LPM) we erroneously report the host's info as our own.
[mkp: typos]
--- drivers/scsi/ibmvscsi/ibmvscsi.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/scsi/ibmvscsi/ibmvscsi.c +2 -0
@@ -415,6 +415,8 @@ static int ibmvscsi_reenable_crq_queue(struct crq_queue *queue,int rc =0 ;struct vio_dev *vdev =to_vio_dev (hostdata->dev); +set_adapter_info (hostdata); +/* Re-enable the CRQ */ do { if (rc)
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 107/477 media: s5p-mfc: Properly handle dma_parms for the allocated devices
In reply to Greg Kroah-HartmanFrom: Marek Szyprowski <[email protected]>
[ Upstream commit cc8c0363ddce6308168d8223378ca884c213f280 ]
Commit 9495b7e92f71 ("driver core: platform: Initialize dma_parms for platform devices") in v5.7-rc5 added allocation of dma_parms structure to all platform devices. Then vb2_dma_contig_set_max_seg_size() have been changed not to allocate dma_parms structure and rely on the one allocated by the device core. Lets allocate the needed structure also for the devices created for the 2 MFC device memory ports.
--- drivers/media/platform/s5p-mfc/s5p_mfc.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
drivers/media/platform/s5p-mfc/s5p_mfc.c +5 -1
@@ -1089,6 +1089,10 @@ static struct device *s5p_mfc_alloc_memdev(struct device *dev, child->coherent_dma_mask = dev->coherent_dma_mask; child->dma_mask = dev->dma_mask; child->release = s5p_mfc_memdev_release; + child->dma_parms =devm_kzalloc (dev,sizeof (*child->dma_parms), +GFP_KERNEL ); +if (!child->dma_parms) + goto err;/* * The memdevs are not proper OF platform devices, so in order for them
@@ -1104,7 +1108,7 @@ static struct device *s5p_mfc_alloc_memdev(struct device *dev,return child;device_del (child); } - +err:put_device (child);return NULL ; }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 108/477 media: v4l2-ctrls: Unset correct HEVC loop filter flag
In reply to Greg Kroah-HartmanFrom: Jonas Karlman <[email protected]>
[ Upstream commit 88441917dc6cd995cb993df603e264f5b88be50c ]
Wrong loop filter flag is unset when tiles enabled flag is not set, this cause HEVC decoding issues with Rockchip Video Decoder.
Fix this by unsetting the loop filter across tiles enabled flag instead of the pps loop filter across slices enabled flag when tiles are disabled.
--- drivers/media/v4l2-core/v4l2-ctrls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/media/v4l2-core/v4l2-ctrls.c +1 -1
@@ -1825,7 +1825,7 @@ static int std_validate_compound(const struct v4l2_ctrl *ctrl, u32 idx, sizeof(p_hevc_pps->row_height_minus1)); p_hevc_pps->flags &= - ~V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED ; + ~V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED ; } if (p_hevc_pps->flags &
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 109/477 ibmvnic: Flush existing work items before device removal
In reply to Greg Kroah-HartmanFrom: Thomas Falcon <[email protected]>
[ Upstream commit 6954a9e4192b86d778fb52b525fd7b62d51b1147 ]
Ensure that all scheduled work items have completed before continuing with device removal and after further event scheduling has been halted. This patch fixes a bug where a scheduled driver reset event is processed following device removal.
--- drivers/net/ethernet/ibm/ibmvnic.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/net/ethernet/ibm/ibmvnic.c +3 -0
@@ -5184,6 +5184,9 @@ static int ibmvnic_remove(struct vio_dev *dev) adapter->state =VNIC_REMOVING ;spin_unlock_irqrestore (&adapter->state_lock, flags); +flush_work (&adapter->ibmvnic_reset); +flush_delayed_work (&adapter->ibmvnic_delayed_reset); +rtnl_lock ();unregister_netdevice (netdev);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 110/477 bpf: tcp: Recv() should return 0 when the peer socket is closed
In reply to Greg Kroah-HartmanFrom: Sabrina Dubroca <[email protected]>
[ Upstream commit 2c7269b231194aae23fb90ab65842573a91acbc9 ]
If the peer is closed, we will never get more data, so tcp_bpf_wait_data will get stuck forever. In case we passed MSG_DONTWAIT to recv(), we get EAGAIN but we should actually get 0.
Quoted 1 line
From man 2 recv:
RETURN VALUE
When a stream socket peer has performed an orderly shutdown, the return value will be 0 (the traditional "end-of-file" return).
This patch makes tcp_bpf_wait_data always return 1 when the peer socket has been shutdown. Either we have data available, and it would have returned 1 anyway, or there isn't, in which case we'll call tcp_recvmsg which does the right thing in this situation.
--- net/ipv4/tcp_bpf.c | 3 +++ 1 file changed, 3 insertions(+)
net/ipv4/tcp_bpf.c +3 -0
@@ -242,6 +242,9 @@ static int tcp_bpf_wait_data(struct sock *sk, struct sk_psock *psock,DEFINE_WAIT_FUNC (wait, woken_wake_function);int ret =0 ; +if (sk->sk_shutdown &RCV_SHUTDOWN ) +return 1 ; +if (!timeo)return ret;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 111/477 apparmor: fix nnp subset test for unconfined
In reply to Greg Kroah-HartmanFrom: John Johansen <[email protected]>
[ Upstream commit 3ed4aaa94fc07db3cd0c91be95e3e1b9782a2710 ]
The subset test is not taking into account the unconfined exception which will cause profile transitions in the stacked confinement case to fail when no_new_privs is applied.
This fixes a regression introduced in the fix for
https://bugs.launchpad.net/bugs/1839037
--- security/apparmor/domain.c | 9 +++++---- security/apparmor/include/label.h | 1 + security/apparmor/label.c | 33 +++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 4 deletions(-)
security/apparmor/domain.c +5 -4
@@ -929,7 +929,8 @@ int apparmor_bprm_set_creds(struct linux_binprm *bprm)* aways results in a further reduction of permissions. */ if ((bprm->unsafe &LSM_UNSAFE_NO_NEW_PRIVS ) && - !unconfined (label) && !aa_label_is_subset (new, ctx->nnp)) { + !unconfined (label) && + !aa_label_is_unconfined_subset (new, ctx->nnp)) { error = -EPERM ; info ="no new privs" ; goto audit;
@@ -1207,7 +1208,7 @@ int aa_change_hat(const char *hats[], int count, u64 token, int flags)* reduce restrictions. */ if (task_no_new_privs (current) && !unconfined (label) && - !aa_label_is_subset (new, ctx->nnp)) { + !aa_label_is_unconfined_subset (new, ctx->nnp)) {/* not an apparmor denial per se, so don't log it */ AA_DEBUG ("no_new_privs - change_hat denied" ); error = -EPERM ;
@@ -1228,7 +1229,7 @@ int aa_change_hat(const char *hats[], int count, u64 token, int flags)* reduce restrictions. */ if (task_no_new_privs (current) && !unconfined (label) && - !aa_label_is_subset (previous, ctx->nnp)) { + !aa_label_is_unconfined_subset (previous, ctx->nnp)) {/* not an apparmor denial per se, so don't log it */ AA_DEBUG ("no_new_privs - change_hat denied" ); error = -EPERM ;
@@ -1423,7 +1424,7 @@ check:* reduce restrictions. */ if (task_no_new_privs (current) && !unconfined (label) && - !aa_label_is_subset (new, ctx->nnp)) { + !aa_label_is_unconfined_subset (new, ctx->nnp)) {/* not an apparmor denial per se, so don't log it */ AA_DEBUG ("no_new_privs - change_hat denied" ); error = -EPERM ;
security/apparmor/include/label.h +1 -0
@@ -281,6 +281,7 @@ bool aa_label_init(struct aa_label *label, int size, gfp_t gfp);struct aa_label *aa_label_alloc (int size,struct aa_proxy *proxy,gfp_t gfp);bool aa_label_is_subset (struct aa_label *set,struct aa_label *sub); +bool aa_label_is_unconfined_subset (struct aa_label *set,struct aa_label *sub);struct aa_profile *__aa_label_next_not_in_set (struct label_it *I ,struct aa_label *set,struct aa_label *sub);
security/apparmor/label.c +33 -0
@@ -550,6 +550,39 @@ bool aa_label_is_subset(struct aa_label *set, struct aa_label *sub)return __aa_label_next_not_in_set (&i, set, sub) ==NULL ; } +/** +* aa_label_is_unconfined_subset - test if @sub is a subset of @set +* @set: label to test against +* @sub: label to test if is subset of @set +* +* This checks for subset but taking into account unconfined. IF +* @sub contains an unconfined profile that does not have a matching +* unconfined in @set then this will not cause the test to fail. +* Conversely we don't care about an unconfined in @set that is not in +* @sub +* +* Returns: true if @sub is special_subset of @set +* else false +*/ +bool aa_label_is_unconfined_subset (struct aa_label *set,struct aa_label *sub) +{ +struct label_it i = { }; +struct aa_profile *p; + +AA_BUG (!set); +AA_BUG (!sub); + +if (sub == set) +return true; + +do { + p =__aa_label_next_not_in_set (&i, set, sub); +if (p && !profile_unconfined (p)) +break ; + }while (p); + +return p ==NULL ; +}/**
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 112/477 x86/purgatory: Disable various profiling and sanitizing options
In reply to Greg Kroah-HartmanFrom: Hans de Goede <[email protected]>
[ Upstream commit e2ac07c06058ae2d58b45bbf2a2a352771d76fcb ]
Since the purgatory is a special stand-alone binary, various profiling and sanitizing options must be disabled. Having these options enabled typically will cause dependencies on various special symbols exported by special libs / stubs used by these frameworks. Since the purgatory is special, it is not linked against these stubs causing missing symbols in the purgatory if these options are not disabled.
Sync the set of disabled profiling and sanitizing options with that from drivers/firmware/efi/libstub/Makefile, adding -DDISABLE_BRANCH_PROFILING to the CFLAGS and setting:
GCOV_PROFILE := n
UBSAN_SANITIZE := n
This fixes broken references to ftrace_likely_update() when CONFIG_TRACE_BRANCH_PROFILING is enabled and to __gcov_init() and __gcov_exit() when CONFIG_GCOV_KERNEL is enabled.
--- arch/x86/purgatory/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
arch/x86/purgatory/Makefile +4 -1
@@ -17,7 +17,10 @@ CFLAGS_sha256.o := -D__DISABLE_EXPORTS LDFLAGS_purgatory.ro := -e purgatory_start -r --no-undefined -nostdlib -z nodefaultlib targets += purgatory.ro +# Sanitizer, etc. runtimes are unavailable and cannot be linked here. +GCOV_PROFILE := n KASAN_SANITIZE := n +UBSAN_SANITIZE := n KCOV_INSTRUMENT := n # These are adjustments to the compiler flags used for objects that
@@ -25,7 +28,7 @@ KCOV_INSTRUMENT := n PURGATORY_CFLAGS_REMOVE := -mcmodel=kernel PURGATORY_CFLAGS := -mcmodel=large -ffreestanding -fno-zero-initialized-in-bss -PURGATORY_CFLAGS += $(DISABLE_STACKLEAK_PLUGIN) +PURGATORY_CFLAGS += $(DISABLE_STACKLEAK_PLUGIN) -DDISABLE_BRANCH_PROFILING # Default KBUILD_CFLAGS can have -pg option set when FTRACE is enabled. That # in turn leaves some undefined symbols like __fentry__ in purgatory and not
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 113/477 ARM: dts: bcm283x: Use firmware PM driver for V3D
In reply to Greg Kroah-HartmanFrom: Nicolas Saenz Julienne <[email protected]>
[ Upstream commit 3ac395a5b3f3b678663fbb58381fdae2b1b57588 ]
The register based driver turned out to be unstable, specially on RPi3a+ but not limited to it. While a fix is being worked on, we roll back to using firmware based scheme.
--- arch/arm/boot/dts/bcm2835-common.dtsi | 1 - arch/arm/boot/dts/bcm2835-rpi-common.dtsi | 12 ++++++++++++ arch/arm/boot/dts/bcm2835.dtsi | 1 + arch/arm/boot/dts/bcm2836.dtsi | 1 + arch/arm/boot/dts/bcm2837.dtsi | 1 + 5 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 arch/arm/boot/dts/bcm2835-rpi-common.dtsi
arch/arm/boot/dts/bcm2835-common.dtsi +0 -1
@@ -130,7 +130,6 @@ compatible = "brcm,bcm2835-v3d"; reg = <0x7ec00000 0x1000>; interrupts = <1 10>; - power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>; }; vc4: gpu {
arch/arm/boot/dts/bcm2835-rpi-common.dtsi new file +12 -0
@@ -0,0 +1,12 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * This include file covers the common peripherals and configuration between + * bcm2835, bcm2836 and bcm2837 implementations that interact with RPi's + * firmware interface. + */ + +#include <dt-bindings/power/raspberrypi-power.h> + +&v3d { + power-domains = <&power RPI_POWER_DOMAIN_V3D>; +};
arch/arm/boot/dts/bcm2835.dtsi +1 -0
@@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 #include "bcm283x.dtsi" #include "bcm2835-common.dtsi" +#include "bcm2835-rpi-common.dtsi" / { compatible = "brcm,bcm2835";
arch/arm/boot/dts/bcm2836.dtsi +1 -0
@@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 #include "bcm283x.dtsi" #include "bcm2835-common.dtsi" +#include "bcm2835-rpi-common.dtsi" / { compatible = "brcm,bcm2836";
arch/arm/boot/dts/bcm2837.dtsi +1 -0
@@ -1,5 +1,6 @@ #include "bcm283x.dtsi" #include "bcm2835-common.dtsi" +#include "bcm2835-rpi-common.dtsi" / { compatible = "brcm,bcm2837";
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 114/477 arm64: dts: realtek: rtd129x: Fix GIC CPU masks for RTD1293
In reply to Greg Kroah-HartmanFrom: Andreas Färber <[email protected]>
[ Upstream commit 31888c8be1486daf2c34ba6c58129635e49d564a ]
Convert from GIC_CPU_MASK_RAW() to GIC_CPU_MASK_SIMPLE().
In case of RTD1293 adjust the arch timer and VGIC interrupts' CPU masks to its smaller number of CPUs.
--- arch/arm64/boot/dts/realtek/rtd1293.dtsi | 12 ++++++++---- arch/arm64/boot/dts/realtek/rtd1295.dtsi | 8 ++++---- arch/arm64/boot/dts/realtek/rtd1296.dtsi | 8 ++++---- 3 files changed, 16 insertions(+), 12 deletions(-)
arch/arm64/boot/dts/realtek/rtd1293.dtsi +8 -4
@@ -36,16 +36,20 @@ timer { compatible = "arm,armv8-timer"; interrupts = <GIC_PPI 13 - (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>, + (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 14 - (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>, + (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 11 - (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>, + (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 10 - (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>; + (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>; }; }; &arm_pmu { interrupt-affinity = <&cpu0>, <&cpu1>; }; + +&gic { + interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>; +};
arch/arm64/boot/dts/realtek/rtd1295.dtsi +4 -4
@@ -61,13 +61,13 @@ timer { compatible = "arm,armv8-timer"; interrupts = <GIC_PPI 13 - (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>, + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 14 - (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>, + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 11 - (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>, + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 10 - (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>; + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; }; };
arch/arm64/boot/dts/realtek/rtd1296.dtsi +4 -4
@@ -50,13 +50,13 @@ timer { compatible = "arm,armv8-timer"; interrupts = <GIC_PPI 13 - (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>, + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 14 - (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>, + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 11 - (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>, + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 10 - (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>; + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; }; };
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 115/477 staging: greybus: fix a missing-check bug in gb_lights_light_config()
In reply to Greg Kroah-HartmanFrom: Chen Zhou <[email protected]>
[ Upstream commit 9bb086e5ba9495ac150fbbcc5c8c2bccc06261dd ]
In gb_lights_light_config(), 'light->name' is allocated by kstrndup(). It returns NULL when fails, add check for it.
--- drivers/staging/greybus/light.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/staging/greybus/light.c +2 -1
@@ -1026,7 +1026,8 @@ static int gb_lights_light_config(struct gb_lights *glights, u8 id) light->channels_count = conf.channel_count; light->name =kstrndup (conf.name,NAMES_MAX ,GFP_KERNEL ); - +if (!light->name) +return -ENOMEM ; light->channels =kcalloc (light->channels_count,sizeof (struct gb_channel ),GFP_KERNEL );if (!light->channels)
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 116/477 staging: rtl8712: fix multiline derefernce warnings
In reply to Greg Kroah-HartmanFrom: Aiman Najjar <[email protected]>
[ Upstream commit 269da10b1477c31c660288633c8d613e421b131f ]
This patch fixes remaining checkpatch warnings
in rtl871x_xmit.c:
WARNING: Avoid multiple line dereference - prefer 'psecuritypriv->PrivacyKeyIndex' 636: FILE: drivers/staging//rtl8712/rtl871x_xmit.c:636:
+ (u8)psecuritypriv->
+ PrivacyKeyIndex);
WARNING: Avoid multiple line dereference - prefer 'psecuritypriv->XGrpKeyid' 643: FILE: drivers/staging//rtl8712/rtl871x_xmit.c:643:
+ (u8)psecuritypriv->
+ XGrpKeyid);
WARNING: Avoid multiple line dereference - prefer 'psecuritypriv->XGrpKeyid' 652: FILE: drivers/staging//rtl8712/rtl871x_xmit.c:652:
+ (u8)psecuritypriv->
+ XGrpKeyid);
--- drivers/staging/rtl8712/rtl871x_xmit.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-)
drivers/staging/rtl8712/rtl871x_xmit.c +4 -7
@@ -589,7 +589,7 @@ sint r8712_xmitframe_coalesce(struct _adapter *padapter, _pkt *pkt,addr_t addr;u8 *pframe, *mem_start, *ptxdesc;struct sta_info *psta; -struct security_priv *psecuritypriv = &padapter->securitypriv; +struct security_priv *psecpriv = &padapter->securitypriv;struct mlme_priv *pmlmepriv = &padapter->mlmepriv;struct xmit_priv *pxmitpriv = &padapter->xmitpriv;struct pkt_attrib *pattrib = &pxmitframe->attrib;
@@ -632,15 +632,13 @@ sint r8712_xmitframe_coalesce(struct _adapter *padapter, _pkt *pkt,case _WEP40_:case _WEP104_:WEP_IV (pattrib->iv, psta->txpn, - (u8 )psecuritypriv-> - PrivacyKeyIndex); + (u8 )psecpriv->PrivacyKeyIndex);break ;case _TKIP_:if (bmcst)TKIP_IV (pattrib->iv, psta->txpn, - (u8 )psecuritypriv-> - XGrpKeyid); + (u8 )psecpriv->XGrpKeyid);else TKIP_IV (pattrib->iv, psta->txpn,0 );
@@ -648,8 +646,7 @@ sint r8712_xmitframe_coalesce(struct _adapter *padapter, _pkt *pkt,case _AES_:if (bmcst)AES_IV (pattrib->iv, psta->txpn, - (u8 )psecuritypriv-> - XGrpKeyid); + (u8 )psecpriv->XGrpKeyid);else AES_IV (pattrib->iv, psta->txpn,0 );
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 117/477 staging: mt7621-pci: fix PCIe interrupt mapping
In reply to Greg Kroah-HartmanFrom: Sergio Paracuellos <[email protected]>
[ Upstream commit fab6710e4c51f4eb622f95a08322ab5fdbe3f295 ]
MT7621 has three assigned interrupts for the pcie. This interrupts should properly being mapped taking into account which devices are finally connected in which bus according to link status. So the irq mappings should be as follows according to link status (three bits indicating which devices are link up):
* For PCIe Bus 1 slot 0:
- status = 0x2 || status = 0x6 => IRQ = pcie1_irq (24).
- status = 0x4 => IRQ = pcie2_irq (25).
- default => IRQ = pcie0_irq (23).
* For PCIe Bus 2 slot 0:
- status = 0x5 || status = 0x6 => IRQ = pcie2_irq (25).
- default => IRQ = pcie1_irq (24).
* For PCIe Bus 2 slot 1:
- status = 0x5 || status = 0x6 => IRQ = pcie2_irq (25).
- default => IRQ = pcie1_irq (24).
* For PCIe Bus 3 any slot:
- default => IRQ = pcie2_irq (25).
Because of this, the function 'of_irq_parse_and_map_pci' cannot be used and we need to change device tree information from using the 'interrupt-map' and 'interrupt-map-mask' properties into an 'interrupts' property to be able to get irq information from the ports using the 'platform_get_irq' and storing an 'irq-map' into the pcie driver data node to properly map correct irq using a new 'mt7621_map_irq' function where this map will be read and the correct irq returned.
--- drivers/staging/mt7621-dts/mt7621.dtsi | 9 +++---- drivers/staging/mt7621-pci/pci-mt7621.c | 36 +++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 7 deletions(-)
drivers/staging/mt7621-dts/mt7621.dtsi +4 -5
@@ -523,11 +523,10 @@ 0x01000000 0 0x00000000 0x1e160000 0 0x00010000 /* io space */ >; - #interrupt-cells = <1>; - interrupt-map-mask = <0xF0000 0 0 1>; - interrupt-map = <0x10000 0 0 1 &gic GIC_SHARED 4 IRQ_TYPE_LEVEL_HIGH>, - <0x20000 0 0 1 &gic GIC_SHARED 24 IRQ_TYPE_LEVEL_HIGH>, - <0x30000 0 0 1 &gic GIC_SHARED 25 IRQ_TYPE_LEVEL_HIGH>; + interrupt-parent = <&gic>; + interrupts = <GIC_SHARED 4 IRQ_TYPE_LEVEL_HIGH + GIC_SHARED 24 IRQ_TYPE_LEVEL_HIGH + GIC_SHARED 25 IRQ_TYPE_LEVEL_HIGH>; status = "disabled";
drivers/staging/mt7621-pci/pci-mt7621.c +34 -2
@@ -97,6 +97,7 @@* @pcie_rst: pointer to port reset control * @gpio_rst: gpio reset * @slot: port slot +* @irq: GIC irq * @enabled: indicates if port is enabled */ struct mt7621_pcie_port {
@@ -107,6 +108,7 @@ struct mt7621_pcie_port {struct reset_control *pcie_rst;struct gpio_desc *gpio_rst;u32 slot; +int irq;bool enabled; };
@@ -120,6 +122,7 @@ struct mt7621_pcie_port {* @dev: Pointer to PCIe device * @io_map_base: virtual memory base address for io * @ports: pointer to PCIe port information +* @irq_map: irq mapping info according pcie link status * @resets_inverted: depends on chip revision * reset lines are inverted. */
@@ -135,6 +138,7 @@ struct mt7621_pcie { } offset;unsigned long io_map_base;struct list_head ports; +int irq_map[PCIE_P2P_MAX ];bool resets_inverted; };
@@ -279,6 +283,16 @@ static void setup_cm_memory_region(struct mt7621_pcie *pcie) } } +static int mt7621_map_irq (const struct pci_dev *pdev,u8 slot,u8 pin) +{ +struct mt7621_pcie *pcie = pdev->bus->sysdata; +struct device *dev = pcie->dev; +int irq = pcie->irq_map[slot]; + +dev_info (dev,"bus=%d slot=%d irq=%d\n" , pdev->bus->number, slot, irq); +return irq; +} +static int mt7621_pci_parse_request_of_pci_ranges (struct mt7621_pcie *pcie) {struct device *dev = pcie->dev;
@@ -330,6 +344,7 @@ static int mt7621_pcie_parse_port(struct mt7621_pcie *pcie, {struct mt7621_pcie_port *port;struct device *dev = pcie->dev; +struct platform_device *pdev =to_platform_device (dev);struct device_node *pnode = dev->of_node;struct resource regs;char name[10 ];
@@ -371,6 +386,12 @@ static int mt7621_pcie_parse_port(struct mt7621_pcie *pcie, port->slot = slot; port->pcie = pcie; + port->irq =platform_get_irq (pdev, slot); +if (port->irq <0 ) { +dev_err (dev,"Failed to get IRQ for PCIe%d\n" , slot); +return -ENXIO ; + } +INIT_LIST_HEAD (&port->list);list_add_tail (&port->list, &pcie->ports);
@@ -585,13 +606,15 @@ static int mt7621_pcie_init_virtual_bridges(struct mt7621_pcie *pcie) {u32 pcie_link_status =0 ;u32 n; -int i; +int i =0 ;u32 p2p_br_devnum[PCIE_P2P_MAX ]; +int irqs[PCIE_P2P_MAX ];struct mt7621_pcie_port *port;list_for_each_entry (port, &pcie->ports, list) {u32 slot = port->slot; + irqs[i++] = port->irq;if (port->enabled) pcie_link_status |=BIT (slot); }
@@ -614,6 +637,15 @@ static int mt7621_pcie_init_virtual_bridges(struct mt7621_pcie *pcie) (p2p_br_devnum[1 ] <<PCIE_P2P_BR_DEVNUM1_SHIFT ) | (p2p_br_devnum[2] << PCIE_P2P_BR_DEVNUM2_SHIFT)); +/* Assign IRQs */ + n =0 ; +for (i =0 ; i <PCIE_P2P_MAX ; i++) +if (pcie_link_status &BIT (i)) + pcie->irq_map[n++] = irqs[i]; + +for (i = n; i <PCIE_P2P_MAX ; i++) + pcie->irq_map[i] =-1 ; +return 0 ; }
@@ -638,7 +670,7 @@ static int mt7621_pcie_register_host(struct pci_host_bridge *host, host->busnr = pcie->busn.start; host->dev.parent = pcie->dev; host->ops = &mt7621_pci_ops; - host->map_irq = of_irq_parse_and_map_pci; + host->map_irq = mt7621_map_irq; host->swizzle_irq = pci_common_swizzle; host->sysdata = pcie;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 118/477 arm64: dts: mt8173: fix unit name warnings
In reply to Greg Kroah-HartmanFrom: Hsin-Yi Wang <[email protected]>
[ Upstream commit 72b29215aced394d01ca25e432963b619daa0098 ]
Fixing several unit name warnings:
Warning (unit_address_vs_reg): /oscillator@0: node has a unit name, but no reg property
Warning (unit_address_vs_reg): /oscillator@1: node has a unit name, but no reg property
Warning (unit_address_vs_reg): /oscillator@2: node has a unit name, but no reg property
Warning (unit_address_vs_reg): /thermal-zones/cpu_thermal/trips/trip-point@0: node has a unit name, but no reg property Warning (unit_address_vs_reg): /thermal-zones/cpu_thermal/trips/trip-point@1: node has a unit name, but no reg property Warning (unit_address_vs_reg): /thermal-zones/cpu_thermal/trips/cpu_crit@0: node has a unit name, but no reg property Warning (unit_address_vs_reg): /thermal-zones/cpu_thermal/cooling-maps/map@0: node has a unit name, but no reg property Warning (unit_address_vs_reg): /thermal-zones/cpu_thermal/cooling-maps/map@1: node has a unit name, but no reg property Warning (unit_address_vs_reg): /reserved-memory/vpu_dma_mem_region: node has a reg or ranges property, but no unit name Warning (simple_bus_reg): /soc/pinctrl@10005000: simple-bus unit address format error, expected "1000b000" Warning (simple_bus_reg): /soc/interrupt-controller@10220000: simple-bus unit address format error, expected "10221000"
--- arch/arm64/boot/dts/mediatek/mt8173.dtsi | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-)
arch/arm64/boot/dts/mediatek/mt8173.dtsi +11 -11
@@ -242,21 +242,21 @@ cpu_on = <0x84000003>; }; - clk26m: oscillator@0 { + clk26m: oscillator0 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <26000000>; clock-output-names = "clk26m"; }; - clk32k: oscillator@1 { + clk32k: oscillator1 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <32000>; clock-output-names = "clk32k"; }; - cpum_ck: oscillator@2 { + cpum_ck: oscillator2 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <0>;
@@ -272,19 +272,19 @@ sustainable-power = <1500>; /* milliwatts */ trips { - threshold: trip-point@0 { + threshold: trip-point0 { temperature = <68000>; hysteresis = <2000>; type = "passive"; }; - target: trip-point@1 { + target: trip-point1 { temperature = <85000>; hysteresis = <2000>; type = "passive"; }; - cpu_crit: cpu_crit@0 { + cpu_crit: cpu_crit0 { temperature = <115000>; hysteresis = <2000>; type = "critical";
@@ -292,13 +292,13 @@ }; cooling-maps { - map@0 { + map0 { trip = <&target>; cooling-device = <&cpu0 0 0>, <&cpu1 0 0>; contribution = <3072>; }; - map@1 { + map1 { trip = <&target>; cooling-device = <&cpu2 0 0>, <&cpu3 0 0>;
@@ -312,7 +312,7 @@ #address-cells = <2>; #size-cells = <2>; ranges; - vpu_dma_reserved: vpu_dma_mem_region { + vpu_dma_reserved: vpu_dma_mem_region@b7000000 { compatible = "shared-dma-pool"; reg = <0 0xb7000000 0 0x500000>; alignment = <0x1000>;
@@ -365,7 +365,7 @@ reg = <0 0x10005000 0 0x1000>; }; - pio: pinctrl@10005000 { + pio: pinctrl@1000b000 { compatible = "mediatek,mt8173-pinctrl"; reg = <0 0x1000b000 0 0x1000>; mediatek,pctl-regmap = <&syscfg_pctl_a>;
@@ -572,7 +572,7 @@ status = "disabled"; }; - gic: interrupt-controller@10220000 { + gic: interrupt-controller@10221000 { compatible = "arm,gic-400"; #interrupt-cells = <3>; interrupt-parent = <&gic>;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 119/477 scsi: qedi: Do not flush offload work if ARP not resolved
In reply to Greg Kroah-HartmanFrom: Nilesh Javali <[email protected]>
[ Upstream commit 927527aea0e2a9c1d336c7d33f77f1911481d008 ]
For an unreachable target, offload_work is not initialized and the endpoint state is set to OFLDCONN_NONE. This results in a WARN_ON due to the check of the work function field being set to zero.
------------[ cut here ]------------
WARNING: CPU: 24 PID: 18587 at ../kernel/workqueue.c:3037 __flush_work+0x1c1/0x1d0
:
Hardware name: HPE ProLiant DL380 Gen10/ProLiant DL380 Gen10, BIOS U30 02/01/2020
RIP: 0010:__flush_work+0x1c1/0x1d0
Code: ba 6d 00 03 80 c9 f0 eb b6 48 c7 c7 20 ee 6c a4 e8 52 d3 04 00 0f 0b 31 c0 e9 d1 fe ff
ff 48 c7 c7 20 ee 6c a4 e8 3d d3 04 00 <0f> 0b 31 c0 e9 bc fe ff ff e8 11 f3 f
00 31 f6
RSP: 0018:ffffac5a8cd47a80 EFLAGS: 00010282
RAX: 0000000000000024 RBX: ffff98d68c1fcaf0 RCX: 0000000000000000
RDX: 0000000000000000 RSI: ffff98ce9fd99898 RDI: ffff98ce9fd99898
RBP: ffff98d68c1fcbc0 R08: 00000000000006fa R09: 0000000000000001
R10: ffffac5a8cd47b50 R11: 0000000000000001 R12: 0000000000000000
R13: 000000000000489b R14: ffff98d68c1fc800 R15: ffff98d692132c00
FS: 00007f65f7f62280(0000) GS:ffff98ce9fd80000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007ffd2435e880 CR3: 0000000809334003 CR4: 00000000007606e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
PKRU: 55555554
Call Trace:
? class_create_release+0x40/0x40
? klist_put+0x2c/0x80
qedi_ep_disconnect+0xdd/0x400 [qedi]
iscsi_if_ep_disconnect.isra.20+0x59/0x70 [scsi_transport_iscsi]
iscsi_if_rx+0x129b/0x1670 [scsi_transport_iscsi]
? __netlink_lookup+0xe7/0x160
netlink_unicast+0x21d/0x300
netlink_sendmsg+0x30f/0x430
sock_sendmsg+0x5b/0x60
____sys_sendmsg+0x1e2/0x240
? copy_msghdr_from_user+0xd9/0x160
___sys_sendmsg+0x88/0xd0
? ___sys_recvmsg+0xa2/0xe0
? hrtimer_try_to_cancel+0x25/0x100
? do_nanosleep+0x9c/0x170
? __sys_sendmsg+0x5e/0xa0
__sys_sendmsg+0x5e/0xa0
do_syscall_64+0x60/0x1f0
entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x7f65f6f16107
Code: 64 89 02 48 c7 c0 ff ff ff ff eb b9 0f 1f 80 00 00 00 00 8b 05 aa d2 2b 00 48 63 d2 48
63 ff 85 c0 75 18 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 59 f3 c3 0f 1f 8
0 00 00 00 00 53 48 89 f3 48
RSP: 002b:00007ffd24367ca8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
RAX: ffffffffffffffda RBX: 000055a7aeaaf110 RCX: 00007f65f6f16107
RDX: 0000000000000000 RSI: 00007ffd24367cc0 RDI: 0000000000000003
RBP: 0000000000000070 R08: 0000000000000000 R09: 0000000000000000
R10: 000000000000075c R11: 0000000000000246 R12: 00007ffd24367cc0
R13: 000055a7ae560008 R14: 00007ffd24367db0 R15: 0000000000000000
---[ end trace 54f499c05d41f8bb ]---Only flush if the connection endpoint state if different from OFLDCONN_NONE.
[mkp: clarified commit desc]
--- drivers/scsi/qedi/qedi_iscsi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/scsi/qedi/qedi_iscsi.c +2 -1
@@ -1001,7 +1001,8 @@ static void qedi_ep_disconnect(struct iscsi_endpoint *ep)if (qedi_ep->state ==EP_STATE_OFLDCONN_START ) goto ep_exit_recover; -flush_work (&qedi_ep->offload_work); +if (qedi_ep->state !=EP_STATE_OFLDCONN_NONE ) +flush_work (&qedi_ep->offload_work);if (qedi_ep->conn) { qedi_conn = qedi_ep->conn;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 120/477 arm64: dts: qcom: msm8916: remove unit name for thermal trip points
In reply to Greg Kroah-HartmanFrom: Amit Kucheria <[email protected]>
[ Upstream commit fe2aff0c574d206f34f1864d5a0b093694c27142 ]
The thermal trip points have unit name but no reg property, so we can remove them. It also fixes the following warnings from 'make dtbs_check' after adding the thermal yaml bindings.
arch/arm64/boot/dts/qcom/apq8016-sbc.dt.yaml: thermal-zones:
gpu-thermal:trips: 'trip-point@0' does not match any of the regexes:
'^[a-zA-Z][a-zA-Z0-9\\-_]{0,63}$', 'pinctrl-[0-9]+' arch/arm64/boot/dts/qcom/apq8016-sbc.dt.yaml: thermal-zones:
camera-thermal:trips: 'trip-point@0' does not match any of the regexes:
'^[a-zA-Z][a-zA-Z0-9\\-_]{0,63}$', 'pinctrl-[0-9]+' arch/arm64/boot/dts/qcom/apq8016-sbc.dt.yaml: thermal-zones:
modem-thermal:trips: 'trip-point@0' does not match any of the regexes:
'^[a-zA-Z][a-zA-Z0-9\\-_]{0,63}$', 'pinctrl-[0-9]+'
arch/arm64/boot/dts/qcom/msm8916-mtp.dt.yaml: thermal-zones:
gpu-thermal:trips: 'trip-point@0' does not match any of the regexes:
'^[a-zA-Z][a-zA-Z0-9\\-_]{0,63}$', 'pinctrl-[0-9]+' arch/arm64/boot/dts/qcom/msm8916-mtp.dt.yaml: thermal-zones:
camera-thermal:trips: 'trip-point@0' does not match any of the regexes:
'^[a-zA-Z][a-zA-Z0-9\\-_]{0,63}$', 'pinctrl-[0-9]+' arch/arm64/boot/dts/qcom/msm8916-mtp.dt.yaml: thermal-zones:
modem-thermal:trips: 'trip-point@0' does not match any of the regexes:
'^[a-zA-Z][a-zA-Z0-9\\-_]{0,63}$', 'pinctrl-[0-9]+'
--- arch/arm64/boot/dts/qcom/msm8916.dtsi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
arch/arm64/boot/dts/qcom/msm8916.dtsi +4 -4
@@ -261,7 +261,7 @@ thermal-sensors = <&tsens 4>; trips { - cpu2_3_alert0: trip-point@0 { + cpu2_3_alert0: trip-point0 { temperature = <75000>; hysteresis = <2000>; type = "passive";
@@ -291,7 +291,7 @@ thermal-sensors = <&tsens 2>; trips { - gpu_alert0: trip-point@0 { + gpu_alert0: trip-point0 { temperature = <75000>; hysteresis = <2000>; type = "passive";
@@ -311,7 +311,7 @@ thermal-sensors = <&tsens 1>; trips { - cam_alert0: trip-point@0 { + cam_alert0: trip-point0 { temperature = <75000>; hysteresis = <2000>; type = "hot";
@@ -326,7 +326,7 @@ thermal-sensors = <&tsens 0>; trips { - modem_alert0: trip-point@0 { + modem_alert0: trip-point0 { temperature = <85000>; hysteresis = <2000>; type = "hot";
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 121/477 ARM: dts: sun8i-h2-plus-bananapi-m2-zero: Fix led polarity
In reply to Greg Kroah-HartmanFrom: Vincent Stehlé <[email protected]>
[ Upstream commit 34b6826df7462c541752cf8b1de2691b26d78ae0 ]
The PWR-LED on the bananapi m2 zero board is on when gpio PL10 is low. This has been verified on a board and in the schematics [1].
[1]: http://wiki.banana-pi.org/Banana_Pi_BPI-M2_ZERO#Documents
--- arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts +1 -1
@@ -31,7 +31,7 @@ pwr_led { label = "bananapi-m2-zero:red:pwr"; - gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */ + gpios = <&r_pio 0 10 GPIO_ACTIVE_LOW>; /* PL10 */ default-state = "on"; }; };
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 122/477 RDMA/mlx5: Fix udata response upon SRQ creation
In reply to Greg Kroah-HartmanFrom: Yishai Hadas <[email protected]>
[ Upstream commit cf26deff9036cd3270af562dbec545239e5c7f07 ]
Fix udata response upon SRQ creation to use the UAPI structure (i.e. mlx5_ib_create_srq_resp). It did not zero the reserved field in userspace.
--- drivers/infiniband/hw/mlx5/srq.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
drivers/infiniband/hw/mlx5/srq.c +8 -2
@@ -310,12 +310,18 @@ int mlx5_ib_create_srq(struct ib_srq *ib_srq, srq->msrq.event = mlx5_ib_srq_event; srq->ibsrq.ext.xrc.srq_num = srq->msrq.srqn; -if (udata) -if (ib_copy_to_udata (udata, &srq->msrq.srqn,sizeof (__u32))) { +if (udata) { +struct mlx5_ib_create_srq_resp resp = { + .srqn = srq->msrq.srqn, + }; + +if (ib_copy_to_udata (udata, &resp,min (udata->outlen, +sizeof (resp)))) {mlx5_ib_dbg (dev,"copy to user failed\n" ); err = -EFAULT ; goto err_core; } + } init_attr->attr.max_wr = srq->msrq.max -1 ;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 123/477 ALSA: usb-audio: RME Babyface Pro mixer patch
In reply to Greg Kroah-HartmanFrom: Thomas Ebeling <[email protected]>
[ Upstream commit 3e8f3bd047163d30fb1ad32ca7e4628921555c09 ]
Added mixer quirks to allow controlling the internal DSP of the RME Babyface Pro and its successor Babyface Pro FS.
--- sound/usb/mixer_quirks.c | 418 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 418 insertions(+)
sound/usb/mixer_quirks.c +418 -0
@@ -2185,6 +2185,421 @@ static int snd_rme_controls_create(struct usb_mixer_interface *mixer)return 0 ; } +/* +* RME Babyface Pro (FS) +* +* These devices exposes a couple of DSP functions via request to EP0. +* Switches are available via control registers, while routing is controlled +* by controlling the volume on each possible crossing point. +* Volume control is linear, from -inf (dec. 0) to +6dB (dec. 46341) with +* 0dB being at dec. 32768. +*/ +enum { +SND_BBFPRO_CTL_REG1 =0 , +SND_BBFPRO_CTL_REG2 +}; + +#define SND_BBFPRO_CTL_REG_MASK 1 +#define SND_BBFPRO_CTL_IDX_MASK 0xff +#define SND_BBFPRO_CTL_IDX_SHIFT 1 +#define SND_BBFPRO_CTL_VAL_MASK 1 +#define SND_BBFPRO_CTL_VAL_SHIFT 9 +#define SND_BBFPRO_CTL_REG1_CLK_MASTER 0 +#define SND_BBFPRO_CTL_REG1_CLK_OPTICAL 1 +#define SND_BBFPRO_CTL_REG1_SPDIF_PRO 7 +#define SND_BBFPRO_CTL_REG1_SPDIF_EMPH 8 +#define SND_BBFPRO_CTL_REG1_SPDIF_OPTICAL 10 +#define SND_BBFPRO_CTL_REG2_48V_AN1 0 +#define SND_BBFPRO_CTL_REG2_48V_AN2 1 +#define SND_BBFPRO_CTL_REG2_SENS_IN3 2 +#define SND_BBFPRO_CTL_REG2_SENS_IN4 3 +#define SND_BBFPRO_CTL_REG2_PAD_AN1 4 +#define SND_BBFPRO_CTL_REG2_PAD_AN2 5 + +#define SND_BBFPRO_MIXER_IDX_MASK 0x1ff +#define SND_BBFPRO_MIXER_VAL_MASK 0x3ffff +#define SND_BBFPRO_MIXER_VAL_SHIFT 9 +#define SND_BBFPRO_MIXER_VAL_MIN 0 // -inf +#define SND_BBFPRO_MIXER_VAL_MAX 46341 // +6dB + +#define SND_BBFPRO_USBREQ_CTL_REG1 0x10 +#define SND_BBFPRO_USBREQ_CTL_REG2 0x17 +#define SND_BBFPRO_USBREQ_MIXER 0x12 + +static int snd_bbfpro_ctl_update (struct usb_mixer_interface *mixer,u8 reg, +u8 index,u8 value) +{ +int err; +u16 usb_req, usb_idx, usb_val; +struct snd_usb_audio *chip = mixer->chip; + + err =snd_usb_lock_shutdown (chip); +if (err <0 ) +return err; + +if (reg ==SND_BBFPRO_CTL_REG1 ) { + usb_req =SND_BBFPRO_USBREQ_CTL_REG1 ; +if (index ==SND_BBFPRO_CTL_REG1_CLK_OPTICAL ) { + usb_idx =3 ; + usb_val = value ?3 :0 ; + }else { + usb_idx =1 << index; + usb_val = value ? usb_idx :0 ; + } + }else { + usb_req =SND_BBFPRO_USBREQ_CTL_REG2 ; + usb_idx =1 << index; + usb_val = value ? usb_idx :0 ; + } + + err =snd_usb_ctl_msg (chip->dev, +usb_sndctrlpipe (chip->dev,0 ), usb_req, +USB_DIR_OUT |USB_TYPE_VENDOR |USB_RECIP_DEVICE , + usb_val, usb_idx,0 ,0 ); + +snd_usb_unlock_shutdown (chip); +return err; +} + +static int snd_bbfpro_ctl_get (struct snd_kcontrol *kcontrol, +struct snd_ctl_elem_value *ucontrol) +{ +u8 reg, idx, val; +int pv; + + pv = kcontrol->private_value; + reg = pv &SND_BBFPRO_CTL_REG_MASK ; + idx = (pv >>SND_BBFPRO_CTL_IDX_SHIFT ) &SND_BBFPRO_CTL_IDX_MASK ; + val = kcontrol->private_value >>SND_BBFPRO_CTL_VAL_SHIFT ; + +if ((reg ==SND_BBFPRO_CTL_REG1 && + idx ==SND_BBFPRO_CTL_REG1_CLK_OPTICAL ) || + (reg ==SND_BBFPRO_CTL_REG2 && + (idx ==SND_BBFPRO_CTL_REG2_SENS_IN3 || + idx ==SND_BBFPRO_CTL_REG2_SENS_IN4 ))) { + ucontrol->value.enumerated.item[0 ] = val; + }else { + ucontrol->value.integer.value[0 ] = val; + } +return 0 ; +} + +static int snd_bbfpro_ctl_info (struct snd_kcontrol *kcontrol, +struct snd_ctl_elem_info *uinfo) +{ +u8 reg, idx; +int pv; + + pv = kcontrol->private_value; + reg = pv &SND_BBFPRO_CTL_REG_MASK ; + idx = (pv >>SND_BBFPRO_CTL_IDX_SHIFT ) &SND_BBFPRO_CTL_IDX_MASK ; + +if (reg ==SND_BBFPRO_CTL_REG1 && + idx ==SND_BBFPRO_CTL_REG1_CLK_OPTICAL ) { +static const char *const texts[2 ] = { +"AutoSync" , +"Internal" + }; +return snd_ctl_enum_info (uinfo,1 ,2 , texts); + }else if (reg ==SND_BBFPRO_CTL_REG2 && + (idx ==SND_BBFPRO_CTL_REG2_SENS_IN3 || + idx ==SND_BBFPRO_CTL_REG2_SENS_IN4 )) { +static const char *const texts[2 ] = { +"-10dBV" , +"+4dBu" + }; +return snd_ctl_enum_info (uinfo,1 ,2 , texts); + } + + uinfo->count =1 ; + uinfo->value.integer.min =0 ; + uinfo->value.integer.max =1 ; + uinfo->type =SNDRV_CTL_ELEM_TYPE_BOOLEAN ; +return 0 ; +} + +static int snd_bbfpro_ctl_put (struct snd_kcontrol *kcontrol, +struct snd_ctl_elem_value *ucontrol) +{ +int err; +u8 reg, idx; +int old_value, pv, val; + +struct usb_mixer_elem_list *list =snd_kcontrol_chip (kcontrol); +struct usb_mixer_interface *mixer = list->mixer; + + pv = kcontrol->private_value; + reg = pv &SND_BBFPRO_CTL_REG_MASK ; + idx = (pv >>SND_BBFPRO_CTL_IDX_SHIFT ) &SND_BBFPRO_CTL_IDX_MASK ; + old_value = (pv >>SND_BBFPRO_CTL_VAL_SHIFT ) &SND_BBFPRO_CTL_VAL_MASK ; + +if ((reg ==SND_BBFPRO_CTL_REG1 && + idx ==SND_BBFPRO_CTL_REG1_CLK_OPTICAL ) || + (reg ==SND_BBFPRO_CTL_REG2 && + (idx ==SND_BBFPRO_CTL_REG2_SENS_IN3 || + idx ==SND_BBFPRO_CTL_REG2_SENS_IN4 ))) { + val = ucontrol->value.enumerated.item[0 ]; + }else { + val = ucontrol->value.integer.value[0 ]; + } + +if (val >1 ) +return -EINVAL ; + +if (val == old_value) +return 0 ; + + kcontrol->private_value = reg + | ((idx &SND_BBFPRO_CTL_IDX_MASK ) <<SND_BBFPRO_CTL_IDX_SHIFT ) + | ((val &SND_BBFPRO_CTL_VAL_MASK ) <<SND_BBFPRO_CTL_VAL_SHIFT ); + + err =snd_bbfpro_ctl_update (mixer, reg, idx, val); +return err <0 ? err :1 ; +} + +static int snd_bbfpro_ctl_resume (struct usb_mixer_elem_list *list) +{ +u8 reg, idx; +int value, pv; + + pv = list->kctl->private_value; + reg = pv &SND_BBFPRO_CTL_REG_MASK ; + idx = (pv >>SND_BBFPRO_CTL_IDX_SHIFT ) &SND_BBFPRO_CTL_IDX_MASK ; + value = (pv >>SND_BBFPRO_CTL_VAL_SHIFT ) &SND_BBFPRO_CTL_VAL_MASK ; + +return snd_bbfpro_ctl_update (list->mixer, reg, idx, value); +} + +static int snd_bbfpro_vol_update (struct usb_mixer_interface *mixer,u16 index, +u32 value) +{ +struct snd_usb_audio *chip = mixer->chip; +int err; +u16 idx; +u16 usb_idx, usb_val; +u32 v; + + err =snd_usb_lock_shutdown (chip); +if (err <0 ) +return err; + + idx = index &SND_BBFPRO_MIXER_IDX_MASK ; +// 18 bit linear volume, split so 2 bits end up in index. + v = value &SND_BBFPRO_MIXER_VAL_MASK ; + usb_idx = idx | (v &0x3 ) <<14 ; + usb_val = (v >>2 ) &0xffff ; + + err =snd_usb_ctl_msg (chip->dev, +usb_sndctrlpipe (chip->dev,0 ), +SND_BBFPRO_USBREQ_MIXER , +USB_DIR_OUT |USB_TYPE_VENDOR | +USB_RECIP_DEVICE , + usb_val, usb_idx,0 ,0 ); + +snd_usb_unlock_shutdown (chip); +return err; +} + +static int snd_bbfpro_vol_get (struct snd_kcontrol *kcontrol, +struct snd_ctl_elem_value *ucontrol) +{ + ucontrol->value.integer.value[0 ] = + kcontrol->private_value >>SND_BBFPRO_MIXER_VAL_SHIFT ; +return 0 ; +} + +static int snd_bbfpro_vol_info (struct snd_kcontrol *kcontrol, +struct snd_ctl_elem_info *uinfo) +{ + uinfo->type =SNDRV_CTL_ELEM_TYPE_INTEGER ; + uinfo->count =1 ; + uinfo->value.integer.min =SND_BBFPRO_MIXER_VAL_MIN ; + uinfo->value.integer.max =SND_BBFPRO_MIXER_VAL_MAX ; +return 0 ; +} + +static int snd_bbfpro_vol_put (struct snd_kcontrol *kcontrol, +struct snd_ctl_elem_value *ucontrol) +{ +int err; +u16 idx; +u32 new_val, old_value, uvalue; +struct usb_mixer_elem_list *list =snd_kcontrol_chip (kcontrol); +struct usb_mixer_interface *mixer = list->mixer; + + uvalue = ucontrol->value.integer.value[0 ]; + idx = kcontrol->private_value &SND_BBFPRO_MIXER_IDX_MASK ; + old_value = kcontrol->private_value >>SND_BBFPRO_MIXER_VAL_SHIFT ; + +if (uvalue >SND_BBFPRO_MIXER_VAL_MAX ) +return -EINVAL ; + +if (uvalue == old_value) +return 0 ; + + new_val = uvalue &SND_BBFPRO_MIXER_VAL_MASK ; + + kcontrol->private_value = idx + | (new_val <<SND_BBFPRO_MIXER_VAL_SHIFT ); + + err =snd_bbfpro_vol_update (mixer, idx, new_val); +return err <0 ? err :1 ; +} + +static int snd_bbfpro_vol_resume (struct usb_mixer_elem_list *list) +{ +int pv = list->kctl->private_value; +u16 idx = pv &SND_BBFPRO_MIXER_IDX_MASK ; +u32 val = (pv >>SND_BBFPRO_MIXER_VAL_SHIFT ) + &SND_BBFPRO_MIXER_VAL_MASK ; +return snd_bbfpro_vol_update (list->mixer, idx, val); +} + +// Predfine elements +static const struct snd_kcontrol_new snd_bbfpro_ctl_control = { + .iface =SNDRV_CTL_ELEM_IFACE_MIXER , + .access =SNDRV_CTL_ELEM_ACCESS_READWRITE , + .index =0 , + .info = snd_bbfpro_ctl_info, + .get = snd_bbfpro_ctl_get, + .put = snd_bbfpro_ctl_put +}; + +static const struct snd_kcontrol_new snd_bbfpro_vol_control = { + .iface =SNDRV_CTL_ELEM_IFACE_MIXER , + .access =SNDRV_CTL_ELEM_ACCESS_READWRITE , + .index =0 , + .info = snd_bbfpro_vol_info, + .get = snd_bbfpro_vol_get, + .put = snd_bbfpro_vol_put +}; + +static int snd_bbfpro_ctl_add (struct usb_mixer_interface *mixer,u8 reg, +u8 index,char *name) +{ +struct snd_kcontrol_new knew = snd_bbfpro_ctl_control; + + knew.name = name; + knew.private_value = (reg &SND_BBFPRO_CTL_REG_MASK ) + | ((index &SND_BBFPRO_CTL_IDX_MASK ) + <<SND_BBFPRO_CTL_IDX_SHIFT ); + +return add_single_ctl_with_resume (mixer,0 , snd_bbfpro_ctl_resume, + &knew,NULL ); +} + +static int snd_bbfpro_vol_add (struct usb_mixer_interface *mixer,u16 index, +char *name) +{ +struct snd_kcontrol_new knew = snd_bbfpro_vol_control; + + knew.name = name; + knew.private_value = index &SND_BBFPRO_MIXER_IDX_MASK ; + +return add_single_ctl_with_resume (mixer,0 , snd_bbfpro_vol_resume, + &knew,NULL ); +} + +static int snd_bbfpro_controls_create (struct usb_mixer_interface *mixer) +{ +int err, i, o; +char name[48 ]; + +static const char *const input[] = { +"AN1" ,"AN2" ,"IN3" ,"IN4" ,"AS1" ,"AS2" ,"ADAT3" , +"ADAT4" ,"ADAT5" ,"ADAT6" ,"ADAT7" ,"ADAT8" }; + +static const char *const output[] = { +"AN1" ,"AN2" ,"PH3" ,"PH4" ,"AS1" ,"AS2" ,"ADAT3" ,"ADAT4" , +"ADAT5" ,"ADAT6" ,"ADAT7" ,"ADAT8" }; + +for (o =0 ; o <12 ; ++o) { +for (i =0 ; i <12 ; ++i) { +// Line routing +snprintf (name,sizeof (name), +"%s-%s-%s Playback Volume" , + (i <2 ?"Mic" :"Line" ), + input[i], output[o]); + err =snd_bbfpro_vol_add (mixer, (26 * o + i), name); +if (err <0 ) +return err; + +// PCM routing... yes, it is output remapping +snprintf (name,sizeof (name), +"PCM-%s-%s Playback Volume" , + output[i], output[o]); + err =snd_bbfpro_vol_add (mixer, (26 * o +12 + i), + name); +if (err <0 ) +return err; + } + } + +// Control Reg 1 + err =snd_bbfpro_ctl_add (mixer,SND_BBFPRO_CTL_REG1 , +SND_BBFPRO_CTL_REG1_CLK_OPTICAL , +"Sample Clock Source" ); +if (err <0 ) +return err; + + err =snd_bbfpro_ctl_add (mixer,SND_BBFPRO_CTL_REG1 , +SND_BBFPRO_CTL_REG1_SPDIF_PRO , +"IEC958 Pro Mask" ); +if (err <0 ) +return err; + + err =snd_bbfpro_ctl_add (mixer,SND_BBFPRO_CTL_REG1 , +SND_BBFPRO_CTL_REG1_SPDIF_EMPH , +"IEC958 Emphasis" ); +if (err <0 ) +return err; + + err =snd_bbfpro_ctl_add (mixer,SND_BBFPRO_CTL_REG1 , +SND_BBFPRO_CTL_REG1_SPDIF_OPTICAL , +"IEC958 Switch" ); +if (err <0 ) +return err; + +// Control Reg 2 + err =snd_bbfpro_ctl_add (mixer,SND_BBFPRO_CTL_REG2 , +SND_BBFPRO_CTL_REG2_48V_AN1 , +"Mic-AN1 48V" ); +if (err <0 ) +return err; + + err =snd_bbfpro_ctl_add (mixer,SND_BBFPRO_CTL_REG2 , +SND_BBFPRO_CTL_REG2_48V_AN2 , +"Mic-AN2 48V" ); +if (err <0 ) +return err; + + err =snd_bbfpro_ctl_add (mixer,SND_BBFPRO_CTL_REG2 , +SND_BBFPRO_CTL_REG2_SENS_IN3 , +"Line-IN3 Sens." ); +if (err <0 ) +return err; + + err =snd_bbfpro_ctl_add (mixer,SND_BBFPRO_CTL_REG2 , +SND_BBFPRO_CTL_REG2_SENS_IN4 , +"Line-IN4 Sens." ); +if (err <0 ) +return err; + + err =snd_bbfpro_ctl_add (mixer,SND_BBFPRO_CTL_REG2 , +SND_BBFPRO_CTL_REG2_PAD_AN1 , +"Mic-AN1 PAD" ); +if (err <0 ) +return err; + + err =snd_bbfpro_ctl_add (mixer,SND_BBFPRO_CTL_REG2 , +SND_BBFPRO_CTL_REG2_PAD_AN2 , +"Mic-AN2 PAD" ); +if (err <0 ) +return err; + +return 0 ; +} +int snd_usb_mixer_apply_create_quirk (struct usb_mixer_interface *mixer) {int err =0 ;
@@ -2286,6 +2701,9 @@ int snd_usb_mixer_apply_create_quirk(struct usb_mixer_interface *mixer)case USB_ID (0x0194f ,0x010c ):/* Presonus Studio 1810c */ err =snd_sc1810_init_mixer (mixer);break ; +case USB_ID (0x2a39 ,0x3fb0 ):/* RME Babyface Pro FS */ + err =snd_bbfpro_controls_create (mixer); +break ; }return err;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 124/477 gpio: dwapb: Append MODULE_ALIAS for platform driver
In reply to Greg Kroah-HartmanFrom: Andy Shevchenko <[email protected]>
[ Upstream commit c58220cba2e03618659fa7d5dfae31f5ad4ae9d0 ]
The commit 3d2613c4289f
("GPIO: gpio-dwapb: Enable platform driver binding to MFD driver")
introduced a use of the platform driver but missed to add the following line to it:
MODULE_ALIAS("platform:gpio-dwapb");
Add this to get driver loaded automatically if platform device is registered.
--- drivers/gpio/gpio-dwapb.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
drivers/gpio/gpio-dwapb.c +6 -3
@@ -49,7 +49,9 @@#define GPIO_EXT_PORTC 0x58#define GPIO_EXT_PORTD 0x5c +#define DWAPB_DRIVER_NAME "gpio-dwapb"#define DWAPB_MAX_PORTS 4 +#define GPIO_EXT_PORT_STRIDE 0x04/* register stride 32 bits */ #define GPIO_SWPORT_DR_STRIDE 0x0c/* register stride 3*32 bits */ #define GPIO_SWPORT_DDR_STRIDE 0x0c/* register stride 3*32 bits */
@@ -398,7 +400,7 @@ static void dwapb_configure_irqs(struct dwapb_gpio *gpio,return ; err =irq_alloc_domain_generic_chips (gpio->domain, ngpio,2 , -"gpio-dwapb" , handle_level_irq, +DWAPB_DRIVER_NAME , handle_level_irq,IRQ_NOREQUEST ,0 ,IRQ_GC_INIT_NESTED_LOCK );if (err) {
@@ -455,7 +457,7 @@ static void dwapb_configure_irqs(struct dwapb_gpio *gpio,*/ err =devm_request_irq (gpio->dev, pp->irq[0 ], dwapb_irq_handler_mfd, -IRQF_SHARED ,"gpio-dwapb-mfd" , gpio); +IRQF_SHARED ,DWAPB_DRIVER_NAME , gpio);if (err) {dev_err (gpio->dev,"error requesting IRQ\n" );irq_domain_remove (gpio->domain);
@@ -843,7 +845,7 @@ static SIMPLE_DEV_PM_OPS(dwapb_gpio_pm_ops, dwapb_gpio_suspend,static struct platform_driver dwapb_gpio_driver = { .driver = { - .name ="gpio-dwapb" , + .name =DWAPB_DRIVER_NAME , .pm = &dwapb_gpio_pm_ops, .of_match_table =of_match_ptr (dwapb_of_match), .acpi_match_table =ACPI_PTR (dwapb_acpi_match),
@@ -857,3 +859,4 @@ module_platform_driver(dwapb_gpio_driver);MODULE_LICENSE ("GPL" );MODULE_AUTHOR ("Jamie Iles" );MODULE_DESCRIPTION ("Synopsys DesignWare APB GPIO driver" ); +MODULE_ALIAS ("platform:" DWAPB_DRIVER_NAME );
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 125/477 scsi: qedf: Fix crash when MFW calls for protocol stats while function is still probing
In reply to Greg Kroah-HartmanFrom: Chad Dupuis <[email protected]>
[ Upstream commit ad40f5256095c68dc17c991eb976261d5ea2daaa ]
The MFW may make a call to qed and then to qedf for protocol statistics while the function is still probing. If this happens it's possible that some members of the struct qedf_ctx may not be fully initialized which can result in a NULL pointer dereference or general protection fault.
To prevent this, add a new flag call QEDF_PROBING and set it when the __qedf_probe() function is active. Then in the qedf_get_protocol_tlv_data() function we can check if the function is still probing and return immediantely before any uninitialized structures can be touched.
--- drivers/scsi/qedf/qedf.h | 1 + drivers/scsi/qedf/qedf_main.c | 35 +++++++++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-)
drivers/scsi/qedf/qedf.h +1 -0
@@ -355,6 +355,7 @@ struct qedf_ctx {#define QEDF_GRCDUMP_CAPTURE 4#define QEDF_IN_RECOVERY 5#define QEDF_DBG_STOP_IO 6 +#define QEDF_PROBING 8unsigned long flags;/* Miscellaneous state flags */ int fipvlan_retries;u8 num_queues;
drivers/scsi/qedf/qedf_main.c +31 -4
@@ -3153,7 +3153,7 @@ static int __qedf_probe(struct pci_dev *pdev, int mode) {int rc = -EINVAL ;struct fc_lport *lport; -struct qedf_ctx *qedf; +struct qedf_ctx *qedf =NULL ;struct Scsi_Host *host;bool is_vf = false;struct qed_ll2_params params;
@@ -3183,6 +3183,7 @@ static int __qedf_probe(struct pci_dev *pdev, int mode)/* Initialize qedf_ctx */ qedf =lport_priv (lport); +set_bit (QEDF_PROBING , &qedf->flags); qedf->lport = lport; qedf->ctlr.lp = lport; qedf->pdev = pdev;
@@ -3206,9 +3207,12 @@ static int __qedf_probe(struct pci_dev *pdev, int mode) }else {/* Init pointers during recovery */ qedf =pci_get_drvdata (pdev); +set_bit (QEDF_PROBING , &qedf->flags); lport = qedf->lport; } +QEDF_INFO (&qedf->dbg_ctx,QEDF_LOG_DISC ,"Probe started.\n" ); + host = lport->host;/* Allocate mempool for qedf_io_work structs */
@@ -3513,6 +3517,10 @@ static int __qedf_probe(struct pci_dev *pdev, int mode)else fc_fabric_login (lport); +QEDF_INFO (&qedf->dbg_ctx,QEDF_LOG_DISC ,"Probe done.\n" ); + +clear_bit (QEDF_PROBING , &qedf->flags); +/* All good */ return 0 ;
@@ -3538,6 +3546,11 @@ err2: err1:scsi_host_put (lport->host); err0: +if (qedf) { +QEDF_INFO (&qedf->dbg_ctx,QEDF_LOG_DISC ,"Probe done.\n" ); + +clear_bit (QEDF_PROBING , &qedf->flags); + }return rc; }
@@ -3687,11 +3700,25 @@ void qedf_get_protocol_tlv_data(void *dev, void *data) {struct qedf_ctx *qedf = dev;struct qed_mfw_tlv_fcoe *fcoe = data; -struct fc_lport *lport = qedf->lport; -struct Scsi_Host *host = lport->host; -struct fc_host_attrs *fc_host =shost_to_fc_host (host); +struct fc_lport *lport; +struct Scsi_Host *host; +struct fc_host_attrs *fc_host;struct fc_host_statistics *hst; +if (!qedf) { +QEDF_ERR (NULL ,"qedf is null.\n" ); +return ; + } + +if (test_bit (QEDF_PROBING , &qedf->flags)) { +QEDF_ERR (&qedf->dbg_ctx,"Function is still probing.\n" ); +return ; + } + + lport = qedf->lport; + host = lport->host; + fc_host =shost_to_fc_host (host); +/* Force a refresh of the fc_host stats including offload stats */ hst =qedf_fc_get_host_stats (host);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 126/477 iio: buffer-dmaengine: use %zu specifier for sprintf(align)
In reply to Greg Kroah-HartmanFrom: Alexandru Ardelean <[email protected]>
[ Upstream commit 6eb3b8acfd079104571c207d4524743b6acc6550 ]
The 'size_t' type behaves differently on 64-bit architectures, and causes compiler a warning of the sort "format '%u' expects argument of type 'unsigned int', but argument 3 has type 'size_t {aka long unsigned int}'".
This change adds the correct specifier for the 'align' field.
--- drivers/iio/buffer/industrialio-buffer-dmaengine.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/iio/buffer/industrialio-buffer-dmaengine.c +1 -1
@@ -134,7 +134,7 @@ static ssize_t iio_dmaengine_buffer_get_length_align(struct device *dev,struct dmaengine_buffer *dmaengine_buffer =iio_buffer_to_dmaengine_buffer (indio_dev->buffer); -return sprintf (buf,"%u\n" , dmaengine_buffer->align); +return sprintf (buf,"%zu\n" , dmaengine_buffer->align); } static IIO_DEVICE_ATTR(length_align_bytes, 0444,
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 127/477 pinctrl: rza1: Fix wrong array assignment of rza1l_swio_entries
In reply to Greg Kroah-HartmanFrom: Jason Yan <[email protected]>
[ Upstream commit 4b4e8e93eccc2abc4209fe226ec89e7fbe9f3c61 ]
The rza1l_swio_entries referred to the wrong array rza1h_swio_pins, which was intended to be rza1l_swio_pins. So let's fix it.
This is detected by the following gcc warning:
drivers/pinctrl/pinctrl-rza1.c:401:35: warning: ‘rza1l_swio_pins’ defined but not used [-Wunused-const-variable=]
static const struct rza1_swio_pin rza1l_swio_pins[] = {
^~~~~~~~~~~~~~~--- drivers/pinctrl/pinctrl-rza1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/pinctrl/pinctrl-rza1.c +1 -1
@@ -418,7 +418,7 @@ static const struct rza1_bidir_entry rza1l_bidir_entries[RZA1_NPORTS] = { };static const struct rza1_swio_entry rza1l_swio_entries[] = { - [0 ] = {ARRAY_SIZE (rza1h_swio_pins), rza1h_swio_pins }, + [0 ] = {ARRAY_SIZE (rza1l_swio_pins), rza1l_swio_pins }, };/* RZ/A1L (r7s72102x) pinmux flags table */
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 128/477 virtiofs: schedule blocking async replies in separate worker
In reply to Greg Kroah-HartmanFrom: Vivek Goyal <[email protected]>
[ Upstream commit bb737bbe48bea9854455cb61ea1dc06e92ce586c ]
In virtiofs (unlike in regular fuse) processing of async replies is serialized. This can result in a deadlock in rare corner cases when there's a circular dependency between the completion of two or more async replies.
Such a deadlock can be reproduced with xfstests:generic/503 if TEST_DIR == SCRATCH_MNT (which is a misconfiguration):
- Process A is waiting for page lock in worker thread context and blocked (virtio_fs_requests_done_work()).
- Process B is holding page lock and waiting for pending writes to finish (fuse_wait_on_page_writeback()).
- Write requests are waiting in virtqueue and can't complete because worker thread is blocked on page lock (process A).
Fix this by creating a unique work_struct for each async reply that can block (O_DIRECT read).
--- fs/fuse/file.c | 1 + fs/fuse/fuse_i.h | 1 + fs/fuse/virtio_fs.c | 106 +++++++++++++++++++++++++++++--------------- 3 files changed, 73 insertions(+), 35 deletions(-)
fs/fuse/file.c +1 -0
@@ -712,6 +712,7 @@ static ssize_t fuse_async_req_send(struct fuse_conn *fc,spin_unlock (&io->lock); ia->ap.args.end = fuse_aio_complete_req; + ia->ap.args.may_block = io->should_dirty; err =fuse_simple_background (fc, &ia->ap.args,GFP_KERNEL );if (err)fuse_aio_complete_req (fc, &ia->ap.args, err);
fs/fuse/fuse_i.h +1 -0
@@ -249,6 +249,7 @@ struct fuse_args { bool out_argvar:1; bool page_zeroing:1; bool page_replace:1; + bool may_block:1;struct fuse_in_arg in_args[3 ];struct fuse_arg out_args[2 ];void (*end)(struct fuse_conn *fc,struct fuse_args *args,int error);
fs/fuse/virtio_fs.c +71 -35
134 lines not on this page · raw message
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 129/477 fuse: BUG_ON correction in fuse_dev_splice_write()
In reply to Greg Kroah-HartmanFrom: Vasily Averin <[email protected]>
[ Upstream commit 0e9fb6f17ad5b386b75451328975a07d7d953c6d ]
commit 963545357202 ("fuse: reduce allocation size for splice_write") changed size of bufs array, so BUG_ON which checks the index of the array shold also be fixed.
[SzM: turn BUG_ON into WARN_ON]
--- fs/fuse/dev.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
fs/fuse/dev.c +3 -2
@@ -1977,8 +1977,9 @@ static ssize_t fuse_dev_splice_write(struct pipe_inode_info *pipe,struct pipe_buffer *ibuf;struct pipe_buffer *obuf; -BUG_ON (nbuf >= pipe->ring_size); -BUG_ON (tail == head); +if (WARN_ON (nbuf >= count || tail == head)) + goto out_free; + ibuf = &pipe->bufs[tail & mask]; obuf = &bufs[nbuf];
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 130/477 arm64: dts: qcom: fix pm8150 gpio interrupts
In reply to Greg Kroah-HartmanFrom: Jonathan Marek <[email protected]>
[ Upstream commit 61d2ca503d0b55d2849fd656ce51d8e1e9ba0b6c ]
This was mistakenly copied from the downstream dts, however the upstream driver works differently.
I only tested this with the pm8150_gpios node (used with volume button), but the 2 others should be the same.
--- arch/arm64/boot/dts/qcom/pm8150.dtsi | 14 ++------------ arch/arm64/boot/dts/qcom/pm8150b.dtsi | 14 ++------------ arch/arm64/boot/dts/qcom/pm8150l.dtsi | 14 ++------------ 3 files changed, 6 insertions(+), 36 deletions(-)
arch/arm64/boot/dts/qcom/pm8150.dtsi +2 -12
@@ -73,18 +73,8 @@ reg = <0xc000>; gpio-controller; #gpio-cells = <2>; - interrupts = <0x0 0xc0 0x0 IRQ_TYPE_NONE>, - <0x0 0xc1 0x0 IRQ_TYPE_NONE>, - <0x0 0xc2 0x0 IRQ_TYPE_NONE>, - <0x0 0xc3 0x0 IRQ_TYPE_NONE>, - <0x0 0xc4 0x0 IRQ_TYPE_NONE>, - <0x0 0xc5 0x0 IRQ_TYPE_NONE>, - <0x0 0xc6 0x0 IRQ_TYPE_NONE>, - <0x0 0xc7 0x0 IRQ_TYPE_NONE>, - <0x0 0xc8 0x0 IRQ_TYPE_NONE>, - <0x0 0xc9 0x0 IRQ_TYPE_NONE>, - <0x0 0xca 0x0 IRQ_TYPE_NONE>, - <0x0 0xcb 0x0 IRQ_TYPE_NONE>; + interrupt-controller; + #interrupt-cells = <2>; }; };
arch/arm64/boot/dts/qcom/pm8150b.dtsi +2 -12
@@ -62,18 +62,8 @@ reg = <0xc000>; gpio-controller; #gpio-cells = <2>; - interrupts = <0x2 0xc0 0x0 IRQ_TYPE_NONE>, - <0x2 0xc1 0x0 IRQ_TYPE_NONE>, - <0x2 0xc2 0x0 IRQ_TYPE_NONE>, - <0x2 0xc3 0x0 IRQ_TYPE_NONE>, - <0x2 0xc4 0x0 IRQ_TYPE_NONE>, - <0x2 0xc5 0x0 IRQ_TYPE_NONE>, - <0x2 0xc6 0x0 IRQ_TYPE_NONE>, - <0x2 0xc7 0x0 IRQ_TYPE_NONE>, - <0x2 0xc8 0x0 IRQ_TYPE_NONE>, - <0x2 0xc9 0x0 IRQ_TYPE_NONE>, - <0x2 0xca 0x0 IRQ_TYPE_NONE>, - <0x2 0xcb 0x0 IRQ_TYPE_NONE>; + interrupt-controller; + #interrupt-cells = <2>; }; };
arch/arm64/boot/dts/qcom/pm8150l.dtsi +2 -12
@@ -56,18 +56,8 @@ reg = <0xc000>; gpio-controller; #gpio-cells = <2>; - interrupts = <0x4 0xc0 0x0 IRQ_TYPE_NONE>, - <0x4 0xc1 0x0 IRQ_TYPE_NONE>, - <0x4 0xc2 0x0 IRQ_TYPE_NONE>, - <0x4 0xc3 0x0 IRQ_TYPE_NONE>, - <0x4 0xc4 0x0 IRQ_TYPE_NONE>, - <0x4 0xc5 0x0 IRQ_TYPE_NONE>, - <0x4 0xc6 0x0 IRQ_TYPE_NONE>, - <0x4 0xc7 0x0 IRQ_TYPE_NONE>, - <0x4 0xc8 0x0 IRQ_TYPE_NONE>, - <0x4 0xc9 0x0 IRQ_TYPE_NONE>, - <0x4 0xca 0x0 IRQ_TYPE_NONE>, - <0x4 0xcb 0x0 IRQ_TYPE_NONE>; + interrupt-controller; + #interrupt-cells = <2>; }; };
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 131/477 firmware: qcom_scm: fix bogous abuse of dma-direct internals
In reply to Greg Kroah-HartmanFrom: Christoph Hellwig <[email protected]>
[ Upstream commit 459b1f86f1cba7de813fbc335df476c111feec22 ]
As far as the device is concerned the dma address is the physical address. There is no need to convert it to a physical address, especially not using dma-direct internals that are not available to drivers and which will interact badly with IOMMUs. Last but not least the commit introducing it claimed to just fix a type issue, but actually changed behavior.
--- drivers/firmware/qcom_scm.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)
drivers/firmware/qcom_scm.c +3 -6
@@ -6,7 +6,6 @@#include <linux/init.h> #include <linux/cpumask.h> #include <linux/export.h> -#include <linux/dma-direct.h> #include <linux/dma-mapping.h> #include <linux/module.h> #include <linux/types.h>
@@ -806,8 +805,7 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,struct qcom_scm_mem_map_info *mem_to_map;phys_addr_t mem_to_map_phys;phys_addr_t dest_phys; -phys_addr_t ptr_phys; -dma_addr_t ptr_dma; +dma_addr_t ptr_phys;size_t mem_to_map_sz;size_t dest_sz;size_t src_sz;
@@ -824,10 +822,9 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz, ptr_sz =ALIGN (src_sz,SZ_64 ) +ALIGN (mem_to_map_sz,SZ_64 ) +ALIGN (dest_sz,SZ_64 ); - ptr =dma_alloc_coherent (__scm->dev, ptr_sz, &ptr_dma,GFP_KERNEL ); + ptr =dma_alloc_coherent (__scm->dev, ptr_sz, &ptr_phys,GFP_KERNEL );if (!ptr)return -ENOMEM ; - ptr_phys =dma_to_phys (__scm->dev, ptr_dma);/* Fill source vmid detail */ src = ptr;
@@ -855,7 +852,7 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz, ret =__qcom_scm_assign_mem (__scm->dev, mem_to_map_phys, mem_to_map_sz, ptr_phys, src_sz, dest_phys, dest_sz); -dma_free_coherent (__scm->dev, ptr_sz, ptr, ptr_dma); +dma_free_coherent (__scm->dev, ptr_sz, ptr, ptr_phys);if (ret) {dev_err (__scm->dev,"Assign memory protection call failed %d\n" , ret);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 132/477 arm64: dts: qcom: sm8250: Fix PDC compatible and reg
In reply to Greg Kroah-HartmanFrom: Bjorn Andersson <[email protected]>
[ Upstream commit 240031967ac4c63713c6e0c3249d734e23c913aa ]
The pdc node suffers from both too narrow compatible and insufficient cells in the reg, fix these.
--- arch/arm64/boot/dts/qcom/sm8250.dtsi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm64/boot/dts/qcom/sm8250.dtsi +2 -2
@@ -314,8 +314,8 @@ }; pdc: interrupt-controller@b220000 { - compatible = "qcom,sm8250-pdc"; - reg = <0x0b220000 0x30000>, <0x17c000f0 0x60>; + compatible = "qcom,sm8250-pdc", "qcom,pdc"; + reg = <0 0x0b220000 0 0x30000>, <0 0x17c000f0 0 0x60>; qcom,pdc-ranges = <0 480 94>, <94 609 31>, <125 63 1>, <126 716 12>; #interrupt-cells = <2>;
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 133/477 staging: gasket: Fix mapping refcnt leak when put attribute fails
In reply to Greg Kroah-HartmanFrom: Xiyu Yang <[email protected]>
[ Upstream commit 57a66838e1494cd881b7f4e110ec685736e8e3ca ]
gasket_sysfs_put_attr() invokes get_mapping(), which returns a reference of the specified gasket_sysfs_mapping object to "mapping" with increased refcnt.
When gasket_sysfs_put_attr() returns, local variable "mapping" becomes invalid, so the refcount should be decreased to keep refcount balanced.
The reference counting issue happens in one path of gasket_sysfs_put_attr(). When mapping attribute is unknown, the function forgets to decrease the refcnt increased by get_mapping(), causing a refcnt leak.
Fix this issue by calling put_mapping() when put attribute fails due to unknown attribute.
--- drivers/staging/gasket/gasket_sysfs.c | 1 + 1 file changed, 1 insertion(+)
drivers/staging/gasket/gasket_sysfs.c +1 -0
@@ -339,6 +339,7 @@ void gasket_sysfs_put_attr(struct device *device,dev_err (device,"Unable to put unknown attribute: %s\n" , attr->attr.attr.name); +put_mapping (mapping); }EXPORT_SYMBOL (gasket_sysfs_put_attr);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 134/477 staging: gasket: Fix mapping refcnt leak when register/store fails
In reply to Greg Kroah-HartmanFrom: Xiyu Yang <[email protected]>
[ Upstream commit e3436ce60cf5f5eaedda2b8c622f69feb97595e2 ]
gasket_sysfs_register_store() invokes get_mapping(), which returns a reference of the specified gasket_sysfs_mapping object to "mapping" with increased refcnt.
When gasket_sysfs_register_store() returns, local variable "mapping" becomes invalid, so the refcount should be decreased to keep refcount balanced.
The reference counting issue happens in one exception handling path of gasket_sysfs_register_store(). When gasket_dev is NULL, the function forgets to decrease the refcnt increased by get_mapping(), causing a refcnt leak.
Fix this issue by calling put_mapping() when gasket_dev is NULL.
--- drivers/staging/gasket/gasket_sysfs.c | 1 + 1 file changed, 1 insertion(+)
drivers/staging/gasket/gasket_sysfs.c +1 -0
@@ -373,6 +373,7 @@ ssize_t gasket_sysfs_register_store(struct device *device, gasket_dev = mapping->gasket_dev;if (!gasket_dev) {dev_err (device,"Device driver may have been removed\n" ); +put_mapping (mapping);return 0 ; }
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 135/477 ALSA: usb-audio: Improve frames size computation
In reply to Greg Kroah-HartmanFrom: Alexander Tsoy <[email protected]>
[ Upstream commit f0bd62b64016508938df9babe47f65c2c727d25c ]
For computation of the the next frame size current value of fs/fps and accumulated fractional parts of fs/fps are used, where values are stored in Q16.16 format. This is quite natural for computing frame size for asynchronous endpoints driven by explicit feedback, since in this case fs/fps is a value provided by the feedback endpoint and it's already in the Q format. If an error is accumulated over time, the device can adjust fs/fps value to prevent buffer overruns/underruns.
But for synchronous endpoints the accuracy provided by these computations is not enough. Due to accumulated error the driver periodically produces frames with incorrect size (+/- 1 audio sample).
This patch fixes this issue by implementing a different algorithm for frame size computation. It is based on accumulating of the remainders from division fs/fps and it doesn't accumulate errors over time. This new method is enabled for synchronous and adaptive playback endpoints.
--- sound/usb/card.h | 4 ++++ sound/usb/endpoint.c | 43 ++++++++++++++++++++++++++++++++++++++----- sound/usb/endpoint.h | 1 + sound/usb/pcm.c | 2 ++ 4 files changed, 45 insertions(+), 5 deletions(-)
sound/usb/card.h +4 -0
@@ -84,6 +84,10 @@ struct snd_usb_endpoint {dma_addr_t sync_dma;/* DMA address of syncbuf */ unsigned int pipe;/* the data i/o pipe */ +unsigned int framesize[2 ];/* small/large frame sizes in samples */ +unsigned int sample_rem;/* remainder from division fs/fps */ +unsigned int sample_accum;/* sample accumulator */ +unsigned int fps;/* frames per second */ unsigned int freqn;/* nominal sampling rate in fs/fps in Q16.16 format */ unsigned int freqm;/* momentary sampling rate in fs/fps in Q16.16 format */ int freqshift;/* how much to shift the feedback value to get Q16.16 */
sound/usb/endpoint.c +38 -5
78 lines not on this page · raw message
sound/usb/endpoint.h +1 -0
@@ -28,6 +28,7 @@ void snd_usb_endpoint_release(struct snd_usb_endpoint *ep);void snd_usb_endpoint_free (struct snd_usb_endpoint *ep);int snd_usb_endpoint_implicit_feedback_sink (struct snd_usb_endpoint *ep); +int snd_usb_endpoint_slave_next_packet_size (struct snd_usb_endpoint *ep);int snd_usb_endpoint_next_packet_size (struct snd_usb_endpoint *ep); void snd_usb_handle_sync_urb(struct snd_usb_endpoint *ep,
sound/usb/pcm.c +2 -0
@@ -1579,6 +1579,8 @@ static void prepare_playback_urb(struct snd_usb_substream *subs,for (i =0 ; i < ctx->packets; i++) {if (ctx->packet_size[i]) counts = ctx->packet_size[i]; +else if (ep->sync_master) + counts =snd_usb_endpoint_slave_next_packet_size (ep);else counts =snd_usb_endpoint_next_packet_size (ep);
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 136/477 ALSA: usb-audio: Fix racy list management in output queue
In reply to Greg Kroah-HartmanFrom: Takashi Iwai <[email protected]>
[ Upstream commit 5b6cc38f3f3f37109ce72b60bda215a5f6892c0b ]
The linked list entry from FIFO is peeked at queue_pending_output_urbs() but the actual element pop-out is performed outside the spinlock, and it's potentially racy.
Do delete the link at the right place inside the spinlock.
--- sound/usb/endpoint.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
sound/usb/endpoint.c +3 -3
@@ -346,17 +346,17 @@ static void queue_pending_output_urbs(struct snd_usb_endpoint *ep) ep->next_packet_read_pos %=MAX_URBS ;/* take URB out of FIFO */ -if (!list_empty (&ep->ready_playback_urbs)) +if (!list_empty (&ep->ready_playback_urbs)) { ctx =list_first_entry (&ep->ready_playback_urbs, struct snd_urb_ctx, ready_list); +list_del_init (&ctx->ready_list); + } }spin_unlock_irqrestore (&ep->lock, flags);if (ctx ==NULL )return ; -list_del_init (&ctx->ready_list); -/* copy over the length information */ for (i =0 ; i < packet->packets; i++) ctx->packet_size[i] = packet->packet_size[i];
Signature · 1 line
2.25.1
Greg Kroah-Hartman
maintainerPATCH 137/477 Input: mms114 - add extra compatible for mms345l
In reply to Greg Kroah-HartmanFrom: Stephan Gerhold <[email protected]>
[ Upstream commit 7842087b0196d674ed877d768de8f2a34d7fdc53 ]
MMS345L is another first generation touch screen from Melfas, which uses mostly the same registers as MMS152.
However, there is some garbage printed during initialization. Apparently MMS345L does not have the MMS152_COMPAT_GROUP register that is read+printed during initialization.
TSP FW Rev: bootloader 0x6 / core 0x26 / config 0x26, Compat group: \x06
On earlier kernel versions the compat group was actually printed as an ASCII control character, seems like it gets escaped now.
But we probably shouldn't print something from a random register.
Add a separate "melfas,mms345l" compatible that avoids reading from the MMS152_COMPAT_GROUP register. This might also help in case there is some other device-specific quirk in the future.
--- drivers/input/touchscreen/mms114.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-)
drivers/input/touchscreen/mms114.c +15 -2
@@ -54,6 +54,7 @@enum mms_type {TYPE_MMS114 =114 ,TYPE_MMS152 =152 , +TYPE_MMS345L =345 , };struct mms114_data {
@@ -250,6 +251,15 @@ static int mms114_get_version(struct mms114_data *data)int error;switch (data->type) { +case TYPE_MMS345L : + error =__mms114_read_reg (data,MMS152_FW_REV ,3 , buf); +if (error) +return error; + +dev_info (dev,"TSP FW Rev: bootloader 0x%x / core 0x%x / config 0x%x\n" , + buf[0 ], buf[1 ], buf[2 ]); +break ; +case TYPE_MMS152 : error =__mms114_read_reg (data,MMS152_FW_REV ,3 , buf);if (error)
@@ -287,8 +297,8 @@ static int mms114_setup_regs(struct mms114_data *data)if (error <0 )return error; -/* MMS152 has no configuration or power on registers */ -if (data->type ==TYPE_MMS152 ) +/* Only MMS114 has configuration and power on registers */ +if (data->type !=TYPE_MMS114 )return 0 ; error =mms114_set_active (data, true);
@@ -597,6 +607,9 @@ static const struct of_device_id mms114_dt_match[] = { }, { .compatible = "melfas,mms152", .data = (void *)TYPE_MMS152, + }, { + .compatible = "melfas,mms345l", + .data = (void *)TYPE_MMS345L, }, { } };
Signature · 1 line
2.25.1