Skip to contentSkip to conversation

5.10.4-rc1 review

PATCH In review Greg Kroah-Hartman 17 participants 748 messages Dec 28, 2020 – Jan 5, 2021 Page 1 of 5

Subsystems (8)
lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

cover 5.10.4-rc1 review

This is the start of the stable review cycle for the 5.10.4 release. There are 717 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 Wed, 30 Dec 2020 12:48:23 +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.10.4-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.10.y
and the diffstat can be found below.

thanks,

greg k-h

-------------
Pseudo-Shortlog of commits:

Greg Kroah-Hartman <[email protected]>

    Linux 5.10.4-rc1

Damien Le Moal <[email protected]>
null_blk: Fail zone append to conventional zones

Damien Le Moal <[email protected]>
null_blk: Fix zone size initialization

Steven Rostedt (VMware) <[email protected]>
Revert: "ring-buffer: Remove HAVE_64BIT_ALIGNED_ACCESS"

Nikita Shubin <[email protected]>
rtc: ep93xx: Fix NULL pointer dereference in ep93xx_rtc_read_time

Zhuguangqing <[email protected]>
thermal/drivers/cpufreq_cooling: Update cpufreq_state only if state has changed

Bjorn Andersson <[email protected]>
remoteproc: sysmon: Ensure remote notification ordering

DingHua Ma <[email protected]>

    regulator: axp20x: Fix DLDO2 voltage control register mask for AXP22x

Jubin Zhong <[email protected]>
PCI: Fix pci_slot_release() NULL pointer dereference

Johan Hovold <[email protected]>
of: fix linker-section match-table corruption

Felix Fietkau <[email protected]>
mt76: add back the SUPPORTS_REORDERING_BUFFER flag

Masami Hiramatsu <[email protected]>
tracing: Disable ftrace selftests when any tracer is running

Carlos Garnacho <[email protected]>
platform/x86: intel-vbtn: Allow switch events on Acer Switch Alpha 12

Dan Williams <[email protected]>
libnvdimm/namespace: Fix reaping of invalidated block-window-namespace labels

Lad Prabhakar <[email protected]>
memory: renesas-rpc-if: Fix unbalanced pm_runtime_enable in rpcif_{enable,disable}_rpm

Lad Prabhakar <[email protected]>
memory: renesas-rpc-if: Return correct value to the caller of rpcif_manual_xfer()

Lad Prabhakar <[email protected]>
memory: renesas-rpc-if: Fix a node reference leak in rpcif_probe()

Dan Carpenter <[email protected]>
memory: jz4780_nemc: Fix an error pointer vs NULL check in probe()

SeongJae Park <[email protected]>
xenbus/xenbus_backend: Disallow pending watch messages

SeongJae Park <[email protected]>
xen/xenbus: Count pending messages for each watch

SeongJae Park <[email protected]>
xen/xenbus/xen_bus_type: Support will_handle watch callback

SeongJae Park <[email protected]>
xen/xenbus: Add 'will_handle' callback support in xenbus_watch_path()

SeongJae Park <[email protected]>
xen/xenbus: Allow watches discard events before queueing

Pawel Wieczorkiewicz <[email protected]>

    xen-blkback: set ring->xenblkd to NULL after kthread_stop()

Takashi Iwai <[email protected]>
driver: core: Fix list corruption after device_del()

Maarten Lankhorst <[email protected]>
dma-buf/dma-resv: Respect num_fences when initializing the shared fence list.

Wang Hai <[email protected]>
device-dax/core: Fix memory leak when rmmod dax.ko

William Breathitt Gray <[email protected]>
counter: microchip-tcb-capture: Fix CMR value check

Nicolin Chen <[email protected]>
clk: tegra: Do not return 0 on failure

Terry Zhou <[email protected]>
clk: mvebu: a3700: fix the XTAL MODE pin to MPP1_9

Paul Cercueil <[email protected]>
clk: ingenic: Fix divider calculation with div tables

Yangtao Li <[email protected]>
pinctrl: sunxi: Always call chained_irq_{enter, exit} in sunxi_pinctrl_irq_handler

Zhao Heming <[email protected]>
md/cluster: fix deadlock when node is doing resync job

Zhao Heming <[email protected]>
md/cluster: block reshape with remote resync job

Jonathan Cameron <[email protected]>
iio:adc:ti-ads124s08: Fix alignment and data leak issues.

Jonathan Cameron <[email protected]>
iio:adc:ti-ads124s08: Fix buffer being too long.

Jonathan Cameron <[email protected]>
iio:imu:bmi160: Fix alignment and data leak issues

Jonathan Cameron <[email protected]>
iio:imu:bmi160: Fix too large a buffer.

Jonathan Cameron <[email protected]>
iio:pressure:mpl3115: Force alignment of buffer

Jonathan Cameron <[email protected]>
iio:magnetometer:mag3110: Fix alignment and data leak issues.

Jonathan Cameron <[email protected]>
iio:light:st_uvis25: Fix timestamp alignment and prevent data leak.

Jonathan Cameron <[email protected]>
iio:light:rpr0521: Fix timestamp alignment and prevent data leak.

Lorenzo Bianconi <[email protected]>
iio: imu: st_lsm6dsx: fix edge-trigger interrupts

Qinglang Miao <[email protected]>
iio: adc: rockchip_saradc: fix missing clk_disable_unprepare() on error in rockchip_saradc_resume

Nuno Sá <[email protected]>
iio: buffer: Fix demux update

Aleksa Sarai <[email protected]>
openat2: reject RESOLVE_BENEATH|RESOLVE_IN_ROOT

James Smart <[email protected]>
scsi: lpfc: Re-fix use after free in lpfc_rq_buf_free()

James Smart <[email protected]>
scsi: lpfc: Fix scheduling call while in softirq context in lpfc_unreg_rpi

James Smart <[email protected]>
scsi: lpfc: Fix invalid sleeping context in lpfc_sli4_nvmet_alloc()

Arun Easi <[email protected]>
scsi: qla2xxx: Fix crash during driver load on big endian machines

Sergei Antonov <[email protected]>
mtd: rawnand: meson: fix meson_nfc_dma_buffer_release() arguments

Praveenkumar I <[email protected]>
mtd: rawnand: qcom: Fix DMA sync on FLASH_STATUS register read

Richard Weinberger <[email protected]>
mtd: core: Fix refcounting for unpartitioned MTDs

Sven Eckelmann <[email protected]>
mtd: parser: cmdline: Fix parsing of part-names with colons

Miquel Raynal <[email protected]>
mtd: spinand: Fix OOB read

Evan Green <[email protected]>
soc: qcom: smp2p: Safely acquire spinlock without IRQs

Tudor Ambarus <[email protected]>
spi: atmel-quadspi: Fix AHB memory accesses

Lukas Wunner <[email protected]>
spi: atmel-quadspi: Disable clock in probe error path

Lukas Wunner <[email protected]>
spi: mt7621: Don't leak SPI master in probe error path

Lukas Wunner <[email protected]>
spi: mt7621: Disable clock in probe error path

Lukas Wunner <[email protected]>
spi: synquacer: Disable clock in probe error path

Lukas Wunner <[email protected]>
spi: st-ssc4: Fix unbalanced pm_runtime_disable() in probe error path

Lukas Wunner <[email protected]>
spi: spi-qcom-qspi: Fix use-after-free on unbind

Lukas Wunner <[email protected]>
spi: spi-geni-qcom: Fix use-after-free on unbind

Lukas Wunner <[email protected]>
spi: sc18is602: Don't leak SPI master in probe error path

Lukas Wunner <[email protected]>
spi: rpc-if: Fix use-after-free on unbind

Lukas Wunner <[email protected]>
spi: rb4xx: Don't leak SPI master in probe error path

Lukas Wunner <[email protected]>
spi: pic32: Don't leak DMA channels in probe error path

Lukas Wunner <[email protected]>
spi: npcm-fiu: Disable clock in probe error path

Lukas Wunner <[email protected]>
spi: mxic: Don't leak SPI master in probe error path

Lukas Wunner <[email protected]>
spi: gpio: Don't leak SPI master in probe error path

Rasmus Villemoes <[email protected]>
spi: fsl: fix use of spisel_boot signal on MPC8309

Lukas Wunner <[email protected]>
spi: davinci: Fix use-after-free on unbind

Lukas Wunner <[email protected]>
spi: ar934x: Don't leak SPI master in probe error path

Lukas Wunner <[email protected]>
spi: spi-mtk-nor: Don't leak SPI master in probe error path

Lukas Wunner <[email protected]>
spi: atmel-quadspi: Fix use-after-free on unbind

Lukas Wunner <[email protected]>
spi: spi-sh: Fix use-after-free on unbind

Lukas Wunner <[email protected]>
spi: pxa2xx: Fix use-after-free on unbind

Lars-Peter Clausen <[email protected]>
iio: ad_sigma_delta: Don't put SPI transfer buffer on the stack

Chris Wilson <[email protected]>
drm/i915: Fix mismatch between misplaced vma check and vma insert

Zwane Mwaikambo <[email protected]>
drm/dp_aux_dev: check aux_dev before use in drm_dp_aux_dev_get_by_minor()

Stylon Wang <[email protected]>
drm/amd/display: Fix memory leaks in S3 resume

Alex Deucher <[email protected]>
drm/amdgpu: only set DP subconnector type on DP and eDP connectors

Bas Nieuwenhuizen <[email protected]>
drm/amd/display: Honor the offset for plane 0.

Boris Brezillon <[email protected]>
drm/panfrost: Move the GPU reset bits outside the timeout handler

Boris Brezillon <[email protected]>
drm/panfrost: Fix job timeout handling

Dave Kleikamp <[email protected]>
jfs: Fix array index bounds check in dbAdjTree

Amir Goldstein <[email protected]>
fsnotify: fix events reported to watching parent and child

Amir Goldstein <[email protected]>
inotify: convert to handle_inode_event() interface

Amir Goldstein <[email protected]>
fsnotify: generalize handle_inode_event()

lizhe <[email protected]>
jffs2: Fix ignoring mounting options problem during remounting

Zhe Li <[email protected]>
jffs2: Fix GC exit abnormally

Richard Weinberger <[email protected]>
ubifs: wbuf: Don't leak kernel memory to flash

Steve French <[email protected]>
SMB3.1.1: do not log warning message if server doesn't populate salt

Steve French <[email protected]>
SMB3.1.1: remove confusing mount warning when no SPNEGO info on negprot rsp

Steve French <[email protected]>
SMB3: avoid confusing warning message on mount to Azure

Luis Henriques <[email protected]>
ceph: fix race in concurrent __ceph_remove_cap invocations

Johannes Berg <[email protected]>
um: Fix time-travel mode

Anton Ivanov <[email protected]>
um: Remove use of asprinf in umid.c

Roberto Sassu <[email protected]>
ima: Don't modify file descriptor mode on the fly

Miklos Szeredi <[email protected]>
ovl: make ioctl() safe

David Hildenbrand <[email protected]>
powerpc/powernv/memtrace: Fix crashing the kernel when enabling concurrently

David Hildenbrand <[email protected]>
powerpc/powernv/memtrace: Don't leak kernel memory to user space

Alexey Kardashevskiy <[email protected]>
powerpc/powernv/npu: Do not attempt NPU2 setup on POWER8NVL NPU

Christophe Leroy <[email protected]>
powerpc/mm: Fix verification of MMU_FTR_TYPE_44x

Christophe Leroy <[email protected]>
powerpc/8xx: Fix early debug when SMC1 is relocated

Christophe Leroy <[email protected]>
powerpc/xmon: Change printk() to pr_cont()

Christophe Leroy <[email protected]>
powerpc/feature: Add CPU_FTR_NOEXECUTE to G2_LE

Christophe Leroy <[email protected]>
powerpc/bitops: Fix possible undefined behaviour with fls() and fls64()

Tyrel Datwyler <[email protected]>
powerpc/rtas: Fix typo of ibm,open-errinjct in RTAS filter

Mathieu Desnoyers <[email protected]>
powerpc: Fix incorrect stw{, ux, u, x} instructions in __set_pte_at

Christophe Leroy <[email protected]>
powerpc/32: Fix vmap stack - Properly set r1 before activating MMU on syscall too

Chuck Lever <[email protected]>
xprtrdma: Fix XDRBUF_SPARSE_PAGES support

Jon Hunter <[email protected]>
ARM: tegra: Populate OPP table for Tegra20 Ventana

Nicolas Ferre <[email protected]>
ARM: dts: at91: sama5d2: fix CAN message ram offset and size

H. Nikolaus Schaller <[email protected]>
ARM: dts: pandaboard: fix pinmux for gpio user button of Pandaboard ES

Bjorn Andersson <[email protected]>
iommu/arm-smmu-qcom: Implement S2CR quirk

Bjorn Andersson <[email protected]>
iommu/arm-smmu-qcom: Read back stream mappings

Bjorn Andersson <[email protected]>
iommu/arm-smmu: Allow implementation specific write_s2cr

Tom Lendacky <[email protected]>
KVM: SVM: Remove the call to sev_platform_status() during setup

Paolo Bonzini <[email protected]>
KVM: x86: reinstate vendor-agnostic check on SPEC_CTRL cpuid bits

Marc Zyngier <[email protected]>
KVM: arm64: Introduce handling of AArch32 TTBCR2 traps

Tomasz Nowicki <[email protected]>
arm64: dts: marvell: keep SMMU disabled by default for Armada 7040 and 8040

Tomi Valkeinen <[email protected]>
arm64: dts: ti: k3-am65: mark dss as dma-coherent

Atish Patra <[email protected]>
RISC-V: Fix usage of memblock_enforce_memory_limit

Jan Kara <[email protected]>
ext4: don't remount read-only with errors=continue on reboot

Jan Kara <[email protected]>
ext4: fix deadlock with fs freezing and EA inodes

Chunguang Xu <[email protected]>
ext4: fix a memory leak of ext4_free_data

Dan Carpenter <[email protected]>
ext4: fix an IS_ERR() vs NULL check

Filipe Manana <[email protected]>
btrfs: fix race when defragmenting leads to unnecessary IO

Josef Bacik <[email protected]>
btrfs: update last_byte_to_unpin in switch_commit_roots

Josef Bacik <[email protected]>
btrfs: do not shorten unpin len for caching block groups

Johan Hovold <[email protected]>
USB: serial: keyspan_pda: fix write unthrottling

Johan Hovold <[email protected]>
USB: serial: keyspan_pda: fix tx-unthrottle use-after-free

Johan Hovold <[email protected]>
USB: serial: keyspan_pda: fix write-wakeup use-after-free

Johan Hovold <[email protected]>
USB: serial: keyspan_pda: fix stalled writes

Johan Hovold <[email protected]>
USB: serial: keyspan_pda: fix write deadlock

Johan Hovold <[email protected]>
USB: serial: keyspan_pda: fix dropped unthrottle interrupts

Johan Hovold <[email protected]>
USB: serial: digi_acceleport: fix write-wakeup deadlocks

Johan Hovold <[email protected]>
USB: serial: mos7720: fix parallel-port state restore

Jim Cromie <[email protected]>
dyndbg: fix use before null check

Daniel Jordan <[email protected]>
cpuset: fix race between hotplug work and later CPU offline

Borislav Petkov <[email protected]>
EDAC/amd64: Fix PCI component registration

Qiuxu Zhuo <[email protected]>
EDAC/i10nm: Use readl() to access MMIO registers

Ahmed S. Darwish <[email protected]>
Documentation: seqlock: s/LOCKTYPE/LOCKNAME/g

Finn Thain <[email protected]>
m68k: Fix WARNING splat in pmac_zilog driver

Ard Biesheuvel <[email protected]>
crypto: arm/aes-ce - work around Cortex-A57/A72 silion errata

Ard Biesheuvel <[email protected]>
crypto: ecdh - avoid unaligned accesses in ecdh_set_secret()

Rafael J. Wysocki <[email protected]>
cpufreq: intel_pstate: Use most recent guaranteed performance values

Athira Rajeev <[email protected]>
powerpc/perf: Exclude kernel samples while counting events in user space.

Kan Liang <[email protected]>
perf/x86/intel/lbr: Fix the return type of get_lbr_cycles()

Kan Liang <[email protected]>
perf/x86/intel: Fix rtm_abort_event encoding on Ice Lake

Kan Liang <[email protected]>
perf/x86/intel: Add event constraint for CYCLE_ACTIVITY.STALLS_MEM_ANY

Vitaly Wool <[email protected]>
z3fold: stricter locking and more careful reclaim

Vitaly Wool <[email protected]>
z3fold: simplify freeing slots

Ian Abbott <[email protected]>
staging: comedi: mf6x4: Fix AI end-of-conversion detection

Jaroslav Kysela <[email protected]>
ASoC: AMD Raven/Renoir - fix the PCI probe (PCI revision)

Jaroslav Kysela <[email protected]>
ASoC: AMD Renoir - add DMI table to avoid the ACP mic probe (broken BIOS)

Takashi Iwai <[email protected]>
ASoC: cx2072x: Fix doubly definitions of Playback and Capture streams

Todd Kjos <[email protected]>
binder: add flag to clear buffer on txn complete

Stefan Haberland <[email protected]>
s390/dasd: fix list corruption of lcu list

Stefan Haberland <[email protected]>
s390/dasd: fix list corruption of pavgroup group list

Stefan Haberland <[email protected]>
s390/dasd: prevent inconsistent LCU device data

Stefan Haberland <[email protected]>
s390/dasd: fix hanging device offline processing

Sven Schnelle <[email protected]>
s390/idle: fix accounting with machine checks

Sven Schnelle <[email protected]>
s390/idle: add missing mt_cycles calculation

Philipp Rudo <[email protected]>
s390/kexec_file: fix diag308 subcode when loading crash kernel

Sven Schnelle <[email protected]>
s390/smp: perform initial CPU reset also for SMT siblings

Robin Gong <[email protected]>
ALSA: core: memalloc: add page alignment for iram

Takashi Iwai <[email protected]>
ALSA: usb-audio: Add alias entry for ASUS PRIME TRX40 PRO-S

Takashi Iwai <[email protected]>
ALSA: usb-audio: Disable sample read check if firmware doesn't give back

Amadej Kastelic <[email protected]>
ALSA: usb-audio: Add VID to support native DSD reproduction on FiiO devices

Kailang Yang <[email protected]>
ALSA: hda/realtek - Supported Dell fixed type headset

Chris Chiu <[email protected]>
ALSA: hda/realtek: Remove dummy lineout on Acer TravelMate P648/P658

Chris Chiu <[email protected]>
ALSA: hda/realtek: Apply jack fixup for Quanta NL3

Takashi Iwai <[email protected]>
ALSA: hda/realtek: Add quirk for MSI-GP73

Chris Chiu <[email protected]>
ALSA/hda: apply jack fixup for the Acer Veriton N4640G/N6640G/N2510G

Takashi Iwai <[email protected]>
ALSA: pcm: oss: Fix a few more UBSAN fixes

Kailang Yang <[email protected]>
ALSA: hda/realtek - Add supported for more Lenovo ALC285 Headset Button

Chris Chiu <[email protected]>
ALSA: hda/realtek - Enable headset mic of ASUS Q524UQK with ALC255

Chris Chiu <[email protected]>
ALSA: hda/realtek - Enable headset mic of ASUS X430UN with ALC256

Hui Wang <[email protected]>
ALSA: hda/realtek: make bass spk volume adjustable on a yoga laptop

Connor McAdams <[email protected]>
ALSA: hda/ca0132 - Fix AE-5 rear headphone pincfg.

Takashi Iwai <[email protected]>
ALSA: hda: Fix regressions on clear and reconfig sysfs

Hui Wang <[email protected]>
ACPI: PNP: compare the string length in the matching_id()

Daniel Scally <[email protected]>
Revert "ACPI / resources: Use AE_CTRL_TERMINATE to terminate resources walks"

Rafael J. Wysocki <[email protected]>
PM: ACPI: PCI: Drop acpi_pm_set_bridge_wakeup()

Dan Williams <[email protected]>
ACPI: NFIT: Fix input validation of bus-family

Connor McAdams <[email protected]>
ALSA: hda/ca0132 - Change Input Source enum strings.

Arnd Bergmann <[email protected]>
Input: cyapa_gen6 - fix out-of-bounds stack access

Sakari Ailus <[email protected]>
media: ipu3-cio2: Make the field on subdev format V4L2_FIELD_NONE

Sakari Ailus <[email protected]>
media: ipu3-cio2: Validate mbus format in setting subdev format

Sakari Ailus <[email protected]>
media: ipu3-cio2: Serialise access to pad format

Sakari Ailus <[email protected]>
media: ipu3-cio2: Return actual subdev format

Sakari Ailus <[email protected]>
media: ipu3-cio2: Remove traces of returned buffers

Lukas Wunner <[email protected]>
media: netup_unidvb: Don't leak SPI master in probe error path

Sean Young <[email protected]>
media: sunxi-cir: ensure IR is handled when it is continuous

Jens Axboe <[email protected]>
io_uring: make ctx cancel on exit targeted to actual ctx

Pavel Begunkov <[email protected]>
io_uring: fix double io_uring free

Pavel Begunkov <[email protected]>
io_uring: fix ignoring xa_store errors

Xiaoguang Wang <[email protected]>
io_uring: hold uring_lock while completing failed polled io in io_wq_submit_work()

Pavel Begunkov <[email protected]>
io_uring: fix 0-iov read buffer select

Xiaoguang Wang <[email protected]>

    io_uring: fix io_wqe->work_list corruption

Alan Stern <[email protected]>
media: gspca: Fix memory leak in probe

Alexey Kardashevskiy <[email protected]>
vfio/pci/nvlink2: Do not attempt NPU2 setup on POWER8NVL NPU

Eric Auger <[email protected]>
vfio/pci: Move dummy_resources_list init in vfio_pci_probe()

Xiaoguang Wang <[email protected]>
io_uring: always let io_iopoll_complete() complete polled io

Pavel Begunkov <[email protected]>
io_uring: fix racy IOPOLL completions

Pavel Begunkov <[email protected]>
io_uring: fix io_cqring_events()'s noflush

Linus Torvalds <[email protected]>
proc mountinfo: make splice available again

Casey Schaufler <[email protected]>
Smack: Handle io_uring kernel thread privileges

Pavel Begunkov <[email protected]>
io_uring: cancel reqs shouldn't kill overflow list

Pavel Begunkov <[email protected]>
io_uring: fix racy IOPOLL flush overflow

Arnaldo Carvalho de Melo <[email protected]>
perf probe: Fix memory leak when synthesizing SDT probes

Geert Uytterhoeven <[email protected]>
ARM: 9036/1: uncompress: Fix dbgadtb size parameter name

Ard Biesheuvel <[email protected]>
ARM: 9044/1: vfp: use undef hook for VFP support detection

Cédric Le Goater <[email protected]>
powerpc/smp: Add __init to init_big_cores()

Michael Ellerman <[email protected]>
powerpc/boot: Fix build of dts/fsl

Masahiro Yamada <[email protected]>
kconfig: fix return value of do_error_if()

Geert Uytterhoeven <[email protected]>
clk: vc5: Use "idt,voltage-microvolt" instead of "idt,voltage-microvolts"

Jernej Skrabec <[email protected]>
clk: sunxi-ng: Make sure divider tables have sentinel

Christophe JAILLET <[email protected]>
clk: s2mps11: Fix a resource leak in error handling paths in the probe function

Alexandre Belloni <[email protected]>
clk: at91: sam9x60: remove atmel,osc-bypass support

Claudiu Beznea <[email protected]>
clk: at91: sama7g5: fix compilation error

Nicolas Saenz Julienne <[email protected]>
clk: bcm: dvp: Add MODULE_DEVICE_TABLE()

Soheil Hassas Yeganeh <[email protected]>
epoll: check for events when removing a timed out thread from the wait queue

Zhang Changzhong <[email protected]>
vhost scsi: fix error return code in vhost_scsi_set_endpoint()

Dan Carpenter <[email protected]>
virtio_ring: Fix two use after free bugs

Dan Carpenter <[email protected]>
virtio_net: Fix error code in probe()

Dan Carpenter <[email protected]>
virtio_ring: Cut and paste bugs in vring_create_virtqueue_packed()

Eli Cohen <[email protected]>
vdpa/mlx5: Use write memory barrier after updating CQ index

Simon Horman <[email protected]>
nfp: move indirect block cleanup to flower app stop callback

Dan Carpenter <[email protected]>
qlcnic: Fix error code in probe

Zheng Zengkai <[email protected]>
perf record: Fix memory leak when using '--user-regs=?' to list registers

Jiri Olsa <[email protected]>
tools build: Add missing libcap to test-all.bin target

Pavel Begunkov <[email protected]>
io_uring: cancel only requests of current task

Thierry Reding <[email protected]>
pwm: sun4i: Remove erroneous else branch

Uwe Kleine-König <[email protected]>
pwm: imx27: Fix overflow for bigger periods

Lokesh Vutla <[email protected]>
pwm: lp3943: Dynamically allocate PWM chip base

Uwe Kleine-König <[email protected]>
pwm: zx: Add missing cleanup in error path

Zhang Qilong <[email protected]>
clk: ti: Fix memleak in ti_fapll_synth_setup

Arnd Bergmann <[email protected]>
watchdog: coh901327: add COMMON_CLK dependency

Manivannan Sadhasivam <[email protected]>
watchdog: qcom: Avoid context switch in restart handler

Michael Ellerman <[email protected]>
powerpc/32s: Fix cleanup_cpu_mmu_context() compile bug

Zhang Qilong <[email protected]>
libnvdimm/label: Return -ENXIO for no slot in __blk_label_update

Tobias Klauser <[email protected]>
devlink: use _BITUL() macro instead of BIT() in the UAPI header

Vincent Stehlé <[email protected]>
net: korina: fix return value

Trond Myklebust <[email protected]>
NFS/pNFS: Fix a typo in ff_layout_resend_pnfs_read()

Jack Wang <[email protected]>
block/rnbd-clt: Fix possible memleak

Md Haris Iqbal <[email protected]>
block/rnbd-clt: Get rid of warning regarding size argument in strlcpy

Christophe JAILLET <[email protected]>
net: allwinner: Fix some resources leak in the error handling path of the probe and in the remove function

Christophe JAILLET <[email protected]>
net: mscc: ocelot: Fix a resource leak in the error handling path of the probe function

Christophe JAILLET <[email protected]>
net: bcmgenet: Fix a resource leak in an error handling path in the probe functin

Ioana Ciornei <[email protected]>
dpaa2-eth: fix the size of the mapped SGT buffer

Oleksij Rempel <[email protected]>
net: dsa: qca: ar9331: fix sleeping function called from invalid context bug

Björn Töpel <[email protected]>
i40e, xsk: clear the status bits for the next_to_use descriptor

Björn Töpel <[email protected]>
ice, xsk: clear the status bits for the next_to_use descriptor

Sven Van Asbroeck <[email protected]>
lan743x: fix rx_napi_poll/interrupt ping-pong

Heiko Carstens <[email protected]>
s390/test_unwind: fix CALL_ON_STACK tests

Dwaipayan Ray <[email protected]>
checkpatch: fix unescaped left brace

Alexey Dobriyan <[email protected]>
proc: fix lookup in /proc/net subdirectories after setns(2)

Johannes Weiner <[email protected]>
mm: don't wake kswapd prematurely when watermark boosting is disabled

Dan Carpenter <[email protected]>
hugetlb: fix an error code in hugetlb_reserve_pages()

Oscar Salvador <[email protected]>
mm,memory_failure: always pin the page in madvise_inject_error

Vincenzo Frascino <[email protected]>
mm/vmalloc.c: fix kasan shadow poisoning size

Waiman Long <[email protected]>
mm/vmalloc: Fix unlock order in s_stop()

Matthew Wilcox (Oracle) <[email protected]>
sparc: fix handling of page table constructor failure

Shakeel Butt <[email protected]>
mm/rmap: always do TTU_IGNORE_ACCESS

Muchun Song <[email protected]>
mm: memcg/slab: fix use after free in obj_cgroup_charge

Muchun Song <[email protected]>
mm: memcg/slab: fix return of child memcg objcg for root memcg

Jason Gunthorpe <[email protected]>
mm/gup: combine put_compound_head() and unpin_user_page()

Jason Gunthorpe <[email protected]>
mm/gup: prevent gup_fast from racing with COW during fork

Jason Gunthorpe <[email protected]>
mm/gup: reorganize internal_get_user_pages_fast()

Alex Deucher <[email protected]>
drm/amdgpu: fix regression in vbios reservation handling on headless

Kajol Jain <[email protected]>
perf test: Fix metric parsing test

Vincent Stehlé <[email protected]>
powerpc/ps3: use dma_mapping_error()

Madhavan Srinivasan <[email protected]>
powerpc/perf: Fix Threshold Event Counter Multiplier width for P10

Guido Günther <[email protected]>
drm: mxsfb: Silence -EPROBE_DEFER while waiting for bridge

Bongsu Jeon <[email protected]>
nfc: s3fwrn5: Release the nfc firmware

Leon Romanovsky <[email protected]>
RDMA/cma: Don't overwrite sgid_attr after device is released

Maor Gottlieb <[email protected]>
RDMA/mlx5: Fix MR cache memory leak

Dan Aloni <[email protected]>
sunrpc: fix xs_read_xdr_buf for partial pages receive

Anton Ivanov <[email protected]>
um: chan_xterm: Fix fd leak

Anton Ivanov <[email protected]>
um: tty: Fix handling of close in tty lines

Anton Ivanov <[email protected]>
um: Monitor error events in IRQ controller

Wang ShaoBo <[email protected]>
ubifs: Fix error return code in ubifs_init_authentication()

Wang Wensheng <[email protected]>
watchdog: Fix potential dereferencing of null pointer

Lingling Xu <[email protected]>
watchdog: sprd: check busy bit before new loading rather than after that

Lingling Xu <[email protected]>
watchdog: sprd: remove watchdog disable from resume fail path

Guenter Roeck <[email protected]>
watchdog: sirfsoc: Add missing dependency on HAS_IOMEM

Guenter Roeck <[email protected]>
watchdog: armada_37xx: Add missing dependency on HAS_IOMEM

Douglas Anderson <[email protected]>
irqchip/qcom-pdc: Fix phantom irq when changing between rising/falling

Pradeep Kumar Chitrapu <[email protected]>
ath11k: Fix incorrect tlvs in scan start command

Nikita Shubin <[email protected]>
gpiolib: irq hooks: fix recursion in gpiochip_irq_unmask

Weihang Li <[email protected]>
RDMA/hns: Do shift on traffic class when using RoCEv2

Wenpeng Liang <[email protected]>
RDMA/hns: Normalization the judgment of some features

Wenpeng Liang <[email protected]>
RDMA/hns: Limit the length of data copied between kernel and userspace

Peter Ujfalusi <[email protected]>
dmaengine: ti: k3-udma: Correct normal channel offset when uchan_cnt is not 0

Lokesh Vutla <[email protected]>
irqchip/ti-sci-intr: Fix freeing of irqs

Lokesh Vutla <[email protected]>
irqchip/ti-sci-inta: Fix printing of inta id on probe success

Marc Zyngier <[email protected]>
irqchip/alpine-msi: Fix freeing of interrupts on allocation error path

Dan Carpenter <[email protected]>
ASoC: wm_adsp: remove "ctl" from list on error in wm_adsp_create_control()

Wen Gong <[email protected]>
mac80211: fix a mistake check for rx_stats update

Johannes Berg <[email protected]>
mac80211: don't set set TDLS STA bandwidth wider than possible

Arnd Bergmann <[email protected]>
crypto: atmel-i2c - select CONFIG_BITREVERSE

Marek Szyprowski <[email protected]>
extcon: max77693: Fix modalias string

Hao Li <[email protected]>
fs: Handle I_DONTCACHE in iput_final() instead of generic_drop_inode()

Magnus Karlsson <[email protected]>
samples/bpf: Fix possible hang in xdpsock with multiple threads

Han Xu <[email protected]>
mtd: rawnand: gpmi: Fix the random DMA timeout issue

Dan Carpenter <[email protected]>
mtd: rawnand: meson: Fix a resource leak in init

Zhang Qilong <[email protected]>
mtd: rawnand: gpmi: fix reference count leak in gpmi ops

Dmitry Osipenko <[email protected]>
clk: tegra: Fix duplicated SE clock entry

Douglas Anderson <[email protected]>
clk: qcom: gcc-sc7180: Use floor ops for sdcc clks

Tzung-Bi Shih <[email protected]>
remoteproc/mediatek: unprepare clk if scp_before_load fails

Zhang Changzhong <[email protected]>
remoteproc: qcom: Fix potential NULL dereference in adsp_init_mmio()

YueHaibing <[email protected]>
remoteproc: k3-dsp: Fix return value check in k3_dsp_rproc_of_get_memories()

Zhang Qilong <[email protected]>
remoteproc: qcom: pas: fix error handling in adsp_pds_enable

Zhang Qilong <[email protected]>
remoteproc: qcom: fix reference leak in adsp_start

Zhang Qilong <[email protected]>
remoteproc: q6v5-mss: fix error handling in q6v5_pds_enable

Alexandre Courbot <[email protected]>
remoteproc/mtk_scp: surround DT device IDs with CONFIG_OF

Tzung-Bi Shih <[email protected]>
remoteproc/mediatek: change MT8192 CFG register base

Avihai Horon <[email protected]>
RDMA/uverbs: Fix incorrect variable type

Jack Morgenstein <[email protected]>
RDMA/core: Do not indicate device ready when device enablement fails

Kai Vehmanen <[email protected]>
ALSA: hda/hdmi: fix silent stream for first playback to DP

Zhang Changzhong <[email protected]>
slimbus: qcom: fix potential NULL dereference in qcom_slim_prg_slew()

Ravi Bangoria <[email protected]>
powerpc/sstep: Cover new VSX instructions under CONFIG_VSX

Balamuruhan S <[email protected]>
powerpc/sstep: Emulate prefixed instructions only when CPU_FTR_ARCH_31 is set

Sean Nyekjaer <[email protected]>
can: m_can: m_can_config_endisable(): remove double clearing of clock stop request bit

Geert Uytterhoeven <[email protected]>
clk: renesas: r8a779a0: Fix R and OSC clocks

Huang Jianan <[email protected]>
erofs: avoid using generic_block_bmap

Johannes Berg <[email protected]>
iwlwifi: mvm: hook up missing RX handlers

Johannes Berg <[email protected]>
iwlwifi: dbg-tlv: fix old length in is_trig_data_contained()

Qinglang Miao <[email protected]>
s390/cio: fix use-after-free in ccw_device_destroy_console

Eddie James <[email protected]>
fsi: Aspeed: Add mutex to protect HW access

Zhang Changzhong <[email protected]>
bus: fsl-mc: fix error return code in fsl_mc_object_allocate()

Laurentiu Tudor <[email protected]>
bus: fsl-mc: add back accidentally dropped error check

Xiongfeng Wang <[email protected]>
misc: pci_endpoint_test: fix return value of error branch

Stephen Boyd <[email protected]>
platform/chrome: cros_ec_spi: Don't overwrite spi::mode

Quinn Tran <[email protected]>
scsi: qla2xxx: Fix N2N and NVMe connect retry failure

Arun Easi <[email protected]>
scsi: qla2xxx: Fix FW initialization error on big endian machines

Masami Hiramatsu <[email protected]>
x86/kprobes: Restore BTF if the single-stepping is cancelled

Cheng Lin <[email protected]>
nfs_common: need lock during iterate through the list

Dai Ngo <[email protected]>
NFSD: Fix 5 seconds delay when doing inter server copy

kazuo ito <[email protected]>
nfsd: Fix message level for normal termination

Yang Yingliang <[email protected]>
speakup: fix uninitialized flush_lock

Zhang Qilong <[email protected]>
usb: oxu210hp-hcd: Fix memory leak in oxu_create

Zhang Qilong <[email protected]>
usb: ehci-omap: Fix PM disable depth umbalance in ehci_hcd_omap_probe

Christophe Leroy <[email protected]>
powerpc/mm: sanity_check_fault() should work for all, not only BOOK3S

Dan Carpenter <[email protected]>

    ASoC: max98390: Fix error codes in max98390_dsm_init()

Arnd Bergmann <[email protected]>
coresight: remove broken __exit annotations

Chuhong Yuan <[email protected]>
ASoC: amd: change clk_get() to devm_clk_get() and add missed checks

Colin Ian King <[email protected]>
drm/mediatek: avoid dereferencing a null hdmi_phy on an error message

Christophe Leroy <[email protected]>
powerpc/powermac: Fix low_sleep_handler with CONFIG_VMAP_STACK

Nathan Lynch <[email protected]>
powerpc/pseries/hibernation: remove redundant cacheinfo update

Nathan Lynch <[email protected]>
powerpc/pseries/hibernation: drop pseries_suspend_begin() from suspend ops

Ard Biesheuvel <[email protected]>
ARM: 9030/1: entry: omit FP emulation for UND exceptions taken in kernel mode

Vadim Pasternak <[email protected]>
platform/x86: mlx-platform: Fix item counter assignment for MSN2700/ComEx system

Vadim Pasternak <[email protected]>
platform/x86: mlx-platform: Fix item counter assignment for MSN2700, MSN24xx systems

Zhang Changzhong <[email protected]>
scsi: fnic: Fix error return code in fnic_probe()

Arnd Bergmann <[email protected]>
seq_buf: Avoid type mismatch for seq_buf_init

Qinglang Miao <[email protected]>
scsi: iscsi: Fix inappropriate use of put_device()

Zhang Qilong <[email protected]>

    scsi: pm80xx: Fix error return in pm8001_pci_probe()

Qinglang Miao <[email protected]>
scsi: qedi: Fix missing destroy_workqueue() on error in __qedi_probe

Michael Walle <[email protected]>
clk: fsl-sai: fix memory leak

Stefan Agner <[email protected]>
arm64: dts: meson: g12b: w400: fix PHY deassert timing requirements

Stefan Agner <[email protected]>
arm64: dts: meson: g12a: x96-max: fix PHY deassert timing requirements

Stefan Agner <[email protected]>
ARM: dts: meson: fix PHY deassert timing requirements

Stefan Agner <[email protected]>
arm64: dts: meson: fix PHY deassert timing requirements

Stefan Agner <[email protected]>
arm64: dts: meson: g12b: odroid-n2: fix PHY deassert timing requirements

Michael Walle <[email protected]>

    mtd: spi-nor: atmel: fix unlock_all() for AT25FS010/040

Michael Walle <[email protected]>
mtd: spi-nor: atmel: remove global protection flag

Michael Walle <[email protected]>
mtd: spi-nor: ignore errors in spi_nor_unlock_all()

Michael Walle <[email protected]>
mtd: spi-nor: sst: fix BPn bits for the SST25VF064C

Zhang Changzhong <[email protected]>
adm8211: fix error return code in adm8211_probe()

Hans de Goede <[email protected]>
platform/x86: intel-vbtn: Fix SW_TABLET_MODE always reporting 1 on some HP x360 models

Hans de Goede <[email protected]>

    Bluetooth: btusb: Fix detection of some fake CSR controllers with a bcdDevice val of 0x0134

Colin Ian King <[email protected]>

    block/rnbd: fix a null pointer dereference on dev->blk_symlink_name

Md Haris Iqbal <[email protected]>
block/rnbd-clt: Dynamically alloc buffer for pathname & blk_symlink_name

Wei Yongjun <[email protected]>
Bluetooth: sco: Fix crash when using BT_SNDMTU/BT_RCVMTU option

Jing Xiangfeng <[email protected]>
Bluetooth: btmtksdio: Add the missed release_firmware() in mtk_setup_firmware()

Jing Xiangfeng <[email protected]>
Bluetooth: btusb: Add the missed release_firmware() in btusb_mtk_setup_firmware()

Zhang Changzhong <[email protected]>
spi: dw: Fix error return code in dw_spi_bt1_probe()

Wang Hai <[email protected]>
staging: greybus: audio: Fix possible leak free widgets in gbaudio_dapm_free_controls

Arnd Bergmann <[email protected]>
staging: bcm2835: fix vchiq_mmal dependencies

Finn Thain <[email protected]>
macintosh/adb-iop: Send correct poll command

Finn Thain <[email protected]>
macintosh/adb-iop: Always wait for reply message from IOP

Arnd Bergmann <[email protected]>
cpufreq: imx: fix NVMEM_IMX_OCOTP dependency

Pali Rohár <[email protected]>
cpufreq: vexpress-spc: Add missing MODULE_ALIAS

Pali Rohár <[email protected]>
cpufreq: scpi: Add missing MODULE_ALIAS

Pali Rohár <[email protected]>
cpufreq: loongson1: Add missing MODULE_ALIAS

Pali Rohár <[email protected]>
cpufreq: sun50i: Add missing MODULE_DEVICE_TABLE

Pali Rohár <[email protected]>
cpufreq: st: Add missing MODULE_DEVICE_TABLE

Pali Rohár <[email protected]>
cpufreq: qcom: Add missing MODULE_DEVICE_TABLE

Pali Rohár <[email protected]>
cpufreq: mediatek: Add missing MODULE_DEVICE_TABLE

Pali Rohár <[email protected]>
cpufreq: highbank: Add missing MODULE_DEVICE_TABLE

Pali Rohár <[email protected]>
cpufreq: ap806: Add missing MODULE_DEVICE_TABLE

Keqian Zhu <[email protected]>
clocksource/drivers/arm_arch_timer: Correct fault programming of CNTKCTL_EL1.EVNTI

Keqian Zhu <[email protected]>
clocksource/drivers/arm_arch_timer: Use stable count reader in erratum sne

Arnd Bergmann <[email protected]>
drm/msm: add IOMMU_SUPPORT dependency

Marijn Suijten <[email protected]>
drm/msm: a5xx: Make preemption reset case reentrant

Zhang Changzhong <[email protected]>
memory: jz4780_nemc: Fix potential NULL dereference in jz4780_nemc_probe()

Arnd Bergmann <[email protected]>
memory: ti-emif-sram: only build for ARMv7

Wang Li <[email protected]>
phy: renesas: rcar-gen3-usb2: disable runtime pm in case of failure

Arnd Bergmann <[email protected]>
phy: mediatek: allow compile-testing the hdmi phy

Arnd Bergmann <[email protected]>
ASoC: qcom: fix QDSP6 dependencies, attempt #3

Arnd Bergmann <[email protected]>
ASoC: atmel: mchp-spdifrx needs COMMON_CLK

Arnd Bergmann <[email protected]>
ASoC: cros_ec_codec: fix uninitialized memory read

Qinglang Miao <[email protected]>
dm ioctl: fix error return code in target_message

Srinivas Kandagatla <[email protected]>
ASoC: q6afe-clocks: Add missing parent clock rate

Chuhong Yuan <[email protected]>
ASoC: jz4740-i2s: add missed checks for clk_get()

Lorenzo Bianconi <[email protected]>
mt76: fix tkip configuration for mt7615/7663 devices

Lorenzo Bianconi <[email protected]>
mt76: fix memory leak if device probing fails

Leon Romanovsky <[email protected]>
net/mlx5: Properly convey driver version to firmware

Lorenzo Bianconi <[email protected]>
mt76: dma: fix possible deadlock running mt76_dma_cleanup

Taehee Yoo <[email protected]>
mt76: set fops_tx_stats.owner to THIS_MODULE

Taehee Yoo <[email protected]>
mt76: mt7915: set fops_sta_stats.owner to THIS_MODULE

Lorenzo Bianconi <[email protected]>
mt76: mt7663s: fix a possible ple quota underflow

Alexander Sverdlin <[email protected]>
MIPS: Don't round up kernel sections size for memblock_add()

Jing Xiangfeng <[email protected]>
memstick: r592: Fix error return in r592_probe()

Chen-Yu Tsai <[email protected]>
arm64: dts: rockchip: Fix UART pull-ups on rk3328

Zhang Changzhong <[email protected]>
soc: rockchip: io-domain: Fix error return code in rockchip_iodomain_probe()

Yu Kuai <[email protected]>
pinctrl: falcon: add missing put_device() call in pinctrl_falcon_probe()

Andrii Nakryiko <[email protected]>
selftests/bpf: Fix invalid use of strncat in test_sockmap

Andrii Nakryiko <[email protected]>
bpf: Fix bpf_put_raw_tracepoint()'s use of __module_address()

Mauro Carvalho Chehab <[email protected]>
scripts: kernel-doc: fix parsing function-like typedefs

Claudiu Beznea <[email protected]>
ARM: dts: at91: sama5d2: map securam as device

Claudiu Beznea <[email protected]>
ARM: dts: at91: sam9x60ek: remove bypass property

Toke Høiland-Jørgensen <[email protected]>
libbpf: Sanitise map names before pinning

Lars-Peter Clausen <[email protected]>
iio: hrtimer-trigger: Mark hrtimer to expire in hard interrupt context

Peter Collingbourne <[email protected]>
arm64: mte: fix prctl(PR_GET_TAGGED_ADDR_CTRL) if TCF0=NONE

Kefeng Wang <[email protected]>
clocksource/drivers/riscv: Make RISCV_TIMER depends on RISCV_SBI

Daniel Lezcano <[email protected]>
clocksource/drivers/ingenic: Fix section mismatch

Yu Kuai <[email protected]>
clocksource/drivers/cadence_ttc: Fix memory leak in ttc_setup_clockevent()

Yang Yingliang <[email protected]>
clocksource/drivers/orion: Add missing clk_disable_unprepare() on error path

Athira Rajeev <[email protected]>
powerpc/perf: Fix the PMU group constraints for threshold events in power10

Athira Rajeev <[email protected]>
powerpc/perf: Update the PMU group constraints for l2l3 events in power10

Athira Rajeev <[email protected]>
powerpc/perf: Fix to update radix_scope_qual in power10

Ravi Bangoria <[email protected]>
powerpc/xmon: Fix build failure for 8xx

Jordan Niethe <[email protected]>
powerpc/64: Fix an EMIT_BUG_ENTRY in head_64.S

Athira Rajeev <[email protected]>
powerpc/perf: Fix crash with is_sier_available when pmu is not set

Dan Carpenter <[email protected]>
media: saa7146: fix array overflow in vidioc_s_audio()

Zhang Xiaoxu <[email protected]>
media: tvp5150: Fix wrong return value of tvp5150_parse_dt()

Hyeongseok Kim <[email protected]>
f2fs: fix double free of unicode map

Zhang Qilong <[email protected]>
hwmon: (ina3221) Fix PM usage counter unbalance in ina3221_write_enable

Jason Gunthorpe <[email protected]>
vfio-pci: Use io_remap_pfn_range() for PCI IO memory

Mickaël Salaün <[email protected]>
selftests/seccomp: Update kernel config

NeilBrown <[email protected]>
NFS: switch nfsiod to be an UNBOUND workqueue.

Calum Mackay <[email protected]>
lockd: don't use interval-based rebinding over TCP

Fedor Tokarev <[email protected]>
net: sunrpc: Fix 'snprintf' return value check in 'do_xprt_debugfs'

Trond Myklebust <[email protected]>
NFSv4: Fix the alignment of page data in the getdeviceinfo reply

Trond Myklebust <[email protected]>
SUNRPC: xprt_load_transport() needs to support the netid "rdma6"

Olga Kornievskaia <[email protected]>
NFSv4.2: condition READDIR's mask for security label based on LSM state

Trond Myklebust <[email protected]>
SUNRPC: rpc_wake_up() should wake up tasks in the correct order

Christophe JAILLET <[email protected]>
ath10k: Release some resources in an error handling path

Christophe JAILLET <[email protected]>
ath10k: Fix an error handling path

Rakesh Pillai <[email protected]>
ath10k: Fix the parsing error in service available event

Christophe JAILLET <[email protected]>
ath11k: Fix an error handling path

Sven Eckelmann <[email protected]>
ath11k: Reset ath11k_skb_cb before setting new flags

Sven Eckelmann <[email protected]>

    ath11k: Don't cast ath11k_skb_cb to ieee80211_tx_info.control

Hans Verkuil <[email protected]>
media: i2c: imx219: Selection compliance fixes

Jacopo Mondi <[email protected]>
media: rdacm20: Enable GPIO1 explicitly

Jacopo Mondi <[email protected]>
media: max9271: Fix GPIO enable/disable

Sathyanarayana Nujella <[email protected]>
ASoC: Intel: Boards: tgl_max98373: update TDM slot_width

Qinglang Miao <[email protected]>
platform/x86: dell-smbios-base: Fix error return code in dell_smbios_init

Pierre-Louis Bossart <[email protected]>
soundwire: master: use pm_runtime_set_active() on add

Sudeep Holla <[email protected]>
mailbox: arm_mhu_db: Fix mhu_db_shutdown by replacing kfree with devm_kfree

Yangyang Li <[email protected]>
RDMA/hns: Bugfix for calculation of extended sge

Lang Cheng <[email protected]>
RDMA/hns: Fix 0-length sge calculation error

Alexandre Belloni <[email protected]>
ARM: dts: at91: at91sam9rl: fix ADC triggers

Maxim Kochetkov <[email protected]>
spi: spi-fsl-dspi: Use max_native_cs instead of num_chipselect to set SPI_MCR

Ahmed S. Darwish <[email protected]>

    scsi: pm80xx: Do not sleep in atomic context

Xiang Chen <[email protected]>
scsi: hisi_sas: Fix up probe error handling for v3 hw

Yu Kuai <[email protected]>
soc: amlogic: canvas: add missing put_device() call in meson_canvas_get()

Dongjin Kim <[email protected]>
arm64: dts: meson-sm1: fix typo in opp table

Artem Lapkin <[email protected]>
arm64: dts: meson: fix spi-max-frequency on Khadas VIM2

Roman Bacik <[email protected]>
PCI: iproc: Invalidate correct PAXB inbound windows

Bharat Gooty <[email protected]>
PCI: iproc: Fix out-of-bound array accesses

Colin Ian King <[email protected]>
PCI: Fix overflow in command-line resource alignment requests

Bjorn Helgaas <[email protected]>
PCI: Bounds-check command-line resource alignment requests

Bjorn Andersson <[email protected]>
arm64: dts: qcom: c630: Fix pinctrl pins properties

Bjorn Andersson <[email protected]>
arm64: dts: qcom: c630: Polish i2c-hid devices

JC Kuo <[email protected]>
phy: tegra: xusb: Fix usb_phy device driver field

Michael Walle <[email protected]>
arm64: dts: freescale: sl28: combine SPI MTD partitions

Michael Walle <[email protected]>
arm64: dts: ls1028a: fix FlexSPI clock input

Michael Walle <[email protected]>
arm64: dts: ls1028a: fix ENETC PTP clock input

Marc Zyngier <[email protected]>
genirq/irqdomain: Don't try to free an interrupt that has no mapping

Zhang Qilong <[email protected]>
power: supply: bq24190_charger: fix reference leak

Hans de Goede <[email protected]>
power: supply: axp288_charger: Fix HP Pavilion x2 10 DMI matching

Sebastian Krzyszkowiak <[email protected]>
power: supply: max17042_battery: Fix current_{avg,now} hiding with no current sense

Chen-Yu Tsai <[email protected]>
arm64: dts: rockchip: Set dr_mode to "host" for OTG on rk3328-roc-cc

Sebastian Krzyszkowiak <[email protected]>
power: supply: bq25890: Use the correct range for IILIM register

Marek Behún <[email protected]>
arm64: dts: armada-3720-turris-mox: update ethernet-phy handle name

Chris Packham <[email protected]>
ARM: dts: Remove non-existent i2c1 from 98dx3236

Jing Xiangfeng <[email protected]>
HSI: omap_ssi: Don't jump to free ID in ssi_add_controller()

Enric Balletbo i Serra <[email protected]>
drm/mediatek: Use correct aliases name for ovl

Leon Romanovsky <[email protected]>
RDMA/core: Track device memory MRs

Bjorn Andersson <[email protected]>
slimbus: qcom-ngd-ctrl: Avoid sending power requests without QMI

Dan Carpenter <[email protected]>

    media: max2175: fix max2175_set_csm_mode() error code

Qinglang Miao <[email protected]>
mips: cdmm: fix use-after-free in mips_cdmm_bus_discover

Daniel Gomez <[email protected]>
media: imx214: Fix stop streaming

Daniel T. Lee <[email protected]>
samples: bpf: Fix lwt_len_hist reusing previous BPF map

Zhang Qilong <[email protected]>
serial: 8250-mtk: Fix reference leak in mtk8250_probe

Weihang Li <[email protected]>
RDMA/hns: Avoid setting loopback indicator when smac is same as dmac

Weihang Li <[email protected]>
RDMA/hns: Fix missing fields in address vector

Weihang Li <[email protected]>
RDMA/hns: Only record vlan info for HIP08

Alex Elder <[email protected]>
arm64: dts: qcom: sc7180: limit IPA iommu streams

Vadim Pasternak <[email protected]>
platform/x86: mlx-platform: Remove PSU EEPROM from MSN274x platform configuration

Vadim Pasternak <[email protected]>
platform/x86: mlx-platform: Remove PSU EEPROM from default platform configuration

Keita Suzuki <[email protected]>
media: siano: fix memory leak of debugfs members in smsdvb_hotplug

Laurentiu Palcu <[email protected]>
drm/imx/dcss: fix rotations for Vivante tiled formats

Vinod Koul <[email protected]>
soundwire: qcom: Fix build failure when slimbus is module

Jason Gunthorpe <[email protected]>
RDMA/cma: Fix deadlock on &lock in rdma_cma_listen_on_all() error unwind

Vidya Sagar <[email protected]>
arm64: tegra: Fix DT binding for IO High Voltage entry

Marek Behún <[email protected]>
leds: turris-omnia: check for LED_COLOR_ID_RGB instead LED_COLOR_ID_MULTI

Christophe JAILLET <[email protected]>

    leds: lp50xx: Fix an error handling path in 'lp50xx_probe_dt()'

Yu Kuai <[email protected]>
leds: netxbig: add missing put_device() call in netxbig_leds_get_of_pdata()

Bjorn Andersson <[email protected]>
arm64: dts: qcom: sdm845: Limit ipa iommu streams

Zhihao Cheng <[email protected]>
dmaengine: mv_xor_v2: Fix error return code in mv_xor_v2_probe()

Qinglang Miao <[email protected]>
cw1200: fix missing destroy_workqueue() on error in cw1200_init_common

Zhang Changzhong <[email protected]>
rsi: fix error return code in rsi_reset_card()

Wang Hai <[email protected]>
qtnfmac: fix error return code in qtnf_pcie_probe()

Sebastian Andrzej Siewior <[email protected]>
orinoco: Move context allocation after processing the skb

Zhang Changzhong <[email protected]>
brcmfmac: fix error return code in brcmf_cfg80211_connect()

Zhihao Cheng <[email protected]>
mmc: pxamci: Fix error return code in pxamci_probe

Cristian Birsan <[email protected]>
ARM: dts: at91: sama5d3_xplained: add pincontrol for USB Host

Cristian Birsan <[email protected]>
ARM: dts: at91: sama5d4_xplained: add pincontrol for USB Host

Cristian Birsan <[email protected]>
ARM: dts: at91: sam9x60: add pincontrol for USB Host

Qinglang Miao <[email protected]>
memstick: fix a double-free bug in memstick_check

Yangtao Li <[email protected]>
pinctrl: sunxi: fix irq bank map for the Allwinner A100 pin controller

Srinivas Kandagatla <[email protected]>
soundwire: Fix DEBUG_LOCKS_WARN_ON for uninitialized attribute

Kamal Heib <[email protected]>
RDMA/cxgb4: Validate the number of CQEs

Maharaja Kennadyrajan <[email protected]>
ath11k: Fix the rx_filter flag setting for peer rssi stats

Wang Hai <[email protected]>
staging: mfd: hi6421-spmi-pmic: fix error return code in hi6421_spmi_pmic_probe()

Kevin Hilman <[email protected]>
clk: meson: Kconfig: fix dependency for G12A

Zhang Qilong <[email protected]>
Input: omap4-keypad - fix runtime PM error handling

Nikita Travkin <[email protected]>

    arm64: dts: qcom: msm8916-samsung-a2015: Disable muic i2c pin bias

Dmitry Baryshkov <[email protected]>

    arm64: dts: qcom: sm8250: correct compatible for sm8250-mtp

Tom Rix <[email protected]>
soc: qcom: initialize local variable

Zhihao Cheng <[email protected]>
drivers: soc: ti: knav_qmss_queue: Fix error return code in knav_queue_probe

Zhang Qilong <[email protected]>
soc: ti: Fix reference imbalance in knav_dma_probe

Zhang Qilong <[email protected]>
soc: ti: knav_qmss: fix reference leak in knav_queue_probe

Jim Quinlan <[email protected]>
PCI: brcmstb: Initialize "tmp" before use

Andy Shevchenko <[email protected]>
PCI: Disable MSI for Pericom PCIe-USB adapter

Marc Zyngier <[email protected]>
drm/meson: dw-hdmi: Enable the iahb clock early enough

Marc Zyngier <[email protected]>
drm/meson: dw-hdmi: Disable clocks on driver teardown

Uwe Kleine-König <[email protected]>
spi: fix resource leak for drivers without .remove callback

Corentin Labbe <[email protected]>
crypto: sun8i-ce - fix two error path's memory leak

Zhang Qilong <[email protected]>
crypto: omap-aes - Fix PM disable depth imbalance in omap_aes_probe

Nathan Chancellor <[email protected]>
crypto: crypto4xx - Replace bitwise OR with logical OR in crypto4xx_build_pd

Uladzislau Rezki (Sony) <[email protected]>
rcu/tree: Defer kvfree_rcu() allocation to a clean context

Peter Zijlstra <[email protected]>
rcu,ftrace: Fix ftrace recursion

Peter Zijlstra <[email protected]>
rcu: Allow rcu_irq_enter_check_tick() from NMI

Jaegeuk Kim <[email protected]>
scsi: ufs: Fix clkgating on/off

Jaegeuk Kim <[email protected]>
scsi: ufs: Avoid to call REQ_CLKS_OFF to CLKS_OFF

Yazen Ghannam <[email protected]>
EDAC/mce_amd: Use struct cpuinfo_x86.cpu_die_id for AMD NodeId

Tony Lindgren <[email protected]>
mfd: cpcap: Fix interrupt regression with regmap clear_ack

Amelie Delaunay <[email protected]>
mfd: stmfx: Fix dev_err_probe() call in stmfx_chip_init()

Geert Uytterhoeven <[email protected]>
mfd: MFD_SL28CPLD should depend on ARCH_LAYERSCAPE

Jing Xiangfeng <[email protected]>
mfd: htc-i2cpld: Add the missed i2c_put_adapter() in htcpld_register_chip_i2c()

Kaixu Xia <[email protected]>
powerpc/powernv/sriov: fix unsigned int win compared to less than zero

Zhang Xiaoxu <[email protected]>
Revert "powerpc/pseries/hotplug-cpu: Remove double free in error path"

Andrew Jeffery <[email protected]>
ARM: dts: tacoma: Fix node vs reg mismatch for flash memory

Christophe Leroy <[email protected]>
powerpc/feature: Fix CPU_FTRS_ALWAYS by removing CPU_FTRS_GENERIC_32

Ard Biesheuvel <[email protected]>
powerpc: Avoid broken GCC __attribute__((optimize))

Björn Töpel <[email protected]>
selftests/bpf: Fix broken riscv build

Zhang Qilong <[email protected]>
spi: mxs: fix reference leak in mxs_spi_probe

Yang Yingliang <[email protected]>
usb/max3421: fix return error code in max3421_probe()

Carl Yin <[email protected]>
bus: mhi: core: Fix null pointer access when parsing MHI configuration

Bhaumik Bhatt <[email protected]>
bus: mhi: core: Remove double locking from mhi_driver_remove()

Dmitry Torokhov <[email protected]>
Input: ads7846 - fix unaligned access on 7845

Oleksij Rempel <[email protected]>
Input: ads7846 - fix integer overflow on Rt calculation

David Jander <[email protected]>
Input: ads7846 - fix race that causes missing releases

Lukas Bulwahn <[email protected]>
iommu/vt-d: include conditionally on CONFIG_INTEL_IOMMU_SVM

Geert Uytterhoeven <[email protected]>
ASoC: intel: SND_SOC_INTEL_KEEMBAY should depend on ARCH_KEEMBAY

Marc Zyngier <[email protected]>
drm/meson: dw-hdmi: Ensure that clocks are enabled before touching the TOP registers

Marc Zyngier <[email protected]>
drm/meson: dw-hdmi: Register a callback to disable the regulator

Marc Zyngier <[email protected]>
drm/meson: Unbind all connectors on module removal

Marc Zyngier <[email protected]>
drm/meson: Free RDMA resources after tearing down DRM

Yang Yingliang <[email protected]>
drm/omap: dmm_tiler: fix return error code in omap_dmm_probe()

Wolfram Sang <[email protected]>
mmc: sdhci: tegra: fix wrong unit with busy_timeout

Yang Yingliang <[email protected]>
video: fbdev: atmel_lcdfb: fix return error code in atmel_lcdfb_of_init()

Qinglang Miao <[email protected]>
media: solo6x10: fix missing snd_card_free in error handling case

Mansur Alisha Shaik <[email protected]>
media: venus: put dummy vote on video-mem path after last session release

Martin Wilck <[email protected]>
scsi: core: Fix VPD LUN ID designator priorities

Randy Dunlap <[email protected]>
spi: dw: fix build error by selecting MULTIPLEXER

Jerome Brunet <[email protected]>
ASoC: meson: fix COMPILE_TEST error

Leon Romanovsky <[email protected]>
RDMA/cma: Add missing error handling of listen_id

Mansur Alisha Shaik <[email protected]>
media: venus: core: vote with average bandwidth and peak bandwidth as zero

Mansur Alisha Shaik <[email protected]>
media: venus: core: vote for video-mem path

Mansur Alisha Shaik <[email protected]>
media: venus: core: change clk enable and disable order in resume and suspend

Yu Kuai <[email protected]>
media: platform: add missing put_device() call in mtk_jpeg_probe() and mtk_jpeg_remove()

Zhang Qilong <[email protected]>
media: cedrus: fix reference leak in cedrus_start_streaming

Zhang Qilong <[email protected]>
media: staging: rkisp1: cap: fix runtime PM imbalance on error

Hugues Fruchet <[email protected]>
media: ov5640: fix support of BT656 bus mode

Sakari Ailus <[email protected]>
media: v4l2-fwnode: v4l2_fwnode_endpoint_parse caller must init vep argument

Lad Prabhakar <[email protected]>
media: v4l2-fwnode: Return -EINVAL for invalid bus-type

Yu Kuai <[email protected]>
media: mtk-vcodec: add missing put_device() call in mtk_vcodec_init_enc_pm()

Yu Kuai <[email protected]>
media: mtk-vcodec: add missing put_device() call in mtk_vcodec_release_dec_pm()

Yu Kuai <[email protected]>
media: mtk-vcodec: add missing put_device() call in mtk_vcodec_init_dec_pm()

Yu Kuai <[email protected]>
media: platform: add missing put_device() call in mtk_jpeg_clk_init()

Colin Ian King <[email protected]>
media: tm6000: Fix sizeof() mismatches

Shannon Nelson <[email protected]>
ionic: change set_rx_mode from_ndo to can_sleep

Shannon Nelson <[email protected]>
ionic: flatten calls to ionic_lif_rx_mode

Shannon Nelson <[email protected]>
ionic: use mc sync for multicast filters

Hanjun Guo <[email protected]>
drm/amdkfd: Put ACPI table after using it

Andy Shevchenko <[email protected]>
scripts: kernel-doc: Restore anonymous enum parsing

Jing Xiangfeng <[email protected]>
staging: gasket: interrupt: fix the missed eventfd_ctx_put() in gasket_interrupt.c

Zhang Qilong <[email protected]>
staging: greybus: codecs: Fix reference counter leak in error handling

Dan Carpenter <[email protected]>
drm/udl: Fix missing error code in udl_handle_damage()

Qinglang Miao <[email protected]>
firmware: arm_scmi: Fix missing destroy_workqueue()

Jack Xu <[email protected]>
crypto: qat - fix status check in qat_hal_put_rel_rd_xfer()

Jason A. Donenfeld <[email protected]>
crypto: Kconfig - CRYPTO_MANAGER_EXTRA_TESTS requires the manager

Tony Lindgren <[email protected]>
soc: ti: omap-prm: Do not check rstst bit on deassert if already deasserted

Nirmoy Das <[email protected]>
drm/amdgpu: fix compute queue priority if num_kcq is less than 4

Necip Fazil Yildiran <[email protected]>
MIPS: BCM47XX: fix kconfig dependency bug for BCM47XX_BCMA

Nishanth Menon <[email protected]>
arm64: dts: ti: k3-am65*/j721e*: Fix unit address format error for dss node

Pierre-Louis Bossart <[email protected]>
ASoC: SOF: Intel: fix Kconfig dependency for SND_INTEL_DSP_CONFIG

Arnd Bergmann <[email protected]>
RDMa/mthca: Work around -Wenum-conversion warning

Zhang Qilong <[email protected]>
ASoC: arizona: Fix a wrong free in wm8997_probe

Vincent Bernat <[email protected]>
net: evaluate net.ipv4.conf.all.proxy_arp_pvlan

Vincent Bernat <[email protected]>
net: evaluate net.ipvX.conf.all.ignore_routes_with_linkdown

Miklos Szeredi <[email protected]>
virtiofs fix leak in setup

Zhang Qilong <[email protected]>
spi: sprd: fix reference leak in sprd_spi_remove

Zhang Qilong <[email protected]>
ASoC: wm8998: Fix PM disable depth imbalance on error

Zhang Qilong <[email protected]>
ASoC: wm8994: Fix PM disable depth imbalance on error

Hangbin Liu <[email protected]>
selftest/bpf: Add missed ip6ip6 test back

Hangbin Liu <[email protected]>
selftests/run_kselftest.sh: fix dry-run typo

Abhinav Kumar <[email protected]>
drm/msm/dp: do not notify audio subsystem if sink doesn't support audio

Kuogee Hsieh <[email protected]>
drm/msm/dp: skip checking LINK_STATUS_UPDATED bit

Kuogee Hsieh <[email protected]>
drm/msm/dp: return correct connection status after suspend

Arnd Bergmann <[email protected]>
firmware: tegra: fix strncpy()/strncat() confusion

Rob Clark <[email protected]>
drm/msm/a5xx: Clear shadow on suspend

Rob Clark <[email protected]>
drm/msm/a6xx: Clear shadow on suspend

Tsuchiya Yuto <[email protected]>
mwifiex: fix mwifiex_shutdown_sw() causing sw reset failure

Alex Dewar <[email protected]>
ath11k: Handle errors if peer creation fails

Dan Carpenter <[email protected]>
ASoC: qcom: common: Fix refcounting in qcom_snd_parse_of()

Zhang Qilong <[email protected]>
spi: imx: fix reference leak in two imx operations

Qinglang Miao <[email protected]>
spi: bcm63xx-hsspi: fix missing clk_disable_unprepare() on error in bcm63xx_hsspi_resume

Zhang Qilong <[email protected]>
spi: tegra114: fix reference leak in tegra spi ops

Zhang Qilong <[email protected]>
spi: tegra20-sflash: fix reference leak in tegra_sflash_resume

Zhang Qilong <[email protected]>
spi: tegra20-slink: fix reference leak in slink ops of tegra20

Qinglang Miao <[email protected]>
spi: mt7621: fix missing clk_disable_unprepare() on error in mt7621_spi_probe

Zhang Qilong <[email protected]>
spi: spi-ti-qspi: fix reference leak in ti_qspi_setup

Zhang Qilong <[email protected]>
spi: stm32-qspi: fix reference leak in stm32 qspi operations

Anant Thazhemadam <[email protected]>
Bluetooth: hci_h5: fix memory leak in h5_close

Sathish Narasimman <[email protected]>
Bluetooth: Fix: LL PRivacy BLE device fails to connect

Anmol Karn <[email protected]>
Bluetooth: Fix null pointer dereference in hci_event_packet()

Stephen Boyd <[email protected]>
drm/panel: simple: Add flags to boe_nv133fhm_n61

Paweł Chmiel <[email protected]>
arm64: dts: exynos: Correct psci compatible used on Exynos7

Paweł Chmiel <[email protected]>
arm64: dts: exynos: Include common syscon restart/poweroff for Exynos7

Seung-Woo Kim <[email protected]>

    brcmfmac: Fix memory leak for unpaired brcmf_{alloc/free}

Karthikeyan Periyasamy <[email protected]>
ath11k: fix wmi init configuration

Sven Eckelmann <[email protected]>
ath11k: Fix number of rules in filtered ETSI regdomain

Sven Eckelmann <[email protected]>
ath11k: Initialize complete alpha2 for regulatory change

Lyude Paul <[email protected]>
drm/edid: Fix uninitialized variable in drm_cvt_modes()

Zhen Lei <[email protected]>
x86/mce: Correct the detection of invalid notifier priorities

KP Singh <[email protected]>
bpf: Fix tests for local_storage

Zhang Qilong <[email protected]>
spi: stm32: fix reference leak in stm32_spi_resume

Colin Ian King <[email protected]>

    nl80211/cfg80211: fix potential infinite loop

Paul Moore <[email protected]>
selinux: fix inode_doinit_with_dentry() LABEL_INVALID error handling

Horia Geantă <[email protected]>
crypto: caam - fix printing on xts fallback allocation error path

Horia Geantă <[email protected]>
crypto: arm/aes-neonbs - fix usage of cbc(aes) fallback

Ard Biesheuvel <[email protected]>
crypto: arm64/poly1305-neon - reorder PAC authentication with SP update

Andrii Nakryiko <[email protected]>
libbpf: Fix BTF data layout checks and allow empty BTF

YueHaibing <[email protected]>
drm/bridge: tpd12s015: Fix irq registering in tpd12s015_probe

Cezary Rojewski <[email protected]>
ASoC: pcm: DRAIN support reactivation

He Zhe <[email protected]>
pinctrl: core: Add missing #ifdef CONFIG_GPIOLIB

Arnd Bergmann <[email protected]>
scsi: aacraid: Improve compat_ioctl handlers

Zhang Qilong <[email protected]>
spi: spi-mem: fix reference leak in spi_mem_access_start

Dmitry Baryshkov <[email protected]>
drm/msm/dpu: fix clock scaling on non-sc7180 board

Dmitry Baryshkov <[email protected]>
drm/msm/dsi_pll_10nm: restore VCO rate during restore_state

Dmitry Baryshkov <[email protected]>
drm/msm/dsi_pll_7nm: restore VCO rate during restore_state

Tanmay Shah <[email protected]>
drm/msm/dp: DisplayPort PHY compliance tests fixup

Namhyung Kim <[email protected]>
perf test: Use generic event for expand_libpfm_events()

Jason Gunthorpe <[email protected]>
RDMA/mlx5: Fix corruption of reg_pages in mlx5_ib_rereg_user_mr()

Jaegeuk Kim <[email protected]>
f2fs: call f2fs_get_meta_page_retry for nat page

Zhang Qilong <[email protected]>
spi: img-spfi: fix reference leak in img_spfi_resume

Jordan Niethe <[email protected]>
powerpc/64: Set up a kernel stack for secondaries before cpu_restore()

Arnd Bergmann <[email protected]>
drm/amdgpu: fix build_coefficients() argument

Vijay Khemka <[email protected]>
ARM: dts: aspeed: tiogapass: Remove vuart

Robin Murphy <[email protected]>
drm/msm: Add missing stub definition

Clément Péron <[email protected]>
ASoC: sun4i-i2s: Fix lrck_period computation for I2S justified mode

Colin Ian King <[email protected]>
crypto: inside-secure - Fix sizeof() mismatch

Christophe Leroy <[email protected]>
crypto: talitos - Fix return type of current_desc_hdr()

Christophe Leroy <[email protected]>
crypto: talitos - Endianess in current_desc_hdr()

Arnd Bergmann <[email protected]>
drm/amdgpu: fix incorrect enum type

Thomas Gleixner <[email protected]>
sched: Reenable interrupts in do_sched_yield()

Peng Liu <[email protected]>
sched/deadline: Fix sched_dl_global_validate()

Colin Ian King <[email protected]>
ASoC: qcom: fix unsigned int bitwidth compared to less than zero

David Woodhouse <[email protected]>
x86/apic: Fix x2apic enablement without interrupt remapping

Guoqing Jiang <[email protected]>
RDMA/rtrs-srv: Don't guard the whole __alloc_srv with srv_mutex

Gioh Kim <[email protected]>
RDMA/rtrs-clt: Missing error from rtrs_rdma_conn_established

Danil Kipnis <[email protected]>
RDMA/rtrs-clt: Remove destroy_con_cq_qp in case route resolving failed

Ard Biesheuvel <[email protected]>
ARM: p2v: fix handling of LPAE translation in BE mode

Arvind Sankar <[email protected]>
x86/mm/ident_map: Check for errors from ident_pud_init()

Bob Pearson <[email protected]>
RDMA/rxe: Compute PSN windows correctly

Jing Xiangfeng <[email protected]>
RDMA/core: Fix error return in _ib_modify_qp()

Joel Stanley <[email protected]>
ARM: dts: aspeed: s2600wf: Fix VGA memory region location

Billy Tsai <[email protected]>
ARM: dts: aspeed-g6: Fix the GPIO memory size

Tianyue Ren <[email protected]>
selinux: fix error initialization in inode_doinit_with_dentry()

Selvin Xavier <[email protected]>
RDMA/bnxt_re: Fix entry size during SRQ create

Dan Carpenter <[email protected]>

    rtc: pcf2127: fix pcf2127_nvmem_read/write() returns

Kamal Heib <[email protected]>
RDMA/bnxt_re: Set queue pair state when being queried

Douglas Anderson <[email protected]>
Revert "i2c: i2c-qcom-geni: Fix DMA transfer race"

Douglas Anderson <[email protected]>
soc: qcom: geni: More properly switch to DMA mode

Douglas Anderson <[email protected]>
arm64: dts: qcom: sc7180: Fix one forgotten interconnect reference

Kathiravan T <[email protected]>
arm64: dts: ipq6018: update the reserved-memory node

Fabien Parent <[email protected]>
arm64: dts: mediatek: mt8183: fix gce incorrect mbox-cells value

Nicolas Boichat <[email protected]>
soc: mediatek: Check if power domains can be powered on at boot time

Dan Carpenter <[email protected]>
soc: renesas: rmobile-sysc: Fix some leaks in rmobile_init_pm_domains()

Biju Das <[email protected]>
arm64: dts: renesas: cat875: Remove rxc-skew-ps from ethernet-phy node

Biju Das <[email protected]>
arm64: dts: renesas: hihope-rzg2-ex: Drop rxc-skew-ps from ethernet-phy node

Krzysztof Kozlowski <[email protected]>
drm/tve200: Fix handling of platform_get_irq() error

Krzysztof Kozlowski <[email protected]>
drm/mcde: Fix handling of platform_get_irq() error

Randy Dunlap <[email protected]>
drm/aspeed: Fix Kconfig warning & subsequent build errors

Alexandru Ardelean <[email protected]>
iio: adc: at91_adc: add Kconfig dep on the OF symbol and remove of_match_ptr()

Tom Rix <[email protected]>
drm/gma500: fix double free of gma_connector

Guenter Roeck <[email protected]>
hwmon: (k10temp) Remove support for displaying voltage and current on Zen CPUs

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

Diffstat:

 Documentation/locking/seqlock.rst                  |  21 +-
 Documentation/networking/ip-sysctl.rst             |   3 +
 Makefile                                           |   4 +-
 arch/Kconfig                                       |  16 ++
 arch/arm/boot/compressed/head.S                    |   4 +-
 arch/arm/boot/dts/armada-xp-98dx3236.dtsi          |   5 -
 .../arm/boot/dts/aspeed-bmc-facebook-tiogapass.dts |   5 -
 arch/arm/boot/dts/aspeed-bmc-intel-s2600wf.dts     |   4 +-
 arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts        |   2 +-
 arch/arm/boot/dts/aspeed-g6.dtsi                   |   2 +-
 arch/arm/boot/dts/at91-sam9x60ek.dts               |  13 +-
 arch/arm/boot/dts/at91-sama5d3_xplained.dts        |   7 +
 arch/arm/boot/dts/at91-sama5d4_xplained.dts        |   7 +
 arch/arm/boot/dts/at91sam9rl.dtsi                  |  19 +-
 arch/arm/boot/dts/meson8b-odroidc1.dts             |   2 +-
 arch/arm/boot/dts/meson8m2-mxiii-plus.dts          |   2 +-
 arch/arm/boot/dts/omap4-panda-es.dts               |   2 +-
 arch/arm/boot/dts/sama5d2.dtsi                     |   7 +-
 arch/arm/boot/dts/tegra20-ventana.dts              |  11 ++
 arch/arm/crypto/aes-ce-core.S                      |  32 ++-
 arch/arm/crypto/aes-neonbs-glue.c                  |   8 +-
 arch/arm/kernel/entry-armv.S                       |  25 +--
 arch/arm/kernel/head.S                             |   6 +-
 arch/arm/vfp/entry.S                               |  17 --
 arch/arm/vfp/vfphw.S                               |   5 -
 arch/arm/vfp/vfpmodule.c                           |  72 ++++++-
 arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts |   2 +-
 .../boot/dts/amlogic/meson-g12b-odroid-n2.dtsi     |   2 +-
 arch/arm64/boot/dts/amlogic/meson-g12b-w400.dtsi   |   2 +-
 .../boot/dts/amlogic/meson-gxbb-nanopi-k2.dts      |   2 +-
 .../arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts |   2 +-
 .../boot/dts/amlogic/meson-gxbb-vega-s95.dtsi      |   2 +-
 arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi  |   2 +-
 .../boot/dts/amlogic/meson-gxl-s905d-p230.dts      |   2 +-
 .../boot/dts/amlogic/meson-gxm-khadas-vim2.dts     |   4 +-
 .../arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts |   2 +-
 arch/arm64/boot/dts/amlogic/meson-gxm-q200.dts     |   2 +-
 arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts |   2 +-
 arch/arm64/boot/dts/amlogic/meson-sm1.dtsi         |   2 +-
 arch/arm64/boot/dts/exynos/exynos7.dtsi            |  12 +-
 .../dts/freescale/fsl-ls1028a-kontron-sl28.dts     |  12 +-
 arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi     |   4 +-
 .../boot/dts/marvell/armada-3720-turris-mox.dts    |   2 +-
 arch/arm64/boot/dts/marvell/armada-7040.dtsi       |   4 -
 arch/arm64/boot/dts/marvell/armada-8040.dtsi       |   4 -
 arch/arm64/boot/dts/mediatek/mt8183.dtsi           |   2 +-
 arch/arm64/boot/dts/nvidia/tegra194.dtsi           |   4 +-
 arch/arm64/boot/dts/qcom/ipq6018.dtsi              |   6 +-
 .../dts/qcom/msm8916-samsung-a2015-common.dtsi     |  11 ++
 arch/arm64/boot/dts/qcom/sc7180.dtsi               |   5 +-
 arch/arm64/boot/dts/qcom/sdm845.dtsi               |   3 +-
 .../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts      |  39 ++--
 arch/arm64/boot/dts/qcom/sm8250-mtp.dts            |   2 +-
 arch/arm64/boot/dts/renesas/cat875.dtsi            |   1 -
 arch/arm64/boot/dts/renesas/hihope-rzg2-ex.dtsi    |   1 -
 arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts     |   1 +
 arch/arm64/boot/dts/rockchip/rk3328.dtsi           |  16 +-
 arch/arm64/boot/dts/ti/k3-am65-main.dtsi           |   4 +-
 arch/arm64/boot/dts/ti/k3-j721e-main.dtsi          |   2 +-
 arch/arm64/crypto/poly1305-armv8.pl                |   2 +-
 arch/arm64/crypto/poly1305-core.S_shipped          |   2 +-
 arch/arm64/include/asm/kvm_host.h                  |   1 +
 arch/arm64/kernel/mte.c                            |   3 +-
 arch/arm64/kvm/sys_regs.c                          |   1 +
 arch/m68k/mac/config.c                             |  17 +-
 arch/mips/bcm47xx/Kconfig                          |   1 +
 arch/mips/kernel/setup.c                           |   4 +-
 arch/powerpc/boot/Makefile                         |   2 +
 arch/powerpc/include/asm/bitops.h                  |  23 ++-
 arch/powerpc/include/asm/book3s/32/mmu-hash.h      |   1 +
 arch/powerpc/include/asm/book3s/32/pgtable.h       |   4 +-
 arch/powerpc/include/asm/cpm1.h                    |   1 +
 arch/powerpc/include/asm/cputable.h                |   7 +-
 arch/powerpc/include/asm/nohash/pgtable.h          |   4 +-
 arch/powerpc/kernel/Makefile                       |   3 +
 arch/powerpc/kernel/head_32.h                      |  25 ++-
 arch/powerpc/kernel/head_64.S                      |  10 +-
 arch/powerpc/kernel/paca.c                         |   4 +-
 arch/powerpc/kernel/rtas.c                         |   2 +-
 arch/powerpc/kernel/setup-common.c                 |   4 +-
 arch/powerpc/kernel/setup.h                        |   6 -
 arch/powerpc/kernel/setup_64.c                     |   2 +-
 arch/powerpc/kernel/smp.c                          |   2 +-
 arch/powerpc/lib/sstep.c                           |  10 +-
 arch/powerpc/mm/fault.c                            |   8 +-
 arch/powerpc/mm/mem.c                              |   2 +-
 arch/powerpc/perf/core-book3s.c                    |  13 ++
 arch/powerpc/perf/isa207-common.c                  |  30 ++-
 arch/powerpc/perf/isa207-common.h                  |  20 +-
 arch/powerpc/perf/power10-pmu.c                    |  11 +-
 arch/powerpc/platforms/8xx/micropatch.c            |  11 ++
 arch/powerpc/platforms/Kconfig.cputype             |   2 +-
 arch/powerpc/platforms/powermac/sleep.S            | 132 ++++++-------
 arch/powerpc/platforms/powernv/memtrace.c          |  44 ++++-
 arch/powerpc/platforms/powernv/npu-dma.c           |  16 +-
 arch/powerpc/platforms/powernv/pci-sriov.c         |   2 +-
 arch/powerpc/platforms/pseries/hotplug-cpu.c       |   1 +
 arch/powerpc/platforms/pseries/suspend.c           |   4 -
 arch/powerpc/xmon/nonstdio.c                       |   2 +-
 arch/powerpc/xmon/xmon.c                           |   2 +
 arch/riscv/mm/init.c                               |   2 +-
 arch/s390/kernel/entry.S                           |  44 +++--
 arch/s390/kernel/smp.c                             |  18 +-
 arch/s390/lib/test_unwind.c                        |   7 +-
 arch/s390/purgatory/head.S                         |   9 +-
 arch/sparc/mm/init_64.c                            |   2 +-
 arch/um/drivers/chan_user.c                        |   4 +-
 arch/um/drivers/xterm.c                            |   5 +
 arch/um/kernel/time.c                              |   5 -
 arch/um/os-Linux/irq.c                             |   2 +-
 arch/um/os-Linux/umid.c                            |  17 +-
 arch/x86/events/intel/core.c                       |   5 +-
 arch/x86/events/intel/lbr.c                        |   2 +-
 arch/x86/include/asm/apic.h                        |   1 +
 arch/x86/include/asm/mce.h                         |   3 +-
 arch/x86/kernel/apic/apic.c                        |  14 +-
 arch/x86/kernel/apic/x2apic_phys.c                 |   9 +
 arch/x86/kernel/cpu/mce/core.c                     |   3 +-
 arch/x86/kernel/kprobes/core.c                     |   5 +
 arch/x86/kernel/tboot.c                            |   1 +
 arch/x86/kvm/cpuid.h                               |  14 ++
 arch/x86/kvm/svm/sev.c                             |  22 +--
 arch/x86/kvm/svm/svm.c                             |  14 +-
 arch/x86/kvm/vmx/vmx.c                             |   8 +-
 arch/x86/mm/ident_map.c                            |  12 +-
 crypto/Kconfig                                     |   2 +-
 crypto/ecdh.c                                      |   9 +-
 drivers/accessibility/speakup/speakup_dectlk.c     |   2 +-
 drivers/acpi/acpi_pnp.c                            |   3 +
 drivers/acpi/device_pm.c                           |  41 ++--
 drivers/acpi/nfit/core.c                           |   6 +-
 drivers/acpi/resource.c                            |   2 +-
 drivers/android/binder.c                           |   1 +
 drivers/android/binder_alloc.c                     |  48 +++++
 drivers/android/binder_alloc.h                     |   4 +-
 drivers/base/core.c                                |   2 +-
 drivers/block/null_blk_zoned.c                     |  28 ++-
 drivers/block/rnbd/rnbd-clt-sysfs.c                |  17 +-
 drivers/block/rnbd/rnbd-clt.c                      |  13 +-
 drivers/block/rnbd/rnbd-clt.h                      |   4 +-
 drivers/block/xen-blkback/xenbus.c                 |   4 +-
 drivers/bluetooth/btmtksdio.c                      |   2 +-
 drivers/bluetooth/btusb.c                          |  10 +-
 drivers/bluetooth/hci_h5.c                         |   3 +
 drivers/bus/fsl-mc/fsl-mc-allocator.c              |   4 +-
 drivers/bus/fsl-mc/fsl-mc-bus.c                    |   5 +-
 drivers/bus/mhi/core/init.c                        |   6 +-
 drivers/bus/mips_cdmm.c                            |   4 +-
 drivers/clk/at91/sam9x60.c                         |   6 +-
 drivers/clk/at91/sama7g5.c                         |   6 +-
 drivers/clk/bcm/clk-bcm2711-dvp.c                  |   1 +
 drivers/clk/clk-fsl-sai.c                          |  12 ++
 drivers/clk/clk-s2mps11.c                          |   1 +
 drivers/clk/clk-versaclock5.c                      |   4 +-
 drivers/clk/ingenic/cgu.c                          |  14 +-
 drivers/clk/meson/Kconfig                          |   1 +
 drivers/clk/mvebu/armada-37xx-xtal.c               |   4 +-
 drivers/clk/qcom/gcc-sc7180.c                      |   4 +-
 drivers/clk/renesas/r8a779a0-cpg-mssr.c            |  13 +-
 drivers/clk/sunxi-ng/ccu-sun50i-a64.c              |   1 +
 drivers/clk/sunxi-ng/ccu-sun8i-h3.c                |   1 +
 drivers/clk/tegra/clk-dfll.c                       |   4 +-
 drivers/clk/tegra/clk-id.h                         |   1 +
 drivers/clk/tegra/clk-tegra-periph.c               |   2 +-
 drivers/clk/ti/fapll.c                             |  11 +-
 drivers/clocksource/Kconfig                        |   2 +-
 drivers/clocksource/arm_arch_timer.c               |  27 ++-
 drivers/clocksource/ingenic-timer.c                |   2 +-
 drivers/clocksource/timer-cadence-ttc.c            |  18 +-
 drivers/clocksource/timer-orion.c                  |  11 +-
 drivers/counter/microchip-tcb-capture.c            |  16 +-
 drivers/cpufreq/Kconfig.arm                        |   2 +-
 drivers/cpufreq/armada-8k-cpufreq.c                |   6 +
 drivers/cpufreq/highbank-cpufreq.c                 |   7 +
 drivers/cpufreq/intel_pstate.c                     |  16 +-
 drivers/cpufreq/loongson1-cpufreq.c                |   1 +
 drivers/cpufreq/mediatek-cpufreq.c                 |   1 +
 drivers/cpufreq/qcom-cpufreq-nvmem.c               |   1 +
 drivers/cpufreq/scpi-cpufreq.c                     |   1 +
 drivers/cpufreq/sti-cpufreq.c                      |   7 +
 drivers/cpufreq/sun50i-cpufreq-nvmem.c             |   1 +
 drivers/cpufreq/vexpress-spc-cpufreq.c             |   1 +
 drivers/crypto/Kconfig                             |   1 +
 drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c  |  20 +-
 drivers/crypto/amcc/crypto4xx_core.c               |   2 +-
 drivers/crypto/caam/caamalg.c                      |   4 +-
 drivers/crypto/caam/caamalg_qi.c                   |   4 +-
 drivers/crypto/caam/caamalg_qi2.c                  |   3 +-
 drivers/crypto/inside-secure/safexcel.c            |   2 +-
 drivers/crypto/omap-aes.c                          |   3 +-
 drivers/crypto/qat/qat_common/qat_hal.c            |   2 +-
 drivers/crypto/talitos.c                           |  10 +-
 drivers/dax/super.c                                |   1 +
 drivers/dma-buf/dma-resv.c                         |   2 +-
 drivers/dma/mv_xor_v2.c                            |   4 +-
 drivers/dma/ti/k3-udma.c                           |   3 +-
 drivers/edac/amd64_edac.c                          |  26 +--
 drivers/edac/i10nm_base.c                          |  11 +-
 drivers/edac/mce_amd.c                             |   2 +-
 drivers/extcon/extcon-max77693.c                   |   2 +-
 drivers/firmware/arm_scmi/notify.c                 |  10 +-
 drivers/firmware/efi/efi.c                         |   1 +
 drivers/firmware/tegra/bpmp-debugfs.c              |   6 +-
 drivers/fsi/fsi-master-aspeed.c                    |  45 +++--
 drivers/gpio/gpiolib.c                             |   3 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c     |  10 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c            |  10 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h            |   2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c            |   9 +-
 drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c             |   6 +-
 drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c              |   6 +-
 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c              |   7 +-
 drivers/gpu/drm/amd/amdkfd/kfd_crat.c              |  13 +-
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c  |  17 +-
 drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c   |   4 +-
 .../drm/amd/display/modules/color/color_gamma.c    |   2 +-
 drivers/gpu/drm/aspeed/Kconfig                     |   1 +
 drivers/gpu/drm/bridge/ti-tpd12s015.c              |   2 +-
 drivers/gpu/drm/drm_dp_aux_dev.c                   |   2 +-
 drivers/gpu/drm/drm_edid.c                         |   2 +
 drivers/gpu/drm/gma500/cdv_intel_dp.c              |   2 +-
 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c     |   2 +-
 drivers/gpu/drm/imx/dcss/dcss-plane.c              |  11 +-
 drivers/gpu/drm/mcde/mcde_drv.c                    |   4 +-
 drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c        |   2 +-
 drivers/gpu/drm/meson/meson_drv.c                  |  12 +-
 drivers/gpu/drm/meson/meson_dw_hdmi.c              |  60 ++++--
 drivers/gpu/drm/msm/Kconfig                        |   2 +-
 drivers/gpu/drm/msm/adreno/a5xx_gpu.c              |  24 ++-
 drivers/gpu/drm/msm/adreno/a6xx_gpu.c              |  11 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c      |   6 +-
 drivers/gpu/drm/msm/dp/dp_catalog.c                |  13 ++
 drivers/gpu/drm/msm/dp/dp_catalog.h                |   1 +
 drivers/gpu/drm/msm/dp/dp_ctrl.c                   |  28 ++-
 drivers/gpu/drm/msm/dp/dp_display.c                | 154 ++++++++-------
 drivers/gpu/drm/msm/dp/dp_link.c                   |  41 ++--
 drivers/gpu/drm/msm/dp/dp_link.h                   |   1 +
 drivers/gpu/drm/msm/dp/dp_reg.h                    |   2 +
 drivers/gpu/drm/msm/dsi/pll/dsi_pll_10nm.c         |   8 +
 drivers/gpu/drm/msm/dsi/pll/dsi_pll_7nm.c          |   8 +
 drivers/gpu/drm/msm/msm_drv.h                      |   5 +
 drivers/gpu/drm/mxsfb/mxsfb_drv.c                  |  10 +-
 drivers/gpu/drm/omapdrm/omap_dmm_tiler.c           |   1 +
 drivers/gpu/drm/panel/panel-simple.c               |   1 +
 drivers/gpu/drm/panfrost/panfrost_device.c         |   1 -
 drivers/gpu/drm/panfrost/panfrost_device.h         |   6 +-
 drivers/gpu/drm/panfrost/panfrost_job.c            | 183 +++++++++++++----
 drivers/gpu/drm/tve200/tve200_drv.c                |   4 +-
 drivers/gpu/drm/udl/udl_modeset.c                  |   4 +-
 drivers/hsi/controllers/omap_ssi_core.c            |   2 +-
 drivers/hwmon/ina3221.c                            |   2 +-
 drivers/hwmon/k10temp.c                            |  98 ---------
 drivers/hwtracing/coresight/coresight-catu.c       |   2 +-
 drivers/hwtracing/coresight/coresight-cti-core.c   |   2 +-
 drivers/hwtracing/coresight/coresight-etb10.c      |   2 +-
 drivers/hwtracing/coresight/coresight-etm3x-core.c |   4 +-
 drivers/hwtracing/coresight/coresight-etm4x-core.c |   4 +-
 drivers/hwtracing/coresight/coresight-funnel.c     |   6 +-
 drivers/hwtracing/coresight/coresight-replicator.c |   6 +-
 drivers/hwtracing/coresight/coresight-stm.c        |   2 +-
 drivers/hwtracing/coresight/coresight-tmc-core.c   |   2 +-
 drivers/hwtracing/coresight/coresight-tpiu.c       |   2 +-
 drivers/i2c/busses/i2c-qcom-geni.c                 |   6 +-
 drivers/iio/adc/Kconfig                            |   2 +-
 drivers/iio/adc/ad_sigma_delta.c                   |  18 +-
 drivers/iio/adc/at91_adc.c                         |   2 +-
 drivers/iio/adc/rockchip_saradc.c                  |   2 +-
 drivers/iio/adc/ti-ads124s08.c                     |  13 +-
 drivers/iio/imu/bmi160/bmi160.h                    |   7 +
 drivers/iio/imu/bmi160/bmi160_core.c               |   6 +-
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c       |  26 ++-
 drivers/iio/industrialio-buffer.c                  |   6 +-
 drivers/iio/light/rpr0521.c                        |  17 +-
 drivers/iio/light/st_uvis25.h                      |   5 +
 drivers/iio/light/st_uvis25_core.c                 |   8 +-
 drivers/iio/magnetometer/mag3110.c                 |  13 +-
 drivers/iio/pressure/mpl3115.c                     |   9 +-
 drivers/iio/trigger/iio-trig-hrtimer.c             |   4 +-
 drivers/infiniband/core/cma.c                      | 195 ++++++++++--------
 drivers/infiniband/core/device.c                   |   7 +-
 drivers/infiniband/core/uverbs_std_types_device.c  |  14 +-
 drivers/infiniband/core/uverbs_std_types_mr.c      |   4 +
 drivers/infiniband/core/verbs.c                    |   4 +-
 drivers/infiniband/hw/bnxt_re/ib_verbs.c           |   5 +-
 drivers/infiniband/hw/cxgb4/cq.c                   |   3 +
 drivers/infiniband/hw/hns/hns_roce_ah.c            |  61 +++---
 drivers/infiniband/hw/hns/hns_roce_cq.c            |   5 +-
 drivers/infiniband/hw/hns/hns_roce_device.h        |  10 +-
 drivers/infiniband/hw/hns/hns_roce_hem.c           |   4 +-
 drivers/infiniband/hw/hns/hns_roce_hw_v2.c         |  56 +++---
 drivers/infiniband/hw/hns/hns_roce_main.c          |  11 +-
 drivers/infiniband/hw/hns/hns_roce_pd.c            |  11 +-
 drivers/infiniband/hw/hns/hns_roce_qp.c            |  18 +-
 drivers/infiniband/hw/hns/hns_roce_srq.c           |  10 +-
 drivers/infiniband/hw/mlx5/mr.c                    |  21 +-
 drivers/infiniband/hw/mthca/mthca_cq.c             |   2 +-
 drivers/infiniband/hw/mthca/mthca_dev.h            |   1 -
 drivers/infiniband/sw/rxe/rxe_req.c                |   3 +-
 drivers/infiniband/ulp/rtrs/rtrs-clt.c             |   8 +-
 drivers/infiniband/ulp/rtrs/rtrs-srv.c             |  86 ++++----
 drivers/input/keyboard/omap4-keypad.c              |  89 +++++----
 drivers/input/mouse/cyapa_gen6.c                   |   2 +-
 drivers/input/touchscreen/ads7846.c                |  52 +++--
 drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c         |  90 +++++++++
 drivers/iommu/arm/arm-smmu/arm-smmu.c              |  13 +-
 drivers/iommu/arm/arm-smmu/arm-smmu.h              |   1 +
 drivers/iommu/intel/iommu.c                        |   2 +-
 drivers/irqchip/irq-alpine-msi.c                   |   3 +-
 drivers/irqchip/irq-ti-sci-inta.c                  |   2 +-
 drivers/irqchip/irq-ti-sci-intr.c                  |  14 +-
 drivers/irqchip/qcom-pdc.c                         |  21 +-
 drivers/leds/leds-lp50xx.c                         |   6 +-
 drivers/leds/leds-netxbig.c                        |  35 ++--
 drivers/leds/leds-turris-omnia.c                   |   4 +-
 drivers/macintosh/adb-iop.c                        |  56 ++++--
 drivers/mailbox/arm_mhu_db.c                       |   2 +-
 drivers/md/dm-ioctl.c                              |   1 +
 drivers/md/md-cluster.c                            |  67 ++++---
 drivers/md/md.c                                    |  14 +-
 drivers/media/common/siano/smsdvb-main.c           |   5 +-
 drivers/media/i2c/imx214.c                         |   2 +-
 drivers/media/i2c/imx219.c                         |  17 +-
 drivers/media/i2c/max2175.c                        |   2 +-
 drivers/media/i2c/max9271.c                        |   8 +-
 drivers/media/i2c/ov5640.c                         |  82 ++++----
 drivers/media/i2c/rdacm20.c                        |  13 +-
 drivers/media/i2c/tvp5150.c                        |   1 +
 drivers/media/pci/intel/ipu3/ipu3-cio2.c           |  62 +++---
 drivers/media/pci/intel/ipu3/ipu3-cio2.h           |   1 +
 drivers/media/pci/netup_unidvb/netup_unidvb_spi.c  |   5 +-
 drivers/media/pci/saa7146/mxb.c                    |  19 +-
 drivers/media/pci/solo6x10/solo6x10-g723.c         |   2 +-
 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c    |   9 +
 .../media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c  |  19 +-
 .../media/platform/mtk-vcodec/mtk_vcodec_enc_pm.c  |  26 ++-
 drivers/media/platform/qcom/venus/core.c           |  32 ++-
 drivers/media/platform/qcom/venus/pm_helpers.c     |  10 +
 drivers/media/rc/sunxi-cir.c                       |   2 +
 drivers/media/usb/gspca/gspca.c                    |   1 +
 drivers/media/usb/tm6000/tm6000-video.c            |   5 +-
 drivers/media/v4l2-core/v4l2-fwnode.c              |   6 +-
 drivers/memory/Kconfig                             |   2 +-
 drivers/memory/jz4780-nemc.c                       |   6 +-
 drivers/memory/renesas-rpc-if.c                    |   7 +-
 drivers/memstick/core/memstick.c                   |   1 -
 drivers/memstick/host/r592.c                       |  12 +-
 drivers/mfd/Kconfig                                |   1 +
 drivers/mfd/htc-i2cpld.c                           |   2 +
 drivers/mfd/motorola-cpcap.c                       |   6 +-
 drivers/mfd/stmfx.c                                |  10 +-
 drivers/misc/pci_endpoint_test.c                   |   8 +-
 drivers/mmc/host/pxamci.c                          |   1 +
 drivers/mmc/host/sdhci-tegra.c                     |   2 +-
 drivers/mtd/mtdcore.c                              |   4 +
 drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c         |  38 ++--
 drivers/mtd/nand/raw/meson_nand.c                  |   7 +-
 drivers/mtd/nand/raw/qcom_nandc.c                  |   2 +
 drivers/mtd/nand/spi/core.c                        |   4 +
 drivers/mtd/parsers/cmdlinepart.c                  |  14 +-
 drivers/mtd/spi-nor/atmel.c                        |  77 ++++++--
 drivers/mtd/spi-nor/core.c                         |  25 +--
 drivers/mtd/spi-nor/core.h                         |   1 +
 drivers/mtd/spi-nor/sst.c                          |   3 +-
 drivers/net/can/m_can/m_can.c                      |   4 -
 drivers/net/dsa/qca/ar9331.c                       |  33 +++-
 drivers/net/ethernet/allwinner/sun4i-emac.c        |   7 +-
 drivers/net/ethernet/broadcom/genet/bcmgenet.c     |   4 +-
 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c   |   2 +-
 drivers/net/ethernet/intel/i40e/i40e_xsk.c         |   5 +-
 drivers/net/ethernet/intel/ice/ice_xsk.c           |   5 +-
 drivers/net/ethernet/korina.c                      |   2 +-
 drivers/net/ethernet/mellanox/mlx5/core/main.c     |   6 +-
 drivers/net/ethernet/microchip/lan743x_main.c      |  43 ++--
 drivers/net/ethernet/mscc/ocelot_vsc7514.c         |   8 +-
 drivers/net/ethernet/netronome/nfp/flower/main.c   |   6 +-
 drivers/net/ethernet/pensando/ionic/ionic_lif.c    |  63 +++---
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c   |   1 +
 drivers/net/virtio_net.c                           |   1 +
 drivers/net/wireless/admtek/adm8211.c              |   6 +-
 drivers/net/wireless/ath/ath10k/usb.c              |   7 +-
 drivers/net/wireless/ath/ath10k/wmi-tlv.c          |   4 +-
 drivers/net/wireless/ath/ath10k/wmi.c              |   9 +-
 drivers/net/wireless/ath/ath10k/wmi.h              |   1 +
 drivers/net/wireless/ath/ath11k/core.h             |   2 +
 drivers/net/wireless/ath/ath11k/dp_tx.c            |   5 +-
 drivers/net/wireless/ath/ath11k/hw.c               |   4 +-
 drivers/net/wireless/ath/ath11k/mac.c              |  54 +++--
 drivers/net/wireless/ath/ath11k/qmi.c              |   6 +-
 drivers/net/wireless/ath/ath11k/reg.c              |   6 +-
 drivers/net/wireless/ath/ath11k/wmi.c              |  31 ---
 .../broadcom/brcm80211/brcmfmac/cfg80211.c         |   3 +-
 .../wireless/broadcom/brcm80211/brcmfmac/pcie.c    |   6 +-
 .../wireless/broadcom/brcm80211/brcmfmac/sdio.c    |   1 +
 drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c   |   2 +-
 drivers/net/wireless/intel/iwlwifi/mvm/ops.c       |   6 +
 .../net/wireless/intersil/orinoco/orinoco_usb.c    |  14 +-
 drivers/net/wireless/marvell/mwifiex/main.c        |   2 +
 drivers/net/wireless/mediatek/mt76/dma.c           |   2 +
 drivers/net/wireless/mediatek/mt76/mac80211.c      |   1 +
 drivers/net/wireless/mediatek/mt76/mt7603/pci.c    |   3 +-
 drivers/net/wireless/mediatek/mt76/mt7615/mac.c    |  14 +-
 drivers/net/wireless/mediatek/mt76/mt7615/mmio.c   |   3 +-
 .../net/wireless/mediatek/mt76/mt7615/sdio_txrx.c  |   2 +-
 drivers/net/wireless/mediatek/mt76/mt76x0/pci.c    |   3 +-
 drivers/net/wireless/mediatek/mt76/mt76x2/pci.c    |   3 +-
 .../net/wireless/mediatek/mt76/mt7915/debugfs.c    |   2 +
 drivers/net/wireless/mediatek/mt76/mt7915/pci.c    |   5 +-
 drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c |   6 +-
 drivers/net/wireless/rsi/rsi_91x_usb.c             |  30 +--
 drivers/net/wireless/st/cw1200/main.c              |   2 +
 drivers/net/xen-netback/xenbus.c                   |   6 +-
 drivers/nfc/s3fwrn5/firmware.c                     |   4 +-
 drivers/nvdimm/label.c                             |  13 +-
 drivers/pci/controller/pcie-brcmstb.c              |   1 +
 drivers/pci/controller/pcie-iproc.c                |  23 ++-
 drivers/pci/pci-acpi.c                             |   4 +-
 drivers/pci/pci.c                                  |  14 +-
 drivers/pci/quirks.c                               |  17 +-
 drivers/pci/slot.c                                 |   6 +-
 drivers/phy/mediatek/Kconfig                       |   4 +-
 drivers/phy/mediatek/phy-mtk-hdmi.c                |   5 +-
 drivers/phy/renesas/phy-rcar-gen3-usb2.c           |   6 +-
 drivers/phy/tegra/xusb.c                           |   2 +-
 drivers/pinctrl/core.c                             |   2 +
 drivers/pinctrl/pinctrl-falcon.c                   |  14 +-
 drivers/pinctrl/sunxi/pinctrl-sun50i-a100.c        |   2 +-
 drivers/pinctrl/sunxi/pinctrl-sunxi.c              |   6 +-
 drivers/platform/chrome/cros_ec_spi.c              |   1 -
 drivers/platform/x86/dell-smbios-base.c            |   1 +
 drivers/platform/x86/intel-vbtn.c                  |  18 +-
 drivers/platform/x86/mlx-platform.c                |  20 +-
 drivers/power/supply/axp288_charger.c              |  28 +--
 drivers/power/supply/bq24190_charger.c             |  20 +-
 drivers/power/supply/bq25890_charger.c             |   2 +-
 drivers/power/supply/max17042_battery.c            |   3 +-
 drivers/ps3/ps3stor_lib.c                          |   2 +-
 drivers/pwm/pwm-imx27.c                            |   3 +-
 drivers/pwm/pwm-lp3943.c                           |   1 +
 drivers/pwm/pwm-sun4i.c                            |   6 +-
 drivers/pwm/pwm-zx.c                               |   1 +
 drivers/regulator/axp20x-regulator.c               |   2 +-
 drivers/remoteproc/mtk_common.h                    |  26 +--
 drivers/remoteproc/mtk_scp.c                       |   5 +-
 drivers/remoteproc/qcom_q6v5_adsp.c                |  13 +-
 drivers/remoteproc/qcom_q6v5_mss.c                 |   5 +-
 drivers/remoteproc/qcom_q6v5_pas.c                 |   5 +-
 drivers/remoteproc/qcom_sysmon.c                   |  25 ++-
 drivers/remoteproc/ti_k3_dsp_remoteproc.c          |   4 +-
 drivers/rtc/rtc-ep93xx.c                           |   6 +-
 drivers/rtc/rtc-pcf2127.c                          |  12 +-
 drivers/s390/block/dasd_alias.c                    |  22 ++-
 drivers/s390/cio/device.c                          |   4 +-
 drivers/scsi/aacraid/commctrl.c                    |  22 ++-
 drivers/scsi/aacraid/linit.c                       |  61 +-----
 drivers/scsi/fnic/fnic_main.c                      |   1 +
 drivers/scsi/hisi_sas/hisi_sas_v3_hw.c             |  26 ++-
 drivers/scsi/lpfc/lpfc.h                           |   2 +-
 drivers/scsi/lpfc/lpfc_disc.h                      |   2 +
 drivers/scsi/lpfc/lpfc_hbadisc.c                   |  35 ++++
 drivers/scsi/lpfc/lpfc_init.c                      |  46 +++--
 drivers/scsi/lpfc/lpfc_mem.c                       |  11 +-
 drivers/scsi/lpfc/lpfc_nvme.c                      |  18 +-
 drivers/scsi/lpfc/lpfc_sli.c                       |  74 +++++--
 drivers/scsi/lpfc/lpfc_sli4.h                      |   6 +-
 drivers/scsi/pm8001/pm8001_init.c                  |   3 +-
 drivers/scsi/pm8001/pm80xx_hwi.c                   |   2 +-
 drivers/scsi/qedi/qedi_main.c                      |   4 +-
 drivers/scsi/qla2xxx/qla_init.c                    |  71 +++++--
 drivers/scsi/qla2xxx/qla_mbx.c                     |   9 +-
 drivers/scsi/qla2xxx/qla_tmpl.c                    |   9 +-
 drivers/scsi/qla2xxx/qla_tmpl.h                    |   2 +-
 drivers/scsi/scsi_lib.c                            | 126 ++++++++----
 drivers/scsi/scsi_transport_iscsi.c                |   4 +-
 drivers/scsi/ufs/ufshcd.c                          |   5 +-
 drivers/slimbus/qcom-ctrl.c                        |   9 +-
 drivers/slimbus/qcom-ngd-ctrl.c                    |   6 +
 drivers/soc/amlogic/meson-canvas.c                 |   4 +-
 drivers/soc/mediatek/mtk-scpsys.c                  |   5 +-
 drivers/soc/qcom/pdr_interface.c                   |   2 +-
 drivers/soc/qcom/qcom-geni-se.c                    |  17 +-
 drivers/soc/qcom/smp2p.c                           |   5 +-
 drivers/soc/renesas/rmobile-sysc.c                 |   1 +
 drivers/soc/rockchip/io-domain.c                   |   1 +
 drivers/soc/ti/knav_dma.c                          |  13 +-
 drivers/soc/ti/knav_qmss_queue.c                   |   4 +-
 drivers/soc/ti/omap_prm.c                          |   4 +
 drivers/soundwire/master.c                         |  14 ++
 drivers/soundwire/qcom.c                           |   2 +-
 drivers/soundwire/sysfs_slave_dpn.c                |   1 +
 drivers/spi/Kconfig                                |   1 +
 drivers/spi/atmel-quadspi.c                        |  27 ++-
 drivers/spi/spi-ar934x.c                           |  14 +-
 drivers/spi/spi-bcm63xx-hsspi.c                    |   4 +-
 drivers/spi/spi-davinci.c                          |   2 +-
 drivers/spi/spi-dw-bt1.c                           |   4 +-
 drivers/spi/spi-fsl-dspi.c                         |   6 +-
 drivers/spi/spi-fsl-spi.c                          |  11 +-
 drivers/spi/spi-geni-qcom.c                        |   3 +-
 drivers/spi/spi-gpio.c                             |  15 +-
 drivers/spi/spi-img-spfi.c                         |   4 +-
 drivers/spi/spi-imx.c                              |   2 +
 drivers/spi/spi-mem.c                              |   1 +
 drivers/spi/spi-mt7621.c                           |  11 +-
 drivers/spi/spi-mtk-nor.c                          |   2 +-
 drivers/spi/spi-mxic.c                             |  10 +-
 drivers/spi/spi-mxs.c                              |   1 +
 drivers/spi/spi-npcm-fiu.c                         |   8 +-
 drivers/spi/spi-pic32.c                            |   1 +
 drivers/spi/spi-pxa2xx.c                           |   5 +-
 drivers/spi/spi-qcom-qspi.c                        |  42 ++--
 drivers/spi/spi-rb4xx.c                            |   2 +-
 drivers/spi/spi-rpc-if.c                           |   9 +-
 drivers/spi/spi-sc18is602.c                        |  13 +-
 drivers/spi/spi-sh.c                               |  13 +-
 drivers/spi/spi-sprd.c                             |   1 +
 drivers/spi/spi-st-ssc4.c                          |   5 +-
 drivers/spi/spi-stm32-qspi.c                       |   8 +-
 drivers/spi/spi-stm32.c                            |   1 +
 drivers/spi/spi-synquacer.c                        |  15 +-
 drivers/spi/spi-tegra114.c                         |   2 +
 drivers/spi/spi-tegra20-sflash.c                   |   1 +
 drivers/spi/spi-tegra20-slink.c                    |   2 +
 drivers/spi/spi-ti-qspi.c                          |   1 +
 drivers/spi/spi.c                                  |  19 +-
 drivers/staging/comedi/drivers/mf6x4.c             |   3 +-
 drivers/staging/gasket/gasket_interrupt.c          |  15 +-
 drivers/staging/greybus/audio_codec.c              |   2 +
 drivers/staging/greybus/audio_helper.c             |   3 +-
 drivers/staging/hikey9xx/hi6421-spmi-pmic.c        |   4 +-
 drivers/staging/media/rkisp1/rkisp1-capture.c      |   1 +
 drivers/staging/media/sunxi/cedrus/cedrus_video.c  |   4 +-
 drivers/staging/vc04_services/vchiq-mmal/Kconfig   |   2 +-
 drivers/thermal/cpufreq_cooling.c                  |   4 +-
 drivers/tty/serial/8250/8250_mtk.c                 |  13 +-
 drivers/tty/serial/pmac_zilog.c                    |  14 +-
 drivers/usb/host/ehci-omap.c                       |   1 +
 drivers/usb/host/max3421-hcd.c                     |   3 +-
 drivers/usb/host/oxu210hp-hcd.c                    |   4 +-
 drivers/usb/serial/digi_acceleport.c               |  45 ++---
 drivers/usb/serial/keyspan_pda.c                   |  63 +++---
 drivers/usb/serial/mos7720.c                       |   2 +
 drivers/vdpa/mlx5/net/mlx5_vnet.c                  |   5 +
 drivers/vfio/pci/vfio_pci.c                        |   7 +-
 drivers/vfio/pci/vfio_pci_nvlink2.c                |   7 +-
 drivers/vhost/scsi.c                               |   3 +-
 drivers/video/fbdev/atmel_lcdfb.c                  |   2 +-
 drivers/virtio/virtio_ring.c                       |   8 +-
 drivers/watchdog/Kconfig                           |   4 +-
 drivers/watchdog/qcom-wdt.c                        |   2 +-
 drivers/watchdog/sprd_wdt.c                        |  34 ++--
 drivers/watchdog/watchdog_core.c                   |  22 ++-
 drivers/xen/xen-pciback/xenbus.c                   |   2 +-
 drivers/xen/xenbus/xenbus.h                        |   2 +
 drivers/xen/xenbus/xenbus_client.c                 |   8 +-
 drivers/xen/xenbus/xenbus_probe.c                  |   1 +
 drivers/xen/xenbus/xenbus_probe_backend.c          |   7 +
 drivers/xen/xenbus/xenbus_xs.c                     |  34 ++--
 fs/btrfs/ctree.h                                   |   1 -
 fs/btrfs/extent-tree.c                             |  33 +---
 fs/btrfs/ioctl.c                                   |  39 ++++
 fs/btrfs/transaction.c                             |  42 +++-
 fs/ceph/caps.c                                     |  11 +-
 fs/cifs/smb2misc.c                                 |  16 +-
 fs/cifs/smb2ops.c                                  |   3 +-
 fs/cifs/smb2pdu.c                                  |   7 +-
 fs/cifs/smb2pdu.h                                  |  14 +-
 fs/erofs/data.c                                    |  26 +--
 fs/eventpoll.c                                     |  25 ++-
 fs/ext4/extents.c                                  |   4 +-
 fs/ext4/inode.c                                    |  19 +-
 fs/ext4/mballoc.c                                  |   1 +
 fs/ext4/super.c                                    |  14 +-
 fs/f2fs/node.c                                     |   2 +-
 fs/f2fs/super.c                                    |   1 +
 fs/fuse/virtio_fs.c                                |   2 +
 fs/inode.c                                         |   4 +-
 fs/io-wq.h                                         |   1 +
 fs/io_uring.c                                      | 178 ++++++++++-------
 fs/jffs2/readinode.c                               |  16 ++
 fs/jffs2/super.c                                   |  17 ++
 fs/jfs/jfs_dmap.h                                  |   2 +-
 fs/lockd/host.c                                    |  20 +-
 fs/nfs/flexfilelayout/flexfilelayout.c             |   2 +-
 fs/nfs/inode.c                                     |   2 +-
 fs/nfs/nfs4proc.c                                  |  10 +-
 fs/nfs/nfs4xdr.c                                   |  10 +-
 fs/nfs_common/grace.c                              |   6 +-
 fs/nfsd/filecache.c                                |   2 +-
 fs/nfsd/nfs4state.c                                |   1 +
 fs/nfsd/nfssvc.c                                   |   3 +-
 fs/notify/dnotify/dnotify.c                        |   2 +-
 fs/notify/fanotify/fanotify.c                      |   7 +-
 fs/notify/fsnotify.c                               | 107 ++++++----
 fs/notify/inotify/inotify.h                        |   9 +-
 fs/notify/inotify/inotify_fsnotify.c               |  51 +----
 fs/notify/inotify/inotify_user.c                   |   8 +-
 fs/open.c                                          |   4 +
 fs/overlayfs/file.c                                |  87 ++------
 fs/proc/generic.c                                  |  24 ++-
 fs/proc/internal.h                                 |   7 +
 fs/proc/proc_net.c                                 |  16 --
 fs/proc_namespace.c                                |   9 +-
 fs/ubifs/auth.c                                    |   4 +-
 fs/ubifs/io.c                                      |  13 +-
 include/acpi/acpi_bus.h                            |   5 -
 include/linux/fs.h                                 |   3 +-
 include/linux/fsnotify_backend.h                   |   9 +-
 include/linux/iio/adc/ad_sigma_delta.h             |   6 +-
 include/linux/inetdevice.h                         |   4 +-
 include/linux/mm_types.h                           |   8 +
 include/linux/of.h                                 |   1 +
 include/linux/proc_fs.h                            |   8 +-
 include/linux/rmap.h                               |   1 -
 include/linux/seq_buf.h                            |   2 +-
 include/linux/sunrpc/xprt.h                        |   1 +
 include/linux/trace_seq.h                          |   4 +-
 include/media/v4l2-fwnode.h                        |   6 +
 include/media/v4l2-mediabus.h                      |   2 +
 include/rdma/uverbs_ioctl.h                        |  10 +
 include/uapi/linux/android/binder.h                |   1 +
 include/uapi/linux/devlink.h                       |   2 +-
 include/xen/xenbus.h                               |  15 +-
 kernel/audit_fsnotify.c                            |   2 +-
 kernel/audit_tree.c                                |   2 +-
 kernel/audit_watch.c                               |   2 +-
 kernel/cgroup/cpuset.c                             |  33 +++-
 kernel/fork.c                                      |   1 +
 kernel/irq/irqdomain.c                             |  11 +-
 kernel/rcu/tree.c                                  | 118 ++++++-----
 kernel/sched/core.c                                |   6 +-
 kernel/sched/deadline.c                            |   5 +-
 kernel/sched/sched.h                               |  42 ++--
 kernel/trace/bpf_trace.c                           |   8 +-
 kernel/trace/ring_buffer.c                         |  17 +-
 kernel/trace/trace.c                               |  19 +-
 kernel/trace/trace.h                               |   5 +
 kernel/trace/trace_boot.c                          |   2 +
 kernel/trace/trace_events.c                        |   2 +-
 kernel/trace/trace_kprobe.c                        |   9 +-
 kernel/trace/trace_selftest.c                      |   2 +-
 lib/dynamic_debug.c                                |   9 +-
 mm/gup.c                                           | 220 +++++++++------------
 mm/huge_memory.c                                   |   2 +-
 mm/hugetlb.c                                       |   1 +
 mm/init-mm.c                                       |   1 +
 mm/madvise.c                                       |   9 +-
 mm/memcontrol.c                                    |   5 +-
 mm/memory-failure.c                                |   8 +-
 mm/memory.c                                        |  13 +-
 mm/memory_hotplug.c                                |   2 +-
 mm/migrate.c                                       |   8 +-
 mm/page_alloc.c                                    |  13 +-
 mm/rmap.c                                          |   9 -
 mm/vmalloc.c                                       |   6 +-
 mm/vmscan.c                                        |  14 +-
 mm/z3fold.c                                        | 174 ++++++++--------
 net/bluetooth/hci_event.c                          |   5 +
 net/bluetooth/hci_request.c                        |  12 +-
 net/bluetooth/sco.c                                |   5 +
 net/mac80211/rx.c                                  |   2 +-
 net/mac80211/vht.c                                 |  14 +-
 net/sunrpc/debugfs.c                               |   4 +-
 net/sunrpc/sched.c                                 |  65 +++---
 net/sunrpc/xprt.c                                  |  65 ++++--
 net/sunrpc/xprtrdma/module.c                       |   1 +
 net/sunrpc/xprtrdma/rpc_rdma.c                     |  40 +++-
 net/sunrpc/xprtrdma/transport.c                    |   1 +
 net/sunrpc/xprtsock.c                              |   7 +-
 net/wireless/scan.c                                |   2 +-
 samples/bpf/lwt_len_hist.sh                        |   2 +
 samples/bpf/test_lwt_bpf.sh                        |   0
 samples/bpf/xdpsock_user.c                         |   2 +
 scripts/checkpatch.pl                              |   2 +-
 scripts/kconfig/preprocess.c                       |   2 +-
 scripts/kernel-doc                                 |   4 +-
 security/integrity/ima/ima_crypto.c                |  20 +-
 security/selinux/hooks.c                           |  16 +-
 security/smack/smack_access.c                      |   5 +-
 sound/core/memalloc.c                              |   3 +-
 sound/core/oss/pcm_oss.c                           |  22 ++-
 sound/pci/hda/hda_codec.c                          |   2 +-
 sound/pci/hda/hda_sysfs.c                          |   2 +-
 sound/pci/hda/patch_ca0132.c                       |   4 +-
 sound/pci/hda/patch_hdmi.c                         |  98 +++++++--
 sound/pci/hda/patch_realtek.c                      |  46 +++++
 sound/soc/amd/acp-da7219-max98357a.c               |   9 +-
 sound/soc/amd/raven/pci-acp3x.c                    |   4 +
 sound/soc/amd/renoir/rn-pci-acp3x.c                |  32 ++-
 sound/soc/atmel/Kconfig                            |   1 +
 sound/soc/codecs/cros_ec_codec.c                   |   2 +-
 sound/soc/codecs/cx2072x.c                         |   4 +-
 sound/soc/codecs/max98390.c                        |   2 +
 sound/soc/codecs/wm8994.c                          |   6 +-
 sound/soc/codecs/wm8997.c                          |   2 +
 sound/soc/codecs/wm8998.c                          |   4 +-
 sound/soc/codecs/wm_adsp.c                         |   5 +-
 sound/soc/intel/Kconfig                            |   2 +-
 sound/soc/intel/boards/sof_maxim_common.c          |   4 +-
 sound/soc/jz4740/jz4740-i2s.c                      |   4 +
 sound/soc/meson/Kconfig                            |   2 +-
 sound/soc/qcom/Kconfig                             |   1 +
 sound/soc/qcom/common.c                            |  13 +-
 sound/soc/qcom/lpass-hdmi.c                        |   2 +-
 sound/soc/qcom/qdsp6/q6afe-clocks.c                |   1 +
 sound/soc/soc-pcm.c                                |   2 +
 sound/soc/sof/intel/Kconfig                        |   2 +-
 sound/soc/sunxi/sun4i-i2s.c                        |   4 +-
 sound/usb/card.c                                   |   3 +
 sound/usb/clock.c                                  |   6 +
 sound/usb/quirks.c                                 |   1 +
 tools/build/feature/Makefile                       |   2 +-
 tools/lib/bpf/btf.c                                |  16 +-
 tools/lib/bpf/libbpf.c                             |  12 ++
 tools/perf/tests/expand-cgroup.c                   |   2 +-
 tools/perf/tests/pmu-events.c                      |   2 +-
 tools/perf/util/parse-regs-options.c               |   2 +-
 tools/perf/util/probe-file.c                       |  13 +-
 tools/testing/selftests/bpf/Makefile               |   3 +-
 tools/testing/selftests/bpf/progs/local_storage.c  |  24 ++-
 .../testing/selftests/bpf/progs/test_tunnel_kern.c |  42 +---
 tools/testing/selftests/bpf/test_sockmap.c         |  36 ++--
 tools/testing/selftests/bpf/test_tunnel.sh         |  43 +++-
 tools/testing/selftests/run_kselftest.sh           |   2 +-
 tools/testing/selftests/seccomp/config             |   1 +
 724 files changed, 5412 insertions(+), 3411 deletions(-)
author maintainer
#1 lore raw

PATCH 1/717 hwmon: (k10temp) Remove support for displaying voltage and current on Zen CPUs

From: Guenter Roeck <[email protected]>

commit 0a4e668b5d52eed8026f5d717196b02b55fb2dc6 upstream.

Voltages and current are reported by Zen CPUs. However, the means to do so is undocumented, changes from CPU to CPU, and the raw data is not calibrated. Calibration information is available, but again not documented. This results in less than perfect user experience, up to concerns that loading the driver might possibly damage the hardware (by reporting out-of range voltages). Effectively support for reporting voltages and current is not maintainable. Drop it.

---
 drivers/hwmon/k10temp.c |   98 ------------------------------------------------
 1 file changed, 98 deletions(-)
drivers/hwmon/k10temp.c +0 -98
@@ -11,13 +11,6 @@
  *   convert raw register values is from https://github.com/ocerman/zenpower.
  *   The information is not confirmed from chip datasheets, but experiments
  *   suggest that it provides reasonable temperature values.
- * - Register addresses to read chip voltage and current are also from
- *   https://github.com/ocerman/zenpower, and not confirmed from chip
- *   datasheets. Current calibration is board specific and not typically
- *   shared by board vendors. For this reason, current values are
- *   normalized to report 1A/LSB for core current and and 0.25A/LSB for SoC
- *   current. Reported values can be adjusted using the sensors configuration
- *   file.
  */
 
 #include <linux/bitops.h>
@@ -109,10 +102,7 @@ struct k10temp_data {
 	int temp_offset;
 	u32 temp_adjust_mask;
 	u32 show_temp;
-	u32 svi_addr[2];
 	bool is_zen;
-	bool show_current;
-	int cfactor[2];
 };
 
 #define TCTL_BIT	0
@@ -137,16 +127,6 @@ static const struct tctl_offset tctl_off
 	{ 0x17, "AMD Ryzen Threadripper 29", 27000 }, /* 29{20,50,70,90}[W]X */
 };
 
-static bool is_threadripper(void)
-{
-	return strstr(boot_cpu_data.x86_model_id, "Threadripper");
-}
-
-static bool is_epyc(void)
-{
-	return strstr(boot_cpu_data.x86_model_id, "EPYC");
-}
-
 static void read_htcreg_pci(struct pci_dev *pdev, u32 *regval)
 {
 	pci_read_config_dword(pdev, REG_HARDWARE_THERMAL_CONTROL, regval);
@@ -211,16 +191,6 @@ static const char *k10temp_temp_label[]
 	"Tccd8",
 };
 
-static const char *k10temp_in_label[] = {
-	"Vcore",
-	"Vsoc",
-};
-
-static const char *k10temp_curr_label[] = {
-	"Icore",
-	"Isoc",
-};
-
 static int k10temp_read_labels(struct device *dev,
 			       enum hwmon_sensor_types type,
 			       u32 attr, int channel, const char **str)
@@ -229,50 +199,6 @@ static int k10temp_read_labels(struct de
 	case hwmon_temp:
 		*str = k10temp_temp_label[channel];
 		break;
-	case hwmon_in:
-		*str = k10temp_in_label[channel];
-		break;
-	case hwmon_curr:
-		*str = k10temp_curr_label[channel];
-		break;
-	default:
-		return -EOPNOTSUPP;
-	}
-	return 0;
-}
-
-static int k10temp_read_curr(struct device *dev, u32 attr, int channel,
-			     long *val)
-{
-	struct k10temp_data *data = dev_get_drvdata(dev);
-	u32 regval;
-
-	switch (attr) {
-	case hwmon_curr_input:
-		amd_smn_read(amd_pci_dev_to_node_id(data->pdev),
-			     data->svi_addr[channel], &regval);
-		*val = DIV_ROUND_CLOSEST(data->cfactor[channel] *
-					 (regval & 0xff),
-					 1000);
-		break;
-	default:
-		return -EOPNOTSUPP;
-	}
-	return 0;
-}
-
-static int k10temp_read_in(struct device *dev, u32 attr, int channel, long *val)
-{
-	struct k10temp_data *data = dev_get_drvdata(dev);
-	u32 regval;
-
-	switch (attr) {
-	case hwmon_in_input:
-		amd_smn_read(amd_pci_dev_to_node_id(data->pdev),
-			     data->svi_addr[channel], &regval);
-		regval = (regval >> 16) & 0xff;
-		*val = DIV_ROUND_CLOSEST(155000 - regval * 625, 100);
-		break;
 	default:
 		return -EOPNOTSUPP;
 	}
@@ -331,10 +257,6 @@ static int k10temp_read(struct device *d
 	switch (type) {
 	case hwmon_temp:
 		return k10temp_read_temp(dev, attr, channel, val);
-	case hwmon_in:
-		return k10temp_read_in(dev, attr, channel, val);
-	case hwmon_curr:
-		return k10temp_read_curr(dev, attr, channel, val);
 	default:
 		return -EOPNOTSUPP;
 	}
@@ -383,11 +305,6 @@ static umode_t k10temp_is_visible(const
 			return 0;
 		}
 		break;
-	case hwmon_in:
-	case hwmon_curr:
-		if (!data->show_current)
-			return 0;
-		break;
 	default:
 		return 0;
 	}
@@ -517,20 +434,10 @@ static int k10temp_probe(struct pci_dev
 		case 0x8:	/* Zen+ */
 		case 0x11:	/* Zen APU */
 		case 0x18:	/* Zen+ APU */
-			data->show_current = !is_threadripper() && !is_epyc();
-			data->svi_addr[0] = F17H_M01H_SVI_TEL_PLANE0;
-			data->svi_addr[1] = F17H_M01H_SVI_TEL_PLANE1;
-			data->cfactor[0] = F17H_M01H_CFACTOR_ICORE;
-			data->cfactor[1] = F17H_M01H_CFACTOR_ISOC;
 			k10temp_get_ccd_support(pdev, data, 4);
 			break;
 		case 0x31:	/* Zen2 Threadripper */
 		case 0x71:	/* Zen2 */
-			data->show_current = !is_threadripper() && !is_epyc();
-			data->cfactor[0] = F17H_M31H_CFACTOR_ICORE;
-			data->cfactor[1] = F17H_M31H_CFACTOR_ISOC;
-			data->svi_addr[0] = F17H_M31H_SVI_TEL_PLANE0;
-			data->svi_addr[1] = F17H_M31H_SVI_TEL_PLANE1;
 			k10temp_get_ccd_support(pdev, data, 8);
 			break;
 		}
@@ -542,11 +449,6 @@ static int k10temp_probe(struct pci_dev
 
 		switch (boot_cpu_data.x86_model) {
 		case 0x0 ... 0x1:	/* Zen3 */
-			data->show_current = true;
-			data->svi_addr[0] = F19H_M01_SVI_TEL_PLANE0;
-			data->svi_addr[1] = F19H_M01_SVI_TEL_PLANE1;
-			data->cfactor[0] = F19H_M01H_CFACTOR_ICORE;
-			data->cfactor[1] = F19H_M01H_CFACTOR_ISOC;
 			k10temp_get_ccd_support(pdev, data, 8);
 			break;
 		}
author maintainer
#2 lore raw

PATCH 2/717 drm/gma500: fix double free of gma_connector

In reply to Greg Kroah-Hartman

From: Tom Rix <[email protected]>

[ Upstream commit 4e19d51ca5b28a1d435a844c7b2a8e1b1b6fa237 ]

clang static analysis reports this problem:

cdv_intel_dp.c:2101:2: warning: Attempt to free released memory

        kfree(gma_connector);
        ^~~~~~~~~~~~~~~~~~~~

In cdv_intel_dp_init() when the call to cdv_intel_edp_panel_vdd_off() fails, the handler calls cdv_intel_dp_destroy(connector) which does the first free of gma_connector. So adjust the goto label and skip the second free.

---
 drivers/gpu/drm/gma500/cdv_intel_dp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/gma500/cdv_intel_dp.c +1 -1
index 720a767118c9c..deb4fd13591d2 100644
@@ -2083,7 +2083,7 @@ cdv_intel_dp_init(struct drm_device *dev, struct psb_intel_mode_device *mode_dev
 			DRM_INFO("failed to retrieve link info, disabling eDP\n");
 			drm_encoder_cleanup(encoder);
 			cdv_intel_dp_destroy(connector);
-			goto err_priv;
+			goto err_connector;
 		} else {
         		DRM_DEBUG_KMS("DPCD: Rev=%x LN_Rate=%x LN_CNT=%x LN_DOWNSP=%x\n",
 				intel_dp->dpcd[0], intel_dp->dpcd[1], 
Signature · 1 line
2.27.0
author maintainer
#3 lore raw

PATCH 3/717 iio: adc: at91_adc: add Kconfig dep on the OF symbol and remove of_match_ptr()

In reply to Greg Kroah-Hartman

From: Alexandru Ardelean <[email protected]>

[ Upstream commit f091d7c5fe6cc39e916b50f90e3cac67a032d0be ]

This tries to solve a warning reported by the lkp bot:

Quoted 2 lines
Quoted 2 lines

drivers/iio/adc/at91_adc.c:1439:34: warning: unused variable 'at91_adc_dt_ids' [-Wunused-const-variable]

   static const struct of_device_id at91_adc_dt_ids[] = {
                                    ^

1 warning generated.

This warning has appeared after the AT91_ADC driver compilation has been enabled via the COMPILE_TEST symbol dependency.

The warning is caused by the 'of_match_ptr()' helper which returns NULL if OF is undefined. This driver should build only for device-tree context, so a dependency on the OF Kconfig symbol has been added.
Also, the usage of of_match_ptr() helper has been removed since it shouldn't ever return NULL (because the driver should not be built for the non-OF context).

---
 drivers/iio/adc/Kconfig    | 2 +-
 drivers/iio/adc/at91_adc.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
drivers/iio/adc/Kconfig +1 -1
index 91ae90514aff4..17e9ceb9c6c48 100644
@@ -295,7 +295,7 @@ config ASPEED_ADC
 config AT91_ADC
 	tristate "Atmel AT91 ADC"
 	depends on ARCH_AT91 || COMPILE_TEST
-	depends on INPUT && SYSFS
+	depends on INPUT && SYSFS && OF
 	select IIO_BUFFER
 	select IIO_TRIGGERED_BUFFER
 	help
drivers/iio/adc/at91_adc.c +1 -1
index 9b2c548fae957..0a793e7cd53ee 100644
@@ -1469,7 +1469,7 @@ static struct platform_driver at91_adc_driver = {
 	.id_table = at91_adc_ids,
 	.driver = {
 		   .name = DRIVER_NAME,
-		   .of_match_table = of_match_ptr(at91_adc_dt_ids),
+		   .of_match_table = at91_adc_dt_ids,
 		   .pm = &at91_adc_pm_ops,
 	},
 };
Signature · 1 line
2.27.0
author maintainer
#4 lore raw

PATCH 4/717 drm/aspeed: Fix Kconfig warning & subsequent build errors

In reply to Greg Kroah-Hartman

From: Randy Dunlap <[email protected]>

[ Upstream commit bf296b35489b46780b73b74ad984d06750ed5479 ]

Kernel test robot reported build errors (undefined references) that didn't make much sense. After reproducing them, there is also a Kconfig warning that is the root cause of the build errors, so fix that Kconfig problem.

Fixes this Kconfig warning:
WARNING: unmet direct dependencies detected for CMA
Depends on [n]: MMU [=n]
Selected by [m]:
- DRM_ASPEED_GFX [=m] && HAS_IOMEM [=y] && DRM [=m] && OF [=y] && (COMPILE_TEST [=y] || ARCH_ASPEED) && HAVE_DMA_CONTIGUOUS [=y]

and these dependent build errors:
(.text+0x10c8c): undefined reference to `start_isolate_page_range'
microblaze-linux-ld: (.text+0x10f14): undefined reference to `test_pages_isolated'
microblaze-linux-ld: (.text+0x10fd0): undefined reference to `undo_isolate_page_range'

Fixes 76356a966e33 ("drm: aspeed: Clean up Kconfig options")
Cc Joel Stanley <[email protected]>
Cc Andrew Jeffery <[email protected]>
Cc Daniel Vetter <[email protected]>
Cc Michal Simek <[email protected]>
Cc Andrew Morton <[email protected]>
Cc Mike Rapoport <[email protected]>
Cc linux-mm at kvack.org
Cc linux-aspeed at lists.ozlabs.org
Cc linux-arm-kernel at lists.infradead.org
Cc David Airlie <[email protected]>
Cc dri-devel at lists.freedesktop.org
---
 drivers/gpu/drm/aspeed/Kconfig | 1 +
 1 file changed, 1 insertion(+)
drivers/gpu/drm/aspeed/Kconfig +1 -0
index 018383cfcfa79..5e95bcea43e92 100644
@@ -3,6 +3,7 @@ config DRM_ASPEED_GFX
 	tristate "ASPEED BMC Display Controller"
 	depends on DRM && OF
 	depends on (COMPILE_TEST || ARCH_ASPEED)
+	depends on MMU
 	select DRM_KMS_HELPER
 	select DRM_KMS_CMA_HELPER
 	select DMA_CMA if HAVE_DMA_CONTIGUOUS
Signature · 1 line
2.27.0
author maintainer
#5 lore raw

PATCH 5/717 drm/mcde: Fix handling of platform_get_irq() error

In reply to Greg Kroah-Hartman

From: Krzysztof Kozlowski <[email protected]>

[ Upstream commit e2dae672a9d5e11856fe30ede63467c65f999a81 ]

platform_get_irq() returns -ERRNO on error. In such case comparison to 0 would pass the check.

---
 drivers/gpu/drm/mcde/mcde_drv.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/mcde/mcde_drv.c +2 -2
index 92f8bd907193f..210f5e1630081 100644
@@ -331,8 +331,8 @@ static int mcde_probe(struct platform_device *pdev)
 	}
 
 	irq = platform_get_irq(pdev, 0);
-	if (!irq) {
-		ret = -EINVAL;
+	if (irq < 0) {
+		ret = irq;
 		goto clk_disable;
 	}
 
Signature · 1 line
2.27.0
author maintainer
#6 lore raw

PATCH 6/717 drm/tve200: Fix handling of platform_get_irq() error

In reply to Greg Kroah-Hartman

From: Krzysztof Kozlowski <[email protected]>

[ Upstream commit 77bb5aaf2bb8180e7d1bb70b4df306f511707a7d ]

platform_get_irq() returns -ERRNO on error. In such case comparison to 0 would pass the check.

---
 drivers/gpu/drm/tve200/tve200_drv.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/tve200/tve200_drv.c +2 -2
index c3aa39bd38ecd..b5259cb1383fc 100644
@@ -200,8 +200,8 @@ static int tve200_probe(struct platform_device *pdev)
 	}
 
 	irq = platform_get_irq(pdev, 0);
-	if (!irq) {
-		ret = -EINVAL;
+	if (irq < 0) {
+		ret = irq;
 		goto clk_disable;
 	}
 
Signature · 1 line
2.27.0
author maintainer
#7 lore raw

PATCH 7/717 arm64: dts: renesas: hihope-rzg2-ex: Drop rxc-skew-ps from ethernet-phy node

In reply to Greg Kroah-Hartman

From: Biju Das <[email protected]>

[ Upstream commit 67d3dcf12a3d245b6fd6ca5672893f7ae4e137ed ]

HiHope RZG2[HMN] boards uses Realtek phy and the driver does not support rxc-skew-ps property. So remove rxc-skew-ps from ethernet-phy node.

Fixes 7433f1fb8ec8fe ("arm64: dts: renesas: Add HiHope RZ/G2M sub board support")
---
 arch/arm64/boot/dts/renesas/hihope-rzg2-ex.dtsi | 1 -
 1 file changed, 1 deletion(-)
arch/arm64/boot/dts/renesas/hihope-rzg2-ex.dtsi +0 -1
index 178401a34cbf8..b9e46aed53362 100644
@@ -23,7 +23,6 @@
 	status = "okay";
 
 	phy0: ethernet-phy@0 {
-		rxc-skew-ps = <1500>;
 		reg = <0>;
 		interrupt-parent = <&gpio2>;
 		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
Signature · 1 line
2.27.0
author maintainer
#8 lore raw

PATCH 8/717 arm64: dts: renesas: cat875: Remove rxc-skew-ps from ethernet-phy node

In reply to Greg Kroah-Hartman

From: Biju Das <[email protected]>

[ Upstream commit 53e573dc39fba1834f3e4fa002cb754b61a30701 ]

The CAT875 sub board from Silicon Linux uses Realtek phy and the driver does not support rxc-skew-ps property.

Fixes 6b170cd3ed02949f ("arm64: dts: renesas: cat875: Add ethernet support")
---
 arch/arm64/boot/dts/renesas/cat875.dtsi | 1 -
 1 file changed, 1 deletion(-)
arch/arm64/boot/dts/renesas/cat875.dtsi +0 -1
index 33daa95706840..801ea54b027c4 100644
@@ -21,7 +21,6 @@
 	status = "okay";
 
 	phy0: ethernet-phy@0 {
-		rxc-skew-ps = <1500>;
 		reg = <0>;
 		interrupt-parent = <&gpio2>;
 		interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
Signature · 1 line
2.27.0
author maintainer
#9 lore raw

PATCH 9/717 soc: renesas: rmobile-sysc: Fix some leaks in rmobile_init_pm_domains()

In reply to Greg Kroah-Hartman

From: Dan Carpenter <[email protected]>

[ Upstream commit cf25d802e029c31efac8bdc979236927f37183bd ]

This code needs to call iounmap() on one error path.

Fixes 2173fc7cb681 ("ARM: shmobile: R-Mobile: Add DT support for PM domains")
---
 drivers/soc/renesas/rmobile-sysc.c | 1 +
 1 file changed, 1 insertion(+)
drivers/soc/renesas/rmobile-sysc.c +1 -0
index 54b616ad4a62a..beb1c7211c3d6 100644
@@ -327,6 +327,7 @@ static int __init rmobile_init_pm_domains(void)
 
 		pmd = of_get_child_by_name(np, "pm-domains");
 		if (!pmd) {
+			iounmap(base);
 			pr_warn("%pOF lacks pm-domains node\n", np);
 			continue;
 		}
Signature · 1 line
2.27.0
author maintainer
#10 lore raw

PATCH 10/717 soc: mediatek: Check if power domains can be powered on at boot time

In reply to Greg Kroah-Hartman

From: Nicolas Boichat <[email protected]>

[ Upstream commit 4007844b05815717f522c7ea9914e24ad0ff6c79 ]

In the error case, where a power domain cannot be powered on successfully at boot time (in mtk_register_power_domains), pm_genpd_init would still be called with is_off=false, and the system would later try to disable the power domain again, triggering warnings as disabled clocks are disabled again (and other potential issues).

Also print a warning splat in that case, as this should never happen.

---
 drivers/soc/mediatek/mtk-scpsys.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/soc/mediatek/mtk-scpsys.c +3 -2
index f669d3754627d..ca75b14931ec9 100644
@@ -524,6 +524,7 @@ static void mtk_register_power_domains(struct platform_device *pdev,
 	for (i = 0; i < num; i++) {
 		struct scp_domain *scpd = &scp->domains[i];
 		struct generic_pm_domain *genpd = &scpd->genpd;
+		bool on;
 
 		/*
 		 * Initially turn on all domains to make the domains usable
@@ -531,9 +532,9 @@ static void mtk_register_power_domains(struct platform_device *pdev,
 		 * software.  The unused domains will be switched off during
 		 * late_init time.
 		 */
-		genpd->power_on(genpd);
+		on = !WARN_ON(genpd->power_on(genpd) < 0);
 
-		pm_genpd_init(genpd, NULL, false);
+		pm_genpd_init(genpd, NULL, !on);
 	}
 
 	/*
Signature · 1 line
2.27.0
author maintainer
#11 lore raw

PATCH 11/717 arm64: dts: mediatek: mt8183: fix gce incorrect mbox-cells value

In reply to Greg Kroah-Hartman

From: Fabien Parent <[email protected]>

[ Upstream commit e55c56df43dd11de4a6c08e3ea52ca45b51c8800 ]

The binding documentation says:
- #mbox-cells: Should be 2.
<&phandle channel priority>
phandle: Label name of a gce node.
channel: Channel of mailbox. Be equal to the thread id of GCE.
priority: Priority of GCE thread.

Fix the value of #mbox-cells.

Fixes d3c306e31bc7 ("arm64: dts: add gce node for mt8183")
---
 arch/arm64/boot/dts/mediatek/mt8183.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/mediatek/mt8183.dtsi +1 -1
index 9cfd961c45eb3..08a914d3a6435 100644
@@ -363,7 +363,7 @@
 			compatible = "mediatek,mt8183-gce";
 			reg = <0 0x10238000 0 0x4000>;
 			interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_LOW>;
-			#mbox-cells = <3>;
+			#mbox-cells = <2>;
 			clocks = <&infracfg CLK_INFRA_GCE>;
 			clock-names = "gce";
 		};
Signature · 1 line
2.27.0
author maintainer
#12 lore raw

PATCH 12/717 arm64: dts: ipq6018: update the reserved-memory node

In reply to Greg Kroah-Hartman

From: Kathiravan T <[email protected]>

[ Upstream commit 4af5c6dc255ca64e5263a5254bb7553f05bb682c ]

Memory region reserved for the TZ is changed long back. Let's update the same to align with the corret region. Its size also increased to 4MB from 2MB.

Along with that, bump the Q6 region size to 85MB.

Fixes 1e8277854b49 ("arm64: dts: Add ipq6018 SoC and CP01 board support")
---
 arch/arm64/boot/dts/qcom/ipq6018.dtsi | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
arch/arm64/boot/dts/qcom/ipq6018.dtsi +3 -3
index 59e0cbfa22143..cdc1e3d60c58e 100644
@@ -156,8 +156,8 @@
 			no-map;
 		};
 
-		tz: tz@48500000 {
-			reg = <0x0 0x48500000 0x0 0x00200000>;
+		tz: memory@4a600000 {
+			reg = <0x0 0x4a600000 0x0 0x00400000>;
 			no-map;
 		};
 
@@ -167,7 +167,7 @@
 		};
 
 		q6_region: memory@4ab00000 {
-			reg = <0x0 0x4ab00000 0x0 0x02800000>;
+			reg = <0x0 0x4ab00000 0x0 0x05500000>;
 			no-map;
 		};
 	};
Signature · 1 line
2.27.0
author maintainer
#13 lore raw

PATCH 13/717 arm64: dts: qcom: sc7180: Fix one forgotten interconnect reference

In reply to Greg Kroah-Hartman

From: Douglas Anderson <[email protected]>

[ Upstream commit 228813aaa71113d7a12313b87c4905a9d3f9df37 ]

In commit e23b1220a246 ("arm64: dts: qcom: sc7180: Increase the number of interconnect cells") we missed increasing the cells on one interconnect. That's no bueno. Fix it.

NOTE: it appears that things aren't totally broken without this fix, but clearly something isn't going to be working right. If nothing else, without this fix I see this in the logs:

OF: /soc@0/mdss@ae00000: could not get #interconnect-cells for /soc@0/interrupt-controller@17a00000

---
 arch/arm64/boot/dts/qcom/sc7180.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/qcom/sc7180.dtsi +1 -1
index 6678f1e8e3958..a02776ce77a10 100644
@@ -2811,7 +2811,7 @@
 			interrupt-controller;
 			#interrupt-cells = <1>;
 
-			interconnects = <&mmss_noc MASTER_MDP0 &mc_virt SLAVE_EBI1>;
+			interconnects = <&mmss_noc MASTER_MDP0 0 &mc_virt SLAVE_EBI1 0>;
 			interconnect-names = "mdp0-mem";
 
 			iommus = <&apps_smmu 0x800 0x2>;
Signature · 1 line
2.27.0
author maintainer
#14 lore raw

PATCH 14/717 soc: qcom: geni: More properly switch to DMA mode

In reply to Greg Kroah-Hartman

From: Douglas Anderson <[email protected]>

[ Upstream commit 4b6ea87be44ef34732846fc71e44c41125f0c4fa ]

On geni-i2c transfers using DMA, it was seen that if you program the command (I2C_READ) before calling geni_se_rx_dma_prep() that it could cause interrupts to fire. If we get unlucky, these interrupts can just keep firing (and not be handled) blocking further progress and hanging the system.

In commit 02b9aec59243 ("i2c: i2c-qcom-geni: Fix DMA transfer race") we avoided that by making sure we didn't program the command until after geni_se_rx_dma_prep() was called. While that avoided the problems, it also turns out to be invalid. At least in the TX case we started seeing sporadic corrupted transfers. This is easily seen by adding an msleep() between the DMA prep and the writing of the command, which makes the problem worse. That means we need to revert that commit and find another way to fix the bogus IRQs.

Specifically, after reverting commit 02b9aec59243 ("i2c:
i2c-qcom-geni: Fix DMA transfer race"), I put some traces in. I found that the when the interrupts were firing like crazy:
- "m_stat" had bits for M_RX_IRQ_EN, M_RX_FIFO_WATERMARK_EN set.
- "dma" was set.

Further debugging showed that I could make the problem happen more reliably by adding an "msleep(1)" any time after geni_se_setup_m_cmd() ran up until geni_se_rx_dma_prep() programmed the length.

A rather simple fix is to change geni_se_select_dma_mode() so it's a true inverse of geni_se_select_fifo_mode() and disables all the FIFO related interrupts. Now the problematic interrupts can't fire and we can program things in the correct order without worrying.

As part of this, let's also change the writel_relaxed() in the prepare function to a writel() so that our DMA is guaranteed to be prepared now that we can't rely on geni_se_setup_m_cmd()'s writel().

NOTE: the only current user of GENI_SE_DMA in mainline is i2c.

Fixes 37692de5d523 ("i2c: i2c-qcom-geni: Add bus driver for the Qualcomm GENI I2C controller")
Fixes 02b9aec59243 ("i2c: i2c-qcom-geni: Fix DMA transfer race")
---
 drivers/soc/qcom/qcom-geni-se.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)
drivers/soc/qcom/qcom-geni-se.c +15 -2
index d0e4f520cff8c..751a49f6534f4 100644
@@ -289,10 +289,23 @@ static void geni_se_select_fifo_mode(struct geni_se *se)
 
 static void geni_se_select_dma_mode(struct geni_se *se)
 {
+	u32 proto = geni_se_read_proto(se);
 	u32 val;
 
 	geni_se_irq_clear(se);
 
+	val = readl_relaxed(se->base + SE_GENI_M_IRQ_EN);
+	if (proto != GENI_SE_UART) {
+		val &= ~(M_CMD_DONE_EN | M_TX_FIFO_WATERMARK_EN);
+		val &= ~(M_RX_FIFO_WATERMARK_EN | M_RX_FIFO_LAST_EN);
+	}
+	writel_relaxed(val, se->base + SE_GENI_M_IRQ_EN);
+
+	val = readl_relaxed(se->base + SE_GENI_S_IRQ_EN);
+	if (proto != GENI_SE_UART)
+		val &= ~S_CMD_DONE_EN;
+	writel_relaxed(val, se->base + SE_GENI_S_IRQ_EN);
+
 	val = readl_relaxed(se->base + SE_GENI_DMA_MODE_EN);
 	val |= GENI_DMA_MODE_EN;
 	writel_relaxed(val, se->base + SE_GENI_DMA_MODE_EN);
@@ -651,7 +664,7 @@ int geni_se_tx_dma_prep(struct geni_se *se, void *buf, size_t len,
 	writel_relaxed(lower_32_bits(*iova), se->base + SE_DMA_TX_PTR_L);
 	writel_relaxed(upper_32_bits(*iova), se->base + SE_DMA_TX_PTR_H);
 	writel_relaxed(GENI_SE_DMA_EOT_BUF, se->base + SE_DMA_TX_ATTR);
-	writel_relaxed(len, se->base + SE_DMA_TX_LEN);
+	writel(len, se->base + SE_DMA_TX_LEN);
 	return 0;
 }
 EXPORT_SYMBOL(geni_se_tx_dma_prep);
@@ -688,7 +701,7 @@ int geni_se_rx_dma_prep(struct geni_se *se, void *buf, size_t len,
 	writel_relaxed(upper_32_bits(*iova), se->base + SE_DMA_RX_PTR_H);
 	/* RX does not have EOT buffer type bit. So just reset RX_ATTR */
 	writel_relaxed(0, se->base + SE_DMA_RX_ATTR);
-	writel_relaxed(len, se->base + SE_DMA_RX_LEN);
+	writel(len, se->base + SE_DMA_RX_LEN);
 	return 0;
 }
 EXPORT_SYMBOL(geni_se_rx_dma_prep);
Signature · 1 line
2.27.0
author maintainer
#15 lore raw

PATCH 15/717 Revert "i2c: i2c-qcom-geni: Fix DMA transfer race"

In reply to Greg Kroah-Hartman

From: Douglas Anderson <[email protected]>

[ Upstream commit 9cb4c67d7717135d6f4600a49ab07b470ea4ee2f ]

This reverts commit 02b9aec59243c6240fc42884acc958602146ddf6.

As talked about in the patch ("soc: qcom: geni: More properly switch to DMA mode"), swapping the order of geni_se_setup_m_cmd() and geni_se_xx_dma_prep() can sometimes cause corrupted transfers. Thus we traded one problem for another. Now that we've debugged the problem further and fixed the geni helper functions to more disable FIFO interrupts when we move to DMA mode we can revert it and end up with (hopefully) zero problems!

To be explicit, the patch ("soc: qcom: geni: More properly switch to DMA mode") is a prerequisite for this one.

---
 drivers/i2c/busses/i2c-qcom-geni.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)
drivers/i2c/busses/i2c-qcom-geni.c +2 -4
index 8b4c35f47a70f..dce75b85253c1 100644
@@ -366,6 +366,7 @@ static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg,
 		geni_se_select_mode(se, GENI_SE_FIFO);
 
 	writel_relaxed(len, se->base + SE_I2C_RX_TRANS_LEN);
+	geni_se_setup_m_cmd(se, I2C_READ, m_param);
 
 	if (dma_buf && geni_se_rx_dma_prep(se, dma_buf, len, &rx_dma)) {
 		geni_se_select_mode(se, GENI_SE_FIFO);
@@ -373,8 +374,6 @@ static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg,
 		dma_buf = NULL;
 	}
 
-	geni_se_setup_m_cmd(se, I2C_READ, m_param);
-
 	time_left = wait_for_completion_timeout(&gi2c->done, XFER_TIMEOUT);
 	if (!time_left)
 		geni_i2c_abort_xfer(gi2c);
@@ -408,6 +407,7 @@ static int geni_i2c_tx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg,
 		geni_se_select_mode(se, GENI_SE_FIFO);
 
 	writel_relaxed(len, se->base + SE_I2C_TX_TRANS_LEN);
+	geni_se_setup_m_cmd(se, I2C_WRITE, m_param);
 
 	if (dma_buf && geni_se_tx_dma_prep(se, dma_buf, len, &tx_dma)) {
 		geni_se_select_mode(se, GENI_SE_FIFO);
@@ -415,8 +415,6 @@ static int geni_i2c_tx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg,
 		dma_buf = NULL;
 	}
 
-	geni_se_setup_m_cmd(se, I2C_WRITE, m_param);
-
 	if (!dma_buf) /* Get FIFO IRQ */
 		writel_relaxed(1, se->base + SE_GENI_TX_WATERMARK_REG);
 
Signature · 1 line
2.27.0
author maintainer
#16 lore raw

PATCH 16/717 RDMA/bnxt_re: Set queue pair state when being queried

In reply to Greg Kroah-Hartman

From: Kamal Heib <[email protected]>

[ Upstream commit 53839b51a7671eeb3fb44d479d541cf3a0f2dd45 ]

The API for ib_query_qp requires the driver to set cur_qp_state on return, add the missing set.

---
 drivers/infiniband/hw/bnxt_re/ib_verbs.c | 1 +
 1 file changed, 1 insertion(+)
drivers/infiniband/hw/bnxt_re/ib_verbs.c +1 -0
index cf3db96283976..f9c999d5ba28e 100644
@@ -2078,6 +2078,7 @@ int bnxt_re_query_qp(struct ib_qp *ib_qp, struct ib_qp_attr *qp_attr,
 		goto out;
 	}
 	qp_attr->qp_state = __to_ib_qp_state(qplib_qp->state);
+	qp_attr->cur_qp_state = __to_ib_qp_state(qplib_qp->cur_qp_state);
 	qp_attr->en_sqd_async_notify = qplib_qp->en_sqd_async_notify ? 1 : 0;
 	qp_attr->qp_access_flags = __to_ib_access_flags(qplib_qp->access);
 	qp_attr->pkey_index = qplib_qp->pkey_index;
Signature · 1 line
2.27.0
author maintainer
#17 lore raw

PATCH 17/717 rtc: pcf2127: fix pcf2127_nvmem_read/write() returns

In reply to Greg Kroah-Hartman

From: Dan Carpenter <[email protected]>

[ Upstream commit ba1c30bf3f2536f248d262c6f257b5a787305991 ]

These functions should return zero on success. Non-zero returns are treated as error. On some paths, this doesn't matter but in nvmem_cell_read() a non-zero return would be passed to ERR_PTR() and lead to an Oops.

Fixes d6c3029f32f7 ("rtc: pcf2127: add support for accessing internal static RAM")
---
 drivers/rtc/rtc-pcf2127.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)
drivers/rtc/rtc-pcf2127.c +4 -8
index 07a5630ec841f..4d9711d51f8f3 100644
@@ -243,10 +243,8 @@ static int pcf2127_nvmem_read(void *priv, unsigned int offset,
 	if (ret)
 		return ret;
 
-	ret = regmap_bulk_read(pcf2127->regmap, PCF2127_REG_RAM_RD_CMD,
-			       val, bytes);
-
-	return ret ?: bytes;
+	return regmap_bulk_read(pcf2127->regmap, PCF2127_REG_RAM_RD_CMD,
+				val, bytes);
 }
 
 static int pcf2127_nvmem_write(void *priv, unsigned int offset,
@@ -261,10 +259,8 @@ static int pcf2127_nvmem_write(void *priv, unsigned int offset,
 	if (ret)
 		return ret;
 
-	ret = regmap_bulk_write(pcf2127->regmap, PCF2127_REG_RAM_WRT_CMD,
-				val, bytes);
-
-	return ret ?: bytes;
+	return regmap_bulk_write(pcf2127->regmap, PCF2127_REG_RAM_WRT_CMD,
+				 val, bytes);
 }
 
 /* watchdog driver */
Signature · 1 line
2.27.0
author maintainer
#18 lore raw

PATCH 18/717 RDMA/bnxt_re: Fix entry size during SRQ create

In reply to Greg Kroah-Hartman

From: Selvin Xavier <[email protected]>

[ Upstream commit b898d5c50cab1f985e77d053eb5c4d2c4a7694ae ]

Only static WQE is supported for SRQ. So always use the max supported SGEs while calculating SRQ entry size.

Fixes 2bb3c32c5c5f ("RDMA/bnxt_re: Change wr posting logic to accommodate variable wqes")
---
 drivers/infiniband/hw/bnxt_re/ib_verbs.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/infiniband/hw/bnxt_re/ib_verbs.c +2 -2
index f9c999d5ba28e..266de55f57192 100644
@@ -1657,8 +1657,8 @@ int bnxt_re_create_srq(struct ib_srq *ib_srq,
 	srq->qplib_srq.max_wqe = entries;
 
 	srq->qplib_srq.max_sge = srq_init_attr->attr.max_sge;
-	srq->qplib_srq.wqe_size =
-			bnxt_re_get_rwqe_size(srq->qplib_srq.max_sge);
+	 /* 128 byte wqe size for SRQ . So use max sges */
+	srq->qplib_srq.wqe_size = bnxt_re_get_rwqe_size(dev_attr->max_srq_sges);
 	srq->qplib_srq.threshold = srq_init_attr->attr.srq_limit;
 	srq->srq_limit = srq_init_attr->attr.srq_limit;
 	srq->qplib_srq.eventq_hw_ring_id = rdev->nq[0].ring_id;
Signature · 1 line
2.27.0
author maintainer
#19 lore raw

PATCH 19/717 selinux: fix error initialization in inode_doinit_with_dentry()

In reply to Greg Kroah-Hartman

From: Tianyue Ren <[email protected]>

[ Upstream commit 83370b31a915493231e5b9addc72e4bef69f8d31 ]

Mark the inode security label as invalid if we cannot find a dentry so that we will retry later rather than marking it initialized with the unlabeled SID.

Fixes 9287aed2ad1f ("selinux: Convert isec->lock into a spinlock")
[PM: minor comment tweaks]
---
 security/selinux/hooks.c | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)
security/selinux/hooks.c +16 -3
index 6b1826fc3658e..158fc47d8620d 100644
@@ -1451,7 +1451,13 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent
 			 * inode_doinit with a dentry, before these inodes could
 			 * be used again by userspace.
 			 */
-			goto out;
+			isec->initialized = LABEL_INVALID;
+			/*
+			 * There is nothing useful to jump to the "out"
+			 * label, except a needless spin lock/unlock
+			 * cycle.
+			 */
+			return 0;
 		}
 
 		rc = inode_doinit_use_xattr(inode, dentry, sbsec->def_sid,
@@ -1507,8 +1513,15 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent
 			 * inode_doinit() with a dentry, before these inodes
 			 * could be used again by userspace.
 			 */
-			if (!dentry)
-				goto out;
+			if (!dentry) {
+				isec->initialized = LABEL_INVALID;
+				/*
+				 * There is nothing useful to jump to the "out"
+				 * label, except a needless spin lock/unlock
+				 * cycle.
+				 */
+				return 0;
+			}
 			rc = selinux_genfs_get_sid(dentry, sclass,
 						   sbsec->flags, &sid);
 			if (rc) {
Signature · 1 line
2.27.0
author maintainer
#20 lore raw

PATCH 20/717 ARM: dts: aspeed-g6: Fix the GPIO memory size

In reply to Greg Kroah-Hartman

From: Billy Tsai <[email protected]>

[ Upstream commit 886f82ce9f1f4559c139fdb2d79d158999ca38cd ]

The GPIO controller is a GPIO controller followed by some SGPIO controllers, which are a different type of device with their own binding and drivers.

Make the gpio node cover the only conventional GPIO controller.

---
 arch/arm/boot/dts/aspeed-g6.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/aspeed-g6.dtsi +1 -1
index b58220a49cbd8..bf97aaad7be9b 100644
@@ -357,7 +357,7 @@
 				#gpio-cells = <2>;
 				gpio-controller;
 				compatible = "aspeed,ast2600-gpio";
-				reg = <0x1e780000 0x800>;
+				reg = <0x1e780000 0x400>;
 				interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
 				gpio-ranges = <&pinctrl 0 0 208>;
 				ngpios = <208>;
Signature · 1 line
2.27.0
author maintainer
#21 lore raw

PATCH 21/717 ARM: dts: aspeed: s2600wf: Fix VGA memory region location

In reply to Greg Kroah-Hartman

From: Joel Stanley <[email protected]>

[ Upstream commit 9e1cc9679776f5b9e42481d392b1550753ebd084 ]

The VGA memory region is always from the top of RAM. On this board, that is 0x80000000 + 0x20000000 - 0x01000000 = 0x9f000000.

This was not an issue in practice as the region is "reserved" by the vendor's u-boot reducing the amount of available RAM, and the only user is the host VGA device poking at RAM over PCIe. That is, nothing from the ARM touches it.

It is worth fixing as developers copy existing device trees when building their machines, and the XDMA driver does use the memory region from the ARM side.

Fixes c4043ecac34a ("ARM: dts: aspeed: Add S2600WF BMC Machine")
---
 arch/arm/boot/dts/aspeed-bmc-intel-s2600wf.dts | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/boot/dts/aspeed-bmc-intel-s2600wf.dts +2 -2
index 1deb30ec912cf..6e9baf3bba531 100644
@@ -22,9 +22,9 @@
 		#size-cells = <1>;
 		ranges;
 
-		vga_memory: framebuffer@7f000000 {
+		vga_memory: framebuffer@9f000000 {
 			no-map;
-			reg = <0x7f000000 0x01000000>;
+			reg = <0x9f000000 0x01000000>; /* 16M */
 		};
 	};
 
Signature · 1 line
2.27.0
author maintainer
#22 lore raw

PATCH 22/717 RDMA/core: Fix error return in _ib_modify_qp()

In reply to Greg Kroah-Hartman

From: Jing Xiangfeng <[email protected]>

[ Upstream commit 5333499c6014224756e97fa1a1047dfa592d76d3 ]

Fix to return error code PTR_ERR() from the error handling case instead of 0.

---
 drivers/infiniband/core/verbs.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/infiniband/core/verbs.c +3 -1
index 740f8454b6b46..3d895cc41c3ad 100644
@@ -1698,8 +1698,10 @@ static int _ib_modify_qp(struct ib_qp *qp, struct ib_qp_attr *attr,
 			slave = rdma_lag_get_ah_roce_slave(qp->device,
 							   &attr->ah_attr,
 							   GFP_KERNEL);
-			if (IS_ERR(slave))
+			if (IS_ERR(slave)) {
+				ret = PTR_ERR(slave);
 				goto out_av;
+			}
 			attr->xmit_slave = slave;
 		}
 	}
Signature · 1 line
2.27.0
author maintainer
#23 lore raw

PATCH 23/717 RDMA/rxe: Compute PSN windows correctly

In reply to Greg Kroah-Hartman

From: Bob Pearson <[email protected]>

[ Upstream commit bb3ab2979fd69db23328691cb10067861df89037 ]

The code which limited the number of unacknowledged PSNs was incorrect. The PSNs are limited to 24 bits and wrap back to zero from 0x00ffffff. The test was computing a 32 bit value which wraps at 32 bits so that qp->req.psn can appear smaller than the limit when it is actually larger.

Replace '>' test with psn_compare which is used for other PSN comparisons and correctly handles the 24 bit size.

---
 drivers/infiniband/sw/rxe/rxe_req.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/infiniband/sw/rxe/rxe_req.c +2 -1
index af3923bf0a36b..d4917646641aa 100644
@@ -634,7 +634,8 @@ next_wqe:
 	}
 
 	if (unlikely(qp_type(qp) == IB_QPT_RC &&
-		     qp->req.psn > (qp->comp.psn + RXE_MAX_UNACKED_PSNS))) {
+		psn_compare(qp->req.psn, (qp->comp.psn +
+				RXE_MAX_UNACKED_PSNS)) > 0)) {
 		qp->req.wait_psn = 1;
 		goto exit;
 	}
Signature · 1 line
2.27.0
author maintainer
#24 lore raw

PATCH 24/717 x86/mm/ident_map: Check for errors from ident_pud_init()

In reply to Greg Kroah-Hartman

From: Arvind Sankar <[email protected]>

[ Upstream commit 1fcd009102ee02e217f2e7635ab65517d785da8e ]

Commit

ea3b5e60ce80 ("x86/mm/ident_map: Add 5-level paging support")

added ident_p4d_init() to support 5-level paging, but this function doesn't check and return errors from ident_pud_init().

For example, the decompressor stub uses this code to create an identity mapping. If it runs out of pages while trying to allocate a PMD pagetable, the error will be currently ignored.

Fix this to propagate errors.

[ bp: Space out statements for better readability. ]

---
 arch/x86/mm/ident_map.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)
arch/x86/mm/ident_map.c +10 -2
index fe7a12599d8eb..968d7005f4a72 100644
@@ -62,6 +62,7 @@ static int ident_p4d_init(struct x86_mapping_info *info, p4d_t *p4d_page,
 			  unsigned long addr, unsigned long end)
 {
 	unsigned long next;
+	int result;
 
 	for (; addr < end; addr = next) {
 		p4d_t *p4d = p4d_page + p4d_index(addr);
@@ -73,13 +74,20 @@ static int ident_p4d_init(struct x86_mapping_info *info, p4d_t *p4d_page,
 
 		if (p4d_present(*p4d)) {
 			pud = pud_offset(p4d, 0);
-			ident_pud_init(info, pud, addr, next);
+			result = ident_pud_init(info, pud, addr, next);
+			if (result)
+				return result;
+
 			continue;
 		}
 		pud = (pud_t *)info->alloc_pgt_page(info->context);
 		if (!pud)
 			return -ENOMEM;
-		ident_pud_init(info, pud, addr, next);
+
+		result = ident_pud_init(info, pud, addr, next);
+		if (result)
+			return result;
+
 		set_p4d(p4d, __p4d(__pa(pud) | info->kernpg_flag));
 	}
 
Signature · 1 line
2.27.0
author maintainer
#25 lore raw

PATCH 25/717 ARM: p2v: fix handling of LPAE translation in BE mode

In reply to Greg Kroah-Hartman

From: Ard Biesheuvel <[email protected]>

[ Upstream commit 4e79f0211b473f8e1eab8211a9fd50cc41a3a061 ]

When running in BE mode on LPAE hardware with a PA-to-VA translation that exceeds 4 GB, we patch bits 39:32 of the offset into the wrong byte of the opcode. So fix that, by rotating the offset in r0 to the right by 8 bits, which will put the 8-bit immediate in bits 31:24.

Note that this will also move bit #22 in its correct place when applying the rotation to the constant #0x400000.

Fixes d9a790df8e984 ("ARM: 7883/1: fix mov to mvn conversion in case of 64 bit phys_addr_t and BE")
---
 arch/arm/kernel/head.S | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)
arch/arm/kernel/head.S +1 -5
index f8904227e7fdc..98c1e68bdfcbb 100644
@@ -671,12 +671,8 @@ ARM_BE8(rev16	ip, ip)
 	ldrcc	r7, [r4], #4	@ use branch for delay slot
 	bcc	1b
 	bx	lr
-#else
-#ifdef CONFIG_CPU_ENDIAN_BE8
-	moveq	r0, #0x00004000	@ set bit 22, mov to mvn instruction
 #else
 	moveq	r0, #0x400000	@ set bit 22, mov to mvn instruction
-#endif
 	b	2f
 1:	ldr	ip, [r7, r3]
 #ifdef CONFIG_CPU_ENDIAN_BE8
@@ -685,7 +681,7 @@ ARM_BE8(rev16	ip, ip)
 	tst	ip, #0x000f0000	@ check the rotation field
 	orrne	ip, ip, r6, lsl #24 @ mask in offset bits 31-24
 	biceq	ip, ip, #0x00004000 @ clear bit 22
-	orreq	ip, ip, r0      @ mask in offset bits 7-0
+	orreq	ip, ip, r0, ror #8  @ mask in offset bits 7-0
 #else
 	bic	ip, ip, #0x000000ff
 	tst	ip, #0xf00	@ check the rotation field
Signature · 1 line
2.27.0
author maintainer
#26 lore raw

PATCH 26/717 RDMA/rtrs-clt: Remove destroy_con_cq_qp in case route resolving failed

In reply to Greg Kroah-Hartman

From: Danil Kipnis <[email protected]>

[ Upstream commit 2b3062e4d997f201c1ad2bbde88b7271dd9ef35f ]

We call destroy_con_cq_qp(con) in rtrs_rdma_addr_resolved() in case route couldn't be resolved and then again in create_cm() because nothing happens.

Don't call destroy_con_cq_qp from rtrs_rdma_addr_resolved, create_cm() does the clean up already.

---
 drivers/infiniband/ulp/rtrs/rtrs-clt.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/infiniband/ulp/rtrs/rtrs-clt.c +1 -3
index f298adc02acba..3cc957fea93ee 100644
@@ -1640,10 +1640,8 @@ static int rtrs_rdma_addr_resolved(struct rtrs_clt_con *con)
 		return err;
 	}
 	err = rdma_resolve_route(con->c.cm_id, RTRS_CONNECT_TIMEOUT_MS);
-	if (err) {
+	if (err)
 		rtrs_err(s, "Resolving route failed, err: %d\n", err);
-		destroy_con_cq_qp(con);
-	}
 
 	return err;
 }
Signature · 1 line
2.27.0
author maintainer
#27 lore raw

PATCH 27/717 RDMA/rtrs-clt: Missing error from rtrs_rdma_conn_established

In reply to Greg Kroah-Hartman

From: Gioh Kim <[email protected]>

[ Upstream commit f553e7601df9566ba7644541fc09152a3a81f793 ]

When rtrs_rdma_conn_established returns error (non-zero value), the error value is stored in con->cm_err and it cannot trigger rtrs_rdma_error_recovery. Finally the error of rtrs_rdma_con_established will be forgot.

Fixes 6a98d71daea1 ("RDMA/rtrs: client: main functionality")
---
 drivers/infiniband/ulp/rtrs/rtrs-clt.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/infiniband/ulp/rtrs/rtrs-clt.c +2 -2
index 3cc957fea93ee..d54a77ebe1184 100644
@@ -1835,8 +1835,8 @@ static int rtrs_clt_rdma_cm_handler(struct rdma_cm_id *cm_id,
 		cm_err = rtrs_rdma_route_resolved(con);
 		break;
 	case RDMA_CM_EVENT_ESTABLISHED:
-		con->cm_err = rtrs_rdma_conn_established(con, ev);
-		if (likely(!con->cm_err)) {
+		cm_err = rtrs_rdma_conn_established(con, ev);
+		if (likely(!cm_err)) {
 			/*
 			 * Report success and wake up. Here we abuse state_wq,
 			 * i.e. wake up without state change, but we set cm_err.
Signature · 1 line
2.27.0
author maintainer
#28 lore raw

PATCH 28/717 RDMA/rtrs-srv: Dont guard the whole __alloc_srv with srv_mutex

In reply to Greg Kroah-Hartman

From: Guoqing Jiang <[email protected]>

[ Upstream commit d715ff8acbd5876549ef2b21b755ed919f40dcc1 ]

The purpose of srv_mutex is to protect srv_list as in put_srv, so no need to hold it when allocate memory for srv since it could be time consuming.

Otherwise if one machine has limited memory, rsrv_close_work could be blocked for a longer time due to the mutex is held by get_or_create_srv since it can't get memory in time.

  INFO: task kworker/1:1:27478 blocked for more than 120 seconds.
        Tainted: G           O    4.14.171-1-storage #4.14.171-1.3~deb9
  "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
  kworker/1:1     D    0 27478      2 0x80000000
  Workqueue: rtrs_server_wq rtrs_srv_close_work [rtrs_server]
  Call Trace:
   ? __schedule+0x38c/0x7e0
   schedule+0x32/0x80
   schedule_preempt_disabled+0xa/0x10
   __mutex_lock.isra.2+0x25e/0x4d0
   ? put_srv+0x44/0x100 [rtrs_server]
   put_srv+0x44/0x100 [rtrs_server]
   rtrs_srv_close_work+0x16c/0x280 [rtrs_server]
   process_one_work+0x1c5/0x3c0
   worker_thread+0x47/0x3e0
   kthread+0xfc/0x130
   ? trace_event_raw_event_workqueue_execute_start+0xa0/0xa0
   ? kthread_create_on_node+0x70/0x70
   ret_from_fork+0x1f/0x30

Let's move all the logics from __find_srv_and_get and __alloc_srv to get_or_create_srv, and remove the two functions. Then it should be safe for multiple processes to access the same srv since it is protected with srv_mutex.

And since we don't want to allocate chunks with srv_mutex held, let's check the srv->refcount after get srv because the chunks could not be allocated yet.

---
 drivers/infiniband/ulp/rtrs/rtrs-srv.c | 86 +++++++++++---------------
 1 file changed, 37 insertions(+), 49 deletions(-)
drivers/infiniband/ulp/rtrs/rtrs-srv.c +37 -49
index d6f93601712e4..1cb778aff3c59 100644
@@ -1328,17 +1328,42 @@ static void rtrs_srv_dev_release(struct device *dev)
 	kfree(srv);
 }
 
-static struct rtrs_srv *__alloc_srv(struct rtrs_srv_ctx *ctx,
-				     const uuid_t *paths_uuid)
+static void free_srv(struct rtrs_srv *srv)
+{
+	int i;
+
+	WARN_ON(refcount_read(&srv->refcount));
+	for (i = 0; i < srv->queue_depth; i++)
+		mempool_free(srv->chunks[i], chunk_pool);
+	kfree(srv->chunks);
+	mutex_destroy(&srv->paths_mutex);
+	mutex_destroy(&srv->paths_ev_mutex);
+	/* last put to release the srv structure */
+	put_device(&srv->dev);
+}
+
+static struct rtrs_srv *get_or_create_srv(struct rtrs_srv_ctx *ctx,
+					   const uuid_t *paths_uuid)
 {
 	struct rtrs_srv *srv;
 	int i;
 
+	mutex_lock(&ctx->srv_mutex);
+	list_for_each_entry(srv, &ctx->srv_list, ctx_list) {
+		if (uuid_equal(&srv->paths_uuid, paths_uuid) &&
+		    refcount_inc_not_zero(&srv->refcount)) {
+			mutex_unlock(&ctx->srv_mutex);
+			return srv;
+		}
+	}
+
+	/* need to allocate a new srv */
 	srv = kzalloc(sizeof(*srv), GFP_KERNEL);
-	if  (!srv)
+	if  (!srv) {
+		mutex_unlock(&ctx->srv_mutex);
 		return NULL;
+	}
 
-	refcount_set(&srv->refcount, 1);
 	INIT_LIST_HEAD(&srv->paths_list);
 	mutex_init(&srv->paths_mutex);
 	mutex_init(&srv->paths_ev_mutex);
@@ -1347,6 +1372,8 @@ static struct rtrs_srv *__alloc_srv(struct rtrs_srv_ctx *ctx,
 	srv->ctx = ctx;
 	device_initialize(&srv->dev);
 	srv->dev.release = rtrs_srv_dev_release;
+	list_add(&srv->ctx_list, &ctx->srv_list);
+	mutex_unlock(&ctx->srv_mutex);
 
 	srv->chunks = kcalloc(srv->queue_depth, sizeof(*srv->chunks),
 			      GFP_KERNEL);
@@ -1358,7 +1385,7 @@ static struct rtrs_srv *__alloc_srv(struct rtrs_srv_ctx *ctx,
 		if (!srv->chunks[i])
 			goto err_free_chunks;
 	}
-	list_add(&srv->ctx_list, &ctx->srv_list);
+	refcount_set(&srv->refcount, 1);
 
 	return srv;
 
@@ -1369,52 +1396,9 @@ err_free_chunks:
 
 err_free_srv:
 	kfree(srv);
-
 	return NULL;
 }
 
-static void free_srv(struct rtrs_srv *srv)
-{
-	int i;
-
-	WARN_ON(refcount_read(&srv->refcount));
-	for (i = 0; i < srv->queue_depth; i++)
-		mempool_free(srv->chunks[i], chunk_pool);
-	kfree(srv->chunks);
-	mutex_destroy(&srv->paths_mutex);
-	mutex_destroy(&srv->paths_ev_mutex);
-	/* last put to release the srv structure */
-	put_device(&srv->dev);
-}
-
-static inline struct rtrs_srv *__find_srv_and_get(struct rtrs_srv_ctx *ctx,
-						   const uuid_t *paths_uuid)
-{
-	struct rtrs_srv *srv;
-
-	list_for_each_entry(srv, &ctx->srv_list, ctx_list) {
-		if (uuid_equal(&srv->paths_uuid, paths_uuid) &&
-		    refcount_inc_not_zero(&srv->refcount))
-			return srv;
-	}
-
-	return NULL;
-}
-
-static struct rtrs_srv *get_or_create_srv(struct rtrs_srv_ctx *ctx,
-					   const uuid_t *paths_uuid)
-{
-	struct rtrs_srv *srv;
-
-	mutex_lock(&ctx->srv_mutex);
-	srv = __find_srv_and_get(ctx, paths_uuid);
-	if (!srv)
-		srv = __alloc_srv(ctx, paths_uuid);
-	mutex_unlock(&ctx->srv_mutex);
-
-	return srv;
-}
-
 static void put_srv(struct rtrs_srv *srv)
 {
 	if (refcount_dec_and_test(&srv->refcount)) {
@@ -1813,7 +1797,11 @@ static int rtrs_rdma_connect(struct rdma_cm_id *cm_id,
 	}
 	recon_cnt = le16_to_cpu(msg->recon_cnt);
 	srv = get_or_create_srv(ctx, &msg->paths_uuid);
-	if (!srv) {
+	/*
+	 * "refcount == 0" happens if a previous thread calls get_or_create_srv
+	 * allocate srv, but chunks of srv are not allocated yet.
+	 */
+	if (!srv || refcount_read(&srv->refcount) == 0) {
 		err = -ENOMEM;
 		goto reject_w_err;
 	}
Signature · 1 line
2.27.0
author maintainer
#29 lore raw

PATCH 29/717 x86/apic: Fix x2apic enablement without interrupt remapping

In reply to Greg Kroah-Hartman

From: David Woodhouse <[email protected]>

[ Upstream commit 26573a97746c7a99f394f9d398ce91a8853b3b89 ]

Currently, Linux as a hypervisor guest will enable x2apic only if there are no CPUs present at boot time with an APIC ID above 255.

Hotplugging a CPU later with a higher APIC ID would result in a CPU which cannot be targeted by external interrupts.

Add a filter in x2apic_apic_id_valid() which can be used to prevent such CPUs from coming online, and allow x2apic to be enabled even if they are present at boot time.

Fixes ce69a784504 ("x86/apic: Enable x2APIC without interrupt remapping under KVM")
---
 arch/x86/include/asm/apic.h        |  1 +
 arch/x86/kernel/apic/apic.c        | 14 ++++++++------
 arch/x86/kernel/apic/x2apic_phys.c |  9 +++++++++
 3 files changed, 18 insertions(+), 6 deletions(-)
arch/x86/include/asm/apic.h +1 -0
index 4e3099d9ae625..57af25cb44f63 100644
@@ -259,6 +259,7 @@ static inline u64 native_x2apic_icr_read(void)
 
 extern int x2apic_mode;
 extern int x2apic_phys;
+extern void __init x2apic_set_max_apicid(u32 apicid);
 extern void __init check_x2apic(void);
 extern void x2apic_setup(void);
 static inline int x2apic_enabled(void)
arch/x86/kernel/apic/apic.c +8 -6
index b3eef1d5c9037..113f6ca7b8284 100644
@@ -1841,20 +1841,22 @@ static __init void try_to_enable_x2apic(int remap_mode)
 		return;
 
 	if (remap_mode != IRQ_REMAP_X2APIC_MODE) {
-		/* IR is required if there is APIC ID > 255 even when running
-		 * under KVM
+		/*
+		 * Using X2APIC without IR is not architecturally supported
+		 * on bare metal but may be supported in guests.
 		 */
-		if (max_physical_apicid > 255 ||
-		    !x86_init.hyper.x2apic_available()) {
+		if (!x86_init.hyper.x2apic_available()) {
 			pr_info("x2apic: IRQ remapping doesn't support X2APIC mode\n");
 			x2apic_disable();
 			return;
 		}
 
 		/*
-		 * without IR all CPUs can be addressed by IOAPIC/MSI
-		 * only in physical mode
+		 * Without IR, all CPUs can be addressed by IOAPIC/MSI only
+		 * in physical mode, and CPUs with an APIC ID that cannnot
+		 * be addressed must not be brought online.
 		 */
+		x2apic_set_max_apicid(255);
 		x2apic_phys = 1;
 	}
 	x2apic_enable();
arch/x86/kernel/apic/x2apic_phys.c +9 -0
index bc9693841353c..e14eae6d6ea71 100644
@@ -8,6 +8,12 @@
 int x2apic_phys;
 
 static struct apic apic_x2apic_phys;
+static u32 x2apic_max_apicid __ro_after_init;
+
+void __init x2apic_set_max_apicid(u32 apicid)
+{
+	x2apic_max_apicid = apicid;
+}
 
 static int __init set_x2apic_phys_mode(char *arg)
 {
@@ -98,6 +104,9 @@ static int x2apic_phys_probe(void)
 /* Common x2apic functions, also used by x2apic_cluster */
 int x2apic_apic_id_valid(u32 apicid)
 {
+	if (x2apic_max_apicid && apicid > x2apic_max_apicid)
+		return 0;
+
 	return 1;
 }
 
Signature · 1 line
2.27.0
author maintainer
#30 lore raw

PATCH 30/717 ASoC: qcom: fix unsigned int bitwidth compared to less than zero

In reply to Greg Kroah-Hartman

From: Colin Ian King <[email protected]>

[ Upstream commit bcc96dc3cf8048c80af7c487af17e19be27ac57d ]

The check for an error return from the call to snd_pcm_format_width is never true as the unsigned int bitwidth can never be less than zero. Fix this by making bitwidth an int.

Fixes 7cb37b7bd0d3 ("ASoC: qcom: Add support for lpass hdmi driver")
---
 sound/soc/qcom/lpass-hdmi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
sound/soc/qcom/lpass-hdmi.c +1 -1
index 172952d3a5d66..abfb8737a89f4 100644
@@ -24,7 +24,7 @@ static int lpass_hdmi_daiops_hw_params(struct snd_pcm_substream *substream,
 	unsigned int rate = params_rate(params);
 	unsigned int channels = params_channels(params);
 	unsigned int ret;
-	unsigned int bitwidth;
+	int bitwidth;
 	unsigned int word_length;
 	unsigned int ch_sts_buf0;
 	unsigned int ch_sts_buf1;
Signature · 1 line
2.27.0
author maintainer
#31 lore raw

PATCH 31/717 sched/deadline: Fix sched_dl_global_validate()

In reply to Greg Kroah-Hartman

From: Peng Liu <[email protected]>

[ Upstream commit a57415f5d1e43c3a5c5d412cd85e2792d7ed9b11 ]

When change sched_rt_{runtime, period}_us, we validate that the new settings should at least accommodate the currently allocated -dl bandwidth:

sched_rt_handler()

    -->	sched_dl_bandwidth_validate()
	{
		new_bw = global_rt_runtime()/global_rt_period();

		for_each_possible_cpu(cpu) {
			dl_b = dl_bw_of(cpu);
			if (new_bw < dl_b->total_bw)    <-------
				ret = -EBUSY;
		}
	}

But under CONFIG_SMP, dl_bw is per root domain , but not per CPU, dl_b->total_bw is the allocated bandwidth of the whole root domain. Instead, we should compare dl_b->total_bw against "cpus*new_bw", where 'cpus' is the number of CPUs of the root domain.

Also, below annotation(in kernel/sched/sched.h) implied implementation only appeared in SCHED_DEADLINE v2[1], then deadline scheduler kept evolving till got merged(v9), but the annotation remains unchanged, meaningless and misleading, update it.

* With respect to SMP, the bandwidth is given on a per-CPU basis,
* meaning that:
* - dl_bw (< 100%) is the bandwidth of the system (group) on each CPU;
* - dl_total_bw array contains, in the i-eth element, the currently
* allocated bandwidth on the i-eth CPU.

[1]: https://lore.kernel.org/lkml/1267385230.13676.101.camel@Palantir/

---
 kernel/sched/deadline.c |  5 +++--
 kernel/sched/sched.h    | 42 ++++++++++++++++++-----------------------
 2 files changed, 21 insertions(+), 26 deletions(-)
kernel/sched/deadline.c +3 -2
index 1d3c97268ec0d..8d06d1f4e2f7b 100644
@@ -2547,7 +2547,7 @@ int sched_dl_global_validate(void)
 	u64 period = global_rt_period();
 	u64 new_bw = to_ratio(period, runtime);
 	struct dl_bw *dl_b;
-	int cpu, ret = 0;
+	int cpu, cpus, ret = 0;
 	unsigned long flags;
 
 	/*
@@ -2562,9 +2562,10 @@ int sched_dl_global_validate(void)
 	for_each_possible_cpu(cpu) {
 		rcu_read_lock_sched();
 		dl_b = dl_bw_of(cpu);
+		cpus = dl_bw_cpus(cpu);
 
 		raw_spin_lock_irqsave(&dl_b->lock, flags);
-		if (new_bw < dl_b->total_bw)
+		if (new_bw * cpus < dl_b->total_bw)
 			ret = -EBUSY;
 		raw_spin_unlock_irqrestore(&dl_b->lock, flags);
 
kernel/sched/sched.h +18 -24

54 lines not on this page · raw message

Signature · 1 line
2.27.0
author maintainer
#32 lore raw

PATCH 32/717 sched: Reenable interrupts in do_sched_yield()

In reply to Greg Kroah-Hartman

From: Thomas Gleixner <[email protected]>

[ Upstream commit 345a957fcc95630bf5535d7668a59ed983eb49a7 ]

do_sched_yield() invokes schedule() with interrupts disabled which is not allowed. This goes back to the pre git era to commit a6efb709806c ("[PATCH] irqlock patch 2.5.27-H6") in the history tree.

Reenable interrupts and remove the misleading comment which "explains" it.

---
 kernel/sched/core.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)
kernel/sched/core.c +1 -5
index e7e453492cffc..77aa0e788b9b7 100644
@@ -6100,12 +6100,8 @@ static void do_sched_yield(void)
 	schedstat_inc(rq->yld_count);
 	current->sched_class->yield_task(rq);
 
-	/*
-	 * Since we are going to call schedule() anyway, there's
-	 * no need to preempt or enable interrupts:
-	 */
 	preempt_disable();
-	rq_unlock(rq, &rf);
+	rq_unlock_irq(rq, &rf);
 	sched_preempt_enable_no_resched();
 
 	schedule();
Signature · 1 line
2.27.0
author maintainer
#33 lore raw

PATCH 33/717 drm/amdgpu: fix incorrect enum type

In reply to Greg Kroah-Hartman

From: Arnd Bergmann <[email protected]>

[ Upstream commit a110f3750bf8b93764f13bd1402c7cba03d15d61 ]

core_link_write_dpcd() returns enum dc_status, not ddc_result:

display/dc/core/dc_link_dp.c: In function 'dp_set_panel_mode':
display/dc/core/dc_link_dp.c:4237:11: warning: implicit conversion from 'enum dc_status' to 'enum ddc_result' [-Wenum-conversion]

Avoid the warning by using the correct enum in the caller.

Fixes 0b226322434c ("drm/amd/display: Synchronous DisplayPort Link Training")
---
 drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +2 -2
index ff1e9963ec7a2..98464886341f6 100644
@@ -4230,7 +4230,7 @@ void dp_set_panel_mode(struct dc_link *link, enum dp_panel_mode panel_mode)
 
 		if (edp_config_set.bits.PANEL_MODE_EDP
 			!= panel_mode_edp) {
-			enum ddc_result result = DDC_RESULT_UNKNOWN;
+			enum dc_status result = DC_ERROR_UNEXPECTED;
 
 			edp_config_set.bits.PANEL_MODE_EDP =
 			panel_mode_edp;
@@ -4240,7 +4240,7 @@ void dp_set_panel_mode(struct dc_link *link, enum dp_panel_mode panel_mode)
 				&edp_config_set.raw,
 				sizeof(edp_config_set.raw));
 
-			ASSERT(result == DDC_RESULT_SUCESSFULL);
+			ASSERT(result == DC_OK);
 		}
 	}
 	DC_LOG_DETECTION_DP_CAPS("Link: %d eDP panel mode supported: %d "
Signature · 1 line
2.27.0
author maintainer
#34 lore raw

PATCH 34/717 crypto: talitos - Endianess in current_desc_hdr()

In reply to Greg Kroah-Hartman

From: Christophe Leroy <[email protected]>

[ Upstream commit 195404db27f9533c71fdcb78d32a77075c2cb4a2 ]

current_desc_hdr() compares the value of the current descriptor with the next_desc member of the talitos_desc struct.

While the current descriptor is obtained from in_be32() which return CPU ordered bytes, next_desc member is in big endian order.

Convert the current descriptor into big endian before comparing it with next_desc.

This fixes a sparse warning.

Fixes 37b5e8897eb5 ("crypto: talitos - chain in buffered data for ahash on SEC1")
---
 drivers/crypto/talitos.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/crypto/talitos.c +2 -2
index 66773892f665d..1de6b01381268 100644
@@ -478,7 +478,7 @@ static u32 current_desc_hdr(struct device *dev, int ch)
 
 	iter = tail;
 	while (priv->chan[ch].fifo[iter].dma_desc != cur_desc &&
-	       priv->chan[ch].fifo[iter].desc->next_desc != cur_desc) {
+	       priv->chan[ch].fifo[iter].desc->next_desc != cpu_to_be32(cur_desc)) {
 		iter = (iter + 1) & (priv->fifo_len - 1);
 		if (iter == tail) {
 			dev_err(dev, "couldn't locate current descriptor\n");
@@ -486,7 +486,7 @@ static u32 current_desc_hdr(struct device *dev, int ch)
 		}
 	}
 
-	if (priv->chan[ch].fifo[iter].desc->next_desc == cur_desc) {
+	if (priv->chan[ch].fifo[iter].desc->next_desc == cpu_to_be32(cur_desc)) {
 		struct talitos_edesc *edesc;
 
 		edesc = container_of(priv->chan[ch].fifo[iter].desc,
Signature · 1 line
2.27.0
author maintainer
#35 lore raw

PATCH 35/717 crypto: talitos - Fix return type of current_desc_hdr()

In reply to Greg Kroah-Hartman

From: Christophe Leroy <[email protected]>

[ Upstream commit 0237616173fd363a54bd272aa3bd376faa1d7caa ]

current_desc_hdr() returns a u32 but in fact this is a __be32, leading to a lot of sparse warnings.

Change the return type to __be32 and ensure it is handled as sure by the caller.

Fixes 3e721aeb3df3 ("crypto: talitos - handle descriptor not found in error path")
---
 drivers/crypto/talitos.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/crypto/talitos.c +3 -3
index 1de6b01381268..a713a35dc5022 100644
@@ -460,7 +460,7 @@ DEF_TALITOS2_DONE(ch1_3, TALITOS2_ISR_CH_1_3_DONE)
 /*
  * locate current (offending) descriptor
  */
-static u32 current_desc_hdr(struct device *dev, int ch)
+static __be32 current_desc_hdr(struct device *dev, int ch)
 {
 	struct talitos_private *priv = dev_get_drvdata(dev);
 	int tail, iter;
@@ -501,13 +501,13 @@ static u32 current_desc_hdr(struct device *dev, int ch)
 /*
  * user diagnostics; report root cause of error based on execution unit status
  */
-static void report_eu_error(struct device *dev, int ch, u32 desc_hdr)
+static void report_eu_error(struct device *dev, int ch, __be32 desc_hdr)
 {
 	struct talitos_private *priv = dev_get_drvdata(dev);
 	int i;
 
 	if (!desc_hdr)
-		desc_hdr = in_be32(priv->chan[ch].reg + TALITOS_DESCBUF);
+		desc_hdr = cpu_to_be32(in_be32(priv->chan[ch].reg + TALITOS_DESCBUF));
 
 	switch (desc_hdr & DESC_HDR_SEL0_MASK) {
 	case DESC_HDR_SEL0_AFEU:
Signature · 1 line
2.27.0
author maintainer
#36 lore raw

PATCH 36/717 crypto: inside-secure - Fix sizeof() mismatch

In reply to Greg Kroah-Hartman

From: Colin Ian King <[email protected]>

[ Upstream commit c98e233062cd9d0e2f10e445a671f0799daaef67 ]

An incorrect sizeof() is being used, sizeof(priv->ring[i].rdr_req) is not correct, it should be sizeof(*priv->ring[i].rdr_req). Note that since the size of ** is the same size as * this is not causing any issues.

Addresses-Coverity: ("Sizeof not portable (SIZEOF_MISMATCH)")

Fixes 9744fec95f06 ("crypto: inside-secure - remove request list to improve performance")
---
 drivers/crypto/inside-secure/safexcel.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/crypto/inside-secure/safexcel.c +1 -1
index eb2418450f120..2e1562108a858 100644
@@ -1639,7 +1639,7 @@ static int safexcel_probe_generic(void *pdev,
 
 		priv->ring[i].rdr_req = devm_kcalloc(dev,
 			EIP197_DEFAULT_RING_SIZE,
-			sizeof(priv->ring[i].rdr_req),
+			sizeof(*priv->ring[i].rdr_req),
 			GFP_KERNEL);
 		if (!priv->ring[i].rdr_req)
 			return -ENOMEM;
Signature · 1 line
2.27.0
author maintainer
#37 lore raw

PATCH 37/717 ASoC: sun4i-i2s: Fix lrck_period computation for I2S justified mode

In reply to Greg Kroah-Hartman

From: Clément Péron <[email protected]>

[ Upstream commit 93c0210671d8f3ec2262da703fab93a1497158a8 ]

Left and Right justified mode are computed using the same formula as DSP_A and DSP_B mode.
Which is wrong and the user manual explicitly says:

LRCK_PERDIOD:
PCM Mode: Number of BCLKs within (Left + Right) channel width. I2S/Left-Justified/Right-Justified Mode: Number of BCLKs within each individual channel width(Left or Right)

Fix this by using the same formula as the I2S mode.

Fixes 7ae7834ec446 ("ASoC: sun4i-i2s: Add support for DSP formats")
---
 sound/soc/sunxi/sun4i-i2s.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
sound/soc/sunxi/sun4i-i2s.c +2 -2
index f23ff29e7c1d3..a994b5cf87b31 100644
@@ -450,11 +450,11 @@ static int sun8i_i2s_set_chan_cfg(const struct sun4i_i2s *i2s,
 	switch (i2s->format & SND_SOC_DAIFMT_FORMAT_MASK) {
 	case SND_SOC_DAIFMT_DSP_A:
 	case SND_SOC_DAIFMT_DSP_B:
-	case SND_SOC_DAIFMT_LEFT_J:
-	case SND_SOC_DAIFMT_RIGHT_J:
 		lrck_period = params_physical_width(params) * slots;
 		break;
 
+	case SND_SOC_DAIFMT_LEFT_J:
+	case SND_SOC_DAIFMT_RIGHT_J:
 	case SND_SOC_DAIFMT_I2S:
 		lrck_period = params_physical_width(params);
 		break;
Signature · 1 line
2.27.0
author maintainer
#38 lore raw

PATCH 38/717 drm/msm: Add missing stub definition

In reply to Greg Kroah-Hartman

From: Robin Murphy <[email protected]>

[ Upstream commit a0b21e0ad29420b04911a98d360b9586168eeae5 ]

DRM_MSM fails to build with DRM_MSM_DP=n; add the missing stub.

Fixes 8ede2ecc3e5e ("drm/msm/dp: Add DP compliance tests on
---
 drivers/gpu/drm/msm/msm_drv.h | 5 +++++
 1 file changed, 5 insertions(+)
drivers/gpu/drm/msm/msm_drv.h +5 -0
index b9dd8f8f48872..0b2686b060c73 100644
@@ -423,6 +423,11 @@ static inline int msm_dp_display_disable(struct msm_dp *dp,
 {
 	return -EINVAL;
 }
+static inline int msm_dp_display_pre_disable(struct msm_dp *dp,
+					struct drm_encoder *encoder)
+{
+	return -EINVAL;
+}
 static inline void msm_dp_display_mode_set(struct msm_dp *dp,
 				struct drm_encoder *encoder,
 				struct drm_display_mode *mode,
Signature · 1 line
2.27.0
author maintainer
#39 lore raw

PATCH 39/717 ARM: dts: aspeed: tiogapass: Remove vuart

In reply to Greg Kroah-Hartman

From: Vijay Khemka <[email protected]>

[ Upstream commit 14f100c00f1e35e5890340d4c6a64bda5dff4320 ]

Removed vuart for facebook tiogapass platform as it uses uart2 and uart3 pin with aspeed uart routing feature.

Fixes ffdbf494821d ("ARM: dts: aspeed: tiogapass: Enable VUART")
---
 arch/arm/boot/dts/aspeed-bmc-facebook-tiogapass.dts | 5 -----
 1 file changed, 5 deletions(-)
arch/arm/boot/dts/aspeed-bmc-facebook-tiogapass.dts +0 -5
index 2d44d9ad4e400..e6ad821a86359 100644
@@ -82,11 +82,6 @@
 	status = "okay";
 };
 
-&vuart {
-	// VUART Host Console
-	status = "okay";
-};
-
 &uart1 {
 	// Host Console
 	status = "okay";
Signature · 1 line
2.27.0
author maintainer
#40 lore raw

PATCH 40/717 drm/amdgpu: fix build_coefficients() argument

In reply to Greg Kroah-Hartman

From: Arnd Bergmann <[email protected]>

[ Upstream commit dbb60031dd0c2b85f10ce4c12ae604c28d3aaca4 ]

gcc -Wextra warns about a function taking an enum argument being called with a bool:

drivers/gpu/drm/amd/amdgpu/../display/modules/color/color_gamma.c: In function 'apply_degamma_for_user_regamma':
drivers/gpu/drm/amd/amdgpu/../display/modules/color/color_gamma.c:1617:29: warning: implicit conversion from 'enum <anonymous>' to 'enum dc_transfer_func_predefined' [-Wenum-conversion]
1617 | build_coefficients(&coeff, true);

It appears that a patch was added using the old calling conventions after the type was changed, and the value should actually be 0 (TRANSFER_FUNCTION_SRGB) here instead of 1 (true).

Fixes 55a01d4023ce ("drm/amd/display: Add user_regamma to color module")
---
 drivers/gpu/drm/amd/display/modules/color/color_gamma.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/amd/display/modules/color/color_gamma.c +1 -1
index b8695660b480e..09bc2c249e1af 100644
@@ -1614,7 +1614,7 @@ static void apply_degamma_for_user_regamma(struct pwl_float_data_ex *rgb_regamma
 	struct pwl_float_data_ex *rgb = rgb_regamma;
 	const struct hw_x_point *coord_x = coordinates_x;
 
-	build_coefficients(&coeff, true);
+	build_coefficients(&coeff, TRANSFER_FUNCTION_SRGB);
 
 	i = 0;
 	while (i != hw_points_num + 1) {
Signature · 1 line
2.27.0
author maintainer
#41 lore raw

PATCH 41/717 powerpc/64: Set up a kernel stack for secondaries before cpu_restore()

In reply to Greg Kroah-Hartman

From: Jordan Niethe <[email protected]>

[ Upstream commit 3c0b976bf20d236c57adcefa80f86a0a1d737727 ]

Currently in generic_secondary_smp_init(), cur_cpu_spec->cpu_restore() is called before a stack has been set up in r1. This was previously fine as the cpu_restore() functions were implemented in assembly and did not use a stack. However commit 5a61ef74f269 ("powerpc/64s: Support new device tree binding for discovering CPU features") used __restore_cpu_cpufeatures() as the cpu_restore() function for a device-tree features based cputable entry. This is a C function and hence uses a stack in r1.

generic_secondary_smp_init() is entered on the secondary cpus via the primary cpu using the OPAL call opal_start_cpu(). In OPAL, each hardware thread has its own stack. The OPAL call is ran in the primary's hardware thread. During the call, a job is scheduled on a secondary cpu that will start executing at the address of generic_secondary_smp_init(). Hence the value that will be left in r1 when the secondary cpu enters the kernel is part of that secondary cpu's individual OPAL stack. This means that __restore_cpu_cpufeatures() will write to that OPAL stack. This is not horribly bad as each hardware thread has its own stack and the call that enters the kernel from OPAL never returns, but it is still wrong and should be corrected.

Create the temp kernel stack before calling cpu_restore().

As noted by mpe, for a kexec boot, the secondary CPUs are released from the spin loop at address 0x60 by smp_release_cpus() and then jump to generic_secondary_smp_init(). The call to smp_release_cpus() is in setup_arch(), and it comes before the call to emergency_stack_init(). emergency_stack_init() allocates an emergency stack in the PACA for each CPU. This address in the PACA is what is used to set up the temp kernel stack in generic_secondary_smp_init(). Move releasing the secondary CPUs to after the PACAs have been allocated an emergency stack, otherwise the PACA stack pointer will contain garbage and hence the temp kernel stack created from it will be broken.

Fixes 5a61ef74f269 ("powerpc/64s: Support new device tree binding for discovering CPU features")
---
 arch/powerpc/kernel/head_64.S      | 8 ++++----
 arch/powerpc/kernel/setup-common.c | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)
arch/powerpc/kernel/head_64.S +4 -4
index 1510b2a56669f..7b7c8c5ee6602 100644
@@ -417,6 +417,10 @@ generic_secondary_common_init:
 	/* From now on, r24 is expected to be logical cpuid */
 	mr	r24,r5
 
+	/* Create a temp kernel stack for use before relocation is on.	*/
+	ld	r1,PACAEMERGSP(r13)
+	subi	r1,r1,STACK_FRAME_OVERHEAD
+
 	/* See if we need to call a cpu state restore handler */
 	LOAD_REG_ADDR(r23, cur_cpu_spec)
 	ld	r23,0(r23)
@@ -445,10 +449,6 @@ generic_secondary_common_init:
 	sync				/* order paca.run and cur_cpu_spec */
 	isync				/* In case code patching happened */
 
-	/* Create a temp kernel stack for use before relocation is on.	*/
-	ld	r1,PACAEMERGSP(r13)
-	subi	r1,r1,STACK_FRAME_OVERHEAD
-
 	b	__secondary_start
 #endif /* SMP */
 
arch/powerpc/kernel/setup-common.c +2 -2
index 808ec9fab6052..da8c71f321ad3 100644
@@ -919,8 +919,6 @@ void __init setup_arch(char **cmdline_p)
 
 	/* On BookE, setup per-core TLB data structures. */
 	setup_tlb_core_data();
-
-	smp_release_cpus();
 #endif
 
 	/* Print various info about the machine that has been gathered so far. */
@@ -944,6 +942,8 @@ void __init setup_arch(char **cmdline_p)
 	exc_lvl_early_init();
 	emergency_stack_init();
 
+	smp_release_cpus();
+
 	initmem_init();
 
 	early_memtest(min_low_pfn << PAGE_SHIFT, max_low_pfn << PAGE_SHIFT);
Signature · 1 line
2.27.0
author maintainer
#42 lore raw

PATCH 42/717 spi: img-spfi: fix reference leak in img_spfi_resume

In reply to Greg Kroah-Hartman

From: Zhang Qilong <[email protected]>

[ Upstream commit ee5558a9084584015c8754ffd029ce14a5827fa8 ]

pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in img_spfi_resume, so we should fix it.

Fixes deba25800a12b ("spi: Add driver for IMG SPFI controller")
---
 drivers/spi/spi-img-spfi.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/spi/spi-img-spfi.c +3 -1
index b068537375d60..5f05d519fbbd0 100644
@@ -731,8 +731,10 @@ static int img_spfi_resume(struct device *dev)
 	int ret;
 
 	ret = pm_runtime_get_sync(dev);
-	if (ret)
+	if (ret) {
+		pm_runtime_put_noidle(dev);
 		return ret;
+	}
 	spfi_reset(spfi);
 	pm_runtime_put(dev);
 
Signature · 1 line
2.27.0
author maintainer
#43 lore raw

PATCH 43/717 f2fs: call f2fs_get_meta_page_retry for nat page

In reply to Greg Kroah-Hartman

From: Jaegeuk Kim <[email protected]>

[ Upstream commit 3acc4522d89e0a326db69e9d0afaad8cf763a54c ]

When running fault injection test, if we don't stop checkpoint, some stale NAT entries were flushed which breaks consistency.

Fixes 86f33603f8c5 ("f2fs: handle errors of f2fs_get_meta_page_nofail")
---
 fs/f2fs/node.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
fs/f2fs/node.c +1 -1
index d5d8ce077f295..42394de6c7eb1 100644
@@ -109,7 +109,7 @@ static void clear_node_page_dirty(struct page *page)
 
 static struct page *get_current_nat_page(struct f2fs_sb_info *sbi, nid_t nid)
 {
-	return f2fs_get_meta_page(sbi, current_nat_addr(sbi, nid));
+	return f2fs_get_meta_page_retry(sbi, current_nat_addr(sbi, nid));
 }
 
 static struct page *get_next_nat_page(struct f2fs_sb_info *sbi, nid_t nid)
Signature · 1 line
2.27.0
author maintainer
#44 lore raw

PATCH 44/717 RDMA/mlx5: Fix corruption of reg_pages in mlx5_ib_rereg_user_mr()

In reply to Greg Kroah-Hartman

From: Jason Gunthorpe <[email protected]>

[ Upstream commit fc3325701a6353594083f08e297d4c1965c601aa ]

reg_pages should always contain mr->npage since when the mr is finally de-reg'd it is always subtracted out.

If there were any error exits then mlx5_ib_rereg_user_mr() would leave the reg_pages adjusted and this will cause it to be double subtracted eventually.

The manipulation of reg_pages is inherently connected to the umem, so lift it out of set_mr_fields() and only adjust it around creating/destroying a umem.

reg_pages is only used for diagnostics in sysfs.

Fixes 7d0cc6edcc70 ("IB/mlx5: Add MR cache for large UMR regions")
---
 drivers/infiniband/hw/mlx5/mr.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)
drivers/infiniband/hw/mlx5/mr.c +11 -9
index b261797b258fd..3468ae804eaee 100644
@@ -1247,10 +1247,8 @@ err_1:
 }
 
 static void set_mr_fields(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr,
-			  int npages, u64 length, int access_flags)
+			  u64 length, int access_flags)
 {
-	mr->npages = npages;
-	atomic_add(npages, &dev->mdev->priv.reg_pages);
 	mr->ibmr.lkey = mr->mmkey.key;
 	mr->ibmr.rkey = mr->mmkey.key;
 	mr->ibmr.length = length;
@@ -1290,8 +1288,7 @@ static struct ib_mr *mlx5_ib_get_dm_mr(struct ib_pd *pd, u64 start_addr,
 
 	kfree(in);
 
-	mr->umem = NULL;
-	set_mr_fields(dev, mr, 0, length, acc);
+	set_mr_fields(dev, mr, length, acc);
 
 	return &mr->ibmr;
 
@@ -1419,7 +1416,9 @@ struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
 	mlx5_ib_dbg(dev, "mkey 0x%x\n", mr->mmkey.key);
 
 	mr->umem = umem;
-	set_mr_fields(dev, mr, npages, length, access_flags);
+	mr->npages = npages;
+	atomic_add(mr->npages, &dev->mdev->priv.reg_pages);
+	set_mr_fields(dev, mr, length, access_flags);
 
 	if (xlt_with_umr && !(access_flags & IB_ACCESS_ON_DEMAND)) {
 		/*
@@ -1531,8 +1530,6 @@ int mlx5_ib_rereg_user_mr(struct ib_mr *ib_mr, int flags, u64 start,
 	mlx5_ib_dbg(dev, "start 0x%llx, virt_addr 0x%llx, length 0x%llx, access_flags 0x%x\n",
 		    start, virt_addr, length, access_flags);
 
-	atomic_sub(mr->npages, &dev->mdev->priv.reg_pages);
-
 	if (!mr->umem)
 		return -EINVAL;
 
@@ -1553,12 +1550,17 @@ int mlx5_ib_rereg_user_mr(struct ib_mr *ib_mr, int flags, u64 start,
 		 * used.
 		 */
 		flags |= IB_MR_REREG_TRANS;
+		atomic_sub(mr->npages, &dev->mdev->priv.reg_pages);
+		mr->npages = 0;
 		ib_umem_release(mr->umem);
 		mr->umem = NULL;
+
 		err = mr_umem_get(dev, addr, len, access_flags, &mr->umem,
 				  &npages, &page_shift, &ncont, &order);
 		if (err)
 			goto err;
+		mr->npages = ncont;
+		atomic_add(mr->npages, &dev->mdev->priv.reg_pages);
 	}
 
 	if (!mlx5_ib_can_reconfig_with_umr(dev, mr->access_flags,
@@ -1609,7 +1611,7 @@ int mlx5_ib_rereg_user_mr(struct ib_mr *ib_mr, int flags, u64 start,
 			goto err;
 	}
 
-	set_mr_fields(dev, mr, npages, len, access_flags);
+	set_mr_fields(dev, mr, len, access_flags);
 
 	return 0;
 
Signature · 1 line
2.27.0
author maintainer
#45 lore raw

PATCH 45/717 perf test: Use generic event for expand_libpfm_events()

In reply to Greg Kroah-Hartman

From: Namhyung Kim <[email protected]>

[ Upstream commit 9b0a7836359443227c9af101f7aea8412e739458 ]

I found that the UNHALTED_CORE_CYCLES event is only available in the Intel machines and it makes other vendors/archs fail on the test. As libpfm4 can parse the generic events like cycles, let's use them.

Fixes 40b74c30ffb9 ("perf test: Add expand cgroup event test")
Cc Alexander Shishkin <[email protected]>
Cc Andi Kleen <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Mark Rutland <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Stephane Eranian <[email protected]>
---
 tools/perf/tests/expand-cgroup.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
tools/perf/tests/expand-cgroup.c +1 -1
index d5771e4d094f8..4c59f3ae438fc 100644
@@ -145,7 +145,7 @@ static int expand_libpfm_events(void)
 	int ret;
 	struct evlist *evlist;
 	struct rblist metric_events;
-	const char event_str[] = "UNHALTED_CORE_CYCLES";
+	const char event_str[] = "CYCLES";
 	struct option opt = {
 		.value = &evlist,
 	};
Signature · 1 line
2.27.0
author maintainer
#46 lore raw

PATCH 46/717 drm/msm/dp: DisplayPort PHY compliance tests fixup

In reply to Greg Kroah-Hartman

From: Tanmay Shah <[email protected]>

[ Upstream commit 6625e2637d93d2f52ef0d17656f21bfa2cb4983a ]

Bandwidth code was being used as test link rate. Fix this by converting bandwidth code to test link rate

Do not reset voltage and pre-emphasis level during IRQ HPD attention interrupt. Also fix pre-emphasis parsing during test link status process

Fixes 8ede2ecc3e5e ("drm/msm/dp: Add DP compliance tests on Snapdragon Chipsets")
---
 drivers/gpu/drm/msm/dp/dp_ctrl.c    |  3 ---
 drivers/gpu/drm/msm/dp/dp_display.c |  1 +
 drivers/gpu/drm/msm/dp/dp_link.c    | 12 +++++++++++-
 drivers/gpu/drm/msm/dp/dp_link.h    |  1 +
 4 files changed, 13 insertions(+), 4 deletions(-)
drivers/gpu/drm/msm/dp/dp_ctrl.c +0 -3
index 2e3e1917351f0..872b12689e317 100644
@@ -1643,9 +1643,6 @@ int dp_ctrl_on_link(struct dp_ctrl *dp_ctrl)
 	if (rc)
 		return rc;
 
-	ctrl->link->phy_params.p_level = 0;
-	ctrl->link->phy_params.v_level = 0;
-
 	while (--link_train_max_retries &&
 		!atomic_read(&ctrl->dp_ctrl.aborted)) {
 		rc = dp_ctrl_reinitialize_mainlink(ctrl);
drivers/gpu/drm/msm/dp/dp_display.c +1 -0
index e175aa3fd3a93..ae9989ece73f4 100644
@@ -335,6 +335,7 @@ static int dp_display_process_hpd_high(struct dp_display_private *dp)
 	dp->dp_display.max_pclk_khz = DP_MAX_PIXEL_CLK_KHZ;
 	dp->dp_display.max_dp_lanes = dp->parser->max_dp_lanes;
 
+	dp_link_reset_phy_params_vx_px(dp->link);
 	rc = dp_ctrl_on_link(dp->ctrl);
 	if (rc) {
 		DRM_ERROR("failed to complete DP link training\n");
drivers/gpu/drm/msm/dp/dp_link.c +11 -1
index c811da515fb3b..49d7fad36fc4e 100644
@@ -869,6 +869,9 @@ static int dp_link_parse_vx_px(struct dp_link_private *link)
 		drm_dp_get_adjust_request_voltage(link->link_status, 0);
 	link->dp_link.phy_params.p_level =
 		drm_dp_get_adjust_request_pre_emphasis(link->link_status, 0);
+
+	link->dp_link.phy_params.p_level >>= DP_TRAIN_PRE_EMPHASIS_SHIFT;
+
 	DRM_DEBUG_DP("Requested: v_level = 0x%x, p_level = 0x%x\n",
 			link->dp_link.phy_params.v_level,
 			link->dp_link.phy_params.p_level);
@@ -911,7 +914,8 @@ static int dp_link_process_phy_test_pattern_request(
 			link->request.test_lane_count);
 
 	link->dp_link.link_params.num_lanes = link->request.test_lane_count;
-	link->dp_link.link_params.rate = link->request.test_link_rate;
+	link->dp_link.link_params.rate =
+		drm_dp_bw_code_to_link_rate(link->request.test_link_rate);
 
 	ret = dp_link_parse_vx_px(link);
 
@@ -1156,6 +1160,12 @@ int dp_link_adjust_levels(struct dp_link *dp_link, u8 *link_status)
 	return 0;
 }
 
+void dp_link_reset_phy_params_vx_px(struct dp_link *dp_link)
+{
+	dp_link->phy_params.v_level = 0;
+	dp_link->phy_params.p_level = 0;
+}
+
 u32 dp_link_get_test_bits_depth(struct dp_link *dp_link, u32 bpp)
 {
 	u32 tbd;
drivers/gpu/drm/msm/dp/dp_link.h +1 -0
index 49811b6221e53..9dd4dd9265304 100644
@@ -135,6 +135,7 @@ static inline u32 dp_link_bit_depth_to_bpc(u32 tbd)
 	}
 }
 
+void dp_link_reset_phy_params_vx_px(struct dp_link *dp_link);
 u32 dp_link_get_test_bits_depth(struct dp_link *dp_link, u32 bpp);
 int dp_link_process_request(struct dp_link *dp_link);
 int dp_link_get_colorimetry_config(struct dp_link *dp_link);
Signature · 1 line
2.27.0
author maintainer
#47 lore raw

PATCH 47/717 drm/msm/dsi_pll_7nm: restore VCO rate during restore_state

In reply to Greg Kroah-Hartman

From: Dmitry Baryshkov <[email protected]>

[ Upstream commit 5047ab95bb7db0e7b2ecfd5e9bcafc7fd822c652 ]

PHY disable/enable resets PLL registers to default values. Thus in addition to restoring several registers we also need to restore VCO rate settings.

Fixes 1ef7c99d145c ("drm/msm/dsi: add support for 7nm DSI PHY/PLL")
---
 drivers/gpu/drm/msm/dsi/pll/dsi_pll_7nm.c | 8 ++++++++
 1 file changed, 8 insertions(+)
drivers/gpu/drm/msm/dsi/pll/dsi_pll_7nm.c +8 -0
index de0dfb8151258..93bf142e4a4e6 100644
@@ -585,6 +585,7 @@ static int dsi_pll_7nm_restore_state(struct msm_dsi_pll *pll)
 	struct pll_7nm_cached_state *cached = &pll_7nm->cached_state;
 	void __iomem *phy_base = pll_7nm->phy_cmn_mmio;
 	u32 val;
+	int ret;
 
 	val = pll_read(pll_7nm->mmio + REG_DSI_7nm_PHY_PLL_PLL_OUTDIV_RATE);
 	val &= ~0x3;
@@ -599,6 +600,13 @@ static int dsi_pll_7nm_restore_state(struct msm_dsi_pll *pll)
 	val |= cached->pll_mux;
 	pll_write(phy_base + REG_DSI_7nm_PHY_CMN_CLK_CFG1, val);
 
+	ret = dsi_pll_7nm_vco_set_rate(&pll->clk_hw, pll_7nm->vco_current_rate, pll_7nm->vco_ref_clk_rate);
+	if (ret) {
+		DRM_DEV_ERROR(&pll_7nm->pdev->dev,
+			"restore vco rate failed. ret=%d\n", ret);
+		return ret;
+	}
+
 	DBG("DSI PLL%d", pll_7nm->id);
 
 	return 0;
Signature · 1 line
2.27.0
author maintainer
#48 lore raw

PATCH 48/717 drm/msm/dsi_pll_10nm: restore VCO rate during restore_state

In reply to Greg Kroah-Hartman

From: Dmitry Baryshkov <[email protected]>

[ Upstream commit a4ccc37693a271330a46208afbeaed939d54fdbb ]

PHY disable/enable resets PLL registers to default values. Thus in addition to restoring several registers we also need to restore VCO rate settings.

Fixes c6659785dfb3 ("drm/msm/dsi/pll: call vco set rate explicitly")
---
 drivers/gpu/drm/msm/dsi/pll/dsi_pll_10nm.c | 8 ++++++++
 1 file changed, 8 insertions(+)
drivers/gpu/drm/msm/dsi/pll/dsi_pll_10nm.c +8 -0
index 6ac04fc303f56..e4e9bf04b7368 100644
@@ -559,6 +559,7 @@ static int dsi_pll_10nm_restore_state(struct msm_dsi_pll *pll)
 	struct pll_10nm_cached_state *cached = &pll_10nm->cached_state;
 	void __iomem *phy_base = pll_10nm->phy_cmn_mmio;
 	u32 val;
+	int ret;
 
 	val = pll_read(pll_10nm->mmio + REG_DSI_10nm_PHY_PLL_PLL_OUTDIV_RATE);
 	val &= ~0x3;
@@ -573,6 +574,13 @@ static int dsi_pll_10nm_restore_state(struct msm_dsi_pll *pll)
 	val |= cached->pll_mux;
 	pll_write(phy_base + REG_DSI_10nm_PHY_CMN_CLK_CFG1, val);
 
+	ret = dsi_pll_10nm_vco_set_rate(&pll->clk_hw, pll_10nm->vco_current_rate, pll_10nm->vco_ref_clk_rate);
+	if (ret) {
+		DRM_DEV_ERROR(&pll_10nm->pdev->dev,
+			"restore vco rate failed. ret=%d\n", ret);
+		return ret;
+	}
+
 	DBG("DSI PLL%d", pll_10nm->id);
 
 	return 0;
Signature · 1 line
2.27.0
author maintainer
#49 lore raw

PATCH 49/717 drm/msm/dpu: fix clock scaling on non-sc7180 board

In reply to Greg Kroah-Hartman

From: Dmitry Baryshkov <[email protected]>

[ Upstream commit cccdeda362fafd0613b571affe7199eb7d8f3fba ]

c33b7c0389e1 ("drm/msm/dpu: add support for clk and bw scaling for display") has added support for handling bandwidth voting in kms path in addition to old mdss path. However this broke all other platforms since _dpu_core_perf_crtc_update_bus() will now error out instead of properly calculating bandwidth and core clocks. Fix _dpu_core_perf_crtc_update_bus() to just skip bandwidth setting instead of returning an error in case kms->num_paths == 0 (MDSS is used for bandwidth management).

Fixes c33b7c0389e1 ("drm/msm/dpu: add support for clk and bw scaling for display")
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c +3 -3
index 393858ef8a832..37c8270681c23 100644
@@ -219,9 +219,6 @@ static int _dpu_core_perf_crtc_update_bus(struct dpu_kms *kms,
 	int i, ret = 0;
 	u64 avg_bw;
 
-	if (!kms->num_paths)
-		return -EINVAL;
-
 	drm_for_each_crtc(tmp_crtc, crtc->dev) {
 		if (tmp_crtc->enabled &&
 			curr_client_type ==
@@ -239,6 +236,9 @@ static int _dpu_core_perf_crtc_update_bus(struct dpu_kms *kms,
 		}
 	}
 
+	if (!kms->num_paths)
+		return 0;
+
 	avg_bw = perf.bw_ctl;
 	do_div(avg_bw, (kms->num_paths * 1000)); /*Bps_to_icc*/
 
Signature · 1 line
2.27.0
author maintainer
#50 lore raw

PATCH 50/717 spi: spi-mem: fix reference leak in spi_mem_access_start

In reply to Greg Kroah-Hartman

From: Zhang Qilong <[email protected]>

[ Upstream commit c02bb16b0e826bf0e19aa42c3ae60ea339f32cf5 ]

pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in spi_mem_access_start, so we should fix it.

Fixes f86c24f479530 ("spi: spi-mem: Split spi_mem_exec_op() code")
---
 drivers/spi/spi-mem.c | 1 +
 1 file changed, 1 insertion(+)
drivers/spi/spi-mem.c +1 -0
index ef53290b7d24d..4682f49dc7330 100644
@@ -243,6 +243,7 @@ static int spi_mem_access_start(struct spi_mem *mem)
 
 		ret = pm_runtime_get_sync(ctlr->dev.parent);
 		if (ret < 0) {
+			pm_runtime_put_noidle(ctlr->dev.parent);
 			dev_err(&ctlr->dev, "Failed to power device: %d\n",
 				ret);
 			return ret;
Signature · 1 line
2.27.0
author maintainer
#51 lore raw

PATCH 51/717 scsi: aacraid: Improve compat_ioctl handlers

In reply to Greg Kroah-Hartman

From: Arnd Bergmann <[email protected]>

[ Upstream commit 077054215a7f787e389a807ece8a39247abbbc1e ]

The use of compat_alloc_user_space() can be easily replaced by handling compat arguments in the regular handler, and this will make it work for big-endian kernels as well, which at the moment get an invalid indirect pointer argument.

Calling aac_ioctl() instead of aac_compat_do_ioctl() means the compat and native code paths behave the same way again, which they stopped when the adapter health check was added only in the native function.

---
 drivers/scsi/aacraid/commctrl.c | 22 ++++++++++--
 drivers/scsi/aacraid/linit.c    | 61 ++-------------------------------
 2 files changed, 22 insertions(+), 61 deletions(-)
drivers/scsi/aacraid/commctrl.c +20 -2
index e3e157a749880..1b1da162f5f6b 100644
@@ -25,6 +25,7 @@
 #include <linux/completion.h>
 #include <linux/dma-mapping.h>
 #include <linux/blkdev.h>
+#include <linux/compat.h>
 #include <linux/delay.h> /* ssleep prototype */
 #include <linux/kthread.h>
 #include <linux/uaccess.h>
@@ -226,6 +227,12 @@ static int open_getadapter_fib(struct aac_dev * dev, void __user *arg)
 	return status;
 }
 
+struct compat_fib_ioctl {
+	u32	fibctx;
+	s32	wait;
+	compat_uptr_t fib;
+};
+
 /**
  *	next_getadapter_fib	-	get the next fib
  *	@dev: adapter to use
@@ -243,8 +250,19 @@ static int next_getadapter_fib(struct aac_dev * dev, void __user *arg)
 	struct list_head * entry;
 	unsigned long flags;
 
-	if(copy_from_user((void *)&f, arg, sizeof(struct fib_ioctl)))
-		return -EFAULT;
+	if (in_compat_syscall()) {
+		struct compat_fib_ioctl cf;
+
+		if (copy_from_user(&cf, arg, sizeof(struct compat_fib_ioctl)))
+			return -EFAULT;
+
+		f.fibctx = cf.fibctx;
+		f.wait = cf.wait;
+		f.fib = compat_ptr(cf.fib);
+	} else {
+		if (copy_from_user(&f, arg, sizeof(struct fib_ioctl)))
+			return -EFAULT;
+	}
 	/*
 	 *	Verify that the HANDLE passed in was a valid AdapterFibContext
 	 *
drivers/scsi/aacraid/linit.c +2 -59

79 lines not on this page · raw message

Signature · 1 line
2.27.0
author maintainer
#52 lore raw

PATCH 52/717 pinctrl: core: Add missing #ifdef CONFIG_GPIOLIB

In reply to Greg Kroah-Hartman

From: He Zhe <[email protected]>

[ Upstream commit b507cb92477ad85902783a183c5ce01d16296687 ]

To fix the following build warnings when CONFIG_GPIOLIB=n.

drivers/pinctrl/core.c:1607:20: warning: unused variable 'chip' [-Wunused-variable]
1608 | struct gpio_chip *chip;
| ^~~~
drivers/pinctrl/core.c:1606:15: warning: unused variable 'gpio_num' [-Wunused-variable]

 1607 |  unsigned int gpio_num;
      |               ^~~~~~~~

drivers/pinctrl/core.c:1605:29: warning: unused variable 'range' [-Wunused-variable]
1606 | struct pinctrl_gpio_range *range;
| ^~~~~

Fixes f1b206cf7c57 ("pinctrl: core: print gpio in pins debugfs file")
---
 drivers/pinctrl/core.c | 2 ++
 1 file changed, 2 insertions(+)
drivers/pinctrl/core.c +2 -0
index 3663d87f51a01..9fc4433fece4f 100644
@@ -1602,9 +1602,11 @@ static int pinctrl_pins_show(struct seq_file *s, void *what)
 	struct pinctrl_dev *pctldev = s->private;
 	const struct pinctrl_ops *ops = pctldev->desc->pctlops;
 	unsigned i, pin;
+#ifdef CONFIG_GPIOLIB
 	struct pinctrl_gpio_range *range;
 	unsigned int gpio_num;
 	struct gpio_chip *chip;
+#endif
 
 	seq_printf(s, "registered pins: %d\n", pctldev->desc->npins);
 
Signature · 1 line
2.27.0
author maintainer
#53 lore raw

PATCH 53/717 ASoC: pcm: DRAIN support reactivation

In reply to Greg Kroah-Hartman

From: Cezary Rojewski <[email protected]>

[ Upstream commit 4c22b80f61540ea99d9b4af0127315338755f05b ]

soc-pcm's dpcm_fe_dai_do_trigger() supported DRAIN commnad up to kernel v5.4 where explicit switch(cmd) has been introduced which takes into account all SNDRV_PCM_TRIGGER_xxx but SNDRV_PCM_TRIGGER_DRAIN. Update switch statement to reactive support for it.

As DRAIN is somewhat unique by lacking negative/stop counterpart, bring behaviour of dpcm_fe_dai_do_trigger() for said command back to its pre-v5.4 state by adding it to START/RESUME/PAUSE_RELEASE group.

Fixes acbf27746ecf ("ASoC: pcm: update FE/BE trigger order based on the command")
---
 sound/soc/soc-pcm.c | 2 ++
 1 file changed, 2 insertions(+)
sound/soc/soc-pcm.c +2 -0
index dcab9527ba3d7..91bf339581590 100644
@@ -2231,6 +2231,7 @@ static int dpcm_fe_dai_do_trigger(struct snd_pcm_substream *substream, int cmd)
 		case SNDRV_PCM_TRIGGER_START:
 		case SNDRV_PCM_TRIGGER_RESUME:
 		case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
+		case SNDRV_PCM_TRIGGER_DRAIN:
 			ret = dpcm_dai_trigger_fe_be(substream, cmd, true);
 			break;
 		case SNDRV_PCM_TRIGGER_STOP:
@@ -2248,6 +2249,7 @@ static int dpcm_fe_dai_do_trigger(struct snd_pcm_substream *substream, int cmd)
 		case SNDRV_PCM_TRIGGER_START:
 		case SNDRV_PCM_TRIGGER_RESUME:
 		case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
+		case SNDRV_PCM_TRIGGER_DRAIN:
 			ret = dpcm_dai_trigger_fe_be(substream, cmd, false);
 			break;
 		case SNDRV_PCM_TRIGGER_STOP:
Signature · 1 line
2.27.0
author maintainer
#54 lore raw

PATCH 54/717 drm/bridge: tpd12s015: Fix irq registering in tpd12s015_probe

In reply to Greg Kroah-Hartman

From: YueHaibing <[email protected]>

[ Upstream commit c2530cc9610d84a5a0118ba40d0f09309605047f ]

gpiod_to_irq() return negative value in case of error, the existing code doesn't handle negative error codes. If the HPD gpio supports IRQs (gpiod_to_irq returns a valid number), we use the IRQ. If it doesn't (gpiod_to_irq returns an error), it gets polled via detect().

Fixes cff5e6f7e83f ("drm/bridge: Add driver for the TI TPD12S015 HDMI level shifter")
---
 drivers/gpu/drm/bridge/ti-tpd12s015.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/bridge/ti-tpd12s015.c +1 -1
index 514cbf0eac75a..e0e015243a602 100644
@@ -160,7 +160,7 @@ static int tpd12s015_probe(struct platform_device *pdev)
 
 	/* Register the IRQ if the HPD GPIO is IRQ-capable. */
 	tpd->hpd_irq = gpiod_to_irq(tpd->hpd_gpio);
-	if (tpd->hpd_irq) {
+	if (tpd->hpd_irq >= 0) {
 		ret = devm_request_threaded_irq(&pdev->dev, tpd->hpd_irq, NULL,
 						tpd12s015_hpd_isr,
 						IRQF_TRIGGER_RISING |
Signature · 1 line
2.27.0
author maintainer
#55 lore raw

PATCH 55/717 libbpf: Fix BTF data layout checks and allow empty BTF

In reply to Greg Kroah-Hartman

From: Andrii Nakryiko <[email protected]>

[ Upstream commit d8123624506cd62730c9cd9c7672c698e462703d ]

Make data section layout checks stricter, disallowing overlap of types and strings data.

Additionally, allow BTFs with no type data. There is nothing inherently wrong with having BTF with no types (put potentially with some strings). This could be a situation with kernel module BTFs, if module doesn't introduce any new type information.

Also fix invalid offset alignment check for btf->hdr->type_off.

---
 tools/lib/bpf/btf.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)
tools/lib/bpf/btf.c +6 -10
index 231b07203e3d2..987c1515b828b 100644
@@ -215,22 +215,18 @@ static int btf_parse_hdr(struct btf *btf)
 		return -EINVAL;
 	}
 
-	if (meta_left < hdr->type_off) {
-		pr_debug("Invalid BTF type section offset:%u\n", hdr->type_off);
+	if (meta_left < hdr->str_off + hdr->str_len) {
+		pr_debug("Invalid BTF total size:%u\n", btf->raw_size);
 		return -EINVAL;
 	}
 
-	if (meta_left < hdr->str_off) {
-		pr_debug("Invalid BTF string section offset:%u\n", hdr->str_off);
+	if (hdr->type_off + hdr->type_len > hdr->str_off) {
+		pr_debug("Invalid BTF data sections layout: type data at %u + %u, strings data at %u + %u\n",
+			 hdr->type_off, hdr->type_len, hdr->str_off, hdr->str_len);
 		return -EINVAL;
 	}
 
-	if (hdr->type_off >= hdr->str_off) {
-		pr_debug("BTF type section offset >= string section offset. No type?\n");
-		return -EINVAL;
-	}
-
-	if (hdr->type_off & 0x02) {
+	if (hdr->type_off % 4) {
 		pr_debug("BTF type section is not aligned to 4 bytes\n");
 		return -EINVAL;
 	}
Signature · 1 line
2.27.0
author maintainer
#56 lore raw

PATCH 56/717 crypto: arm64/poly1305-neon - reorder PAC authentication with SP update

In reply to Greg Kroah-Hartman

From: Ard Biesheuvel <[email protected]>

[ Upstream commit 519a0d7e495a6d3ce62594e485aea2a3a4a2ca0a ]

PAC pointer authentication signs the return address against the value of the stack pointer, to prevent stack overrun exploits from corrupting the control flow. However, this requires that the AUTIASP is issued with SP holding the same value as it held when the PAC value was generated. The Poly1305 NEON code got this wrong, resulting in crashes on PAC capable hardware.

Fixes f569ca164751 ("crypto: arm64/poly1305 - incorporate OpenSSL/CRYPTOGAMS ...")
---
 arch/arm64/crypto/poly1305-armv8.pl       | 2 +-
 arch/arm64/crypto/poly1305-core.S_shipped | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
arch/arm64/crypto/poly1305-armv8.pl +1 -1
index 6e5576d19af8f..cbc980fb02e33 100644
@@ -840,7 +840,6 @@ poly1305_blocks_neon:
 	 ldp	d14,d15,[sp,#64]
 	addp	$ACC2,$ACC2,$ACC2
 	 ldr	x30,[sp,#8]
-	 .inst	0xd50323bf		// autiasp
 
 	////////////////////////////////////////////////////////////////
 	// lazy reduction, but without narrowing
@@ -882,6 +881,7 @@ poly1305_blocks_neon:
 	str	x4,[$ctx,#8]		// set is_base2_26
 
 	ldr	x29,[sp],#80
+	 .inst	0xd50323bf		// autiasp
 	ret
 .size	poly1305_blocks_neon,.-poly1305_blocks_neon
 
arch/arm64/crypto/poly1305-core.S_shipped +1 -1
index 8d1c4e420ccdc..fb2822abf63aa 100644
@@ -779,7 +779,6 @@ poly1305_blocks_neon:
 	 ldp	d14,d15,[sp,#64]
 	addp	v21.2d,v21.2d,v21.2d
 	 ldr	x30,[sp,#8]
-	 .inst	0xd50323bf		// autiasp
 
 	////////////////////////////////////////////////////////////////
 	// lazy reduction, but without narrowing
@@ -821,6 +820,7 @@ poly1305_blocks_neon:
 	str	x4,[x0,#8]		// set is_base2_26
 
 	ldr	x29,[sp],#80
+	 .inst	0xd50323bf		// autiasp
 	ret
 .size	poly1305_blocks_neon,.-poly1305_blocks_neon
 
Signature · 1 line
2.27.0
author maintainer
#57 lore raw

PATCH 57/717 crypto: arm/aes-neonbs - fix usage of cbc(aes) fallback

In reply to Greg Kroah-Hartman

From: Horia Geantă <[email protected]>

[ Upstream commit a2715fbdc6fc387e85211df917a4778761ec693d ]

Loading the module deadlocks since:
-local cbc(aes) implementation needs a fallback and
-crypto API tries to find one but the request_module() resolves back to the same module

Fix this by changing the module alias for cbc(aes) and using the NEED_FALLBACK flag when requesting for a fallback algorithm.

Fixes 00b99ad2bac2 ("crypto: arm/aes-neonbs - Use generic cbc encryption path")
---
 arch/arm/crypto/aes-neonbs-glue.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
arch/arm/crypto/aes-neonbs-glue.c +5 -3
index bda8bf17631e1..f70af1d0514b9 100644
@@ -19,7 +19,7 @@ MODULE_AUTHOR("Ard Biesheuvel <[email protected]>");
 MODULE_LICENSE("GPL v2");
 
 MODULE_ALIAS_CRYPTO("ecb(aes)");
-MODULE_ALIAS_CRYPTO("cbc(aes)");
+MODULE_ALIAS_CRYPTO("cbc(aes)-all");
 MODULE_ALIAS_CRYPTO("ctr(aes)");
 MODULE_ALIAS_CRYPTO("xts(aes)");
 
@@ -191,7 +191,8 @@ static int cbc_init(struct crypto_skcipher *tfm)
 	struct aesbs_cbc_ctx *ctx = crypto_skcipher_ctx(tfm);
 	unsigned int reqsize;
 
-	ctx->enc_tfm = crypto_alloc_skcipher("cbc(aes)", 0, CRYPTO_ALG_ASYNC);
+	ctx->enc_tfm = crypto_alloc_skcipher("cbc(aes)", 0, CRYPTO_ALG_ASYNC |
+					     CRYPTO_ALG_NEED_FALLBACK);
 	if (IS_ERR(ctx->enc_tfm))
 		return PTR_ERR(ctx->enc_tfm);
 
@@ -441,7 +442,8 @@ static struct skcipher_alg aes_algs[] = { {
 	.base.cra_blocksize	= AES_BLOCK_SIZE,
 	.base.cra_ctxsize	= sizeof(struct aesbs_cbc_ctx),
 	.base.cra_module	= THIS_MODULE,
-	.base.cra_flags		= CRYPTO_ALG_INTERNAL,
+	.base.cra_flags		= CRYPTO_ALG_INTERNAL |
+				  CRYPTO_ALG_NEED_FALLBACK,
 
 	.min_keysize		= AES_MIN_KEY_SIZE,
 	.max_keysize		= AES_MAX_KEY_SIZE,
Signature · 1 line
2.27.0
author maintainer
#58 lore raw

PATCH 58/717 crypto: caam - fix printing on xts fallback allocation error path

In reply to Greg Kroah-Hartman

From: Horia Geantă <[email protected]>

[ Upstream commit ab95bd2aa904e4f53b7358efeea1d57693fb7889 ]

At the time xts fallback tfm allocation fails the device struct hasn't been enabled yet in the caam xts tfm's private context.

Fix this by using the device struct from xts algorithm's private context or, when not available, by replacing dev_err with pr_err.

Fixes 9d9b14dbe077 ("crypto: caam/jr - add fallback for XTS with more than 8B IV")
Fixes 83e8aa912138 ("crypto: caam/qi - add fallback for XTS with more than 8B IV")
Fixes 36e2d7cfdcf1 ("crypto: caam/qi2 - add fallback for XTS with more than 8B IV")
---
 drivers/crypto/caam/caamalg.c     | 4 ++--
 drivers/crypto/caam/caamalg_qi.c  | 4 ++--
 drivers/crypto/caam/caamalg_qi2.c | 3 ++-
 3 files changed, 6 insertions(+), 5 deletions(-)
drivers/crypto/caam/caamalg.c +2 -2
index cf5bd7666dfcd..8697ae53b0633 100644
@@ -3404,8 +3404,8 @@ static int caam_cra_init(struct crypto_skcipher *tfm)
 		fallback = crypto_alloc_skcipher(tfm_name, 0,
 						 CRYPTO_ALG_NEED_FALLBACK);
 		if (IS_ERR(fallback)) {
-			dev_err(ctx->jrdev, "Failed to allocate %s fallback: %ld\n",
-				tfm_name, PTR_ERR(fallback));
+			pr_err("Failed to allocate %s fallback: %ld\n",
+			       tfm_name, PTR_ERR(fallback));
 			return PTR_ERR(fallback);
 		}
 
drivers/crypto/caam/caamalg_qi.c +2 -2
index 66f60d78bdc84..a24ae966df4a3 100644
@@ -2502,8 +2502,8 @@ static int caam_cra_init(struct crypto_skcipher *tfm)
 		fallback = crypto_alloc_skcipher(tfm_name, 0,
 						 CRYPTO_ALG_NEED_FALLBACK);
 		if (IS_ERR(fallback)) {
-			dev_err(ctx->jrdev, "Failed to allocate %s fallback: %ld\n",
-				tfm_name, PTR_ERR(fallback));
+			pr_err("Failed to allocate %s fallback: %ld\n",
+			       tfm_name, PTR_ERR(fallback));
 			return PTR_ERR(fallback);
 		}
 
drivers/crypto/caam/caamalg_qi2.c +2 -1
index 98c1ff1744bb1..a780e627838ae 100644
@@ -1611,7 +1611,8 @@ static int caam_cra_init_skcipher(struct crypto_skcipher *tfm)
 		fallback = crypto_alloc_skcipher(tfm_name, 0,
 						 CRYPTO_ALG_NEED_FALLBACK);
 		if (IS_ERR(fallback)) {
-			dev_err(ctx->dev, "Failed to allocate %s fallback: %ld\n",
+			dev_err(caam_alg->caam.dev,
+				"Failed to allocate %s fallback: %ld\n",
 				tfm_name, PTR_ERR(fallback));
 			return PTR_ERR(fallback);
 		}
Signature · 1 line
2.27.0
author maintainer
#59 lore raw

PATCH 59/717 selinux: fix inode_doinit_with_dentry() LABEL_INVALID error handling

In reply to Greg Kroah-Hartman

From: Paul Moore <[email protected]>

[ Upstream commit 200ea5a2292dc444a818b096ae6a32ba3caa51b9 ]

A previous fix, commit 83370b31a915 ("selinux: fix error initialization in inode_doinit_with_dentry()"), changed how failures were handled before a SELinux policy was loaded. Unfortunately that patch was potentially problematic for two reasons: it set the isec->initialized state without holding a lock, and it didn't set the inode's SELinux label to the "default" for the particular filesystem. The later can be a problem if/when a later attempt to revalidate the inode fails and SELinux reverts to the existing inode label.

This patch should restore the default inode labeling that existed before the original fix, without affecting the LABEL_INVALID marking such that revalidation will still be attempted in the future.

Fixes 83370b31a915 ("selinux: fix error initialization in inode_doinit_with_dentry()")
---
 security/selinux/hooks.c | 31 +++++++++++++------------------
 1 file changed, 13 insertions(+), 18 deletions(-)
security/selinux/hooks.c +13 -18
index 158fc47d8620d..c46312710e73e 100644
@@ -1451,13 +1451,7 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent
 			 * inode_doinit with a dentry, before these inodes could
 			 * be used again by userspace.
 			 */
-			isec->initialized = LABEL_INVALID;
-			/*
-			 * There is nothing useful to jump to the "out"
-			 * label, except a needless spin lock/unlock
-			 * cycle.
-			 */
-			return 0;
+			goto out_invalid;
 		}
 
 		rc = inode_doinit_use_xattr(inode, dentry, sbsec->def_sid,
@@ -1513,15 +1507,8 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent
 			 * inode_doinit() with a dentry, before these inodes
 			 * could be used again by userspace.
 			 */
-			if (!dentry) {
-				isec->initialized = LABEL_INVALID;
-				/*
-				 * There is nothing useful to jump to the "out"
-				 * label, except a needless spin lock/unlock
-				 * cycle.
-				 */
-				return 0;
-			}
+			if (!dentry)
+				goto out_invalid;
 			rc = selinux_genfs_get_sid(dentry, sclass,
 						   sbsec->flags, &sid);
 			if (rc) {
@@ -1546,11 +1533,10 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent
 out:
 	spin_lock(&isec->lock);
 	if (isec->initialized == LABEL_PENDING) {
-		if (!sid || rc) {
+		if (rc) {
 			isec->initialized = LABEL_INVALID;
 			goto out_unlock;
 		}
-
 		isec->initialized = LABEL_INITIALIZED;
 		isec->sid = sid;
 	}
@@ -1558,6 +1544,15 @@ out:
 out_unlock:
 	spin_unlock(&isec->lock);
 	return rc;
+
+out_invalid:
+	spin_lock(&isec->lock);
+	if (isec->initialized == LABEL_PENDING) {
+		isec->initialized = LABEL_INVALID;
+		isec->sid = sid;
+	}
+	spin_unlock(&isec->lock);
+	return 0;
 }
 
 /* Convert a Linux signal to an access vector. */
Signature · 1 line
2.27.0
author maintainer
#60 lore raw

PATCH 60/717 nl80211/cfg80211: fix potential infinite loop

In reply to Greg Kroah-Hartman

From: Colin Ian King <[email protected]>

[ Upstream commit ba5c25236bc3d399df82ebe923490ea8d2d35cf2 ]

The for-loop iterates with a u8 loop counter and compares this with the loop upper limit of request->n_ssids which is an int type. There is a potential infinite loop if n_ssids is larger than the u8 loop counter, so fix this by making the loop counter an int.

Addresses-Coverity: ("Infinite loop")

Fixes c8cb5b854b40 ("nl80211/cfg80211: support 6 GHz scanning")
---
 net/wireless/scan.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
net/wireless/scan.c +1 -1
index 8d0e49c46db37..3409f37d838b3 100644
@@ -694,7 +694,7 @@ static  void cfg80211_scan_req_add_chan(struct cfg80211_scan_request *request,
 static bool cfg80211_find_ssid_match(struct cfg80211_colocated_ap *ap,
 				     struct cfg80211_scan_request *request)
 {
-	u8 i;
+	int i;
 	u32 s_ssid;
 
 	for (i = 0; i < request->n_ssids; i++) {
Signature · 1 line
2.27.0
author maintainer
#61 lore raw

PATCH 61/717 spi: stm32: fix reference leak in stm32_spi_resume

In reply to Greg Kroah-Hartman

From: Zhang Qilong <[email protected]>

[ Upstream commit 900ccdcb79bb61471df1566a70b2b39687a628d5 ]

pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in stm32_spi_resume, so we should fix it.

Fixes db96bf976a4fc ("spi: stm32: fixes suspend/resume management")
---
 drivers/spi/spi-stm32.c | 1 +
 1 file changed, 1 insertion(+)
drivers/spi/spi-stm32.c +1 -0
index 2cc850eb8922d..471dedf3d3392 100644
@@ -2062,6 +2062,7 @@ static int stm32_spi_resume(struct device *dev)
 
 	ret = pm_runtime_get_sync(dev);
 	if (ret < 0) {
+		pm_runtime_put_noidle(dev);
 		dev_err(dev, "Unable to power device:%d\n", ret);
 		return ret;
 	}
Signature · 1 line
2.27.0
author maintainer
#62 lore raw

PATCH 62/717 bpf: Fix tests for local_storage

In reply to Greg Kroah-Hartman

From: KP Singh <[email protected]>

[ Upstream commit f0e5ba0bc481df77cf0afac2b33e420b33eeb463 ]

The {inode,sk}_storage_result checking if the correct value was retrieved was being clobbered unconditionally by the return value of the bpf_{inode,sk}_storage_delete call.

Also, consistently use the newly added BPF_LOCAL_STORAGE_GET_F_CREATE flag.

---
 .../selftests/bpf/progs/local_storage.c       | 24 ++++++++++++-------
 1 file changed, 15 insertions(+), 9 deletions(-)
tools/testing/selftests/bpf/progs/local_storage.c +15 -9
index 0758ba229ae0e..09529e33be982 100644
@@ -58,20 +58,22 @@ int BPF_PROG(unlink_hook, struct inode *dir, struct dentry *victim)
 {
 	__u32 pid = bpf_get_current_pid_tgid() >> 32;
 	struct dummy_storage *storage;
+	int err;
 
 	if (pid != monitored_pid)
 		return 0;
 
 	storage = bpf_inode_storage_get(&inode_storage_map, victim->d_inode, 0,
-				     BPF_SK_STORAGE_GET_F_CREATE);
+					BPF_LOCAL_STORAGE_GET_F_CREATE);
 	if (!storage)
 		return 0;
 
-	if (storage->value == DUMMY_STORAGE_VALUE)
+	if (storage->value != DUMMY_STORAGE_VALUE)
 		inode_storage_result = -1;
 
-	inode_storage_result =
-		bpf_inode_storage_delete(&inode_storage_map, victim->d_inode);
+	err = bpf_inode_storage_delete(&inode_storage_map, victim->d_inode);
+	if (!err)
+		inode_storage_result = err;
 
 	return 0;
 }
@@ -82,19 +84,23 @@ int BPF_PROG(socket_bind, struct socket *sock, struct sockaddr *address,
 {
 	__u32 pid = bpf_get_current_pid_tgid() >> 32;
 	struct dummy_storage *storage;
+	int err;
 
 	if (pid != monitored_pid)
 		return 0;
 
 	storage = bpf_sk_storage_get(&sk_storage_map, sock->sk, 0,
-				     BPF_SK_STORAGE_GET_F_CREATE);
+				     BPF_LOCAL_STORAGE_GET_F_CREATE);
 	if (!storage)
 		return 0;
 
-	if (storage->value == DUMMY_STORAGE_VALUE)
+	if (storage->value != DUMMY_STORAGE_VALUE)
 		sk_storage_result = -1;
 
-	sk_storage_result = bpf_sk_storage_delete(&sk_storage_map, sock->sk);
+	err = bpf_sk_storage_delete(&sk_storage_map, sock->sk);
+	if (!err)
+		sk_storage_result = err;
+
 	return 0;
 }
 
@@ -109,7 +115,7 @@ int BPF_PROG(socket_post_create, struct socket *sock, int family, int type,
 		return 0;
 
 	storage = bpf_sk_storage_get(&sk_storage_map, sock->sk, 0,
-				     BPF_SK_STORAGE_GET_F_CREATE);
+				     BPF_LOCAL_STORAGE_GET_F_CREATE);
 	if (!storage)
 		return 0;
 
@@ -131,7 +137,7 @@ int BPF_PROG(file_open, struct file *file)
 		return 0;
 
 	storage = bpf_inode_storage_get(&inode_storage_map, file->f_inode, 0,
-				     BPF_LOCAL_STORAGE_GET_F_CREATE);
+					BPF_LOCAL_STORAGE_GET_F_CREATE);
 	if (!storage)
 		return 0;
 
Signature · 1 line
2.27.0
author maintainer
#63 lore raw

PATCH 63/717 x86/mce: Correct the detection of invalid notifier priorities

In reply to Greg Kroah-Hartman

From: Zhen Lei <[email protected]>

[ Upstream commit 15af36596ae305aefc8c502c2d3e8c58221709eb ]

Commit

c9c6d216ed28 ("x86/mce: Rename "first" function as "early"")

changed the enumeration of MCE notifier priorities. Correct the check for notifier priorities to cover the new range.

[ bp: Rewrite commit message, remove superfluous brackets in
conditional. ]

Fixes c9c6d216ed28 ("x86/mce: Rename "first" function as "early"")
---
 arch/x86/include/asm/mce.h     | 3 ++-
 arch/x86/kernel/cpu/mce/core.c | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)
arch/x86/include/asm/mce.h +2 -1
index a0f147893a041..fc25c88c7ff29 100644
@@ -177,7 +177,8 @@ enum mce_notifier_prios {
 	MCE_PRIO_EXTLOG,
 	MCE_PRIO_UC,
 	MCE_PRIO_EARLY,
-	MCE_PRIO_CEC
+	MCE_PRIO_CEC,
+	MCE_PRIO_HIGHEST = MCE_PRIO_CEC
 };
 
 struct notifier_block;
arch/x86/kernel/cpu/mce/core.c +2 -1
index 32b7099e35111..311688202ea51 100644
@@ -162,7 +162,8 @@ EXPORT_SYMBOL_GPL(mce_log);
 
 void mce_register_decode_chain(struct notifier_block *nb)
 {
-	if (WARN_ON(nb->priority > MCE_PRIO_MCELOG && nb->priority < MCE_PRIO_EDAC))
+	if (WARN_ON(nb->priority < MCE_PRIO_LOWEST ||
+		    nb->priority > MCE_PRIO_HIGHEST))
 		return;
 
 	blocking_notifier_chain_register(&x86_mce_decoder_chain, nb);
Signature · 1 line
2.27.0
author maintainer
#64 lore raw

PATCH 64/717 drm/edid: Fix uninitialized variable in drm_cvt_modes()

In reply to Greg Kroah-Hartman

From: Lyude Paul <[email protected]>

[ Upstream commit 991fcb77f490390bcad89fa67d95763c58cdc04c ]

Noticed this when trying to compile with -Wall on a kernel fork. We potentially don't set width here, which causes the compiler to complain about width potentially being uninitialized in drm_cvt_modes(). So, let's fix that.

Changes since v1:
* Don't emit an error as this code isn't reachable, just mark it as such Changes since v2:
* Remove now unused variable

Fixes 3f649ab728cd ("treewide: Remove uninitialized_var() usage")
---
 drivers/gpu/drm/drm_edid.c | 2 ++
 1 file changed, 2 insertions(+)
drivers/gpu/drm/drm_edid.c +2 -0
index 631125b46e04c..b84efd538a702 100644
@@ -3114,6 +3114,8 @@ static int drm_cvt_modes(struct drm_connector *connector,
 		case 0x0c:
 			width = height * 15 / 9;
 			break;
+		default:
+			unreachable();
 		}
 
 		for (j = 1; j < 5; j++) {
Signature · 1 line
2.27.0
#65 lore raw

Re: [PATCH 5.10 064/717] drm/edid: Fix uninitialized variable in drm_cvt_modes()

Hi Greg,

Linus had to apply a fixup for this patch. Please ensure that it's in your patch list:

commit d652d5f1eeeb06046009f4fcb9b4542249526916

Author: Linus Torvalds <[email protected]>
Date:   Thu Dec 17 09:27:57 2020 -0800

drm/edid: fix objtool warning in drm_cvt_modes()

It does not appear to have a Fixes tag, so may not have been picked up by your automated tooling.

Cheers,

-ilia

Quoted 42 lines · Greg Kroah-Hartman

From: Lyude Paul <[email protected]>

[ Upstream commit 991fcb77f490390bcad89fa67d95763c58cdc04c ]

Noticed this when trying to compile with -Wall on a kernel fork. We potentially don't set width here, which causes the compiler to complain about width potentially being uninitialized in drm_cvt_modes(). So, let's fix that.

Changes since v1:
* Don't emit an error as this code isn't reachable, just mark it as such Changes since v2:
* Remove now unused variable

Fixes 3f649ab728cd ("treewide: Remove uninitialized_var() usage")
---
 drivers/gpu/drm/drm_edid.c | 2 ++
 1 file changed, 2 insertions(+)
drivers/gpu/drm/drm_edid.c +2 -1
index 631125b46e04c..b84efd538a702 100644
@@ -3114,6 +3114,8 @@ static int drm_cvt_modes(struct drm_connector *connector,
                case 0x0c:
                        width = height * 15 / 9;
                        break;
+               default:
+                       unreachable();
                }
 
                for (j = 1; j < 5; j++) {
--

2.27.0

author maintainer
#66 lore raw

Re: [PATCH 5.10 064/717] drm/edid: Fix uninitialized variable in drm_cvt_modes()

Quoted 5 lines · Ilia Mirkin

Hi Greg,

Linus had to apply a fixup for this patch. Please ensure that it's in your patch list:

Quoted 8 lines

commit d652d5f1eeeb06046009f4fcb9b4542249526916

Author: Linus Torvalds <[email protected]>
Date:   Thu Dec 17 09:27:57 2020 -0800

drm/edid: fix objtool warning in drm_cvt_modes()

It does not appear to have a Fixes tag, so may not have been picked up by your automated tooling.

It was not, thanks, now queued up!

greg k-h

author maintainer
#67 lore raw

PATCH 65/717 ath11k: Initialize complete alpha2 for regulatory change

In reply to Greg Kroah-Hartman

From: Sven Eckelmann <[email protected]>

[ Upstream commit 383a32cde4172db19d4743d4c782c00af39ff275 ]

The function ath11k_wmi_send_init_country_cmd is taking 3 byte from alpha2 of the structure wmi_init_country_params. But the function ath11k_reg_notifier is only initializing 2 bytes. The third byte is therefore always an uninitialized value.

The command can happen to look like

0c 00 87 02 01 00 00 00 00 00 00 00 43 41 f8 00

instead of

0c 00 87 02 01 00 00 00 00 00 00 00 43 41 00 00

Tested-on: IPQ8074 hw2.0 WLAN.HK.2.1.0.1-01161-QCAHKSWPL_SILICONZ-1
Tested-on: IPQ8074 hw2.0 WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1
Tested-on: IPQ8074 hw2.0 WLAN.HK.2.1.0.1-01238-QCAHKSWPL_SILICONZ-2
Tested-on: IPQ8074 hw2.0 WLAN.HK.2.4.0.1.r1-00019-QCAHKSWPL_SILICONZ-1
Tested-on: IPQ8074 hw2.0 WLAN.HK.2.4.0.1.r1-00026-QCAHKSWPL_SILICONZ-2

Fixes d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
---
 drivers/net/wireless/ath/ath11k/reg.c | 1 +
 1 file changed, 1 insertion(+)
drivers/net/wireless/ath/ath11k/reg.c +1 -0
index f6a1f0352989d..83f75f8855ebe 100644
@@ -80,6 +80,7 @@ ath11k_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request)
 	 */
 	init_country_param.flags = ALPHA_IS_SET;
 	memcpy(&init_country_param.cc_info.alpha2, request->alpha2, 2);
+	init_country_param.cc_info.alpha2[2] = 0;
 
 	ret = ath11k_wmi_send_init_country_cmd(ar, init_country_param);
 	if (ret)
Signature · 1 line
2.27.0
author maintainer
#68 lore raw

PATCH 66/717 ath11k: Fix number of rules in filtered ETSI regdomain

In reply to Greg Kroah-Hartman

From: Sven Eckelmann <[email protected]>

[ Upstream commit 6189be7d145c3a2d48514eb8755483602ff5a4b4 ]

The ath11k code will try to insert wheather rader related limits when the DFS region is set to ETSI. For this reason, it will add two more entries in the array of reg_rules. But the 2.4.0.1 firmware is prefiltering the list of reg rules it returns for 2.4GHz PHYs. They will then not contain the list of 5GHz rules and thus no wheather radar band rules were inserted by this code.

But the code didn't fix the n_reg_rules for this regulatory domain and PHY when this happened. This resulted in a rejection by is_valid_rd because it found rules which start and end at 0khz. This resulted in a splat like:

Invalid regulatory domain detected

  ------------[ cut here ]------------
  WARNING: at backports-20200628-4.4.60-9a94b73e75/net/wireless/reg.c:3721
  [...]
  ath11k c000000.wifi1: failed to perform regd update : -22

The number of rules must therefore be saved after they were converted from the ath11k format to the ieee80211_regdomain format and not before.

Tested with IPQ8074 WLAN.HK.2.4.0.1.r1-00019-QCAHKSWPL_SILICONZ-1

Fixes d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
---
 drivers/net/wireless/ath/ath11k/reg.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/net/wireless/ath/ath11k/reg.c +3 -2
index 83f75f8855ebe..678d0885fcee7 100644
@@ -585,7 +585,6 @@ ath11k_reg_build_regd(struct ath11k_base *ab,
 	if (!tmp_regd)
 		goto ret;
 
-	tmp_regd->n_reg_rules = num_rules;
 	memcpy(tmp_regd->alpha2, reg_info->alpha2, REG_ALPHA2_LEN + 1);
 	memcpy(alpha2, reg_info->alpha2, REG_ALPHA2_LEN + 1);
 	alpha2[2] = '\0';
@@ -598,7 +597,7 @@ ath11k_reg_build_regd(struct ath11k_base *ab,
 	/* Update reg_rules[] below. Firmware is expected to
 	 * send these rules in order(2G rules first and then 5G)
 	 */
-	for (; i < tmp_regd->n_reg_rules; i++) {
+	for (; i < num_rules; i++) {
 		if (reg_info->num_2g_reg_rules &&
 		    (i < reg_info->num_2g_reg_rules)) {
 			reg_rule = reg_info->reg_rules_2g_ptr + i;
@@ -653,6 +652,8 @@ ath11k_reg_build_regd(struct ath11k_base *ab,
 			   flags);
 	}
 
+	tmp_regd->n_reg_rules = i;
+
 	if (intersect) {
 		default_regd = ab->default_regd[reg_info->phy_id];
 
Signature · 1 line
2.27.0
author maintainer
#69 lore raw

PATCH 67/717 ath11k: fix wmi init configuration

In reply to Greg Kroah-Hartman

From: Karthikeyan Periyasamy <[email protected]>

[ Upstream commit 36c7c640ffeb87168e5ff79b7a36ae3a020bd378 ]

Assign the correct hw_op ath11k_init_wmi_config_ipq8074 to the hw IPQ8074. Also update the correct TWT radio count. Incorrect TWT radio count cause TWT feature fails on radio2 because physical device count is hardcoded to 2. so set the value dynamically.

Found this during code review.

Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.1.0.1-01238-QCAHKSWPL_SILICONZ-2

Fixes 2d4bcbed5b7d53e1 ("ath11k: initialize wmi config based on hw_params")
---
 drivers/net/wireless/ath/ath11k/hw.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/net/wireless/ath/ath11k/hw.c +2 -2
index 11a411b76fe42..66331da350129 100644
@@ -127,7 +127,7 @@ static void ath11k_init_wmi_config_ipq8074(struct ath11k_base *ab,
 	config->beacon_tx_offload_max_vdev = ab->num_radios * TARGET_MAX_BCN_OFFLD;
 	config->rx_batchmode = TARGET_RX_BATCHMODE;
 	config->peer_map_unmap_v2_support = 1;
-	config->twt_ap_pdev_count = 2;
+	config->twt_ap_pdev_count = ab->num_radios;
 	config->twt_ap_sta_count = 1000;
 }
 
@@ -157,7 +157,7 @@ static int ath11k_hw_mac_id_to_srng_id_qca6390(struct ath11k_hw_params *hw,
 
 const struct ath11k_hw_ops ipq8074_ops = {
 	.get_hw_mac_from_pdev_id = ath11k_hw_ipq8074_mac_from_pdev_id,
-	.wmi_init_config = ath11k_init_wmi_config_qca6390,
+	.wmi_init_config = ath11k_init_wmi_config_ipq8074,
 	.mac_id_to_pdev_id = ath11k_hw_mac_id_to_pdev_id_ipq8074,
 	.mac_id_to_srng_id = ath11k_hw_mac_id_to_srng_id_ipq8074,
 };
Signature · 1 line
2.27.0
author maintainer
#70 lore raw

PATCH 68/717 brcmfmac: Fix memory leak for unpaired brcmf_{alloc/free}

In reply to Greg Kroah-Hartman

From: Seung-Woo Kim <[email protected]>

[ Upstream commit 9db946284e07bb27309dd546b7fee528664ba82a ]

There are missig brcmf_free() for brcmf_alloc(). Fix memory leak by adding missed brcmf_free().

---
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 6 ++++--
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 +
 2 files changed, 5 insertions(+), 2 deletions(-)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +4 -2
index 39381cbde89e6..d8db0dbcfe091 100644
@@ -1936,16 +1936,18 @@ brcmf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 	fwreq = brcmf_pcie_prepare_fw_request(devinfo);
 	if (!fwreq) {
 		ret = -ENOMEM;
-		goto fail_bus;
+		goto fail_brcmf;
 	}
 
 	ret = brcmf_fw_get_firmwares(bus->dev, fwreq, brcmf_pcie_setup);
 	if (ret < 0) {
 		kfree(fwreq);
-		goto fail_bus;
+		goto fail_brcmf;
 	}
 	return 0;
 
+fail_brcmf:
+	brcmf_free(&devinfo->pdev->dev);
 fail_bus:
 	kfree(bus->msgbuf);
 	kfree(bus);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +1 -0
index 99987a789e7e3..59c2b2b6027da 100644
@@ -4541,6 +4541,7 @@ void brcmf_sdio_remove(struct brcmf_sdio *bus)
 		brcmf_sdiod_intr_unregister(bus->sdiodev);
 
 		brcmf_detach(bus->sdiodev->dev);
+		brcmf_free(bus->sdiodev->dev);
 
 		cancel_work_sync(&bus->datawork);
 		if (bus->brcmf_wq)
Signature · 1 line
2.27.0
author maintainer
#71 lore raw

PATCH 69/717 arm64: dts: exynos: Include common syscon restart/poweroff for Exynos7

In reply to Greg Kroah-Hartman

From: Paweł Chmiel <[email protected]>

[ Upstream commit 73bc7510ea0dafb4ff1ae6808759627a8ec51f5a ]

Exynos7 uses the same syscon reboot and poweroff nodes as other Exynos SoCs, so instead of duplicating code we can just include common dtsi file, which already contains definitions of them. After this change, poweroff node will be also available, previously this dts file did contain only reboot node.

Fixes fb026cb65247 ("arm64: dts: Add reboot node for exynos7")
Fixes b9024cbc937d ("arm64: dts: Add initial device tree support for exynos7")
---
 arch/arm64/boot/dts/exynos/exynos7.dtsi | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)
arch/arm64/boot/dts/exynos/exynos7.dtsi +1 -7
index b9ed6a33e2901..545e67901938a 100644
@@ -481,13 +481,6 @@
 		pmu_system_controller: system-controller@105c0000 {
 			compatible = "samsung,exynos7-pmu", "syscon";
 			reg = <0x105c0000 0x5000>;
-
-			reboot: syscon-reboot {
-				compatible = "syscon-reboot";
-				regmap = <&pmu_system_controller>;
-				offset = <0x0400>;
-				mask = <0x1>;
-			};
 		};
 
 		rtc: rtc@10590000 {
@@ -687,3 +680,4 @@
 };
 
 #include "exynos7-pinctrl.dtsi"
+#include "arm/exynos-syscon-restart.dtsi"
Signature · 1 line
2.27.0
author maintainer
#72 lore raw

PATCH 70/717 arm64: dts: exynos: Correct psci compatible used on Exynos7

In reply to Greg Kroah-Hartman

From: Paweł Chmiel <[email protected]>

[ Upstream commit e1e47fbca668507a81bb388fcae044b89d112ecc ]

It's not possible to reboot or poweroff Exynos7420 using PSCI. Instead we need to use syscon reboot/poweroff drivers, like it's done for other Exynos SoCs. This was confirmed by checking vendor source and testing it on Samsung Galaxy S6 device based on this SoC.

To be able to use custom restart/poweroff handlers instead of PSCI functions, we need to correct psci compatible. This also requires us to provide function ids for CPU_ON and CPU_OFF.

Fixes fb026cb65247 ("arm64: dts: Add reboot node for exynos7")
Fixes b9024cbc937d ("arm64: dts: Add initial device tree support for exynos7")
---
 arch/arm64/boot/dts/exynos/exynos7.dtsi | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
arch/arm64/boot/dts/exynos/exynos7.dtsi +3 -1
index 545e67901938a..7599e1a00ff51 100644
@@ -79,8 +79,10 @@
 	};
 
 	psci {
-		compatible = "arm,psci-0.2";
+		compatible = "arm,psci";
 		method = "smc";
+		cpu_off = <0x84000002>;
+		cpu_on = <0xC4000003>;
 	};
 
 	soc: soc@0 {
Signature · 1 line
2.27.0
author maintainer
#73 lore raw

PATCH 71/717 drm/panel: simple: Add flags to boe_nv133fhm_n61

In reply to Greg Kroah-Hartman

From: Stephen Boyd <[email protected]>

[ Upstream commit ab6fd5d44aa21ede9e566f89132f7bdda7f33093 ]

Reading the EDID of this panel shows that these flags should be set. Set them so that we match what is in the EDID.

Cc Douglas Anderson <[email protected]>
Cc Bjorn Andersson <[email protected]>
Fixes b0c664cc80e8 ("panel: simple: Add BOE NV133FHM-N61")
---
 drivers/gpu/drm/panel/panel-simple.c | 1 +
 1 file changed, 1 insertion(+)
drivers/gpu/drm/panel/panel-simple.c +1 -0
index 2be358fb46f7d..204674fccd646 100644
@@ -1327,6 +1327,7 @@ static const struct drm_display_mode boe_nv133fhm_n61_modes = {
 	.vsync_start = 1080 + 3,
 	.vsync_end = 1080 + 3 + 6,
 	.vtotal = 1080 + 3 + 6 + 31,
+	.flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC,
 };
 
 /* Also used for boe_nv133fhm_n62 */
Signature · 1 line
2.27.0
author maintainer
#74 lore raw

PATCH 72/717 Bluetooth: Fix null pointer dereference in hci_event_packet()

In reply to Greg Kroah-Hartman

From: Anmol Karn <[email protected]>

[ Upstream commit 6dfccd13db2ff2b709ef60a50163925d477549aa ]

AMP_MGR is getting derefernced in hci_phy_link_complete_evt(), when called from hci_event_packet() and there is a possibility, that hcon->amp_mgr may not be found when accessing after initialization of hcon.

- net/bluetooth/hci_event.c:4945
The bug seems to get triggered in this line:

bredr_hcon = hcon->amp_mgr->l2cap_conn->hcon;

Fix it by adding a NULL check for the hcon->amp_mgr before checking the ev-status.

Fixes d5e911928bd8 ("Bluetooth: AMP: Process Physical Link Complete evt")
Reported-and-tested-by [email protected]
---
 net/bluetooth/hci_event.c | 5 +++++
 1 file changed, 5 insertions(+)
net/bluetooth/hci_event.c +5 -0
index cbdf2a5559754..17a72695865b5 100644
@@ -4941,6 +4941,11 @@ static void hci_phy_link_complete_evt(struct hci_dev *hdev,
 		return;
 	}
 
+	if (!hcon->amp_mgr) {
+		hci_dev_unlock(hdev);
+		return;
+	}
+
 	if (ev->status) {
 		hci_conn_del(hcon);
 		hci_dev_unlock(hdev);
Signature · 1 line
2.27.0
author maintainer
#75 lore raw

PATCH 73/717 Bluetooth: Fix: LL PRivacy BLE device fails to connect

In reply to Greg Kroah-Hartman

From: Sathish Narasimman <[email protected]>

[ Upstream commit 1fb17dfc258ff6208f7873cc7b8e40e27515d2d5 ]

When adding device to white list the device is added to resolving list also. It has to be added only when HCI_ENABLE_LL_PRIVACY flag is set. HCI_ENABLE_LL_PRIVACY flag has to be tested before adding/deleting devices to resolving list. use_ll_privacy macro is used only to check if controller supports LL_Privacy.

https://bugzilla.kernel.org/show_bug.cgi?id=209745

Fixes 0eee35bdfa3b ("Bluetooth: Update resolving list when updating whitelist")
---
 net/bluetooth/hci_request.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)
net/bluetooth/hci_request.c +8 -4
index 6f12bab4d2fa6..610ed0817bd77 100644
@@ -698,7 +698,8 @@ static void del_from_white_list(struct hci_request *req, bdaddr_t *bdaddr,
 		   cp.bdaddr_type);
 	hci_req_add(req, HCI_OP_LE_DEL_FROM_WHITE_LIST, sizeof(cp), &cp);
 
-	if (use_ll_privacy(req->hdev)) {
+	if (use_ll_privacy(req->hdev) &&
+	    hci_dev_test_flag(req->hdev, HCI_ENABLE_LL_PRIVACY)) {
 		struct smp_irk *irk;
 
 		irk = hci_find_irk_by_addr(req->hdev, bdaddr, bdaddr_type);
@@ -732,7 +733,8 @@ static int add_to_white_list(struct hci_request *req,
 		return -1;
 
 	/* White list can not be used with RPAs */
-	if (!allow_rpa && !use_ll_privacy(hdev) &&
+	if (!allow_rpa &&
+	    !hci_dev_test_flag(hdev, HCI_ENABLE_LL_PRIVACY) &&
 	    hci_find_irk_by_addr(hdev, &params->addr, params->addr_type)) {
 		return -1;
 	}
@@ -750,7 +752,8 @@ static int add_to_white_list(struct hci_request *req,
 		   cp.bdaddr_type);
 	hci_req_add(req, HCI_OP_LE_ADD_TO_WHITE_LIST, sizeof(cp), &cp);
 
-	if (use_ll_privacy(hdev)) {
+	if (use_ll_privacy(hdev) &&
+	    hci_dev_test_flag(hdev, HCI_ENABLE_LL_PRIVACY)) {
 		struct smp_irk *irk;
 
 		irk = hci_find_irk_by_addr(hdev, &params->addr,
@@ -812,7 +815,8 @@ static u8 update_white_list(struct hci_request *req)
 		}
 
 		/* White list can not be used with RPAs */
-		if (!allow_rpa && !use_ll_privacy(hdev) &&
+		if (!allow_rpa &&
+		    !hci_dev_test_flag(hdev, HCI_ENABLE_LL_PRIVACY) &&
 		    hci_find_irk_by_addr(hdev, &b->bdaddr, b->bdaddr_type)) {
 			return 0x00;
 		}
Signature · 1 line
2.27.0
author maintainer
#76 lore raw

PATCH 74/717 Bluetooth: hci_h5: fix memory leak in h5_close

In reply to Greg Kroah-Hartman

From: Anant Thazhemadam <[email protected]>

[ Upstream commit 855af2d74c870d747bf53509f8b2d7b9dc9ee2c3 ]

When h5_close() is called, h5 is directly freed when !hu->serdev. However, h5->rx_skb is not freed, which causes a memory leak.

Freeing h5->rx_skb and setting it to NULL, fixes this memory leak.

Fixes ce945552fde4 ("Bluetooth: hci_h5: Add support for serdev enumerated devices")
Reported-by [email protected]
---
 drivers/bluetooth/hci_h5.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/bluetooth/hci_h5.c +3 -0
index 981d96cc76959..78d635f1d1567 100644
@@ -245,6 +245,9 @@ static int h5_close(struct hci_uart *hu)
 	skb_queue_purge(&h5->rel);
 	skb_queue_purge(&h5->unrel);
 
+	kfree_skb(h5->rx_skb);
+	h5->rx_skb = NULL;
+
 	if (h5->vnd && h5->vnd->close)
 		h5->vnd->close(h5);
 
Signature · 1 line
2.27.0
author maintainer
#77 lore raw

PATCH 75/717 spi: stm32-qspi: fix reference leak in stm32 qspi operations

In reply to Greg Kroah-Hartman

From: Zhang Qilong <[email protected]>

[ Upstream commit 88e1419b5ee30cc50e0c4d5265bdee1ba04af539 ]

pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in two callers(stm32_qspi_exec_op and stm32_qspi_setup), so we should fix it.

---
 drivers/spi/spi-stm32-qspi.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
drivers/spi/spi-stm32-qspi.c +6 -2
index a900962b4336e..947e6b9dc9f4d 100644
@@ -434,8 +434,10 @@ static int stm32_qspi_exec_op(struct spi_mem *mem, const struct spi_mem_op *op)
 	int ret;
 
 	ret = pm_runtime_get_sync(qspi->dev);
-	if (ret < 0)
+	if (ret < 0) {
+		pm_runtime_put_noidle(qspi->dev);
 		return ret;
+	}
 
 	mutex_lock(&qspi->lock);
 	ret = stm32_qspi_send(mem, op);
@@ -462,8 +464,10 @@ static int stm32_qspi_setup(struct spi_device *spi)
 		return -EINVAL;
 
 	ret = pm_runtime_get_sync(qspi->dev);
-	if (ret < 0)
+	if (ret < 0) {
+		pm_runtime_put_noidle(qspi->dev);
 		return ret;
+	}
 
 	presc = DIV_ROUND_UP(qspi->clk_rate, spi->max_speed_hz) - 1;
 
Signature · 1 line
2.27.0
author maintainer
#78 lore raw

PATCH 76/717 spi: spi-ti-qspi: fix reference leak in ti_qspi_setup

In reply to Greg Kroah-Hartman

From: Zhang Qilong <[email protected]>

[ Upstream commit 45c0cba753641e5d7c3207f04241bd0e7a021698 ]

pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in ti_qspi_setup, so we should fix it.

Fixes 505a14954e2d7 ("spi/qspi: Add qspi flash controller")
---
 drivers/spi/spi-ti-qspi.c | 1 +
 1 file changed, 1 insertion(+)
drivers/spi/spi-ti-qspi.c +1 -0
index 3c41649698a5b..9417385c09217 100644
@@ -174,6 +174,7 @@ static int ti_qspi_setup(struct spi_device *spi)
 
 	ret = pm_runtime_get_sync(qspi->dev);
 	if (ret < 0) {
+		pm_runtime_put_noidle(qspi->dev);
 		dev_err(qspi->dev, "pm_runtime_get_sync() failed\n");
 		return ret;
 	}
Signature · 1 line
2.27.0
author maintainer
#79 lore raw

PATCH 77/717 spi: mt7621: fix missing clk_disable_unprepare() on error in mt7621_spi_probe

In reply to Greg Kroah-Hartman

From: Qinglang Miao <[email protected]>

[ Upstream commit 702b15cb97123cedcec56a39d9a21c5288eb9ae1 ]

Fix the missing clk_disable_unprepare() before return from mt7621_spi_probe in the error handling case.

Fixes cbd66c626e16 ("spi: mt7621: Move SPI driver out of staging")
---
 drivers/spi/spi-mt7621.c | 2 ++
 1 file changed, 2 insertions(+)
drivers/spi/spi-mt7621.c +2 -0
index 2c3b7a2a1ec77..2cdae7994e2aa 100644
@@ -353,6 +353,7 @@ static int mt7621_spi_probe(struct platform_device *pdev)
 	master = spi_alloc_master(&pdev->dev, sizeof(*rs));
 	if (!master) {
 		dev_info(&pdev->dev, "master allocation failed\n");
+		clk_disable_unprepare(clk);
 		return -ENOMEM;
 	}
 
@@ -377,6 +378,7 @@ static int mt7621_spi_probe(struct platform_device *pdev)
 	ret = device_reset(&pdev->dev);
 	if (ret) {
 		dev_err(&pdev->dev, "SPI reset failed!\n");
+		clk_disable_unprepare(clk);
 		return ret;
 	}
 
Signature · 1 line
2.27.0
author maintainer
#80 lore raw

PATCH 78/717 spi: tegra20-slink: fix reference leak in slink ops of tegra20

In reply to Greg Kroah-Hartman

From: Zhang Qilong <[email protected]>

[ Upstream commit 763eab7074f6e71babd85d796156f05a675f9510 ]

pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in two callers(tegra_slink_setup and tegra_slink_resume), so we should fix it.

Fixes dc4dc36056392 ("spi: tegra: add spi driver for SLINK controller")
---
 drivers/spi/spi-tegra20-slink.c | 2 ++
 1 file changed, 2 insertions(+)
drivers/spi/spi-tegra20-slink.c +2 -0
index a0810765d4e52..f7c832fd40036 100644
@@ -751,6 +751,7 @@ static int tegra_slink_setup(struct spi_device *spi)
 
 	ret = pm_runtime_get_sync(tspi->dev);
 	if (ret < 0) {
+		pm_runtime_put_noidle(tspi->dev);
 		dev_err(tspi->dev, "pm runtime failed, e = %d\n", ret);
 		return ret;
 	}
@@ -1188,6 +1189,7 @@ static int tegra_slink_resume(struct device *dev)
 
 	ret = pm_runtime_get_sync(dev);
 	if (ret < 0) {
+		pm_runtime_put_noidle(dev);
 		dev_err(dev, "pm runtime failed, e = %d\n", ret);
 		return ret;
 	}
Signature · 1 line
2.27.0
author maintainer
#81 lore raw

PATCH 79/717 spi: tegra20-sflash: fix reference leak in tegra_sflash_resume

In reply to Greg Kroah-Hartman

From: Zhang Qilong <[email protected]>

[ Upstream commit 3482e797ab688da6703fe18d8bad52f94199f4f2 ]

pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in tegra_sflash_resume, so we should fix it.

Fixes 8528547bcc336 ("spi: tegra: add spi driver for sflash controller")
---
 drivers/spi/spi-tegra20-sflash.c | 1 +
 1 file changed, 1 insertion(+)
drivers/spi/spi-tegra20-sflash.c +1 -0
index b59015c7c8a80..cfb7de7379376 100644
@@ -552,6 +552,7 @@ static int tegra_sflash_resume(struct device *dev)
 
 	ret = pm_runtime_get_sync(dev);
 	if (ret < 0) {
+		pm_runtime_put_noidle(dev);
 		dev_err(dev, "pm runtime failed, e = %d\n", ret);
 		return ret;
 	}
Signature · 1 line
2.27.0
author maintainer
#82 lore raw

PATCH 80/717 spi: tegra114: fix reference leak in tegra spi ops

In reply to Greg Kroah-Hartman

From: Zhang Qilong <[email protected]>

[ Upstream commit a042184c7fb99961ea083d4ec192614bec671969 ]

pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in two callers(tegra_spi_setup and tegra_spi_resume), so we should fix it.

Fixes f333a331adfac ("spi/tegra114: add spi driver")
---
 drivers/spi/spi-tegra114.c | 2 ++
 1 file changed, 2 insertions(+)
drivers/spi/spi-tegra114.c +2 -0
index ca6886aaa5197..a2e5907276e7f 100644
@@ -966,6 +966,7 @@ static int tegra_spi_setup(struct spi_device *spi)
 
 	ret = pm_runtime_get_sync(tspi->dev);
 	if (ret < 0) {
+		pm_runtime_put_noidle(tspi->dev);
 		dev_err(tspi->dev, "pm runtime failed, e = %d\n", ret);
 		if (cdata)
 			tegra_spi_cleanup(spi);
@@ -1474,6 +1475,7 @@ static int tegra_spi_resume(struct device *dev)
 
 	ret = pm_runtime_get_sync(dev);
 	if (ret < 0) {
+		pm_runtime_put_noidle(dev);
 		dev_err(dev, "pm runtime failed, e = %d\n", ret);
 		return ret;
 	}
Signature · 1 line
2.27.0
author maintainer
#83 lore raw

PATCH 81/717 spi: bcm63xx-hsspi: fix missing clk_disable_unprepare() on error in bcm63xx_hsspi_resume

In reply to Greg Kroah-Hartman

From: Qinglang Miao <[email protected]>

[ Upstream commit 9bb9ef2b3e5d9d012876e7e2d7757eb30e865bee ]

Fix the missing clk_disable_unprepare() before return from bcm63xx_hsspi_resume in the error handling case when fails to prepare and enable bs->pll_clk.

Fixes 0fd85869c2a9 ("spi/bcm63xx-hsspi: keep pll clk enabled")
---
 drivers/spi/spi-bcm63xx-hsspi.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/spi/spi-bcm63xx-hsspi.c +3 -1
index 9909b18f3c5a5..1f08d7553f079 100644
@@ -494,8 +494,10 @@ static int bcm63xx_hsspi_resume(struct device *dev)
 
 	if (bs->pll_clk) {
 		ret = clk_prepare_enable(bs->pll_clk);
-		if (ret)
+		if (ret) {
+			clk_disable_unprepare(bs->clk);
 			return ret;
+		}
 	}
 
 	spi_master_resume(master);
Signature · 1 line
2.27.0
author maintainer
#84 lore raw

PATCH 82/717 spi: imx: fix reference leak in two imx operations

In reply to Greg Kroah-Hartman

From: Zhang Qilong <[email protected]>

[ Upstream commit 1dcbdd944824369d4569959f8130336fe6fe5f39 ]

pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in callers(spi_imx_prepare_message and spi_imx_remove), so we should fix it.

Fixes 525c9e5a32bd7 ("spi: imx: enable runtime pm support")
---
 drivers/spi/spi-imx.c | 2 ++
 1 file changed, 2 insertions(+)
drivers/spi/spi-imx.c +2 -0
index 0b597905ee72c..8df5e973404f0 100644
@@ -1538,6 +1538,7 @@ spi_imx_prepare_message(struct spi_master *master, struct spi_message *msg)
 
 	ret = pm_runtime_get_sync(spi_imx->dev);
 	if (ret < 0) {
+		pm_runtime_put_noidle(spi_imx->dev);
 		dev_err(spi_imx->dev, "failed to enable clock\n");
 		return ret;
 	}
@@ -1748,6 +1749,7 @@ static int spi_imx_remove(struct platform_device *pdev)
 
 	ret = pm_runtime_get_sync(spi_imx->dev);
 	if (ret < 0) {
+		pm_runtime_put_noidle(spi_imx->dev);
 		dev_err(spi_imx->dev, "failed to enable clock\n");
 		return ret;
 	}
Signature · 1 line
2.27.0
author maintainer
#85 lore raw

PATCH 83/717 ASoC: qcom: common: Fix refcounting in qcom_snd_parse_of()

In reply to Greg Kroah-Hartman

From: Dan Carpenter <[email protected]>

[ Upstream commit 4e59dd249cd513a211e2ecce2cb31f4e29a5ce5b ]

There are two issues in this function.

1) We can't drop the refrences on "cpu", "codec" and "platform" before we take the reference. This doesn't cause a problem on the first iteration because those pointers start as NULL so the of_node_put() is a no-op. But on the subsequent iterations, it will lead to a use after free.

2) If the devm_kzalloc() allocation failed then the code returned directly instead of cleaning up.

Fixes c1e6414cdc37 ("ASoC: qcom: common: Fix refcount imbalance on error")
Fixes 1e36ea360ab9 ("ASoC: qcom: common: use modern dai_link style")
---
 sound/soc/qcom/common.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)
sound/soc/qcom/common.c +8 -5
index 54660f126d09e..09af007007007 100644
@@ -58,7 +58,7 @@ int qcom_snd_parse_of(struct snd_soc_card *card)
 		dlc = devm_kzalloc(dev, 2 * sizeof(*dlc), GFP_KERNEL);
 		if (!dlc) {
 			ret = -ENOMEM;
-			goto err;
+			goto err_put_np;
 		}
 
 		link->cpus	= &dlc[0];
@@ -70,7 +70,7 @@ int qcom_snd_parse_of(struct snd_soc_card *card)
 		ret = of_property_read_string(np, "link-name", &link->name);
 		if (ret) {
 			dev_err(card->dev, "error getting codec dai_link name\n");
-			goto err;
+			goto err_put_np;
 		}
 
 		cpu = of_get_child_by_name(np, "cpu");
@@ -130,8 +130,10 @@ int qcom_snd_parse_of(struct snd_soc_card *card)
 		} else {
 			/* DPCM frontend */
 			dlc = devm_kzalloc(dev, sizeof(*dlc), GFP_KERNEL);
-			if (!dlc)
-				return -ENOMEM;
+			if (!dlc) {
+				ret = -ENOMEM;
+				goto err;
+			}
 
 			link->codecs	 = dlc;
 			link->num_codecs = 1;
@@ -158,10 +160,11 @@ int qcom_snd_parse_of(struct snd_soc_card *card)
 
 	return 0;
 err:
-	of_node_put(np);
 	of_node_put(cpu);
 	of_node_put(codec);
 	of_node_put(platform);
+err_put_np:
+	of_node_put(np);
 	return ret;
 }
 EXPORT_SYMBOL(qcom_snd_parse_of);
Signature · 1 line
2.27.0
author maintainer
#86 lore raw

PATCH 84/717 ath11k: Handle errors if peer creation fails

In reply to Greg Kroah-Hartman

From: Alex Dewar <[email protected]>

[ Upstream commit c134d1f8c436d96b3f62896c630278e3ec001280 ]

ath11k_peer_create() is called without its return value being checked, meaning errors will be unhandled. Add missing check and, as the mutex is unconditionally unlocked on leaving this function, simplify the exit path.

Addresses-Coverity-ID: 1497531 ("Code maintainability issues")

Fixes 701e48a43e15 ("ath11k: add packet log support for QCA6390")
---
 drivers/net/wireless/ath/ath11k/mac.c | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)
drivers/net/wireless/ath/ath11k/mac.c +14 -10
index 7f8dd47d23333..7a2c9708693ec 100644
@@ -5225,20 +5225,26 @@ ath11k_mac_op_assign_vif_chanctx(struct ieee80211_hw *hw,
 	    arvif->vdev_type != WMI_VDEV_TYPE_AP &&
 	    arvif->vdev_type != WMI_VDEV_TYPE_MONITOR) {
 		memcpy(&arvif->chanctx, ctx, sizeof(*ctx));
-		mutex_unlock(&ar->conf_mutex);
-		return 0;
+		ret = 0;
+		goto out;
 	}
 
 	if (WARN_ON(arvif->is_started)) {
-		mutex_unlock(&ar->conf_mutex);
-		return -EBUSY;
+		ret = -EBUSY;
+		goto out;
 	}
 
 	if (ab->hw_params.vdev_start_delay) {
 		param.vdev_id = arvif->vdev_id;
 		param.peer_type = WMI_PEER_TYPE_DEFAULT;
 		param.peer_addr = ar->mac_addr;
+
 		ret = ath11k_peer_create(ar, arvif, NULL, &param);
+		if (ret) {
+			ath11k_warn(ab, "failed to create peer after vdev start delay: %d",
+				    ret);
+			goto out;
+		}
 	}
 
 	ret = ath11k_mac_vdev_start(arvif, &ctx->def);
@@ -5246,23 +5252,21 @@ ath11k_mac_op_assign_vif_chanctx(struct ieee80211_hw *hw,
 		ath11k_warn(ab, "failed to start vdev %i addr %pM on freq %d: %d\n",
 			    arvif->vdev_id, vif->addr,
 			    ctx->def.chan->center_freq, ret);
-		goto err;
+		goto out;
 	}
 	if (arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) {
 		ret = ath11k_monitor_vdev_up(ar, arvif->vdev_id);
 		if (ret)
-			goto err;
+			goto out;
 	}
 
 	arvif->is_started = true;
 
 	/* TODO: Setup ps and cts/rts protection */
 
-	mutex_unlock(&ar->conf_mutex);
-
-	return 0;
+	ret = 0;
 
-err:
+out:
 	mutex_unlock(&ar->conf_mutex);
 
 	return ret;
Signature · 1 line
2.27.0
author maintainer
#87 lore raw

PATCH 85/717 mwifiex: fix mwifiex_shutdown_sw() causing sw reset failure

In reply to Greg Kroah-Hartman

From: Tsuchiya Yuto <[email protected]>

[ Upstream commit fa74cb1dc0f4da46c441b735ca865ac52de42c0e ]

When a PCIe function level reset (FLR) is performed but without fw reset for some reasons (e.g., on Microsoft Surface devices, fw reset requires other quirks), it fails to reset wifi properly. You can trigger the issue on such devices via debugfs entry for reset:

    $ echo 1 | sudo tee /sys/kernel/debug/mwifiex/mlan0/reset

and the resulting dmesg log:

    [   45.740508] mwifiex_pcie 0000:03:00.0: Resetting per request
    [   45.742937] mwifiex_pcie 0000:03:00.0: info: successfully disconnected from [BSSID]: reason code 3
    [   45.744666] mwifiex_pcie 0000:03:00.0: info: shutdown mwifiex...
    [   45.751530] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
    [   45.751539] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
    [   45.771691] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
    [   45.771695] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
    [   45.771697] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
    [   45.771698] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
    [   45.771699] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
    [   45.771701] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
    [   45.771702] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
    [   45.771703] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
    [   45.771704] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
    [   45.771705] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
    [   45.771707] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
    [   45.771708] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
    [   53.099343] mwifiex_pcie 0000:03:00.0: info: trying to associate to '[SSID]' bssid [BSSID]
    [   53.241870] mwifiex_pcie 0000:03:00.0: info: associated to bssid [BSSID] successfully
    [   75.377942] mwifiex_pcie 0000:03:00.0: cmd_wait_q terminated: -110
    [   85.385491] mwifiex_pcie 0000:03:00.0: info: successfully disconnected from [BSSID]: reason code 15
    [   87.539408] mwifiex_pcie 0000:03:00.0: cmd_wait_q terminated: -110
    [   87.539412] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
    [   99.699917] mwifiex_pcie 0000:03:00.0: cmd_wait_q terminated: -110
    [   99.699925] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
    [  111.859802] mwifiex_pcie 0000:03:00.0: cmd_wait_q terminated: -110
    [  111.859808] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
    [...]

When comparing mwifiex_shutdown_sw() with mwifiex_pcie_remove(), it lacks mwifiex_init_shutdown_fw().

This commit fixes mwifiex_shutdown_sw() by adding the missing mwifiex_init_shutdown_fw().

Fixes 4c5dae59d2e9 ("mwifiex: add PCIe function level reset support")
---
 drivers/net/wireless/marvell/mwifiex/main.c | 2 ++
 1 file changed, 2 insertions(+)
drivers/net/wireless/marvell/mwifiex/main.c +2 -0
index 9ba8a8f64976b..6283df5aaaf8b 100644
@@ -1471,6 +1471,8 @@ int mwifiex_shutdown_sw(struct mwifiex_adapter *adapter)
 	priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
 	mwifiex_deauthenticate(priv, NULL);
 
+	mwifiex_init_shutdown_fw(priv, MWIFIEX_FUNC_SHUTDOWN);
+
 	mwifiex_uninit_sw(adapter);
 	adapter->is_up = false;
 
Signature · 1 line
2.27.0
author maintainer
#88 lore raw

PATCH 86/717 drm/msm/a6xx: Clear shadow on suspend

In reply to Greg Kroah-Hartman

From: Rob Clark <[email protected]>

[ Upstream commit e8b0b994c3a5881f0648d53f90435120089c56ad ]

Clear the shadow rptr on suspend. Otherwise, when we resume, we can have a stale value until CP_WHERE_AM_I executes. If we suspend near the ringbuffer wraparound point, this can lead to a chicken/egg situation where we are waiting for ringbuffer space to write the CP_WHERE_AM_I (or CP_INIT) packet, because we mistakenly believe that the ringbuffer is full (due to stale rptr value in the shadow).

Fixes errors like:

[drm:adreno_wait_ring [msm]] *ERROR* timeout waiting for space in ringbuffer 0

in the resume path.

Fixes d3a569fccfa0 ("drm/msm: a6xx: Use WHERE_AM_I for eligible targets")
---
 drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
drivers/gpu/drm/msm/adreno/a6xx_gpu.c +10 -1
index 948f3656c20ca..420ca4a0eb5f7 100644
@@ -1045,12 +1045,21 @@ static int a6xx_pm_suspend(struct msm_gpu *gpu)
 {
 	struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu);
 	struct a6xx_gpu *a6xx_gpu = to_a6xx_gpu(adreno_gpu);
+	int i, ret;
 
 	trace_msm_gpu_suspend(0);
 
 	devfreq_suspend_device(gpu->devfreq.devfreq);
 
-	return a6xx_gmu_stop(a6xx_gpu);
+	ret = a6xx_gmu_stop(a6xx_gpu);
+	if (ret)
+		return ret;
+
+	if (adreno_gpu->base.hw_apriv || a6xx_gpu->has_whereami)
+		for (i = 0; i < gpu->nr_rings; i++)
+			a6xx_gpu->shadow[i] = 0;
+
+	return 0;
 }
 
 static int a6xx_get_timestamp(struct msm_gpu *gpu, uint64_t *value)
Signature · 1 line
2.27.0
author maintainer
#89 lore raw

PATCH 87/717 drm/msm/a5xx: Clear shadow on suspend

In reply to Greg Kroah-Hartman

From: Rob Clark <[email protected]>

[ Upstream commit 5771de5d5b3bfaf279e5c262a113d4b6fbe54355 ]

Similar to the previous patch, clear shadow on suspend to avoid timeouts waiting for ringbuffer space.

Fixes 8907afb476ac ("drm/msm: Allow a5xx to mark the RPTR shadow as privileged")
---
 drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)
drivers/gpu/drm/msm/adreno/a5xx_gpu.c +11 -1
index d6804a8023555..8aa08976aad17 100644
@@ -1207,7 +1207,9 @@ static int a5xx_pm_resume(struct msm_gpu *gpu)
 static int a5xx_pm_suspend(struct msm_gpu *gpu)
 {
 	struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu);
+	struct a5xx_gpu *a5xx_gpu = to_a5xx_gpu(adreno_gpu);
 	u32 mask = 0xf;
+	int i, ret;
 
 	/* A510 has 3 XIN ports in VBIF */
 	if (adreno_is_a510(adreno_gpu))
@@ -1227,7 +1229,15 @@ static int a5xx_pm_suspend(struct msm_gpu *gpu)
 	gpu_write(gpu, REG_A5XX_RBBM_BLOCK_SW_RESET_CMD, 0x003C0000);
 	gpu_write(gpu, REG_A5XX_RBBM_BLOCK_SW_RESET_CMD, 0x00000000);
 
-	return msm_gpu_pm_suspend(gpu);
+	ret = msm_gpu_pm_suspend(gpu);
+	if (ret)
+		return ret;
+
+	if (a5xx_gpu->has_whereami)
+		for (i = 0; i < gpu->nr_rings; i++)
+			a5xx_gpu->shadow[i] = 0;
+
+	return 0;
 }
 
 static int a5xx_get_timestamp(struct msm_gpu *gpu, uint64_t *value)
Signature · 1 line
2.27.0
author maintainer
#90 lore raw

PATCH 88/717 firmware: tegra: fix strncpy()/strncat() confusion

In reply to Greg Kroah-Hartman

From: Arnd Bergmann <[email protected]>

[ Upstream commit 9294996f0be40e9da818ed891c82397ab63c00d0 ]

The way that bpmp_populate_debugfs_inband() uses strncpy() and strncat() makes no sense since the size argument for the first is insufficient to contain the trailing '/' and the second passes the length of the input rather than the output, which triggers a warning:

In function 'strncat',
inlined from 'bpmp_populate_debugfs_inband' at ../drivers/firmware/tegra/bpmp-debugfs.c:422:4:
include/linux/string.h:289:30: warning: '__builtin_strncat' specified bound depends on the length of the source argument [-Wstringop-overflow=]
289 | #define __underlying_strncat __builtin_strncat
| ^
include/linux/string.h:367:10: note: in expansion of macro '__underlying_strncat'

  367 |   return __underlying_strncat(p, q, count);
      |          ^~~~~~~~~~~~~~~~~~~~

drivers/firmware/tegra/bpmp-debugfs.c: In function 'bpmp_populate_debugfs_inband':
include/linux/string.h:288:29: note: length computed here
288 | #define __underlying_strlen __builtin_strlen
| ^
include/linux/string.h:321:10: note: in expansion of macro '__underlying_strlen'
321 | return __underlying_strlen(p);

Simplify this to use an snprintf() instead.

Fixes 5e37b9c137ee ("firmware: tegra: Add support for in-band debug")
---
 drivers/firmware/tegra/bpmp-debugfs.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)
drivers/firmware/tegra/bpmp-debugfs.c +1 -5
index c1bbba9ee93a3..440d99c63638b 100644
@@ -412,16 +412,12 @@ static int bpmp_populate_debugfs_inband(struct tegra_bpmp *bpmp,
 				goto out;
 			}
 
-			len = strlen(ppath) + strlen(name) + 1;
+			len = snprintf(pathbuf, pathlen, "%s%s/", ppath, name);
 			if (len >= pathlen) {
 				err = -EINVAL;
 				goto out;
 			}
 
-			strncpy(pathbuf, ppath, pathlen);
-			strncat(pathbuf, name, strlen(name));
-			strcat(pathbuf, "/");
-
 			err = bpmp_populate_debugfs_inband(bpmp, dentry,
 							   pathbuf);
 			if (err < 0)
Signature · 1 line
2.27.0
author maintainer
#91 lore raw

PATCH 89/717 drm/msm/dp: return correct connection status after suspend

In reply to Greg Kroah-Hartman

From: Kuogee Hsieh <[email protected]>

[ Upstream commit 19e52bcb27c2ba140699d2230d722366d7d048a1 ]

During suspend, dp host controller and hpd block are disabled due to both ahb and aux clock are disabled. Therefore hpd plug/unplug interrupts will not be generated. At dp_pm_resume(), reinitialize both dp host controller and hpd block so that hpd plug/unplug interrupts will be generated and handled by driver so that hpd connection state is updated correctly. This patch will fix link training flaky issues.

Changes in v2:
-- use container_of to cast correct dp_display_private pointer
at both dp_pm_suspend() and dp_pm_resume().

Changes in v3:
-- replace hpd_state atomic_t with u32

Changes in v4
-- call dp_display_host_deinit() at dp_pm_suspend()
-- call dp_display_host_init() at msm_dp_display_enable() -- fix phy->init_count unbalance which causes link training failed

Changes in v5
-- add Fixes tag

Fixes 8ede2ecc3e5e (drm/msm/dp: Add DP compliance tests on Snapdragon Chipsets)
---
 drivers/gpu/drm/msm/dp/dp_catalog.c |  13 +++
 drivers/gpu/drm/msm/dp/dp_catalog.h |   1 +
 drivers/gpu/drm/msm/dp/dp_ctrl.c    |   5 +
 drivers/gpu/drm/msm/dp/dp_display.c | 144 +++++++++++++++-------------
 drivers/gpu/drm/msm/dp/dp_reg.h     |   2 +
 5 files changed, 97 insertions(+), 68 deletions(-)
drivers/gpu/drm/msm/dp/dp_catalog.c +13 -0
index b15b4ce4ba35a..4963bfe6a4726 100644
@@ -572,6 +572,19 @@ void dp_catalog_ctrl_hpd_config(struct dp_catalog *dp_catalog)
 	dp_write_aux(catalog, REG_DP_DP_HPD_CTRL, DP_DP_HPD_CTRL_HPD_EN);
 }
 
+u32 dp_catalog_hpd_get_state_status(struct dp_catalog *dp_catalog)
+{
+	struct dp_catalog_private *catalog = container_of(dp_catalog,
+				struct dp_catalog_private, dp_catalog);
+	u32 status;
+
+	status = dp_read_aux(catalog, REG_DP_DP_HPD_INT_STATUS);
+	status >>= DP_DP_HPD_STATE_STATUS_BITS_SHIFT;
+	status &= DP_DP_HPD_STATE_STATUS_BITS_MASK;
+
+	return status;
+}
+
 u32 dp_catalog_hpd_get_intr_status(struct dp_catalog *dp_catalog)
 {
 	struct dp_catalog_private *catalog = container_of(dp_catalog,
drivers/gpu/drm/msm/dp/dp_catalog.h +1 -0
index 4b7666f1fe6fe..6d257dbebf294 100644
@@ -97,6 +97,7 @@ void dp_catalog_ctrl_enable_irq(struct dp_catalog *dp_catalog, bool enable);
 void dp_catalog_hpd_config_intr(struct dp_catalog *dp_catalog,
 			u32 intr_mask, bool en);
 void dp_catalog_ctrl_hpd_config(struct dp_catalog *dp_catalog);
+u32 dp_catalog_hpd_get_state_status(struct dp_catalog *dp_catalog);
 u32 dp_catalog_hpd_get_intr_status(struct dp_catalog *dp_catalog);
 void dp_catalog_ctrl_phy_reset(struct dp_catalog *dp_catalog);
 int dp_catalog_ctrl_update_vx_px(struct dp_catalog *dp_catalog, u8 v_level,
drivers/gpu/drm/msm/dp/dp_ctrl.c +5 -0
index 872b12689e317..cee161c8ecc67 100644
@@ -1400,6 +1400,8 @@ int dp_ctrl_host_init(struct dp_ctrl *dp_ctrl, bool flip)
 void dp_ctrl_host_deinit(struct dp_ctrl *dp_ctrl)
 {
 	struct dp_ctrl_private *ctrl;
+	struct dp_io *dp_io;
+	struct phy *phy;
 
 	if (!dp_ctrl) {
 		DRM_ERROR("Invalid input data\n");
@@ -1407,8 +1409,11 @@ void dp_ctrl_host_deinit(struct dp_ctrl *dp_ctrl)
 	}
 
 	ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl);
+	dp_io = &ctrl->parser->io;
+	phy = dp_io->phy;
 
 	dp_catalog_ctrl_enable_irq(ctrl->catalog, false);
+	phy_exit(phy);
 
 	DRM_DEBUG_DP("Host deinitialized successfully\n");
 }
drivers/gpu/drm/msm/dp/dp_display.c +76 -68

297 lines not on this page · raw message

drivers/gpu/drm/msm/dp/dp_reg.h +2 -0
index 43042ff90a199..268602803d9a3 100644
@@ -32,6 +32,8 @@
 #define DP_DP_IRQ_HPD_INT_ACK			(0x00000002)
 #define DP_DP_HPD_REPLUG_INT_ACK		(0x00000004)
 #define DP_DP_HPD_UNPLUG_INT_ACK		(0x00000008)
+#define DP_DP_HPD_STATE_STATUS_BITS_MASK	(0x0000000F)
+#define DP_DP_HPD_STATE_STATUS_BITS_SHIFT	(0x1C)
 
 #define REG_DP_DP_HPD_INT_MASK			(0x0000000C)
 #define DP_DP_HPD_PLUG_INT_MASK			(0x00000001)
Signature · 1 line
2.27.0
author maintainer
#92 lore raw

PATCH 90/717 drm/msm/dp: skip checking LINK_STATUS_UPDATED bit

In reply to Greg Kroah-Hartman

From: Kuogee Hsieh <[email protected]>

[ Upstream commit ea530388e64bd584645f2d89e40ca7dffade8eff ]

Some dongle will not clear LINK_STATUS_UPDATED bit after DPCD read which cause link training failed. This patch just read 6 bytes of DPCD link status from sink and return without checking LINK_STATUS_UPDATED bit.
Only 8 bits are used to represent link rate at sinker DPCD. The really link rate is 2.7Mb times the 8 bits value. For example, 0x0A at DPCD is equal to 2.7Gb (10 * 2.7Mb). This patch also convert 8 bits value of DPCD to really link rate to fix worng link rate error during phy compliance test.

Fixes 6625e2637d93 ("drm/msm/dp: DisplayPort PHY compliance tests fixup")
---
 drivers/gpu/drm/msm/dp/dp_ctrl.c | 20 ++++++--------------
 drivers/gpu/drm/msm/dp/dp_link.c | 29 ++++++++++++++---------------
 2 files changed, 20 insertions(+), 29 deletions(-)
drivers/gpu/drm/msm/dp/dp_ctrl.c +6 -14
index cee161c8ecc67..c83a1650437da 100644
@@ -1061,23 +1061,15 @@ static bool dp_ctrl_train_pattern_set(struct dp_ctrl_private *ctrl,
 static int dp_ctrl_read_link_status(struct dp_ctrl_private *ctrl,
 				    u8 *link_status)
 {
-	int len = 0;
-	u32 const offset = DP_LANE_ALIGN_STATUS_UPDATED - DP_LANE0_1_STATUS;
-	u32 link_status_read_max_retries = 100;
-
-	while (--link_status_read_max_retries) {
-		len = drm_dp_dpcd_read_link_status(ctrl->aux,
-			link_status);
-		if (len != DP_LINK_STATUS_SIZE) {
-			DRM_ERROR("DP link status read failed, err: %d\n", len);
-			return len;
-		}
+	int ret = 0, len;
 
-		if (!(link_status[offset] & DP_LINK_STATUS_UPDATED))
-			return 0;
+	len = drm_dp_dpcd_read_link_status(ctrl->aux, link_status);
+	if (len != DP_LINK_STATUS_SIZE) {
+		DRM_ERROR("DP link status read failed, err: %d\n", len);
+		ret = -EINVAL;
 	}
 
-	return -ETIMEDOUT;
+	return ret;
 }
 
 static int dp_ctrl_link_train_1(struct dp_ctrl_private *ctrl,
drivers/gpu/drm/msm/dp/dp_link.c +14 -15
index 49d7fad36fc4e..be986da78c4a5 100644
@@ -773,7 +773,8 @@ static int dp_link_process_link_training_request(struct dp_link_private *link)
 			link->request.test_lane_count);
 
 	link->dp_link.link_params.num_lanes = link->request.test_lane_count;
-	link->dp_link.link_params.rate = link->request.test_link_rate;
+	link->dp_link.link_params.rate = 
+		drm_dp_bw_code_to_link_rate(link->request.test_link_rate);
 
 	return 0;
 }
@@ -943,22 +944,20 @@ static u8 get_link_status(const u8 link_status[DP_LINK_STATUS_SIZE], int r)
  */
 static int dp_link_process_link_status_update(struct dp_link_private *link)
 {
-	if (!(get_link_status(link->link_status,
-				DP_LANE_ALIGN_STATUS_UPDATED) &
-				DP_LINK_STATUS_UPDATED) ||
-			(drm_dp_clock_recovery_ok(link->link_status,
-					link->dp_link.link_params.num_lanes) &&
-			drm_dp_channel_eq_ok(link->link_status,
-					link->dp_link.link_params.num_lanes)))
-		return -EINVAL;
+       bool channel_eq_done = drm_dp_channel_eq_ok(link->link_status,
+                       link->dp_link.link_params.num_lanes);
 
-	DRM_DEBUG_DP("channel_eq_done = %d, clock_recovery_done = %d\n",
-			drm_dp_clock_recovery_ok(link->link_status,
-			link->dp_link.link_params.num_lanes),
-			drm_dp_clock_recovery_ok(link->link_status,
-			link->dp_link.link_params.num_lanes));
+       bool clock_recovery_done = drm_dp_clock_recovery_ok(link->link_status,
+                       link->dp_link.link_params.num_lanes);
 
-	return 0;
+       DRM_DEBUG_DP("channel_eq_done = %d, clock_recovery_done = %d\n",
+                        channel_eq_done, clock_recovery_done);
+
+       if (channel_eq_done && clock_recovery_done)
+               return -EINVAL;
+
+
+       return 0;
 }
 
 /**
Signature · 1 line
2.27.0
author maintainer
#93 lore raw

PATCH 91/717 drm/msm/dp: do not notify audio subsystem if sink doesnt support audio

In reply to Greg Kroah-Hartman

From: Abhinav Kumar <[email protected]>

[ Upstream commit e8c765811b1064c200829eacf237ac8c25e79cd0 ]

For sinks that do not support audio, there is no need to notify audio subsystem of the connection event.

This will make sure that audio routes only to the primary display when connected to such sinks.

changes in v2:
- Added fixes tag
- Removed nested if condition and removed usage of global pointer

Fixes d13e36d7d222 ("drm/msm/dp: add audio support for Display Port on MSM")
---
 drivers/gpu/drm/msm/dp/dp_display.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
drivers/gpu/drm/msm/dp/dp_display.c +8 -1
index 8703c63d85c87..fe0279542a1c2 100644
@@ -563,7 +563,14 @@ static int dp_connect_pending_timeout(struct dp_display_private *dp, u32 data)
 static void dp_display_handle_plugged_change(struct msm_dp *dp_display,
 		bool plugged)
 {
-	if (dp_display->plugged_cb && dp_display->codec_dev)
+	struct dp_display_private *dp;
+
+	dp = container_of(dp_display,
+			struct dp_display_private, dp_display);
+
+	/* notify audio subsystem only if sink supports audio */
+	if (dp_display->plugged_cb && dp_display->codec_dev &&
+			dp->audio_supported)
 		dp_display->plugged_cb(dp_display->codec_dev, plugged);
 }
 
Signature · 1 line
2.27.0
author maintainer
#94 lore raw

PATCH 92/717 selftests/run_kselftest.sh: fix dry-run typo

In reply to Greg Kroah-Hartman

From: Hangbin Liu <[email protected]>

[ Upstream commit 93f20eff0cca972d74cb554a2e8b47730228be16 ]

Should be -d instead of -n for dry-run.

Fixes 5da1918446a1 ("selftests/run_kselftest.sh: Make each test individually selectable")
---
 tools/testing/selftests/run_kselftest.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
tools/testing/selftests/run_kselftest.sh +1 -1
index 609a4ef9300e3..97165a83df632 100755
@@ -48,7 +48,7 @@ while true; do
 		-l | --list)
 			echo "$available"
 			exit 0 ;;
-		-n | --dry-run)
+		-d | --dry-run)
 			dryrun="echo"
 			shift ;;
 		-h | --help)
Signature · 1 line
2.27.0
author maintainer
#95 lore raw

PATCH 93/717 selftest/bpf: Add missed ip6ip6 test back

In reply to Greg Kroah-Hartman

From: Hangbin Liu <[email protected]>

[ Upstream commit 58cfa49c2ba7f815adccc27a775e7cf8a8f7f539 ]

In comment 173ca26e9b51 ("samples/bpf: add comprehensive ipip, ipip6, ip6ip6 test") we added ip6ip6 test for bpf tunnel testing. But in commit 933a741e3b82 ("selftests/bpf: bpf tunnel test.") when we moved it to the current folder, we didn't add it.

This patch add the ip6ip6 test back to bpf tunnel test. Update the ipip6's topology for both IPv4 and IPv6 testing. Since iperf test is removed as currect framework simplified it in purpose, I also removed unused tcp checkings in test_tunnel_kern.c.

---
 .../selftests/bpf/progs/test_tunnel_kern.c    | 42 +++---------------
 tools/testing/selftests/bpf/test_tunnel.sh    | 43 +++++++++++++++++--
 2 files changed, 46 insertions(+), 39 deletions(-)
tools/testing/selftests/bpf/progs/test_tunnel_kern.c +7 -35
index f48dbfe24ddc8..a621b58ab079d 100644
@@ -15,7 +15,6 @@
 #include <linux/ip.h>
 #include <linux/ipv6.h>
 #include <linux/types.h>
-#include <linux/tcp.h>
 #include <linux/socket.h>
 #include <linux/pkt_cls.h>
 #include <linux/erspan.h>
@@ -528,12 +527,11 @@ int _ipip_set_tunnel(struct __sk_buff *skb)
 	struct bpf_tunnel_key key = {};
 	void *data = (void *)(long)skb->data;
 	struct iphdr *iph = data;
-	struct tcphdr *tcp = data + sizeof(*iph);
 	void *data_end = (void *)(long)skb->data_end;
 	int ret;
 
 	/* single length check */
-	if (data + sizeof(*iph) + sizeof(*tcp) > data_end) {
+	if (data + sizeof(*iph) > data_end) {
 		ERROR(1);
 		return TC_ACT_SHOT;
 	}
@@ -541,16 +539,6 @@ int _ipip_set_tunnel(struct __sk_buff *skb)
 	key.tunnel_ttl = 64;
 	if (iph->protocol == IPPROTO_ICMP) {
 		key.remote_ipv4 = 0xac100164; /* 172.16.1.100 */
-	} else {
-		if (iph->protocol != IPPROTO_TCP || iph->ihl != 5)
-			return TC_ACT_SHOT;
-
-		if (tcp->dest == bpf_htons(5200))
-			key.remote_ipv4 = 0xac100164; /* 172.16.1.100 */
-		else if (tcp->dest == bpf_htons(5201))
-			key.remote_ipv4 = 0xac100165; /* 172.16.1.101 */
-		else
-			return TC_ACT_SHOT;
 	}
 
 	ret = bpf_skb_set_tunnel_key(skb, &key, sizeof(key), 0);
@@ -585,19 +573,20 @@ int _ipip6_set_tunnel(struct __sk_buff *skb)
 	struct bpf_tunnel_key key = {};
 	void *data = (void *)(long)skb->data;
 	struct iphdr *iph = data;
-	struct tcphdr *tcp = data + sizeof(*iph);
 	void *data_end = (void *)(long)skb->data_end;
 	int ret;
 
 	/* single length check */
-	if (data + sizeof(*iph) + sizeof(*tcp) > data_end) {
+	if (data + sizeof(*iph) > data_end) {
 		ERROR(1);
 		return TC_ACT_SHOT;
 	}
 
 	__builtin_memset(&key, 0x0, sizeof(key));
-	key.remote_ipv6[3] = bpf_htonl(0x11); /* ::11 */
 	key.tunnel_ttl = 64;
+	if (iph->protocol == IPPROTO_ICMP) {
+		key.remote_ipv6[3] = bpf_htonl(0x11); /* ::11 */
+	}
 
 	ret = bpf_skb_set_tunnel_key(skb, &key, sizeof(key),
 				     BPF_F_TUNINFO_IPV6);
@@ -634,35 +623,18 @@ int _ip6ip6_set_tunnel(struct __sk_buff *skb)
 	struct bpf_tunnel_key key = {};
 	void *data = (void *)(long)skb->data;
 	struct ipv6hdr *iph = data;
-	struct tcphdr *tcp = data + sizeof(*iph);
 	void *data_end = (void *)(long)skb->data_end;
 	int ret;
 
 	/* single length check */
-	if (data + sizeof(*iph) + sizeof(*tcp) > data_end) {
+	if (data + sizeof(*iph) > data_end) {
 		ERROR(1);
 		return TC_ACT_SHOT;
 	}
 
-	key.remote_ipv6[0] = bpf_htonl(0x2401db00);
 	key.tunnel_ttl = 64;
-
 	if (iph->nexthdr == 58 /* NEXTHDR_ICMP */) {
-		key.remote_ipv6[3] = bpf_htonl(1);
-	} else {
-		if (iph->nexthdr != 6 /* NEXTHDR_TCP */) {
-			ERROR(iph->nexthdr);
-			return TC_ACT_SHOT;
-		}
-
-		if (tcp->dest == bpf_htons(5200)) {
-			key.remote_ipv6[3] = bpf_htonl(1);
-		} else if (tcp->dest == bpf_htons(5201)) {
-			key.remote_ipv6[3] = bpf_htonl(2);
-		} else {
-			ERROR(tcp->dest);
-			return TC_ACT_SHOT;
-		}
+		key.remote_ipv6[3] = bpf_htonl(0x11); /* ::11 */
 	}
 
 	ret = bpf_skb_set_tunnel_key(skb, &key, sizeof(key),
tools/testing/selftests/bpf/test_tunnel.sh +39 -4

94 lines not on this page · raw message

Signature · 1 line
2.27.0
author maintainer
#96 lore raw

PATCH 94/717 ASoC: wm8994: Fix PM disable depth imbalance on error

In reply to Greg Kroah-Hartman

From: Zhang Qilong <[email protected]>

[ Upstream commit b8161cbe55a1892a19a318eaebbda92438fa708c ]

The pm_runtime_enable will increase power disable depth. Thus a pairing decrement is needed on the error handling path to keep it balanced according to context.

Fixes 57e265c8d71fb ("ASoC: wm8994: Move runtime PM init to platform device init")
---
 sound/soc/codecs/wm8994.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
sound/soc/codecs/wm8994.c +5 -1
index fc9ea198ac799..f57884113406b 100644
@@ -4645,8 +4645,12 @@ static int wm8994_probe(struct platform_device *pdev)
 	pm_runtime_enable(&pdev->dev);
 	pm_runtime_idle(&pdev->dev);
 
-	return devm_snd_soc_register_component(&pdev->dev, &soc_component_dev_wm8994,
+	ret = devm_snd_soc_register_component(&pdev->dev, &soc_component_dev_wm8994,
 			wm8994_dai, ARRAY_SIZE(wm8994_dai));
+	if (ret < 0)
+		pm_runtime_disable(&pdev->dev);
+
+	return ret;
 }
 
 static int wm8994_remove(struct platform_device *pdev)
Signature · 1 line
2.27.0
author maintainer
#97 lore raw

PATCH 95/717 ASoC: wm8998: Fix PM disable depth imbalance on error

In reply to Greg Kroah-Hartman

From: Zhang Qilong <[email protected]>

[ Upstream commit 193aa0a043645220d2a2f783ba06ae13d4601078 ]

The pm_runtime_enable will increase power disable depth. Thus a pairing decrement is needed on the error handling path to keep it balanced according to context.

Fixes 31833ead95c2c ("ASoC: arizona: Move request of speaker IRQs into bus probe")
---
 sound/soc/codecs/wm8998.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
sound/soc/codecs/wm8998.c +3 -1
index f6c5cc80c970b..5413254295b70 100644
@@ -1375,7 +1375,7 @@ static int wm8998_probe(struct platform_device *pdev)
 
 	ret = arizona_init_spk_irqs(arizona);
 	if (ret < 0)
-		return ret;
+		goto err_pm_disable;
 
 	ret = devm_snd_soc_register_component(&pdev->dev,
 					      &soc_component_dev_wm8998,
@@ -1390,6 +1390,8 @@ static int wm8998_probe(struct platform_device *pdev)
 
 err_spk_irqs:
 	arizona_free_spk_irqs(arizona);
+err_pm_disable:
+	pm_runtime_disable(&pdev->dev);
 
 	return ret;
 }
Signature · 1 line
2.27.0
author maintainer
#98 lore raw

PATCH 96/717 spi: sprd: fix reference leak in sprd_spi_remove

In reply to Greg Kroah-Hartman

From: Zhang Qilong <[email protected]>

[ Upstream commit e4062765bc2a41e025e29dd56bad798505036427 ]

pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in sprd_spi_remove, so we should fix it.

Fixes e7d973a31c24b ("spi: sprd: Add SPI driver for Spreadtrum SC9860")
---
 drivers/spi/spi-sprd.c | 1 +
 1 file changed, 1 insertion(+)
drivers/spi/spi-sprd.c +1 -0
index 635738f54c731..b41a75749b498 100644
@@ -1010,6 +1010,7 @@ static int sprd_spi_remove(struct platform_device *pdev)
 
 	ret = pm_runtime_get_sync(ss->dev);
 	if (ret < 0) {
+		pm_runtime_put_noidle(ss->dev);
 		dev_err(ss->dev, "failed to resume SPI controller\n");
 		return ret;
 	}
Signature · 1 line
2.27.0
author maintainer
#99 lore raw

PATCH 97/717 virtiofs fix leak in setup

In reply to Greg Kroah-Hartman

From: Miklos Szeredi <[email protected]>

[ Upstream commit 66ab33bf6d4341574f88b511e856a73f6f2a921e ]

This can be triggered for example by adding the "-omand" mount option, which will be rejected and virtio_fs_fill_super() will return an error.

In such a case the allocations for fuse_conn and fuse_mount will leak due to s_root not yet being set and so ->put_super() not being called.

Fixes a62a8ef9d97d ("virtio-fs: add virtiofs filesystem")
---
 fs/fuse/virtio_fs.c | 2 ++
 1 file changed, 2 insertions(+)
fs/fuse/virtio_fs.c +2 -0
index 21a9e534417c0..d2c0e58c6416f 100644
@@ -1464,6 +1464,8 @@ static int virtio_fs_get_tree(struct fs_context *fsc)
 	if (!sb->s_root) {
 		err = virtio_fs_fill_super(sb, fsc);
 		if (err) {
+			fuse_mount_put(fm);
+			sb->s_fs_info = NULL;
 			deactivate_locked_super(sb);
 			return err;
 		}
Signature · 1 line
2.27.0
author maintainer
#100 lore raw

PATCH 98/717 net: evaluate net.ipvX.conf.all.ignore_routes_with_linkdown

In reply to Greg Kroah-Hartman

From: Vincent Bernat <[email protected]>

[ Upstream commit c0c5a60f0f1311bcf08bbe735122096d6326fb5b ]

Introduced in 0eeb075fad73, the "ignore_routes_with_linkdown" sysctl ignores a route whose interface is down. It is provided as a per-interface sysctl. However, while a "all" variant is exposed, it was a noop since it was never evaluated. We use the usual "or" logic for this kind of sysctls.

Tested with:

    ip link add type veth # veth0 + veth1
    ip link add type veth # veth1 + veth2
    ip link set up dev veth0
    ip link set up dev veth1 # link-status paired with veth0
    ip link set up dev veth2
    ip link set up dev veth3 # link-status paired with veth2

    # First available path
    ip -4 addr add 203.0.113.${uts#H}/24 dev veth0
    ip -6 addr add 2001:db8:1::${uts#H}/64 dev veth0

    # Second available path
    ip -4 addr add 192.0.2.${uts#H}/24 dev veth2
    ip -6 addr add 2001:db8:2::${uts#H}/64 dev veth2

    # More specific route through first path
    ip -4 route add 198.51.100.0/25 via 203.0.113.254 # via veth0
    ip -6 route add 2001:db8:3::/56 via 2001:db8:1::ff # via veth0

    # Less specific route through second path
    ip -4 route add 198.51.100.0/24 via 192.0.2.254 # via veth2
    ip -6 route add 2001:db8:3::/48 via 2001:db8:2::ff # via veth2

    # H1: enable on "all"
    # H2: enable on "veth0"
    for v in ipv4 ipv6; do
      case $uts in
        H1)
          sysctl -qw net.${v}.conf.all.ignore_routes_with_linkdown=1
          ;;
        H2)
          sysctl -qw net.${v}.conf.veth0.ignore_routes_with_linkdown=1
          ;;
      esac
    done

    set -xe
    # When veth0 is up, best route is through veth0
    ip -o route get 198.51.100.1 | grep -Fw veth0
    ip -o route get 2001:db8:3::1 | grep -Fw veth0

    # When veth0 is down, best route should be through veth2 on H1/H2,
    # but on veth0 on H2
    ip link set down dev veth1 # down veth0
    ip route show
    [ $uts != H3 ] || ip -o route get 198.51.100.1 | grep -Fw veth0
    [ $uts != H3 ] || ip -o route get 2001:db8:3::1 | grep -Fw veth0
    [ $uts = H3 ] || ip -o route get 198.51.100.1 | grep -Fw veth2
    [ $uts = H3 ] || ip -o route get 2001:db8:3::1 | grep -Fw veth2

Without this patch, the two last lines would fail on H1 (the one using the "all" sysctl). With the patch, everything succeeds as expected.

Also document the sysctl in ip-sysctl.rst.

Fixes 0eeb075fad73 ("net: ipv4 sysctl option to ignore routes when nexthop link is down")
---
 Documentation/networking/ip-sysctl.rst | 3 +++
 include/linux/inetdevice.h             | 2 +-
 2 files changed, 4 insertions(+), 1 deletion(-)
Documentation/networking/ip-sysctl.rst +3 -0
index 25e6673a085a0..91069bf636235 100644
@@ -1554,6 +1554,9 @@ igmpv3_unsolicited_report_interval - INTEGER
 
 	Default: 1000 (1 seconds)
 
+ignore_routes_with_linkdown - BOOLEAN
+        Ignore routes whose link is down when performing a FIB lookup.
+
 promote_secondaries - BOOLEAN
 	When a primary IP address is removed from this interface
 	promote a corresponding secondary IP address instead of
include/linux/inetdevice.h +1 -1
index 3515ca64e638a..3bbcddd22df8c 100644
@@ -126,7 +126,7 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev)
 	  IN_DEV_ORCONF((in_dev), ACCEPT_REDIRECTS)))
 
 #define IN_DEV_IGNORE_ROUTES_WITH_LINKDOWN(in_dev) \
-	IN_DEV_CONF_GET((in_dev), IGNORE_ROUTES_WITH_LINKDOWN)
+	IN_DEV_ORCONF((in_dev), IGNORE_ROUTES_WITH_LINKDOWN)
 
 #define IN_DEV_ARPFILTER(in_dev)	IN_DEV_ORCONF((in_dev), ARPFILTER)
 #define IN_DEV_ARP_ACCEPT(in_dev)	IN_DEV_ORCONF((in_dev), ARP_ACCEPT)
Signature · 1 line
2.27.0
#101 lore raw

Re: [PATCH 5.10 098/717] net: evaluate net.ipvX.conf.all.ignore_routes_with_linkdown

Quoted 9 lines · On Mon, 28 Dec 2020 13:41:36 +0100 Greg Kroah-Hartman wrote:

From: Vincent Bernat <[email protected]>

[ Upstream commit c0c5a60f0f1311bcf08bbe735122096d6326fb5b ]

Introduced in 0eeb075fad73, the "ignore_routes_with_linkdown" sysctl ignores a route whose interface is down. It is provided as a per-interface sysctl. However, while a "all" variant is exposed, it was a noop since it was never evaluated. We use the usual "or" logic for this kind of sysctls.

I'd recommend to drop 98 and 99, at least for now.

The kernel always behaved this way, and it remains to be seen if anyone depended on that (mis) behavior.

This needs to hit a real release.

maintainer
#102 lore raw

Re: [PATCH 5.10 098/717] net: evaluate net.ipvX.conf.all.ignore_routes_with_linkdown

Quoted 11 lines · Jakub Kicinski
Quoted 9 lines · On Mon, 28 Dec 2020 13:41:36 +0100 Greg Kroah-Hartman wrote:

From: Vincent Bernat <[email protected]>

[ Upstream commit c0c5a60f0f1311bcf08bbe735122096d6326fb5b ]

Introduced in 0eeb075fad73, the "ignore_routes_with_linkdown" sysctl ignores a route whose interface is down. It is provided as a per-interface sysctl. However, while a "all" variant is exposed, it was a noop since it was never evaluated. We use the usual "or" logic for this kind of sysctls.

Quoted 6 lines

I'd recommend to drop 98 and 99, at least for now.

The kernel always behaved this way, and it remains to be seen if anyone depended on that (mis) behavior.

This needs to hit a real release.

I'll drop it.

Signature · 2 lines
Thanks,
Sasha
author maintainer
#103 lore raw

PATCH 99/717 net: evaluate net.ipv4.conf.all.proxy_arp_pvlan

In reply to Greg Kroah-Hartman

From: Vincent Bernat <[email protected]>

[ Upstream commit 1af5318c00a8acc33a90537af49b3f23f72a2c4b ]

Introduced in 65324144b50b, the "proxy_arp_vlan" sysctl is a per-interface sysctl to tune proxy ARP support for private VLANs. While the "all" variant is exposed, it was a noop and never evaluated. We use the usual "or" logic for this kind of sysctls.

Fixes 65324144b50b ("net: RFC3069, private VLAN proxy arp support")
---
 include/linux/inetdevice.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
include/linux/inetdevice.h +1 -1
index 3bbcddd22df8c..53aa0343bf694 100644
@@ -105,7 +105,7 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev)
 
 #define IN_DEV_LOG_MARTIANS(in_dev)	IN_DEV_ORCONF((in_dev), LOG_MARTIANS)
 #define IN_DEV_PROXY_ARP(in_dev)	IN_DEV_ORCONF((in_dev), PROXY_ARP)
-#define IN_DEV_PROXY_ARP_PVLAN(in_dev)	IN_DEV_CONF_GET(in_dev, PROXY_ARP_PVLAN)
+#define IN_DEV_PROXY_ARP_PVLAN(in_dev)	IN_DEV_ORCONF((in_dev), PROXY_ARP_PVLAN)
 #define IN_DEV_SHARED_MEDIA(in_dev)	IN_DEV_ORCONF((in_dev), SHARED_MEDIA)
 #define IN_DEV_TX_REDIRECTS(in_dev)	IN_DEV_ORCONF((in_dev), SEND_REDIRECTS)
 #define IN_DEV_SEC_REDIRECTS(in_dev)	IN_DEV_ORCONF((in_dev), \
Signature · 1 line
2.27.0
author maintainer
#104 lore raw

PATCH 100/717 ASoC: arizona: Fix a wrong free in wm8997_probe

In reply to Greg Kroah-Hartman

From: Zhang Qilong <[email protected]>

[ Upstream commit 5e7aace13df24ff72511f29c14ebbfe638ef733c ]

In the normal path, we should not free the arizona, we should return immediately. It will be free when call remove operation.

---
 sound/soc/codecs/wm8997.c | 2 ++
 1 file changed, 2 insertions(+)
sound/soc/codecs/wm8997.c +2 -0
index 37e4bb3dbd8a9..229f2986cd96b 100644
@@ -1177,6 +1177,8 @@ static int wm8997_probe(struct platform_device *pdev)
 		goto err_spk_irqs;
 	}
 
+	return ret;
+
 err_spk_irqs:
 	arizona_free_spk_irqs(arizona);
 
Signature · 1 line
2.27.0
author maintainer
#105 lore raw

PATCH 101/717 RDMa/mthca: Work around -Wenum-conversion warning

In reply to Greg Kroah-Hartman

From: Arnd Bergmann <[email protected]>

[ Upstream commit fbb7dc5db6dee553b5a07c27e86364a5223e244c ]

gcc points out a suspicious mixing of enum types in a function that converts from MTHCA_OPCODE_* values to IB_WC_* values:

drivers/infiniband/hw/mthca/mthca_cq.c: In function 'mthca_poll_one':
drivers/infiniband/hw/mthca/mthca_cq.c:607:21: warning: implicit conversion from 'enum <anonymous>' to 'enum ib_wc_opcode' [-Wenum-conversion]
607 | entry->opcode = MTHCA_OPCODE_INVALID;

Nothing seems to ever check for MTHCA_OPCODE_INVALID again, no idea if this is meaningful, but it seems harmless as it deals with an invalid input.

Remove MTHCA_OPCODE_INVALID and set the ib_wc_opcode to 0xFF, which is still bogus, but at least doesn't make compiler warnings.

Fixes 2a4443a69934 ("[PATCH] IB/mthca: fill in opcode field for send completions")
---
 drivers/infiniband/hw/mthca/mthca_cq.c  | 2 +-
 drivers/infiniband/hw/mthca/mthca_dev.h | 1 -
 2 files changed, 1 insertion(+), 2 deletions(-)
drivers/infiniband/hw/mthca/mthca_cq.c +1 -1
index 119b2573c9a08..26c3408dcacae 100644
@@ -604,7 +604,7 @@ static inline int mthca_poll_one(struct mthca_dev *dev,
 			entry->byte_len  = MTHCA_ATOMIC_BYTE_LEN;
 			break;
 		default:
-			entry->opcode    = MTHCA_OPCODE_INVALID;
+			entry->opcode = 0xFF;
 			break;
 		}
 	} else {
drivers/infiniband/hw/mthca/mthca_dev.h +0 -1
index 9dbbf4d16796a..a445160de3e16 100644
@@ -105,7 +105,6 @@ enum {
 	MTHCA_OPCODE_ATOMIC_CS      = 0x11,
 	MTHCA_OPCODE_ATOMIC_FA      = 0x12,
 	MTHCA_OPCODE_BIND_MW        = 0x18,
-	MTHCA_OPCODE_INVALID        = 0xff
 };
 
 enum {
Signature · 1 line
2.27.0
author maintainer
#106 lore raw

PATCH 102/717 ASoC: SOF: Intel: fix Kconfig dependency for SND_INTEL_DSP_CONFIG

In reply to Greg Kroah-Hartman

From: Pierre-Louis Bossart <[email protected]>

[ Upstream commit 358f0ac1f2791c80c19cc26706cf34664c9fd756 ]

SND_INTEL_DSP_CONFIG is selected by the HDaudio, Skylake and SOF drivers. When the HDaudio link is not selected as a option, this Kconfig option is not touched and will default to whatever other drivers selected. In the case e.g. where HDaudio is compiled as built-in, the linker will complain:

ld: sound/soc/sof/sof-pci-dev.o: in function `sof_pci_probe':
sof-pci-dev.c:(.text+0x5c): undefined reference to `snd_intel_dsp_driver_probe'

Adding the select for all HDaudio platforms, regardless of whether they rely on the HDaudio link or not, solves the problem.

---
 sound/soc/sof/intel/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
sound/soc/sof/intel/Kconfig +1 -1
index a066e08860cbf..5bfc2f8b13b90 100644
@@ -271,6 +271,7 @@ config SND_SOC_SOF_JASPERLAKE
 
 config SND_SOC_SOF_HDA_COMMON
 	tristate
+	select SND_INTEL_DSP_CONFIG
 	select SND_SOC_SOF_INTEL_COMMON
 	select SND_SOC_SOF_HDA_LINK_BASELINE
 	help
@@ -330,7 +331,6 @@ config SND_SOC_SOF_HDA
 	tristate
 	select SND_HDA_EXT_CORE if SND_SOC_SOF_HDA_LINK
 	select SND_SOC_HDAC_HDA if SND_SOC_SOF_HDA_AUDIO_CODEC
-	select SND_INTEL_DSP_CONFIG
 	help
 	  This option is not user-selectable but automagically handled by
 	  'select' statements at a higher level
Signature · 1 line
2.27.0
author maintainer
#107 lore raw

PATCH 103/717 arm64: dts: ti: k3-am65*/j721e*: Fix unit address format error for dss node

In reply to Greg Kroah-Hartman

From: Nishanth Menon <[email protected]>

[ Upstream commit cfbf17e69ae82f647c287366b7573e532fc281ee ]

Fix the node address to follow the device tree convention.

This fixes the dtc warning:
<stdout>: Warning (simple_bus_reg): /bus@100000/dss@04a00000: simple-bus unit address format error, expected "4a00000"

Fixes 76921f15acc0 ("arm64: dts: ti: k3-j721e-main: Add DSS node")
Fixes fc539b90eda2 ("arm64: dts: ti: am654: Add DSS node")
Cc Jyri Sarha <[email protected]>
Cc Tomi Valkeinen <[email protected]>
---
 arch/arm64/boot/dts/ti/k3-am65-main.dtsi  | 2 +-
 arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
arch/arm64/boot/dts/ti/k3-am65-main.dtsi +1 -1
index 533525229a8db..27f6fd9eaa0ab 100644
@@ -834,7 +834,7 @@
 		};
 	};
 
-	dss: dss@04a00000 {
+	dss: dss@4a00000 {
 		compatible = "ti,am65x-dss";
 		reg =	<0x0 0x04a00000 0x0 0x1000>, /* common */
 			<0x0 0x04a02000 0x0 0x1000>, /* vidl1 */
arch/arm64/boot/dts/ti/k3-j721e-main.dtsi +1 -1
index e2a96b2c423c4..c66ded9079be4 100644
@@ -1278,7 +1278,7 @@
 		};
 	};
 
-	dss: dss@04a00000 {
+	dss: dss@4a00000 {
 		compatible = "ti,j721e-dss";
 		reg =
 			<0x00 0x04a00000 0x00 0x10000>, /* common_m */
Signature · 1 line
2.27.0
author maintainer
#108 lore raw

PATCH 104/717 MIPS: BCM47XX: fix kconfig dependency bug for BCM47XX_BCMA

In reply to Greg Kroah-Hartman

From: Necip Fazil Yildiran <[email protected]>

[ Upstream commit 3a5fe2fb9635c43359c9729352f45044f3c8df6b ]

When BCM47XX_BCMA is enabled and BCMA_DRIVER_PCI is disabled, it results in the following Kbuild warning:

WARNING: unmet direct dependencies detected for BCMA_DRIVER_PCI_HOSTMODE
Depends on [n]: MIPS [=y] && BCMA_DRIVER_PCI [=n] && PCI_DRIVERS_LEGACY [=y] && BCMA [=y]=y Selected by [y]:
- BCM47XX_BCMA [=y] && BCM47XX [=y] && PCI [=y]

The reason is that BCM47XX_BCMA selects BCMA_DRIVER_PCI_HOSTMODE without depending on or selecting BCMA_DRIVER_PCI while BCMA_DRIVER_PCI_HOSTMODE depends on BCMA_DRIVER_PCI. This can also fail building the kernel.

Honor the kconfig dependency to remove unmet direct dependency warnings and avoid any potential build failures.

---
 arch/mips/bcm47xx/Kconfig | 1 +
 1 file changed, 1 insertion(+)
arch/mips/bcm47xx/Kconfig +1 -0
index 6889f74e06f54..490bb6da74b7e 100644
@@ -27,6 +27,7 @@ config BCM47XX_BCMA
 	select BCMA
 	select BCMA_HOST_SOC
 	select BCMA_DRIVER_MIPS
+	select BCMA_DRIVER_PCI if PCI
 	select BCMA_DRIVER_PCI_HOSTMODE if PCI
 	select BCMA_DRIVER_GPIO
 	default y
Signature · 1 line
2.27.0
author maintainer
#109 lore raw

PATCH 105/717 drm/amdgpu: fix compute queue priority if num_kcq is less than 4

In reply to Greg Kroah-Hartman

From: Nirmoy Das <[email protected]>

[ Upstream commit 3f66bf401e9fde1c35bb8b02dd7975659c40411d ]

Compute queues are configurable with module param, num_kcq. amdgpu_gfx_is_high_priority_compute_queue was setting 1st 4 queues to high priority queue leaving a null drm scheduler in adev->gpu_sched[hw_ip]["normal_prio"].sched if num_kcq < 5.

This patch tries to fix it by alternating compute queue priority between normal and high priority.

Fixes 33abcb1f5a1719b1c (drm/amdgpu: set compute queue priority at mqd_init)
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 10 +++++++---
 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h |  2 +-
 drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c  |  6 ++++--
 drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c   |  6 ++++--
 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c   |  7 +++++--
 5 files changed, 21 insertions(+), 10 deletions(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +7 -3
index 8c9bacfdbc300..c485ec86804e5 100644
@@ -193,10 +193,14 @@ static bool amdgpu_gfx_is_multipipe_capable(struct amdgpu_device *adev)
 }
 
 bool amdgpu_gfx_is_high_priority_compute_queue(struct amdgpu_device *adev,
-					       int queue)
+					       int pipe, int queue)
 {
-	/* Policy: make queue 0 of each pipe as high priority compute queue */
-	return (queue == 0);
+	bool multipipe_policy = amdgpu_gfx_is_multipipe_capable(adev);
+	int cond;
+	/* Policy: alternate between normal and high priority */
+	cond = multipipe_policy ? pipe : queue;
+
+	return ((cond % 2) != 0);
 
 }
 
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h +1 -1
index 258498cbf1eba..f353a5b71804e 100644
@@ -373,7 +373,7 @@ void amdgpu_queue_mask_bit_to_mec_queue(struct amdgpu_device *adev, int bit,
 bool amdgpu_gfx_is_mec_queue_enabled(struct amdgpu_device *adev, int mec,
 				     int pipe, int queue);
 bool amdgpu_gfx_is_high_priority_compute_queue(struct amdgpu_device *adev,
-					       int queue);
+					       int pipe, int queue);
 int amdgpu_gfx_me_queue_to_bit(struct amdgpu_device *adev, int me,
 			       int pipe, int queue);
 void amdgpu_gfx_bit_to_me_queue(struct amdgpu_device *adev, int bit,
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +4 -2
index 55f4b8c3b9338..4ebb43e090999 100644
@@ -4334,7 +4334,8 @@ static int gfx_v10_0_compute_ring_init(struct amdgpu_device *adev, int ring_id,
 	irq_type = AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE0_EOP
 		+ ((ring->me - 1) * adev->gfx.mec.num_pipe_per_mec)
 		+ ring->pipe;
-	hw_prio = amdgpu_gfx_is_high_priority_compute_queue(adev, ring->queue) ?
+	hw_prio = amdgpu_gfx_is_high_priority_compute_queue(adev, ring->pipe,
+							    ring->queue) ?
 			AMDGPU_GFX_PIPE_PRIO_HIGH : AMDGPU_GFX_PIPE_PRIO_NORMAL;
 	/* type-2 packets are deprecated on MEC, use type-3 instead */
 	r = amdgpu_ring_init(adev, ring, 1024,
@@ -6360,7 +6361,8 @@ static void gfx_v10_0_compute_mqd_set_priority(struct amdgpu_ring *ring, struct
 	struct amdgpu_device *adev = ring->adev;
 
 	if (ring->funcs->type == AMDGPU_RING_TYPE_COMPUTE) {
-		if (amdgpu_gfx_is_high_priority_compute_queue(adev, ring->queue)) {
+		if (amdgpu_gfx_is_high_priority_compute_queue(adev, ring->pipe,
+							      ring->queue)) {
 			mqd->cp_hqd_pipe_priority = AMDGPU_GFX_PIPE_PRIO_HIGH;
 			mqd->cp_hqd_queue_priority =
 				AMDGPU_GFX_QUEUE_PRIORITY_MAXIMUM;
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +4 -2
index 94b7e0531d092..c36258d56b445 100644
@@ -1915,7 +1915,8 @@ static int gfx_v8_0_compute_ring_init(struct amdgpu_device *adev, int ring_id,
 		+ ((ring->me - 1) * adev->gfx.mec.num_pipe_per_mec)
 		+ ring->pipe;
 
-	hw_prio = amdgpu_gfx_is_high_priority_compute_queue(adev, ring->queue) ?
+	hw_prio = amdgpu_gfx_is_high_priority_compute_queue(adev, ring->pipe,
+							    ring->queue) ?
 			AMDGPU_GFX_PIPE_PRIO_HIGH : AMDGPU_RING_PRIO_DEFAULT;
 	/* type-2 packets are deprecated on MEC, use type-3 instead */
 	r = amdgpu_ring_init(adev, ring, 1024,
@@ -4433,7 +4434,8 @@ static void gfx_v8_0_mqd_set_priority(struct amdgpu_ring *ring, struct vi_mqd *m
 	struct amdgpu_device *adev = ring->adev;
 
 	if (ring->funcs->type == AMDGPU_RING_TYPE_COMPUTE) {
-		if (amdgpu_gfx_is_high_priority_compute_queue(adev, ring->queue)) {
+		if (amdgpu_gfx_is_high_priority_compute_queue(adev, ring->pipe,
+							      ring->queue)) {
 			mqd->cp_hqd_pipe_priority = AMDGPU_GFX_PIPE_PRIO_HIGH;
 			mqd->cp_hqd_queue_priority =
 				AMDGPU_GFX_QUEUE_PRIORITY_MAXIMUM;
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +5 -2
index 0d8e203b10efb..957c12b727676 100644
@@ -2228,7 +2228,8 @@ static int gfx_v9_0_compute_ring_init(struct amdgpu_device *adev, int ring_id,
 	irq_type = AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE0_EOP
 		+ ((ring->me - 1) * adev->gfx.mec.num_pipe_per_mec)
 		+ ring->pipe;
-	hw_prio = amdgpu_gfx_is_high_priority_compute_queue(adev, ring->queue) ?
+	hw_prio = amdgpu_gfx_is_high_priority_compute_queue(adev, ring->pipe,
+							    ring->queue) ?
 			AMDGPU_GFX_PIPE_PRIO_HIGH : AMDGPU_GFX_PIPE_PRIO_NORMAL;
 	/* type-2 packets are deprecated on MEC, use type-3 instead */
 	return amdgpu_ring_init(adev, ring, 1024,
@@ -3383,7 +3384,9 @@ static void gfx_v9_0_mqd_set_priority(struct amdgpu_ring *ring, struct v9_mqd *m
 	struct amdgpu_device *adev = ring->adev;
 
 	if (ring->funcs->type == AMDGPU_RING_TYPE_COMPUTE) {
-		if (amdgpu_gfx_is_high_priority_compute_queue(adev, ring->queue)) {
+		if (amdgpu_gfx_is_high_priority_compute_queue(adev,
+							      ring->pipe,
+							      ring->queue)) {
 			mqd->cp_hqd_pipe_priority = AMDGPU_GFX_PIPE_PRIO_HIGH;
 			mqd->cp_hqd_queue_priority =
 				AMDGPU_GFX_QUEUE_PRIORITY_MAXIMUM;
Signature · 1 line
2.27.0
author maintainer
#110 lore raw

PATCH 106/717 soc: ti: omap-prm: Do not check rstst bit on deassert if already deasserted

In reply to Greg Kroah-Hartman

From: Tony Lindgren <[email protected]>

[ Upstream commit c1995e5afaf6abf3922b5395ad1f4096951e3276 ]

If a rstctrl reset bit is already deasserted, we can just bail out early not wait for rstst to clear. Otherwise we can have deassert fail for already deasserted resets.

Fixes c5117a78dd88 ("soc: ti: omap-prm: poll for reset complete during de-assert")
---
 drivers/soc/ti/omap_prm.c | 4 ++++
 1 file changed, 4 insertions(+)
drivers/soc/ti/omap_prm.c +4 -0
index 980b04c38fd94..4d41dc3cdce1f 100644
@@ -484,6 +484,10 @@ static int omap_reset_deassert(struct reset_controller_dev *rcdev,
 	struct ti_prm_platform_data *pdata = dev_get_platdata(reset->dev);
 	int ret = 0;
 
+	/* Nothing to do if the reset is already deasserted */
+	if (!omap_reset_status(rcdev, id))
+		return 0;
+
 	has_rstst = reset->prm->data->rstst ||
 		(reset->prm->data->flags & OMAP_PRM_HAS_RSTST);
 
Signature · 1 line
2.27.0
author maintainer
#111 lore raw

PATCH 107/717 crypto: Kconfig - CRYPTO_MANAGER_EXTRA_TESTS requires the manager

In reply to Greg Kroah-Hartman

From: Jason A. Donenfeld <[email protected]>

[ Upstream commit 6569e3097f1c4a490bdf2b23d326855e04942dfd ]

The extra tests in the manager actually require the manager to be selected too. Otherwise the linker gives errors like:

ld: arch/x86/crypto/chacha_glue.o: in function `chacha_simd_stream_xor':
chacha_glue.c:(.text+0x422): undefined reference to `crypto_simd_disabled_for_test'

Fixes 2343d1529aff ("crypto: Kconfig - allow tests to be disabled when manager is disabled")
---
 crypto/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
crypto/Kconfig +1 -1
index 094ef56ab7b42..37de7d006858d 100644
@@ -145,7 +145,7 @@ config CRYPTO_MANAGER_DISABLE_TESTS
 
 config CRYPTO_MANAGER_EXTRA_TESTS
 	bool "Enable extra run-time crypto self tests"
-	depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS
+	depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS && CRYPTO_MANAGER
 	help
 	  Enable extra run-time self tests of registered crypto algorithms,
 	  including randomized fuzz tests.
Signature · 1 line
2.27.0
author maintainer
#112 lore raw

PATCH 108/717 crypto: qat - fix status check in qat_hal_put_rel_rd_xfer()

In reply to Greg Kroah-Hartman

From: Jack Xu <[email protected]>

[ Upstream commit 3b5c130fb2e4c045369791c33c83b59f6e84f7d6 ]

The return value of qat_hal_rd_ae_csr() is always a CSR value and never a status and should not be stored in the status variable of qat_hal_put_rel_rd_xfer().

This removes the assignment as qat_hal_rd_ae_csr() is not expected to fail.
A more comprehensive handling of the theoretical corner case which could result in a fail will be submitted in a separate patch.

Fixes 8c9478a400b7 ("crypto: qat - reduce stack size with KASAN")
---
 drivers/crypto/qat/qat_common/qat_hal.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/crypto/qat/qat_common/qat_hal.c +1 -1
index 6b9d47682d04d..52ef80efeddc6 100644
@@ -1146,7 +1146,7 @@ static int qat_hal_put_rel_rd_xfer(struct icp_qat_fw_loader_handle *handle,
 	unsigned short mask;
 	unsigned short dr_offset = 0x10;
 
-	status = ctx_enables = qat_hal_rd_ae_csr(handle, ae, CTX_ENABLES);
+	ctx_enables = qat_hal_rd_ae_csr(handle, ae, CTX_ENABLES);
 	if (CE_INUSE_CONTEXTS & ctx_enables) {
 		if (ctx & 0x1) {
 			pr_err("QAT: bad 4-ctx mode,ctx=0x%x\n", ctx);
Signature · 1 line
2.27.0
author maintainer
#113 lore raw

PATCH 109/717 firmware: arm_scmi: Fix missing destroy_workqueue()

In reply to Greg Kroah-Hartman

From: Qinglang Miao <[email protected]>

[ Upstream commit 6bbdb46c4b1bd57839c9c0a110bd81b0be0a4046 ]

destroy_workqueue is required before the return from scmi_notification_init in case devm_kcalloc fails to allocate registered_protocols. Fix this by simply moving registered_protocols allocation before alloc_workqueue.

Fixes bd31b249692e ("firmware: arm_scmi: Add notification dispatch and delivery")
---
 drivers/firmware/arm_scmi/notify.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
drivers/firmware/arm_scmi/notify.c +5 -5
index ce336899d6366..66196b293b6c2 100644
@@ -1474,17 +1474,17 @@ int scmi_notification_init(struct scmi_handle *handle)
 	ni->gid = gid;
 	ni->handle = handle;
 
+	ni->registered_protocols = devm_kcalloc(handle->dev, SCMI_MAX_PROTO,
+						sizeof(char *), GFP_KERNEL);
+	if (!ni->registered_protocols)
+		goto err;
+
 	ni->notify_wq = alloc_workqueue(dev_name(handle->dev),
 					WQ_UNBOUND | WQ_FREEZABLE | WQ_SYSFS,
 					0);
 	if (!ni->notify_wq)
 		goto err;
 
-	ni->registered_protocols = devm_kcalloc(handle->dev, SCMI_MAX_PROTO,
-						sizeof(char *), GFP_KERNEL);
-	if (!ni->registered_protocols)
-		goto err;
-
 	mutex_init(&ni->pending_mtx);
 	hash_init(ni->pending_events_handlers);
 
Signature · 1 line
2.27.0
author maintainer
#114 lore raw

PATCH 110/717 drm/udl: Fix missing error code in udl_handle_damage()

In reply to Greg Kroah-Hartman

From: Dan Carpenter <[email protected]>

[ Upstream commit a7319c8f50c5e93a12997e2d0821a2f7946fb734 ]

If udl_get_urb() fails then this should return a negative error code but currently it returns success.

Fixes 798ce3fe1c3a ("drm/udl: Begin/end access to imported buffers in damage-handler")
---
 drivers/gpu/drm/udl/udl_modeset.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/gpu/drm/udl/udl_modeset.c +3 -1
index fef43f4e3bac4..edcfd8c120c44 100644
@@ -303,8 +303,10 @@ static int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
 	}
 
 	urb = udl_get_urb(dev);
-	if (!urb)
+	if (!urb) {
+		ret = -ENOMEM;
 		goto out_drm_gem_shmem_vunmap;
+	}
 	cmd = urb->transfer_buffer;
 
 	for (i = clip.y1; i < clip.y2; i++) {
Signature · 1 line
2.27.0
author maintainer
#115 lore raw

PATCH 111/717 staging: greybus: codecs: Fix reference counter leak in error handling

In reply to Greg Kroah-Hartman

From: Zhang Qilong <[email protected]>

[ Upstream commit 3952659a6108f77a0d062d8e8487bdbdaf52a66c ]

gb_pm_runtime_get_sync has increased the usage counter of the device here. Forgetting to call gb_pm_runtime_put_noidle will result in usage counter leak in the error branch of (gbcodec_hw_params and gbcodec_prepare). We fixed it by adding it.

Fixes c388ae7696992 ("greybus: audio: Update pm runtime support in dai_ops callback")
---
 drivers/staging/greybus/audio_codec.c | 2 ++
 1 file changed, 2 insertions(+)
drivers/staging/greybus/audio_codec.c +2 -0
index 494aa823e9984..42ce6c88ea753 100644
@@ -490,6 +490,7 @@ static int gbcodec_hw_params(struct snd_pcm_substream *substream,
 	if (ret) {
 		dev_err_ratelimited(dai->dev, "%d: Error during set_config\n",
 				    ret);
+		gb_pm_runtime_put_noidle(bundle);
 		mutex_unlock(&codec->lock);
 		return ret;
 	}
@@ -566,6 +567,7 @@ static int gbcodec_prepare(struct snd_pcm_substream *substream,
 		break;
 	}
 	if (ret) {
+		gb_pm_runtime_put_noidle(bundle);
 		mutex_unlock(&codec->lock);
 		dev_err_ratelimited(dai->dev, "set_data_size failed:%d\n",
 				    ret);
Signature · 1 line
2.27.0
author maintainer
#116 lore raw

PATCH 112/717 staging: gasket: interrupt: fix the missed eventfd_ctx_put() in gasket_interrupt.c

In reply to Greg Kroah-Hartman

From: Jing Xiangfeng <[email protected]>

[ Upstream commit ab5b769a23af12a675b9f3d7dd529250c527f5ac ]

gasket_interrupt_set_eventfd() misses to call eventfd_ctx_put() in an error path. We check interrupt is valid before calling eventfd_ctx_fdget() to fix it.

There is the same issue in gasket_interrupt_clear_eventfd(), Add the missed function call to fix it.

Fixes 9a69f5087ccc ("drivers/staging: Gasket driver framework + Apex driver")
---
 drivers/staging/gasket/gasket_interrupt.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)
drivers/staging/gasket/gasket_interrupt.c +10 -5
index 2d6195f7300e9..864342acfd86e 100644
@@ -487,14 +487,16 @@ int gasket_interrupt_system_status(struct gasket_dev *gasket_dev)
 int gasket_interrupt_set_eventfd(struct gasket_interrupt_data *interrupt_data,
 				 int interrupt, int event_fd)
 {
-	struct eventfd_ctx *ctx = eventfd_ctx_fdget(event_fd);
-
-	if (IS_ERR(ctx))
-		return PTR_ERR(ctx);
+	struct eventfd_ctx *ctx;
 
 	if (interrupt < 0 || interrupt >= interrupt_data->num_interrupts)
 		return -EINVAL;
 
+	ctx = eventfd_ctx_fdget(event_fd);
+
+	if (IS_ERR(ctx))
+		return PTR_ERR(ctx);
+
 	interrupt_data->eventfd_ctxs[interrupt] = ctx;
 	return 0;
 }
@@ -505,6 +507,9 @@ int gasket_interrupt_clear_eventfd(struct gasket_interrupt_data *interrupt_data,
 	if (interrupt < 0 || interrupt >= interrupt_data->num_interrupts)
 		return -EINVAL;
 
-	interrupt_data->eventfd_ctxs[interrupt] = NULL;
+	if (interrupt_data->eventfd_ctxs[interrupt]) {
+		eventfd_ctx_put(interrupt_data->eventfd_ctxs[interrupt]);
+		interrupt_data->eventfd_ctxs[interrupt] = NULL;
+	}
 	return 0;
 }
Signature · 1 line
2.27.0
author maintainer
#117 lore raw

PATCH 113/717 scripts: kernel-doc: Restore anonymous enum parsing

In reply to Greg Kroah-Hartman

From: Andy Shevchenko <[email protected]>

[ Upstream commit ae5b17e464146ddb8fee744fa2150922d6072916 ]

The commit d38c8cfb0571 ("scripts: kernel-doc: add support for typedef enum") broke anonymous enum parsing. Restore it by relying on members rather than its name.

Fixes d38c8cfb0571 ("scripts: kernel-doc: add support for typedef enum")
Cc Mauro Carvalho Chehab <[email protected]>
---
 scripts/kernel-doc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
scripts/kernel-doc +1 -1
index f699cf05d4098..9b6ddeb097e93 100755
@@ -1390,7 +1390,7 @@ sub dump_enum($$) {
 	$members = $2;
     }
 
-    if ($declaration_name) {
+    if ($members) {
 	my %_members;
 
 	$members =~ s/\s+$//;
Signature · 1 line
2.27.0
author maintainer
#118 lore raw

PATCH 114/717 drm/amdkfd: Put ACPI table after using it

In reply to Greg Kroah-Hartman

From: Hanjun Guo <[email protected]>

[ Upstream commit c4cb773c702be5519442c8375a6476d08fe2cb46 ]

The acpi_get_table() should be coupled with acpi_put_table() if the mapped table is not used at runtime to release the table mapping which can prevent the memory leak.

In kfd_create_crat_image_acpi(), crat_table is copied to pcrat_image, and in kfd_create_vcrat_image_cpu(), the acpi_table is only used to get the OEM information, so those two table mappings need to be released after using it.

Fixes 174de876d6d0 ("drm/amdkfd: Group up CRAT related functions")
Fixes 520b8fb755cc ("drm/amdkfd: Add topology support for CPUs")
---
 drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)
drivers/gpu/drm/amd/amdkfd/kfd_crat.c +9 -4
index 3de5e14c5ae31..d7f67620f57ba 100644
@@ -774,6 +774,7 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
 	struct acpi_table_header *crat_table;
 	acpi_status status;
 	void *pcrat_image;
+	int rc = 0;
 
 	if (!crat_image)
 		return -EINVAL;
@@ -798,14 +799,17 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
 	}
 
 	pcrat_image = kvmalloc(crat_table->length, GFP_KERNEL);
-	if (!pcrat_image)
-		return -ENOMEM;
+	if (!pcrat_image) {
+		rc = -ENOMEM;
+		goto out;
+	}
 
 	memcpy(pcrat_image, crat_table, crat_table->length);
 	*crat_image = pcrat_image;
 	*size = crat_table->length;
-
-	return 0;
+out:
+	acpi_put_table(crat_table);
+	return rc;
 }
 
 /* Memory required to create Virtual CRAT.
@@ -988,6 +992,7 @@ static int kfd_create_vcrat_image_cpu(void *pcrat_image, size_t *size)
 				CRAT_OEMID_LENGTH);
 		memcpy(crat_table->oem_table_id, acpi_table->oem_table_id,
 				CRAT_OEMTABLEID_LENGTH);
+		acpi_put_table(acpi_table);
 	}
 	crat_table->total_entries = 0;
 	crat_table->num_domains = 0;
Signature · 1 line
2.27.0
author maintainer
#119 lore raw

PATCH 115/717 ionic: use mc sync for multicast filters

In reply to Greg Kroah-Hartman

From: Shannon Nelson <[email protected]>

[ Upstream commit e0243e1966592859da4c6ffe6d43e1576ec3c457 ]

We should be using the multicast sync routines for the multicast filters. Also, let's just flatten the logic a bit and pull the small unicast routine back into ionic_set_rx_mode().

Fixes 1800eee16676 ("net: ionic: Replace in_interrupt() usage.")
---
 .../net/ethernet/pensando/ionic/ionic_lif.c   | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)
drivers/net/ethernet/pensando/ionic/ionic_lif.c +8 -11
index a12df3946a07c..724df18400165 100644
@@ -1149,15 +1149,6 @@ static void _ionic_lif_rx_mode(struct ionic_lif *lif, unsigned int rx_mode,
 	}
 }
 
-static void ionic_dev_uc_sync(struct net_device *netdev, bool from_ndo)
-{
-	if (from_ndo)
-		__dev_uc_sync(netdev, ionic_ndo_addr_add, ionic_ndo_addr_del);
-	else
-		__dev_uc_sync(netdev, ionic_addr_add, ionic_addr_del);
-
-}
-
 static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo)
 {
 	struct ionic_lif *lif = netdev_priv(netdev);
@@ -1177,7 +1168,10 @@ static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo)
 	 *       we remove our overflow flag and check the netdev flags
 	 *       to see if we can disable NIC PROMISC
 	 */
-	ionic_dev_uc_sync(netdev, from_ndo);
+	if (from_ndo)
+		__dev_uc_sync(netdev, ionic_ndo_addr_add, ionic_ndo_addr_del);
+	else
+		__dev_uc_sync(netdev, ionic_addr_add, ionic_addr_del);
 	nfilters = le32_to_cpu(lif->identity->eth.max_ucast_filters);
 	if (netdev_uc_count(netdev) + 1 > nfilters) {
 		rx_mode |= IONIC_RX_MODE_F_PROMISC;
@@ -1189,7 +1183,10 @@ static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo)
 	}
 
 	/* same for multicast */
-	ionic_dev_uc_sync(netdev, from_ndo);
+	if (from_ndo)
+		__dev_mc_sync(netdev, ionic_ndo_addr_add, ionic_ndo_addr_del);
+	else
+		__dev_mc_sync(netdev, ionic_addr_add, ionic_addr_del);
 	nfilters = le32_to_cpu(lif->identity->eth.max_mcast_filters);
 	if (netdev_mc_count(netdev) > nfilters) {
 		rx_mode |= IONIC_RX_MODE_F_ALLMULTI;
Signature · 1 line
2.27.0
author maintainer
#120 lore raw

PATCH 116/717 ionic: flatten calls to ionic_lif_rx_mode

In reply to Greg Kroah-Hartman

From: Shannon Nelson <[email protected]>

[ Upstream commit e94f76bb206333efcd0c02da5dbb142518c941a2 ]

The _ionic_lif_rx_mode() is only used once and really doesn't need to be broken out.

---
 .../net/ethernet/pensando/ionic/ionic_lif.c   | 38 ++++++++-----------
 1 file changed, 16 insertions(+), 22 deletions(-)
drivers/net/ethernet/pensando/ionic/ionic_lif.c +16 -22
index 724df18400165..7ad9f0cc1af66 100644
@@ -1129,29 +1129,10 @@ static void ionic_lif_rx_mode(struct ionic_lif *lif, unsigned int rx_mode)
 		lif->rx_mode = rx_mode;
 }
 
-static void _ionic_lif_rx_mode(struct ionic_lif *lif, unsigned int rx_mode,
-			       bool from_ndo)
-{
-	struct ionic_deferred_work *work;
-
-	if (from_ndo) {
-		work = kzalloc(sizeof(*work), GFP_ATOMIC);
-		if (!work) {
-			netdev_err(lif->netdev, "%s OOM\n", __func__);
-			return;
-		}
-		work->type = IONIC_DW_TYPE_RX_MODE;
-		work->rx_mode = rx_mode;
-		netdev_dbg(lif->netdev, "deferred: rx_mode\n");
-		ionic_lif_deferred_enqueue(&lif->deferred, work);
-	} else {
-		ionic_lif_rx_mode(lif, rx_mode);
-	}
-}
-
 static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo)
 {
 	struct ionic_lif *lif = netdev_priv(netdev);
+	struct ionic_deferred_work *work;
 	unsigned int nfilters;
 	unsigned int rx_mode;
 
@@ -1197,8 +1178,21 @@ static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo)
 			rx_mode &= ~IONIC_RX_MODE_F_ALLMULTI;
 	}
 
-	if (lif->rx_mode != rx_mode)
-		_ionic_lif_rx_mode(lif, rx_mode, from_ndo);
+	if (lif->rx_mode != rx_mode) {
+		if (from_ndo) {
+			work = kzalloc(sizeof(*work), GFP_ATOMIC);
+			if (!work) {
+				netdev_err(lif->netdev, "%s OOM\n", __func__);
+				return;
+			}
+			work->type = IONIC_DW_TYPE_RX_MODE;
+			work->rx_mode = rx_mode;
+			netdev_dbg(lif->netdev, "deferred: rx_mode\n");
+			ionic_lif_deferred_enqueue(&lif->deferred, work);
+		} else {
+			ionic_lif_rx_mode(lif, rx_mode);
+		}
+	}
 }
 
 static void ionic_ndo_set_rx_mode(struct net_device *netdev)
Signature · 1 line
2.27.0
author maintainer
#121 lore raw

PATCH 117/717 ionic: change set_rx_mode from_ndo to can_sleep

In reply to Greg Kroah-Hartman

From: Shannon Nelson <[email protected]>

[ Upstream commit 81dbc24147f9250c186ae5875b3ed3136e9e293b ]

Instead of having two different ways of expressing the same sleepability concept, using opposite logic, we can rework the from_ndo to can_sleep for a more consistent usage.

Fixes 1800eee16676 ("net: ionic: Replace in_interrupt() usage.")
---
 .../net/ethernet/pensando/ionic/ionic_lif.c   | 20 +++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)
drivers/net/ethernet/pensando/ionic/ionic_lif.c +10 -10
index 7ad9f0cc1af66..c968c5c5a60a0 100644
@@ -1129,7 +1129,7 @@ static void ionic_lif_rx_mode(struct ionic_lif *lif, unsigned int rx_mode)
 		lif->rx_mode = rx_mode;
 }
 
-static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo)
+static void ionic_set_rx_mode(struct net_device *netdev, bool can_sleep)
 {
 	struct ionic_lif *lif = netdev_priv(netdev);
 	struct ionic_deferred_work *work;
@@ -1149,10 +1149,10 @@ static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo)
 	 *       we remove our overflow flag and check the netdev flags
 	 *       to see if we can disable NIC PROMISC
 	 */
-	if (from_ndo)
-		__dev_uc_sync(netdev, ionic_ndo_addr_add, ionic_ndo_addr_del);
-	else
+	if (can_sleep)
 		__dev_uc_sync(netdev, ionic_addr_add, ionic_addr_del);
+	else
+		__dev_uc_sync(netdev, ionic_ndo_addr_add, ionic_ndo_addr_del);
 	nfilters = le32_to_cpu(lif->identity->eth.max_ucast_filters);
 	if (netdev_uc_count(netdev) + 1 > nfilters) {
 		rx_mode |= IONIC_RX_MODE_F_PROMISC;
@@ -1164,10 +1164,10 @@ static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo)
 	}
 
 	/* same for multicast */
-	if (from_ndo)
-		__dev_mc_sync(netdev, ionic_ndo_addr_add, ionic_ndo_addr_del);
-	else
+	if (can_sleep)
 		__dev_mc_sync(netdev, ionic_addr_add, ionic_addr_del);
+	else
+		__dev_mc_sync(netdev, ionic_ndo_addr_add, ionic_ndo_addr_del);
 	nfilters = le32_to_cpu(lif->identity->eth.max_mcast_filters);
 	if (netdev_mc_count(netdev) > nfilters) {
 		rx_mode |= IONIC_RX_MODE_F_ALLMULTI;
@@ -1179,7 +1179,7 @@ static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo)
 	}
 
 	if (lif->rx_mode != rx_mode) {
-		if (from_ndo) {
+		if (!can_sleep) {
 			work = kzalloc(sizeof(*work), GFP_ATOMIC);
 			if (!work) {
 				netdev_err(lif->netdev, "%s OOM\n", __func__);
@@ -1197,7 +1197,7 @@ static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo)
 
 static void ionic_ndo_set_rx_mode(struct net_device *netdev)
 {
-	ionic_set_rx_mode(netdev, true);
+	ionic_set_rx_mode(netdev, false);
 }
 
 static __le64 ionic_netdev_features_to_nic(netdev_features_t features)
@@ -1764,7 +1764,7 @@ static int ionic_txrx_init(struct ionic_lif *lif)
 	if (lif->netdev->features & NETIF_F_RXHASH)
 		ionic_lif_rss_init(lif);
 
-	ionic_set_rx_mode(lif->netdev, false);
+	ionic_set_rx_mode(lif->netdev, true);
 
 	return 0;
 
Signature · 1 line
2.27.0
author maintainer
#122 lore raw

PATCH 118/717 media: tm6000: Fix sizeof() mismatches

In reply to Greg Kroah-Hartman

From: Colin Ian King <[email protected]>

[ Upstream commit a08ad6339e0441ca12533969ed94a87e3655426e ]

The are two instances of sizeof() being used incorrectly. The sizeof(void *) is incorrect because urb_buffer is a char ** pointer, fix this by using sizeof(*dev->urb_buffer). The sizeof(dma_addr_t *) is incorrect, it should be sizeof(*dev->urb_dma), which is a dma_addr_t and not a dma_addr_t *. This errors did not cause any issues because it just so happens the sizes are the same.

Addresses-Coverity: ("Sizeof not portable (SIZEOF_MISMATCH)")

Fixes 16427faf2867 ("[media] tm6000: Add parameter to keep urb bufs allocated")
---
 drivers/media/usb/tm6000/tm6000-video.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/media/usb/tm6000/tm6000-video.c +3 -2
index bfba06ea60e9d..2df736c029d6e 100644
@@ -461,11 +461,12 @@ static int tm6000_alloc_urb_buffers(struct tm6000_core *dev)
 	if (dev->urb_buffer)
 		return 0;
 
-	dev->urb_buffer = kmalloc_array(num_bufs, sizeof(void *), GFP_KERNEL);
+	dev->urb_buffer = kmalloc_array(num_bufs, sizeof(*dev->urb_buffer),
+					GFP_KERNEL);
 	if (!dev->urb_buffer)
 		return -ENOMEM;
 
-	dev->urb_dma = kmalloc_array(num_bufs, sizeof(dma_addr_t *),
+	dev->urb_dma = kmalloc_array(num_bufs, sizeof(*dev->urb_dma),
 				     GFP_KERNEL);
 	if (!dev->urb_dma)
 		return -ENOMEM;
Signature · 1 line
2.27.0
author maintainer
#123 lore raw

PATCH 119/717 media: platform: add missing put_device() call in mtk_jpeg_clk_init()

In reply to Greg Kroah-Hartman

From: Yu Kuai <[email protected]>

[ Upstream commit f28a81a3b64270da3588174feff4628c36e0ff4e ]

if of_find_device_by_node() succeeds, mtk_jpeg_clk_init() doesn't have a corresponding put_device(). Thus add put_device() to fix the exception handling for this function implementation.

Fixes 648372a87cee ("media: platform: Change the call functions of getting/enable/disable the jpeg's clock")
---
 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 1 +
 1 file changed, 1 insertion(+)
drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c +1 -0
index 227245ccaedc7..106543391c460 100644
@@ -1306,6 +1306,7 @@ static int mtk_jpeg_clk_init(struct mtk_jpeg_dev *jpeg)
 				jpeg->variant->clks);
 	if (ret) {
 		dev_err(&pdev->dev, "failed to get jpeg clock:%d\n", ret);
+		put_device(&pdev->dev);
 		return ret;
 	}
 
Signature · 1 line
2.27.0
author maintainer
#124 lore raw

PATCH 120/717 media: mtk-vcodec: add missing put_device() call in mtk_vcodec_init_dec_pm()

In reply to Greg Kroah-Hartman

From: Yu Kuai <[email protected]>

[ Upstream commit 5d4fa2c50125c9cda9e380d89268757cc5fa743d ]

if of_find_device_by_node() succeed, mtk_vcodec_init_dec_pm() doesn't have a corresponding put_device(). Thus add jump target to fix the exception handling for this function implementation.

Fixes 590577a4e525 ("[media] vcodec: mediatek: Add Mediatek V4L2 Video Decoder Driver")
---
 .../platform/mtk-vcodec/mtk_vcodec_dec_pm.c    | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)
drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c +12 -6
index 36dfe3fc056a4..f6a6b42865fbd 100644
@@ -47,11 +47,14 @@ int mtk_vcodec_init_dec_pm(struct mtk_vcodec_dev *mtkdev)
 		dec_clk->clk_info = devm_kcalloc(&pdev->dev,
 			dec_clk->clk_num, sizeof(*clk_info),
 			GFP_KERNEL);
-		if (!dec_clk->clk_info)
-			return -ENOMEM;
+		if (!dec_clk->clk_info) {
+			ret = -ENOMEM;
+			goto put_device;
+		}
 	} else {
 		mtk_v4l2_err("Failed to get vdec clock count");
-		return -EINVAL;
+		ret = -EINVAL;
+		goto put_device;
 	}
 
 	for (i = 0; i < dec_clk->clk_num; i++) {
@@ -60,19 +63,22 @@ int mtk_vcodec_init_dec_pm(struct mtk_vcodec_dev *mtkdev)
 			"clock-names", i, &clk_info->clk_name);
 		if (ret) {
 			mtk_v4l2_err("Failed to get clock name id = %d", i);
-			return ret;
+			goto put_device;
 		}
 		clk_info->vcodec_clk = devm_clk_get(&pdev->dev,
 			clk_info->clk_name);
 		if (IS_ERR(clk_info->vcodec_clk)) {
 			mtk_v4l2_err("devm_clk_get (%d)%s fail", i,
 				clk_info->clk_name);
-			return PTR_ERR(clk_info->vcodec_clk);
+			ret = PTR_ERR(clk_info->vcodec_clk);
+			goto put_device;
 		}
 	}
 
 	pm_runtime_enable(&pdev->dev);
-
+	return 0;
+put_device:
+	put_device(pm->larbvdec);
 	return ret;
 }
 
Signature · 1 line
2.27.0
author maintainer
#125 lore raw

PATCH 121/717 media: mtk-vcodec: add missing put_device() call in mtk_vcodec_release_dec_pm()

In reply to Greg Kroah-Hartman

From: Yu Kuai <[email protected]>

[ Upstream commit 27c3943683f74e35e1d390ceb2e3639eff616ad6 ]

mtk_vcodec_release_dec_pm() will be called in two places:

a. mtk_vcodec_init_dec_pm() succeed while mtk_vcodec_probe() return error. b. mtk_vcodec_dec_remove().

In both cases put_device() call is needed, since of_find_device_by_node() was called in mtk_vcodec_init_dec_pm() previously.

Thus add put_devices() call in mtk_vcodec_release_dec_pm()

Fixes 590577a4e525 ("[media] vcodec: mediatek: Add Mediatek V4L2 Video Decoder Driver")
---
 drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c | 1 +
 1 file changed, 1 insertion(+)
drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c +1 -0
index f6a6b42865fbd..ddee7046ce422 100644
@@ -85,6 +85,7 @@ put_device:
 void mtk_vcodec_release_dec_pm(struct mtk_vcodec_dev *dev)
 {
 	pm_runtime_disable(dev->pm.dev);
+	put_device(dev->pm.larbvdec);
 }
 
 void mtk_vcodec_dec_pw_on(struct mtk_vcodec_pm *pm)
Signature · 1 line
2.27.0
author maintainer
#126 lore raw

PATCH 122/717 media: mtk-vcodec: add missing put_device() call in mtk_vcodec_init_enc_pm()

In reply to Greg Kroah-Hartman

From: Yu Kuai <[email protected]>

[ Upstream commit 4affafd7bec7c65da31777f18bd20420f1aeb5f8 ]

if of_find_device_by_node() succeed, mtk_vcodec_init_enc_pm() doesn't have a corresponding put_device(). Thus add jump target to fix the exception handling for this function implementation.

Fixes 4e855a6efa54 ("[media] vcodec: mediatek: Add Mediatek V4L2 Video Encoder Driver")
---
 .../platform/mtk-vcodec/mtk_vcodec_enc_pm.c   | 26 ++++++++++++++-----
 1 file changed, 19 insertions(+), 7 deletions(-)
drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_pm.c +19 -7
index ee22902aaa71c..1a047c25679fa 100644
@@ -47,14 +47,16 @@ int mtk_vcodec_init_enc_pm(struct mtk_vcodec_dev *mtkdev)
 	node = of_parse_phandle(dev->of_node, "mediatek,larb", 1);
 	if (!node) {
 		mtk_v4l2_err("no mediatek,larb found");
-		return -ENODEV;
+		ret = -ENODEV;
+		goto put_larbvenc;
 	}
 
 	pdev = of_find_device_by_node(node);
 	of_node_put(node);
 	if (!pdev) {
 		mtk_v4l2_err("no mediatek,larb device found");
-		return -ENODEV;
+		ret = -ENODEV;
+		goto put_larbvenc;
 	}
 
 	pm->larbvenclt = &pdev->dev;
@@ -67,11 +69,14 @@ int mtk_vcodec_init_enc_pm(struct mtk_vcodec_dev *mtkdev)
 		enc_clk->clk_info = devm_kcalloc(&pdev->dev,
 			enc_clk->clk_num, sizeof(*clk_info),
 			GFP_KERNEL);
-		if (!enc_clk->clk_info)
-			return -ENOMEM;
+		if (!enc_clk->clk_info) {
+			ret = -ENOMEM;
+			goto put_larbvenclt;
+		}
 	} else {
 		mtk_v4l2_err("Failed to get venc clock count");
-		return -EINVAL;
+		ret = -EINVAL;
+		goto put_larbvenclt;
 	}
 
 	for (i = 0; i < enc_clk->clk_num; i++) {
@@ -80,17 +85,24 @@ int mtk_vcodec_init_enc_pm(struct mtk_vcodec_dev *mtkdev)
 			"clock-names", i, &clk_info->clk_name);
 		if (ret) {
 			mtk_v4l2_err("venc failed to get clk name %d", i);
-			return ret;
+			goto put_larbvenclt;
 		}
 		clk_info->vcodec_clk = devm_clk_get(&pdev->dev,
 			clk_info->clk_name);
 		if (IS_ERR(clk_info->vcodec_clk)) {
 			mtk_v4l2_err("venc devm_clk_get (%d)%s fail", i,
 				clk_info->clk_name);
-			return PTR_ERR(clk_info->vcodec_clk);
+			ret = PTR_ERR(clk_info->vcodec_clk);
+			goto put_larbvenclt;
 		}
 	}
 
+	return 0;
+
+put_larbvenclt:
+	put_device(pm->larbvenclt);
+put_larbvenc:
+	put_device(pm->larbvenc);
 	return ret;
 }
 
Signature · 1 line
2.27.0
author maintainer
#127 lore raw

PATCH 123/717 media: v4l2-fwnode: Return -EINVAL for invalid bus-type

In reply to Greg Kroah-Hartman

From: Lad Prabhakar <[email protected]>

[ Upstream commit 69baf338fc16a4d55c78da8874ce3f06feb38c78 ]

Return -EINVAL if invalid bus-type is detected while parsing endpoints.

Fixes 26c1126c9b56 ("media: v4l: fwnode: Use media bus type for bus parser selection")
---
 drivers/media/v4l2-core/v4l2-fwnode.c | 6 +++++-
 include/media/v4l2-mediabus.h         | 2 ++
 2 files changed, 7 insertions(+), 1 deletion(-)
drivers/media/v4l2-core/v4l2-fwnode.c +5 -1
index d7bbe33840cb4..dfc53d11053fc 100644
@@ -93,7 +93,7 @@ v4l2_fwnode_bus_type_to_mbus(enum v4l2_fwnode_bus_type type)
 	const struct v4l2_fwnode_bus_conv *conv =
 		get_v4l2_fwnode_bus_conv_by_fwnode_bus(type);
 
-	return conv ? conv->mbus_type : V4L2_MBUS_UNKNOWN;
+	return conv ? conv->mbus_type : V4L2_MBUS_INVALID;
 }
 
 static const char *
@@ -436,6 +436,10 @@ static int __v4l2_fwnode_endpoint_parse(struct fwnode_handle *fwnode,
 		 v4l2_fwnode_mbus_type_to_string(vep->bus_type),
 		 vep->bus_type);
 	mbus_type = v4l2_fwnode_bus_type_to_mbus(bus_type);
+	if (mbus_type == V4L2_MBUS_INVALID) {
+		pr_debug("unsupported bus type %u\n", bus_type);
+		return -EINVAL;
+	}
 
 	if (vep->bus_type != V4L2_MBUS_UNKNOWN) {
 		if (mbus_type != V4L2_MBUS_UNKNOWN &&
include/media/v4l2-mediabus.h +2 -0
index 59b1de1971142..c20e2dc6d4320 100644
@@ -103,6 +103,7 @@
  * @V4L2_MBUS_CCP2:	CCP2 (Compact Camera Port 2)
  * @V4L2_MBUS_CSI2_DPHY: MIPI CSI-2 serial interface, with D-PHY
  * @V4L2_MBUS_CSI2_CPHY: MIPI CSI-2 serial interface, with C-PHY
+ * @V4L2_MBUS_INVALID:	invalid bus type (keep as last)
  */
 enum v4l2_mbus_type {
 	V4L2_MBUS_UNKNOWN,
@@ -112,6 +113,7 @@ enum v4l2_mbus_type {
 	V4L2_MBUS_CCP2,
 	V4L2_MBUS_CSI2_DPHY,
 	V4L2_MBUS_CSI2_CPHY,
+	V4L2_MBUS_INVALID,
 };
 
 /**
Signature · 1 line
2.27.0
author maintainer
#128 lore raw

PATCH 124/717 media: v4l2-fwnode: v4l2_fwnode_endpoint_parse caller must init vep argument

In reply to Greg Kroah-Hartman

From: Sakari Ailus <[email protected]>

[ Upstream commit b3cc73d2bf14e7c6e0376fa9433e708349e9ddfc ]

Document that the caller of v4l2_fwnode_endpoint_parse() must init the fields of struct v4l2_fwnode_endpoint (vep argument) fields.

It used to be that the fields were zeroed by v4l2_fwnode_endpoint_parse when bus type was set to V4L2_MBUS_UNKNOWN but with recent changes (Fixes:
line below) that no longer makes sense.

Fixes bb4bba9232fc ("media: v4l2-fwnode: Make bus configuration a struct")
---
 include/media/v4l2-fwnode.h | 6 ++++++
 1 file changed, 6 insertions(+)
include/media/v4l2-fwnode.h +6 -0
index c090742765431..ed0840f3d5dff 100644
@@ -231,6 +231,9 @@ struct v4l2_fwnode_connector {
  * guessing @vep.bus_type between CSI-2 D-PHY, parallel and BT.656 busses is
  * supported. NEVER RELY ON GUESSING @vep.bus_type IN NEW DRIVERS!
  *
+ * The caller is required to initialise all fields of @vep, either with
+ * explicitly values, or by zeroing them.
+ *
  * The function does not change the V4L2 fwnode endpoint state if it fails.
  *
  * NOTE: This function does not parse properties the size of which is variable
@@ -273,6 +276,9 @@ void v4l2_fwnode_endpoint_free(struct v4l2_fwnode_endpoint *vep);
  * guessing @vep.bus_type between CSI-2 D-PHY, parallel and BT.656 busses is
  * supported. NEVER RELY ON GUESSING @vep.bus_type IN NEW DRIVERS!
  *
+ * The caller is required to initialise all fields of @vep, either with
+ * explicitly values, or by zeroing them.
+ *
  * The function does not change the V4L2 fwnode endpoint state if it fails.
  *
  * v4l2_fwnode_endpoint_alloc_parse() has two important differences to
Signature · 1 line
2.27.0
author maintainer
#129 lore raw

PATCH 125/717 media: ov5640: fix support of BT656 bus mode

In reply to Greg Kroah-Hartman

From: Hugues Fruchet <[email protected]>

[ Upstream commit 68579b32e786f9680e7c6b6c7d17e26943bb02b3 ]

Fix PCLK polarity not being taken into account. Add comments about BT656 register control. Remove useless ov5640_set_stream_bt656() function. Refine comments about MIPI IO register control.

Fixes 4039b03720f7 ("media: i2c: ov5640: Add support for BT656 mode")
---
 drivers/media/i2c/ov5640.c | 82 +++++++++++++++++++++-----------------
 1 file changed, 45 insertions(+), 37 deletions(-)
drivers/media/i2c/ov5640.c +45 -37
index 8d0254d0e5ea7..8f0812e859012 100644
@@ -1216,20 +1216,6 @@ static int ov5640_set_autogain(struct ov5640_dev *sensor, bool on)
 			      BIT(1), on ? 0 : BIT(1));
 }
 
-static int ov5640_set_stream_bt656(struct ov5640_dev *sensor, bool on)
-{
-	int ret;
-
-	ret = ov5640_write_reg(sensor, OV5640_REG_CCIR656_CTRL00,
-			       on ? 0x1 : 0x00);
-	if (ret)
-		return ret;
-
-	return ov5640_write_reg(sensor, OV5640_REG_SYS_CTRL0, on ?
-				OV5640_REG_SYS_CTRL0_SW_PWUP :
-				OV5640_REG_SYS_CTRL0_SW_PWDN);
-}
-
 static int ov5640_set_stream_dvp(struct ov5640_dev *sensor, bool on)
 {
 	return ov5640_write_reg(sensor, OV5640_REG_SYS_CTRL0, on ?
@@ -1994,13 +1980,13 @@ static int ov5640_set_power_mipi(struct ov5640_dev *sensor, bool on)
 static int ov5640_set_power_dvp(struct ov5640_dev *sensor, bool on)
 {
 	unsigned int flags = sensor->ep.bus.parallel.flags;
-	u8 pclk_pol = 0;
-	u8 hsync_pol = 0;
-	u8 vsync_pol = 0;
+	bool bt656 = sensor->ep.bus_type == V4L2_MBUS_BT656;
+	u8 polarities = 0;
 	int ret;
 
 	if (!on) {
 		/* Reset settings to their default values. */
+		ov5640_write_reg(sensor, OV5640_REG_CCIR656_CTRL00, 0x00);
 		ov5640_write_reg(sensor, OV5640_REG_IO_MIPI_CTRL00, 0x58);
 		ov5640_write_reg(sensor, OV5640_REG_POLARITY_CTRL00, 0x20);
 		ov5640_write_reg(sensor, OV5640_REG_PAD_OUTPUT_ENABLE01, 0x00);
@@ -2024,7 +2010,35 @@ static int ov5640_set_power_dvp(struct ov5640_dev *sensor, bool on)
 	 * - VSYNC:	active high
 	 * - HREF:	active low
 	 * - PCLK:	active low
+	 *
+	 * VSYNC & HREF are not configured if BT656 bus mode is selected
 	 */
+
+	/*
+	 * BT656 embedded synchronization configuration
+	 *
+	 * CCIR656 CTRL00
+	 * - [7]:	SYNC code selection (0: auto generate sync code,
+	 *		1: sync code from regs 0x4732-0x4735)
+	 * - [6]:	f value in CCIR656 SYNC code when fixed f value
+	 * - [5]:	Fixed f value
+	 * - [4:3]:	Blank toggle data options (00: data=1'h040/1'h200,
+	 *		01: data from regs 0x4736-0x4738, 10: always keep 0)
+	 * - [1]:	Clip data disable
+	 * - [0]:	CCIR656 mode enable
+	 *
+	 * Default CCIR656 SAV/EAV mode with default codes
+	 * SAV=0xff000080 & EAV=0xff00009d is enabled here with settings:
+	 * - CCIR656 mode enable
+	 * - auto generation of sync codes
+	 * - blank toggle data 1'h040/1'h200
+	 * - clip reserved data (0x00 & 0xff changed to 0x01 & 0xfe)
+	 */
+	ret = ov5640_write_reg(sensor, OV5640_REG_CCIR656_CTRL00,
+			       bt656 ? 0x01 : 0x00);
+	if (ret)
+		return ret;
+
 	/*
 	 * configure parallel port control lines polarity
 	 *
@@ -2035,29 +2049,26 @@ static int ov5640_set_power_dvp(struct ov5640_dev *sensor, bool on)
 	 *		datasheet and hardware, 0 is active high
 	 *		and 1 is active low...)
 	 */
-	if (sensor->ep.bus_type == V4L2_MBUS_PARALLEL) {
-		if (flags & V4L2_MBUS_PCLK_SAMPLE_RISING)
-			pclk_pol = 1;
+	if (!bt656) {
 		if (flags & V4L2_MBUS_HSYNC_ACTIVE_HIGH)
-			hsync_pol = 1;
+			polarities |= BIT(1);
 		if (flags & V4L2_MBUS_VSYNC_ACTIVE_LOW)
-			vsync_pol = 1;
-
-		ret = ov5640_write_reg(sensor, OV5640_REG_POLARITY_CTRL00,
-				       (pclk_pol << 5) | (hsync_pol << 1) |
-				       vsync_pol);
-
-		if (ret)
-			return ret;
+			polarities |= BIT(0);
 	}
+	if (flags & V4L2_MBUS_PCLK_SAMPLE_RISING)
+		polarities |= BIT(5);
+
+	ret = ov5640_write_reg(sensor, OV5640_REG_POLARITY_CTRL00, polarities);
+	if (ret)
+		return ret;
 
 	/*
-	 * powerdown MIPI TX/RX PHY & disable MIPI
+	 * powerdown MIPI TX/RX PHY & enable DVP
 	 *
 	 * MIPI CONTROL 00
-	 * 4:	 PWDN PHY TX
-	 * 3:	 PWDN PHY RX
-	 * 2:	 MIPI enable
+	 * [4] = 1	: Power down MIPI HS Tx
+	 * [3] = 1	: Power down MIPI LS Rx
+	 * [2] = 0	: DVP enable (MIPI disable)
 	 */
 	ret = ov5640_write_reg(sensor, OV5640_REG_IO_MIPI_CTRL00, 0x18);
 	if (ret)
@@ -2074,8 +2085,7 @@ static int ov5640_set_power_dvp(struct ov5640_dev *sensor, bool on)
 	 * - [3:0]:	D[9:6] output enable
 	 */
 	ret = ov5640_write_reg(sensor, OV5640_REG_PAD_OUTPUT_ENABLE01,
-			       sensor->ep.bus_type == V4L2_MBUS_PARALLEL ?
-			       0x7f : 0x1f);
+			       bt656 ? 0x1f : 0x7f);
 	if (ret)
 		return ret;
 
@@ -2925,8 +2935,6 @@ static int ov5640_s_stream(struct v4l2_subdev *sd, int enable)
 
 		if (sensor->ep.bus_type == V4L2_MBUS_CSI2_DPHY)
 			ret = ov5640_set_stream_mipi(sensor, enable);
-		else if (sensor->ep.bus_type == V4L2_MBUS_BT656)
-			ret = ov5640_set_stream_bt656(sensor, enable);
 		else
 			ret = ov5640_set_stream_dvp(sensor, enable);
 
Signature · 1 line
2.27.0
author maintainer
#130 lore raw

PATCH 126/717 media: staging: rkisp1: cap: fix runtime PM imbalance on error

In reply to Greg Kroah-Hartman

From: Zhang Qilong <[email protected]>

[ Upstream commit 4cbbe2aaa0536b0e7b3dfbd7febc3bc2ec300559 ]

pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference imbalance in rkisp1_vb2_start_streaming, so we should fix it.

Fixes 56e3b29f9f6b2 ("media: staging: rkisp1: add streaming paths")
---
 drivers/staging/media/rkisp1/rkisp1-capture.c | 1 +
 1 file changed, 1 insertion(+)
drivers/staging/media/rkisp1/rkisp1-capture.c +1 -0
index b6f497ce3e95c..0c934ca5adaa3 100644
@@ -992,6 +992,7 @@ rkisp1_vb2_start_streaming(struct vb2_queue *queue, unsigned int count)
 
 	ret = pm_runtime_get_sync(cap->rkisp1->dev);
 	if (ret < 0) {
+		pm_runtime_put_noidle(cap->rkisp1->dev);
 		dev_err(cap->rkisp1->dev, "power up failed %d\n", ret);
 		goto err_destroy_dummy;
 	}
Signature · 1 line
2.27.0
author maintainer
#131 lore raw

PATCH 127/717 media: cedrus: fix reference leak in cedrus_start_streaming

In reply to Greg Kroah-Hartman

From: Zhang Qilong <[email protected]>

[ Upstream commit 940727bf22f74cbdef8de327de34c4ae565c89ea ]

pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in cedrus_start_streaming. We should fix it.

Fixes d5aecd289babf ("media: cedrus: Implement runtime PM")
---
 drivers/staging/media/sunxi/cedrus/cedrus_video.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/staging/media/sunxi/cedrus/cedrus_video.c +3 -1
index 667b86dde1ee8..911f607d9b092 100644
@@ -479,8 +479,10 @@ static int cedrus_start_streaming(struct vb2_queue *vq, unsigned int count)
 
 	if (V4L2_TYPE_IS_OUTPUT(vq->type)) {
 		ret = pm_runtime_get_sync(dev->dev);
-		if (ret < 0)
+		if (ret < 0) {
+			pm_runtime_put_noidle(dev->dev);
 			goto err_cleanup;
+		}
 
 		if (dev->dec_ops[ctx->current_codec]->start) {
 			ret = dev->dec_ops[ctx->current_codec]->start(ctx);
Signature · 1 line
2.27.0
author maintainer
#132 lore raw

PATCH 128/717 media: platform: add missing put_device() call in mtk_jpeg_probe() and mtk_jpeg_remove()

In reply to Greg Kroah-Hartman

From: Yu Kuai <[email protected]>

[ Upstream commit 0d72f489995bb8565f6fe30539d4504c88356a9e ]

if mtk_jpeg_clk_init() succeed, mtk_jpeg_probe() and mtk_jpeg_remove() doesn't have a corresponding put_device(). Thus add a new helper mtk_jpeg_clk_release() to fix it.

Fixes b2f0d2724ba4 ("[media] vcodec: mediatek: Add Mediatek JPEG Decoder Driver")
---
 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 8 ++++++++
 1 file changed, 8 insertions(+)
drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c +8 -0
index 106543391c460..88a23bce569d9 100644
@@ -1332,6 +1332,12 @@ static void mtk_jpeg_job_timeout_work(struct work_struct *work)
 	v4l2_m2m_buf_done(dst_buf, VB2_BUF_STATE_ERROR);
 	v4l2_m2m_job_finish(jpeg->m2m_dev, ctx->fh.m2m_ctx);
 }
+
+static inline void mtk_jpeg_clk_release(struct mtk_jpeg_dev *jpeg)
+{
+	put_device(jpeg->larb);
+}
+
 static int mtk_jpeg_probe(struct platform_device *pdev)
 {
 	struct mtk_jpeg_dev *jpeg;
@@ -1436,6 +1442,7 @@ err_m2m_init:
 	v4l2_device_unregister(&jpeg->v4l2_dev);
 
 err_dev_register:
+	mtk_jpeg_clk_release(jpeg);
 
 err_clk_init:
 
@@ -1453,6 +1460,7 @@ static int mtk_jpeg_remove(struct platform_device *pdev)
 	video_device_release(jpeg->vdev);
 	v4l2_m2m_release(jpeg->m2m_dev);
 	v4l2_device_unregister(&jpeg->v4l2_dev);
+	mtk_jpeg_clk_release(jpeg);
 
 	return 0;
 }
Signature · 1 line
2.27.0
author maintainer
#133 lore raw

PATCH 129/717 media: venus: core: change clk enable and disable order in resume and suspend

In reply to Greg Kroah-Hartman

From: Mansur Alisha Shaik <[email protected]>

[ Upstream commit 21926d466e3a4f35c2536244d1d56512cc81a0a9 ]

Currently video driver is voting after clk enable and un voting before clk disable. This is incorrect, video driver should vote before clk enable and unvote after clk disable.

Corrected this by changing the order of clk enable and clk disable.

suspend")

Fixes 07f8f22a33a9e ("media: venus: core: remove CNOC voting while device
---
 drivers/media/platform/qcom/venus/core.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)
drivers/media/platform/qcom/venus/core.c +10 -7
index 6103aaf43987b..52a3886c496eb 100644
@@ -355,13 +355,16 @@ static __maybe_unused int venus_runtime_suspend(struct device *dev)
 	if (ret)
 		return ret;
 
+	if (pm_ops->core_power) {
+		ret = pm_ops->core_power(dev, POWER_OFF);
+		if (ret)
+			return ret;
+	}
+
 	ret = icc_set_bw(core->cpucfg_path, 0, 0);
 	if (ret)
 		return ret;
 
-	if (pm_ops->core_power)
-		ret = pm_ops->core_power(dev, POWER_OFF);
-
 	return ret;
 }
 
@@ -371,16 +374,16 @@ static __maybe_unused int venus_runtime_resume(struct device *dev)
 	const struct venus_pm_ops *pm_ops = core->pm_ops;
 	int ret;
 
+	ret = icc_set_bw(core->cpucfg_path, 0, kbps_to_icc(1000));
+	if (ret)
+		return ret;
+
 	if (pm_ops->core_power) {
 		ret = pm_ops->core_power(dev, POWER_ON);
 		if (ret)
 			return ret;
 	}
 
-	ret = icc_set_bw(core->cpucfg_path, 0, kbps_to_icc(1000));
-	if (ret)
-		return ret;
-
 	return hfi_core_resume(core, false);
 }
 
Signature · 1 line
2.27.0
author maintainer
#134 lore raw

PATCH 130/717 media: venus: core: vote for video-mem path

In reply to Greg Kroah-Hartman

From: Mansur Alisha Shaik <[email protected]>

[ Upstream commit 9e8efdb5787986cc0d0134925cf5c4f001bb3f2e ]

Currently video driver is voting for venus0-ebi path during buffer processing with an average bandwidth of all the instances and unvoting during session release.

While video streaming when we try to do XO-SD using the command "echo mem > /sys/power/state command" , device is not entering to suspend state and from interconnect summary seeing votes for venus0-ebi

Corrected this by voting for venus0-ebi path in venus_runtime_resume() and unvote during venus_runtime_suspend().

suspend")

Fixes 07f8f22a33a9e ("media: venus: core: remove CNOC voting while device
---
 drivers/media/platform/qcom/venus/core.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)
drivers/media/platform/qcom/venus/core.c +16 -1
index 52a3886c496eb..fa363b8ddc070 100644
@@ -363,7 +363,18 @@ static __maybe_unused int venus_runtime_suspend(struct device *dev)
 
 	ret = icc_set_bw(core->cpucfg_path, 0, 0);
 	if (ret)
-		return ret;
+		goto err_cpucfg_path;
+
+	ret = icc_set_bw(core->video_path, 0, 0);
+	if (ret)
+		goto err_video_path;
+
+	return ret;
+
+err_video_path:
+	icc_set_bw(core->cpucfg_path, kbps_to_icc(1000), 0);
+err_cpucfg_path:
+	pm_ops->core_power(dev, POWER_ON);
 
 	return ret;
 }
@@ -374,6 +385,10 @@ static __maybe_unused int venus_runtime_resume(struct device *dev)
 	const struct venus_pm_ops *pm_ops = core->pm_ops;
 	int ret;
 
+	ret = icc_set_bw(core->video_path, 0, kbps_to_icc(1000));
+	if (ret)
+		return ret;
+
 	ret = icc_set_bw(core->cpucfg_path, 0, kbps_to_icc(1000));
 	if (ret)
 		return ret;
Signature · 1 line
2.27.0
author maintainer
#135 lore raw

PATCH 131/717 media: venus: core: vote with average bandwidth and peak bandwidth as zero

In reply to Greg Kroah-Hartman

From: Mansur Alisha Shaik <[email protected]>

[ Upstream commit e44fb034b03231cd117d6db73fb8048deab6ea41 ]

As per bandwidth table video driver is voting with average bandwidth for "video-mem" and "cpu-cfg" paths as peak bandwidth is zero in bandwidth table.

suspend")

Fixes 07f8f22a33a9e ("media: venus: core: remove CNOC voting while device
---
 drivers/media/platform/qcom/venus/core.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/media/platform/qcom/venus/core.c +2 -2
index fa363b8ddc070..d5bfd6fff85b4 100644
@@ -385,11 +385,11 @@ static __maybe_unused int venus_runtime_resume(struct device *dev)
 	const struct venus_pm_ops *pm_ops = core->pm_ops;
 	int ret;
 
-	ret = icc_set_bw(core->video_path, 0, kbps_to_icc(1000));
+	ret = icc_set_bw(core->video_path, kbps_to_icc(20000), 0);
 	if (ret)
 		return ret;
 
-	ret = icc_set_bw(core->cpucfg_path, 0, kbps_to_icc(1000));
+	ret = icc_set_bw(core->cpucfg_path, kbps_to_icc(1000), 0);
 	if (ret)
 		return ret;
 
Signature · 1 line
2.27.0
author maintainer
#136 lore raw

PATCH 132/717 RDMA/cma: Add missing error handling of listen_id

In reply to Greg Kroah-Hartman

From: Leon Romanovsky <[email protected]>

[ Upstream commit c80a0c52d85c49a910d0dc0e342e8d8898677dc0 ]

Don't silently continue if rdma_listen() fails but destroy previously created CM_ID and return an error to the caller.

Fixes d02d1f5359e7 ("RDMA/cma: Fix deadlock destroying listen requests")
---
 drivers/infiniband/core/cma.c | 175 ++++++++++++++++++++--------------
 1 file changed, 101 insertions(+), 74 deletions(-)
drivers/infiniband/core/cma.c +101 -74
index a77750b8954db..4585f654f8836 100644
@@ -2495,8 +2495,8 @@ static int cma_listen_handler(struct rdma_cm_id *id,
 	return id_priv->id.event_handler(id, event);
 }
 
-static void cma_listen_on_dev(struct rdma_id_private *id_priv,
-			      struct cma_device *cma_dev)
+static int cma_listen_on_dev(struct rdma_id_private *id_priv,
+			     struct cma_device *cma_dev)
 {
 	struct rdma_id_private *dev_id_priv;
 	struct net *net = id_priv->id.route.addr.dev_addr.net;
@@ -2505,13 +2505,13 @@ static void cma_listen_on_dev(struct rdma_id_private *id_priv,
 	lockdep_assert_held(&lock);
 
 	if (cma_family(id_priv) == AF_IB && !rdma_cap_ib_cm(cma_dev->device, 1))
-		return;
+		return 0;
 
 	dev_id_priv =
 		__rdma_create_id(net, cma_listen_handler, id_priv,
 				 id_priv->id.ps, id_priv->id.qp_type, id_priv);
 	if (IS_ERR(dev_id_priv))
-		return;
+		return PTR_ERR(dev_id_priv);
 
 	dev_id_priv->state = RDMA_CM_ADDR_BOUND;
 	memcpy(cma_src_addr(dev_id_priv), cma_src_addr(id_priv),
@@ -2527,19 +2527,34 @@ static void cma_listen_on_dev(struct rdma_id_private *id_priv,
 
 	ret = rdma_listen(&dev_id_priv->id, id_priv->backlog);
 	if (ret)
-		dev_warn(&cma_dev->device->dev,
-			 "RDMA CMA: cma_listen_on_dev, error %d\n", ret);
+		goto err_listen;
+	return 0;
+err_listen:
+	list_del(&id_priv->listen_list);
+	dev_warn(&cma_dev->device->dev, "RDMA CMA: %s, error %d\n", __func__, ret);
+	rdma_destroy_id(&dev_id_priv->id);
+	return ret;
 }
 
-static void cma_listen_on_all(struct rdma_id_private *id_priv)
+static int cma_listen_on_all(struct rdma_id_private *id_priv)
 {
 	struct cma_device *cma_dev;
+	int ret;
 
 	mutex_lock(&lock);
 	list_add_tail(&id_priv->list, &listen_any_list);
-	list_for_each_entry(cma_dev, &dev_list, list)
-		cma_listen_on_dev(id_priv, cma_dev);
+	list_for_each_entry(cma_dev, &dev_list, list) {
+		ret = cma_listen_on_dev(id_priv, cma_dev);
+		if (ret)
+			goto err_listen;
+	}
+	mutex_unlock(&lock);
+	return 0;
+
+err_listen:
+	list_del(&id_priv->list);
 	mutex_unlock(&lock);
+	return ret;
 }
 
 void rdma_set_service_type(struct rdma_cm_id *id, int tos)
@@ -3692,8 +3707,11 @@ int rdma_listen(struct rdma_cm_id *id, int backlog)
 			ret = -ENOSYS;
 			goto err;
 		}
-	} else
-		cma_listen_on_all(id_priv);
+	} else {
+		ret = cma_listen_on_all(id_priv);
+		if (ret)
+			goto err;
+	}
 
 	return 0;
 err:
@@ -4773,69 +4791,6 @@ static struct notifier_block cma_nb = {
 	.notifier_call = cma_netdev_callback
 };
 
-static int cma_add_one(struct ib_device *device)
-{
-	struct cma_device *cma_dev;
-	struct rdma_id_private *id_priv;
-	unsigned int i;
-	unsigned long supported_gids = 0;
-	int ret;
-
-	cma_dev = kmalloc(sizeof *cma_dev, GFP_KERNEL);
-	if (!cma_dev)
-		return -ENOMEM;
-
-	cma_dev->device = device;
-	cma_dev->default_gid_type = kcalloc(device->phys_port_cnt,
-					    sizeof(*cma_dev->default_gid_type),
-					    GFP_KERNEL);
-	if (!cma_dev->default_gid_type) {
-		ret = -ENOMEM;
-		goto free_cma_dev;
-	}
-
-	cma_dev->default_roce_tos = kcalloc(device->phys_port_cnt,
-					    sizeof(*cma_dev->default_roce_tos),
-					    GFP_KERNEL);
-	if (!cma_dev->default_roce_tos) {
-		ret = -ENOMEM;
-		goto free_gid_type;
-	}
-
-	rdma_for_each_port (device, i) {
-		supported_gids = roce_gid_type_mask_support(device, i);
-		WARN_ON(!supported_gids);
-		if (supported_gids & (1 << CMA_PREFERRED_ROCE_GID_TYPE))
-			cma_dev->default_gid_type[i - rdma_start_port(device)] =
-				CMA_PREFERRED_ROCE_GID_TYPE;
-		else
-			cma_dev->default_gid_type[i - rdma_start_port(device)] =
-				find_first_bit(&supported_gids, BITS_PER_LONG);
-		cma_dev->default_roce_tos[i - rdma_start_port(device)] = 0;
-	}
-
-	init_completion(&cma_dev->comp);
-	refcount_set(&cma_dev->refcount, 1);
-	INIT_LIST_HEAD(&cma_dev->id_list);
-	ib_set_client_data(device, &cma_client, cma_dev);
-
-	mutex_lock(&lock);
-	list_add_tail(&cma_dev->list, &dev_list);
-	list_for_each_entry(id_priv, &listen_any_list, list)
-		cma_listen_on_dev(id_priv, cma_dev);
-	mutex_unlock(&lock);
-
-	trace_cm_add_one(device);
-	return 0;
-
-free_gid_type:
-	kfree(cma_dev->default_gid_type);
-
-free_cma_dev:
-	kfree(cma_dev);
-	return ret;
-}
-
 static void cma_send_device_removal_put(struct rdma_id_private *id_priv)
 {
 	struct rdma_cm_event event = { .event = RDMA_CM_EVENT_DEVICE_REMOVAL };
@@ -4898,6 +4853,78 @@ static void cma_process_remove(struct cma_device *cma_dev)
 	wait_for_completion(&cma_dev->comp);
 }
 
+static int cma_add_one(struct ib_device *device)
+{
+	struct cma_device *cma_dev;
+	struct rdma_id_private *id_priv;
+	unsigned int i;
+	unsigned long supported_gids = 0;
+	int ret;
+
+	cma_dev = kmalloc(sizeof(*cma_dev), GFP_KERNEL);
+	if (!cma_dev)
+		return -ENOMEM;
+
+	cma_dev->device = device;
+	cma_dev->default_gid_type = kcalloc(device->phys_port_cnt,
+					    sizeof(*cma_dev->default_gid_type),
+					    GFP_KERNEL);
+	if (!cma_dev->default_gid_type) {
+		ret = -ENOMEM;
+		goto free_cma_dev;
+	}
+
+	cma_dev->default_roce_tos = kcalloc(device->phys_port_cnt,
+					    sizeof(*cma_dev->default_roce_tos),
+					    GFP_KERNEL);
+	if (!cma_dev->default_roce_tos) {
+		ret = -ENOMEM;
+		goto free_gid_type;
+	}
+
+	rdma_for_each_port (device, i) {
+		supported_gids = roce_gid_type_mask_support(device, i);
+		WARN_ON(!supported_gids);
+		if (supported_gids & (1 << CMA_PREFERRED_ROCE_GID_TYPE))
+			cma_dev->default_gid_type[i - rdma_start_port(device)] =
+				CMA_PREFERRED_ROCE_GID_TYPE;
+		else
+			cma_dev->default_gid_type[i - rdma_start_port(device)] =
+				find_first_bit(&supported_gids, BITS_PER_LONG);
+		cma_dev->default_roce_tos[i - rdma_start_port(device)] = 0;
+	}
+
+	init_completion(&cma_dev->comp);
+	refcount_set(&cma_dev->refcount, 1);
+	INIT_LIST_HEAD(&cma_dev->id_list);
+	ib_set_client_data(device, &cma_client, cma_dev);
+
+	mutex_lock(&lock);
+	list_add_tail(&cma_dev->list, &dev_list);
+	list_for_each_entry(id_priv, &listen_any_list, list) {
+		ret = cma_listen_on_dev(id_priv, cma_dev);
+		if (ret)
+			goto free_listen;
+	}
+	mutex_unlock(&lock);
+
+	trace_cm_add_one(device);
+	return 0;
+
+free_listen:
+	list_del(&cma_dev->list);
+	mutex_unlock(&lock);
+
+	cma_process_remove(cma_dev);
+	kfree(cma_dev->default_roce_tos);
+free_gid_type:
+	kfree(cma_dev->default_gid_type);
+
+free_cma_dev:
+	kfree(cma_dev);
+	return ret;
+}
+
 static void cma_remove_one(struct ib_device *device, void *client_data)
 {
 	struct cma_device *cma_dev = client_data;
Signature · 1 line
2.27.0
author maintainer
#137 lore raw

PATCH 133/717 ASoC: meson: fix COMPILE_TEST error

In reply to Greg Kroah-Hartman

From: Jerome Brunet <[email protected]>

[ Upstream commit 299fe9937dbd1a4d9a1da6a2b6f222298534ca57 ]

When compiled with CONFIG_HAVE_CLK, the kernel need to get provider for the clock API. This is usually selected by the platform and the sound drivers should not really care about this. However COMPILE_TEST is special and the platform required may not have been selected, leading to this type of error:

Quoted 1 line

aiu-encoder-spdif.c:(.text+0x3a0): undefined reference to `clk_set_parent'

Since we need a sane provider of the API with COMPILE_TEST, depends on COMMON_CLK.

---
 sound/soc/meson/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
sound/soc/meson/Kconfig +1 -1
index 363dc3b1bbe47..ce0cbdc69b2ec 100644
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0-only
 menu "ASoC support for Amlogic platforms"
-	depends on ARCH_MESON || COMPILE_TEST
+	depends on ARCH_MESON || (COMPILE_TEST && COMMON_CLK)
 
 config SND_MESON_AIU
 	tristate "Amlogic AIU"
Signature · 1 line
2.27.0
author maintainer
#138 lore raw

PATCH 134/717 spi: dw: fix build error by selecting MULTIPLEXER

In reply to Greg Kroah-Hartman

From: Randy Dunlap <[email protected]>

[ Upstream commit 1241f0787578136ab58f49adc52f2dcd2bbc4bf2 ]

Fix build error for spi-dw-bt1.o by selecting MULTIPLEXER.

hppa-linux-ld: drivers/spi/spi-dw-bt1.o: in function `dw_spi_bt1_sys_init':
(.text+0x1ac): undefined reference to `devm_mux_control_get'

Fixes abf00907538e ("spi: dw: Add Baikal-T1 SPI Controller glue driver")
Cc Serge Semin <[email protected]>
Cc Ramil Zaripov <[email protected]>
Cc Mark Brown <[email protected]>
---
 drivers/spi/Kconfig | 1 +
 1 file changed, 1 insertion(+)
drivers/spi/Kconfig +1 -0
index 5cff60de8e834..3fd16b7f61507 100644
@@ -255,6 +255,7 @@ config SPI_DW_MMIO
 config SPI_DW_BT1
 	tristate "Baikal-T1 SPI driver for DW SPI core"
 	depends on MIPS_BAIKAL_T1 || COMPILE_TEST
+	select MULTIPLEXER
 	help
 	  Baikal-T1 SoC is equipped with three DW APB SSI-based MMIO SPI
 	  controllers. Two of them are pretty much normal: with IRQ, DMA,
Signature · 1 line
2.27.0
#139 lore raw

Re: [PATCH 5.10 134/717] spi: dw: fix build error by selecting MULTIPLEXER

Hello Greg,
The next patch has been created to supersede the one you've applied:
https://lore.kernel.org/linux-spi/[email protected]/
Mark has already merged it in his repo.

-Sergey

Quoted 41 lines · Greg Kroah-Hartman

From: Randy Dunlap <[email protected]>

[ Upstream commit 1241f0787578136ab58f49adc52f2dcd2bbc4bf2 ]

Fix build error for spi-dw-bt1.o by selecting MULTIPLEXER.

hppa-linux-ld: drivers/spi/spi-dw-bt1.o: in function `dw_spi_bt1_sys_init':
(.text+0x1ac): undefined reference to `devm_mux_control_get'

Fixes abf00907538e ("spi: dw: Add Baikal-T1 SPI Controller glue driver")
Cc Serge Semin <[email protected]>
Cc Ramil Zaripov <[email protected]>
Cc Mark Brown <[email protected]>
---
 drivers/spi/Kconfig | 1 +
 1 file changed, 1 insertion(+)
drivers/spi/Kconfig +1 -0
index 5cff60de8e834..3fd16b7f61507 100644
@@ -255,6 +255,7 @@ config SPI_DW_MMIO
 config SPI_DW_BT1
 	tristate "Baikal-T1 SPI driver for DW SPI core"
 	depends on MIPS_BAIKAL_T1 || COMPILE_TEST
+	select MULTIPLEXER
 	help
 	  Baikal-T1 SoC is equipped with three DW APB SSI-based MMIO SPI
 	  controllers. Two of them are pretty much normal: with IRQ, DMA,
Signature · 1 line
2.27.0
author maintainer
#140 lore raw

Re: [PATCH 5.10 134/717] spi: dw: fix build error by selecting MULTIPLEXER

Quoted 4 lines · Serge Semin

Hello Greg,
The next patch has been created to supersede the one you've applied:
https://lore.kernel.org/linux-spi/[email protected]/
Mark has already merged it in his repo.

Ok, so should that one be queued up as well? Let us know the git commit id of it when it reaches Linus's kernel and we will be glad to take it.

thanks,

greg k-h

#141 lore raw

Re: [PATCH 5.10 134/717] spi: dw: fix build error by selecting MULTIPLEXER

Quoted 9 lines · Greg Kroah-Hartman
Quoted 4 lines · Serge Semin

Hello Greg,
The next patch has been created to supersede the one you've applied:
https://lore.kernel.org/linux-spi/[email protected]/
Mark has already merged it in his repo.

Ok, so should that one be queued up as well? Let us know the git commit id of it when it reaches Linus's kernel and we will be glad to take it.

I believe it is already there:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7218838109fef61cdec988ff728e902d434c9cc5
Yeah, it's better to queue that patch up too, otherwise the build error will be indeed fixed by the commit you've merged in, but the probe procedure will still always fail.

-Sergey

Quoted 4 lines

thanks,

greg k-h

author maintainer
#142 lore raw

Re: [PATCH 5.10 134/717] spi: dw: fix build error by selecting MULTIPLEXER

Quoted 8 lines · Serge Semin
Quoted 6 lines · Greg Kroah-Hartman
Quoted 4 lines · Serge Semin

Hello Greg,
The next patch has been created to supersede the one you've applied:
https://lore.kernel.org/linux-spi/[email protected]/
Mark has already merged it in his repo.

Quoted 8 lines
Quoted 2 lines

Ok, so should that one be queued up as well? Let us know the git commit id of it when it reaches Linus's kernel and we will be glad to take it.

I believe it is already there:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7218838109fef61cdec988ff728e902d434c9cc5
Yeah, it's better to queue that patch up too, otherwise the build error will be indeed fixed by the commit you've merged in, but the probe procedure will still always fail.

Ok, now queued up, thanks for letting us know.

greg k-h

author maintainer
#143 lore raw

PATCH 135/717 scsi: core: Fix VPD LUN ID designator priorities

In reply to Greg Kroah-Hartman

From: Martin Wilck <[email protected]>

[ Upstream commit 2e4209b3806cda9b89c30fd5e7bfecb7044ec78b ]

The current implementation of scsi_vpd_lun_id() uses the designator length as an implicit measure of priority. This works most of the time, but not always. For example, some Hitachi storage arrays return this in VPD 0x83:

VPD INQUIRY: Device Identification page
Designation descriptor number 1, descriptor length: 24
designator_type: T10 vendor identification, code_set: ASCII associated with the Addressed logical unit
vendor id: HITACHI
vendor specific: 5030C3502025
Designation descriptor number 2, descriptor length: 6
designator_type: vendor specific [0x0], code_set: Binary associated with the Target port
vendor specific: 08 03
Designation descriptor number 3, descriptor length: 20

    designator_type: NAA,  code_set: Binary
    associated with the Addressed logical unit
      NAA 6, IEEE Company_id: 0x60e8
      Vendor Specific Identifier: 0x7c35000
      Vendor Specific Identifier Extension: 0x30c35000002025
      [0x60060e8007c350000030c35000002025]

The current code would use the first descriptor because it's longer than the NAA descriptor. But this is wrong, the kernel is supposed to prefer NAA descriptors over T10 vendor ID. Designator length should only be used to compare designators of the same type.

This patch addresses the issue by separating designator priority and length.

---
 drivers/scsi/scsi_lib.c | 126 +++++++++++++++++++++++++++-------------
 1 file changed, 86 insertions(+), 40 deletions(-)
drivers/scsi/scsi_lib.c +86 -40
index 03c6d0620bfd0..2d17137f8ff3b 100644
@@ -2948,6 +2948,78 @@ void sdev_enable_disk_events(struct scsi_device *sdev)
 }
 EXPORT_SYMBOL(sdev_enable_disk_events);
 
+static unsigned char designator_prio(const unsigned char *d)
+{
+	if (d[1] & 0x30)
+		/* not associated with LUN */
+		return 0;
+
+	if (d[3] == 0)
+		/* invalid length */
+		return 0;
+
+	/*
+	 * Order of preference for lun descriptor:
+	 * - SCSI name string
+	 * - NAA IEEE Registered Extended
+	 * - EUI-64 based 16-byte
+	 * - EUI-64 based 12-byte
+	 * - NAA IEEE Registered
+	 * - NAA IEEE Extended
+	 * - EUI-64 based 8-byte
+	 * - SCSI name string (truncated)
+	 * - T10 Vendor ID
+	 * as longer descriptors reduce the likelyhood
+	 * of identification clashes.
+	 */
+
+	switch (d[1] & 0xf) {
+	case 8:
+		/* SCSI name string, variable-length UTF-8 */
+		return 9;
+	case 3:
+		switch (d[4] >> 4) {
+		case 6:
+			/* NAA registered extended */
+			return 8;
+		case 5:
+			/* NAA registered */
+			return 5;
+		case 4:
+			/* NAA extended */
+			return 4;
+		case 3:
+			/* NAA locally assigned */
+			return 1;
+		default:
+			break;
+		}
+		break;
+	case 2:
+		switch (d[3]) {
+		case 16:
+			/* EUI64-based, 16 byte */
+			return 7;
+		case 12:
+			/* EUI64-based, 12 byte */
+			return 6;
+		case 8:
+			/* EUI64-based, 8 byte */
+			return 3;
+		default:
+			break;
+		}
+		break;
+	case 1:
+		/* T10 vendor ID */
+		return 1;
+	default:
+		break;
+	}
+
+	return 0;
+}
+
 /**
  * scsi_vpd_lun_id - return a unique device identification
  * @sdev: SCSI device
@@ -2964,7 +3036,7 @@ EXPORT_SYMBOL(sdev_enable_disk_events);
  */
 int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len)
 {
-	u8 cur_id_type = 0xff;
+	u8 cur_id_prio = 0;
 	u8 cur_id_size = 0;
 	const unsigned char *d, *cur_id_str;
 	const struct scsi_vpd *vpd_pg83;
@@ -2977,20 +3049,6 @@ int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len)
 		return -ENXIO;
 	}
 
-	/*
-	 * Look for the correct descriptor.
-	 * Order of preference for lun descriptor:
-	 * - SCSI name string
-	 * - NAA IEEE Registered Extended
-	 * - EUI-64 based 16-byte
-	 * - EUI-64 based 12-byte
-	 * - NAA IEEE Registered
-	 * - NAA IEEE Extended
-	 * - T10 Vendor ID
-	 * as longer descriptors reduce the likelyhood
-	 * of identification clashes.
-	 */
-
 	/* The id string must be at least 20 bytes + terminating NULL byte */
 	if (id_len < 21) {
 		rcu_read_unlock();
@@ -3000,8 +3058,9 @@ int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len)
 	memset(id, 0, id_len);
 	d = vpd_pg83->data + 4;
 	while (d < vpd_pg83->data + vpd_pg83->len) {
-		/* Skip designators not referring to the LUN */
-		if ((d[1] & 0x30) != 0x00)
+		u8 prio = designator_prio(d);
+
+		if (prio == 0 || cur_id_prio > prio)
 			goto next_desig;
 
 		switch (d[1] & 0xf) {
@@ -3009,28 +3068,19 @@ int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len)
 			/* T10 Vendor ID */
 			if (cur_id_size > d[3])
 				break;
-			/* Prefer anything */
-			if (cur_id_type > 0x01 && cur_id_type != 0xff)
-				break;
+			cur_id_prio = prio;
 			cur_id_size = d[3];
 			if (cur_id_size + 4 > id_len)
 				cur_id_size = id_len - 4;
 			cur_id_str = d + 4;
-			cur_id_type = d[1] & 0xf;
 			id_size = snprintf(id, id_len, "t10.%*pE",
 					   cur_id_size, cur_id_str);
 			break;
 		case 0x2:
 			/* EUI-64 */
-			if (cur_id_size > d[3])
-				break;
-			/* Prefer NAA IEEE Registered Extended */
-			if (cur_id_type == 0x3 &&
-			    cur_id_size == d[3])
-				break;
+			cur_id_prio = prio;
 			cur_id_size = d[3];
 			cur_id_str = d + 4;
-			cur_id_type = d[1] & 0xf;
 			switch (cur_id_size) {
 			case 8:
 				id_size = snprintf(id, id_len,
@@ -3048,17 +3098,14 @@ int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len)
 						   cur_id_str);
 				break;
 			default:
-				cur_id_size = 0;
 				break;
 			}
 			break;
 		case 0x3:
 			/* NAA */
-			if (cur_id_size > d[3])
-				break;
+			cur_id_prio = prio;
 			cur_id_size = d[3];
 			cur_id_str = d + 4;
-			cur_id_type = d[1] & 0xf;
 			switch (cur_id_size) {
 			case 8:
 				id_size = snprintf(id, id_len,
@@ -3071,26 +3118,25 @@ int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len)
 						   cur_id_str);
 				break;
 			default:
-				cur_id_size = 0;
 				break;
 			}
 			break;
 		case 0x8:
 			/* SCSI name string */
-			if (cur_id_size + 4 > d[3])
+			if (cur_id_size > d[3])
 				break;
 			/* Prefer others for truncated descriptor */
-			if (cur_id_size && d[3] > id_len)
-				break;
+			if (d[3] > id_len) {
+				prio = 2;
+				if (cur_id_prio > prio)
+					break;
+			}
+			cur_id_prio = prio;
 			cur_id_size = id_size = d[3];
 			cur_id_str = d + 4;
-			cur_id_type = d[1] & 0xf;
 			if (cur_id_size >= id_len)
 				cur_id_size = id_len - 1;
 			memcpy(id, cur_id_str, cur_id_size);
-			/* Decrease priority for truncated descriptor */
-			if (cur_id_size != id_size)
-				cur_id_size = 6;
 			break;
 		default:
 			break;
Signature · 1 line
2.27.0
author maintainer
#144 lore raw

PATCH 136/717 media: venus: put dummy vote on video-mem path after last session release

In reply to Greg Kroah-Hartman

From: Mansur Alisha Shaik <[email protected]>

[ Upstream commit eff5ce02e170125936c43ca96c7dc701a86681ed ]

As per current implementation, video driver is unvoting "videom-mem" path for last video session during vdec_session_release().
While video playback when we try to suspend device, we see video clock warnings since votes are already removed during vdec_session_release().

corrected this by putting dummy vote on "video-mem" after last video session release and unvoting it during suspend.

suspend")

Fixes 07f8f22a33a9e ("media: venus: core: remove CNOC voting while device
---
 drivers/media/platform/qcom/venus/pm_helpers.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
drivers/media/platform/qcom/venus/pm_helpers.c +10 -0
index a9538c2cc3c9d..2946547a0df4a 100644
@@ -212,6 +212,16 @@ static int load_scale_bw(struct venus_core *core)
 	}
 	mutex_unlock(&core->lock);
 
+	/*
+	 * keep minimum bandwidth vote for "video-mem" path,
+	 * so that clks can be disabled during vdec_session_release().
+	 * Actual bandwidth drop will be done during device supend
+	 * so that device can power down without any warnings.
+	 */
+
+	if (!total_avg && !total_peak)
+		total_avg = kbps_to_icc(1000);
+
 	dev_dbg(core->dev, VDBGL "total: avg_bw: %u, peak_bw: %u\n",
 		total_avg, total_peak);
 
Signature · 1 line
2.27.0
author maintainer
#145 lore raw

PATCH 137/717 media: solo6x10: fix missing snd_card_free in error handling case

In reply to Greg Kroah-Hartman

From: Qinglang Miao <[email protected]>

[ Upstream commit dcdff74fa6bc00c32079d0bebd620764c26f2d89 ]

Fix to goto snd_error in error handling case when fails to do snd_ctl_add, as done elsewhere in this function.

Fixes 28cae868cd24 ("[media] solo6x10: move out of staging into drivers/media/pci.")
---
 drivers/media/pci/solo6x10/solo6x10-g723.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/media/pci/solo6x10/solo6x10-g723.c +1 -1
index 906ce86437ae3..d137b94869d82 100644
@@ -385,7 +385,7 @@ int solo_g723_init(struct solo_dev *solo_dev)
 
 	ret = snd_ctl_add(card, snd_ctl_new1(&kctl, solo_dev));
 	if (ret < 0)
-		return ret;
+		goto snd_error;
 
 	ret = solo_snd_pcm_init(solo_dev);
 	if (ret < 0)
Signature · 1 line
2.27.0
author maintainer
#146 lore raw

PATCH 138/717 video: fbdev: atmel_lcdfb: fix return error code in atmel_lcdfb_of_init()

In reply to Greg Kroah-Hartman

From: Yang Yingliang <[email protected]>

[ Upstream commit ba236455ee750270f33998df57f982433cea4d8e ]

If devm_kzalloc() failed after the first time, atmel_lcdfb_of_init() can't return -ENOMEM, fix this by putting the error code in loop.

---
 drivers/video/fbdev/atmel_lcdfb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/video/fbdev/atmel_lcdfb.c +1 -1
index 8c1d47e52b1a6..355b6120dc4f0 100644
@@ -987,8 +987,8 @@ static int atmel_lcdfb_of_init(struct atmel_lcdfb_info *sinfo)
 	}
 
 	INIT_LIST_HEAD(&pdata->pwr_gpios);
-	ret = -ENOMEM;
 	for (i = 0; i < gpiod_count(dev, "atmel,power-control"); i++) {
+		ret = -ENOMEM;
 		gpiod = devm_gpiod_get_index(dev, "atmel,power-control",
 					     i, GPIOD_ASIS);
 		if (IS_ERR(gpiod))
Signature · 1 line
2.27.0
author maintainer
#147 lore raw

PATCH 139/717 mmc: sdhci: tegra: fix wrong unit with busy_timeout

In reply to Greg Kroah-Hartman

From: Wolfram Sang <[email protected]>

[ Upstream commit fcc541fea394d67ad607ee41acfa891e79fe17a2 ]

'busy_timeout' is in msecs, not in jiffies. Use the correct factor.

---
 drivers/mmc/host/sdhci-tegra.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/mmc/host/sdhci-tegra.c +1 -1
index ed12aacb1c736..41d193fa77bbf 100644
@@ -1272,7 +1272,7 @@ static void tegra_sdhci_set_timeout(struct sdhci_host *host,
 	 * busy wait mode.
 	 */
 	val = sdhci_readl(host, SDHCI_TEGRA_VENDOR_MISC_CTRL);
-	if (cmd && cmd->busy_timeout >= 11 * HZ)
+	if (cmd && cmd->busy_timeout >= 11 * MSEC_PER_SEC)
 		val |= SDHCI_MISC_CTRL_ERASE_TIMEOUT_LIMIT;
 	else
 		val &= ~SDHCI_MISC_CTRL_ERASE_TIMEOUT_LIMIT;
Signature · 1 line
2.27.0
author maintainer
#148 lore raw

PATCH 140/717 drm/omap: dmm_tiler: fix return error code in omap_dmm_probe()

In reply to Greg Kroah-Hartman

From: Yang Yingliang <[email protected]>

[ Upstream commit 723ae803218da993143387bf966042eccefac077 ]

Return -ENOMEM when allocating refill memory failed.

---
 drivers/gpu/drm/omapdrm/omap_dmm_tiler.c | 1 +
 1 file changed, 1 insertion(+)
drivers/gpu/drm/omapdrm/omap_dmm_tiler.c +1 -0
index 42ec51bb7b1b0..7f43172488123 100644
@@ -889,6 +889,7 @@ static int omap_dmm_probe(struct platform_device *dev)
 					   &omap_dmm->refill_pa, GFP_KERNEL);
 	if (!omap_dmm->refill_va) {
 		dev_err(&dev->dev, "could not allocate refill memory\n");
+		ret = -ENOMEM;
 		goto fail;
 	}
 
Signature · 1 line
2.27.0